Class WorkspaceSvg
Class untuk ruang kerja. Ini adalah area di layar dengan tempat sampah, scrollbar, balon, dan opsi tarik opsional.
Tanda Tangan:
export declare class WorkspaceSvg extends Workspace implements IContextMenu, IFocusableNode, IFocusableTree
Memperluas: Workspace
Mengimplementasikan: IContextMenu, IFocusableNode, IFocusableTree
Konstruktor
Konstruktor | Pengubah | Deskripsi |
---|---|---|
(constructor)(options) | Membuat instance baru class WorkspaceSvg |
Properti
Properti | Pengubah | Jenis | Deskripsi |
---|---|---|---|
configureContextMenu | ((menuOptions: ContextMenuOption[], e: Event) => void) | null | Developer dapat menentukan fungsi ini untuk menambahkan opsi menu kustom ke menu konteks ruang kerja atau mengedit kumpulan opsi menu yang dibuat ruang kerja. | |
keyboardAccessibilityMode | boolean | Benar jika mode aksesibilitas keyboard aktif, salah jika tidak. | |
keyboardMoveInProgress | boolean | Benar jika perpindahan yang dimulai keyboard ("tarik") sedang berlangsung. | |
dirender | boolean | Status render ruang kerja SVG. Menampilkan false untuk ruang kerja headless dan benar untuk instance WorkspaceSvg . |
|
skala | angka | Skala saat ini. | |
scrollbar | ScrollbarPair | null | Scrollbar ruang kerja ini, jika ada. | |
scrollX | angka | Offset scroll horizontal saat ini dalam satuan piksel, relatif terhadap asal ruang kerja. Sebaiknya pikirkan tampilan, dan kanvas yang bergerak di bawah tampilan tersebut. Saat kanvas bergerak ke kanan, nilai ini menjadi lebih positif, dan tampilan kini "melihat" sisi kiri kanvas. Saat kanvas bergerak ke kiri, nilai ini menjadi lebih negatif, dan tampilan kini "melihat" sisi kanan kanvas. Hal yang membingungkan tentang nilai ini adalah nilai ini tidak, dan tidak boleh menyertakan offset absoluteLeft. Hal ini karena nilai ini digunakan untuk menghitung nilai viewLeft. viewLeft relatif terhadap asal ruang kerja (meskipun dalam satuan piksel). Asal ruang kerja adalah sudut kiri atas ruang kerja (setidaknya saat diaktifkan). Ini digeser dari kiri atas blocklyDiv agar tidak berada di bawah toolbox. Saat ruang kerja diaktifkan, viewLeft dan origin ruang kerja berada di lokasi X yang sama. Saat kanvas bergeser ke kanan di bawah tampilan, nilai ini (scrollX) menjadi lebih positif, dan viewLeft menjadi lebih negatif relatif terhadap asal ruang kerja (bayangkan asal ruang kerja sebagai titik pada kanvas yang bergeser ke kanan saat kanvas bergerak). Jadi, jika scrollX menyertakan absoluteLeft, hal ini akan "menggeser" asal ruang kerja. Ini berarti viewLeft akan mewakili tepi kiri blocklyDiv, bukan tepi kiri ruang kerja. |
|
scrollY | angka | Offset scroll vertikal saat ini dalam satuan piksel, relatif terhadap asal ruang kerja. Sebaiknya pikirkan tampilan, dan kanvas yang bergerak di bawah tampilan tersebut. Saat kanvas bergerak ke bawah, nilai ini menjadi lebih positif, dan tampilan kini "melihat" bagian atas kanvas. Saat kanvas bergerak ke atas, nilai ini menjadi lebih negatif, dan tampilan "melihat" bagian bawah kanvas. Hal yang membingungkan tentang nilai ini adalah nilai ini tidak, dan tidak boleh menyertakan offset absoluteTop. Hal ini karena nilai ini digunakan untuk menghitung nilai viewTop. viewTop relatif terhadap asal ruang kerja (meskipun dalam satuan piksel). Asal ruang kerja adalah sudut kiri atas ruang kerja (setidaknya saat diaktifkan). Ini digeser dari kiri atas blocklyDiv agar tidak berada di bawah toolbox. Saat ruang kerja diaktifkan, viewTop dan origin ruang kerja berada di lokasi Y yang sama. Saat kanvas bergeser ke bagian bawah, nilai ini (scrollY) menjadi lebih positif, dan viewTop menjadi lebih negatif dibandingkan dengan asal ruang kerja (gambar di asal ruang kerja sebagai titik pada kanvas yang bergeser ke bawah saat kanvas bergerak). Jadi, jika scrollY menyertakan absoluteTop, hal ini akan "menggeser" asal ruang kerja. Artinya, viewTop akan mewakili tepi atas blocklyDiv, bukan tepi atas ruang kerja. |
|
startScrollX | angka | Nilai scroll horizontal saat scroll dimulai dalam satuan piksel. | |
startScrollY | angka | Nilai scroll vertikal saat scroll dimulai dalam satuan piksel. | |
svgBackground_ | SVGElement | ||
svgBlockCanvas_ | SVGElement | ||
svgBubbleCanvas_ | SVGElement | ||
svgGroup_ | SVGElement | ||
themeManager_ | protected |
ThemeManager | |
trashcan | Trashcan | null | Sampah ruang kerja (jika ada). | |
zoomControls_ | ZoomControls | null |
Metode
Metode | Pengubah | Deskripsi |
---|---|---|
addClass(className) | Menambahkan class CSS ke ruang kerja. | |
addTopBlock(block) | Menambahkan blok ke daftar blok teratas. | |
addTopBoundedElement(element) | Menambahkan elemen yang dibatasi ke daftar elemen yang dibatasi atas. | |
addTopComment(comment) | Menambahkan komentar ke daftar komentar teratas. | |
canBeFocused() | Lihat IFocusableNode.canBeFocused. | |
centerOnBlock(id, blockOnly) | Scroll ruang kerja untuk memusatkan blok yang diberikan. Jika blok memiliki blok lain yang ditumpuk di bawahnya, ruang kerja akan dipusatkan pada tumpukan, kecuali jika blockOnly bernilai benar. | |
cleanUp() | Bersihkan ruang kerja dengan mengurutkan semua blok dalam kolom sehingga tidak ada yang tumpang-tindih. | |
clear() | Menghapus semua blok di ruang kerja, dengan pengoptimalan untuk mencegah pengubahan ukuran. | |
copyOptionsForFlyout() | Membuat kumpulan opsi baru dari opsi ruang kerja ini hanya dengan nilai yang relevan dengan flyout. | |
createDom(opt_backgroundClass, injectionDiv) | Buat elemen DOM ruang kerja. | |
dispose() | Hapus ruang kerja ini. Hapus penautan dari semua elemen DOM untuk mencegah kebocoran memori. | |
getAbsoluteScale() | Menampilkan skala absolut ruang kerja. Penskalaan ruang kerja bersifat multiplikatif; jika ruang kerja B (misalnya editor pengubah) dengan skala Y disusun bertingkat dalam ruang kerja root A dengan skala X, skala efektif ruang kerja B adalah X * Y, karena, sebagai turunan dari A, ruang kerja B sudah ditransformasikan oleh faktor penskalaan A, lalu mengubah dirinya sendiri lebih lanjut dengan faktor penskalaannya sendiri. Biasanya, hal ini berfungsi dengan baik, tetapi untuk elemen global (misalnya editor kolom) yang secara visual dikaitkan dengan ruang kerja tertentu, tetapi berada di tingkat teratas DOM, bukan sebagai turunan dari ruang kerja terkait, skala absolut/efektif mungkin diperlukan untuk dirender dengan tepat. |
|
getAllBlocks(ordered) | Menemukan semua blok di ruang kerja. Blok dapat diurutkan menurut posisi secara opsional; dari atas ke bawah (dengan sedikit bias LTR atau RTL). | |
getAudioManager() | Dapatkan pengelola audio untuk ruang kerja ini. | |
getBlockById(id) | Temukan blok di ruang kerja ini dengan ID yang ditentukan. | |
getBlocksBoundingBox() | Hitung kotak pembatas untuk blok di ruang kerja. Sistem koordinat: koordinat ruang kerja. | |
getBubbleCanvas() | Mendapatkan elemen SVG yang membentuk permukaan balon. | |
getButtonCallback(key) | Dapatkan fungsi callback yang terkait dengan kunci tertentu, untuk klik pada tombol dan label di flyout. | |
getCanvas() | Mendapatkan elemen SVG yang membentuk platform gambar. | |
getComponentManager() | Mendapatkan pengelola komponen untuk ruang kerja ini. | |
getCursor() | Kursor untuk ruang kerja ini. | |
getDragTarget(e) | Menampilkan target tarik saat peristiwa pointer berakhir. | |
getFlyout(opt_own) | Pengambil untuk flyout yang terkait dengan ruang kerja ini. Flyout ini mungkin dimiliki oleh toolbox atau ruang kerja, bergantung pada konfigurasi toolbox. Nilai ini akan null jika tidak ada flyout. | |
getFocusableElement() | Lihat IFocusableNode.getFocusableElement. | |
getFocusableTree() | Lihat IFocusableNode.getFocusableTree. | |
getGrid() | Mendapatkan objek petak untuk ruang kerja ini, atau null jika tidak ada. | |
getInverseScreenCTM() | Pengambil untuk CTM layar terbalik. | |
getMarkerManager() | Mendapatkan pengelola penanda untuk ruang kerja ini. | |
getMetricsManager() | Mendapatkan pengelola metrik untuk ruang kerja ini. | |
getNavigator() | Menampilkan objek yang bertanggung jawab untuk mengoordinasikan pergerakan fokus di antara item di ruang kerja ini sebagai respons terhadap perintah navigasi keyboard. | |
getNestedTrees() | Lihat IFocusableTree.getNestedTrees. | |
getParentSvg() | Dapatkan elemen SVG yang berisi ruang kerja ini. Catatan: Kita mengasumsikan bahwa ini hanya dipanggil setelah ruang kerja dimasukkan ke DOM. | |
getRenderer() | Dapatkan perender blok yang dilampirkan ke ruang kerja ini. | |
getRestoredFocusableNode(previousNode) | Lihat IFocusableTree.getRestoredFocusableNode. | |
getRootFocusableNode() | Lihat IFocusableTree.getRootFocusableNode. | |
getRootWorkspace() | ||
getScale() | Mendapatkan faktor zoom ruang kerja. | |
getSvgGroup() | Menampilkan grup SVG untuk ruang kerja. | |
getTheme() | Mendapatkan objek tema ruang kerja. | |
getToolbox() | Pengambil untuk toolbox yang terkait dengan ruang kerja ini, jika ada. | |
getToolboxCategoryCallback(key) | Dapatkan fungsi callback yang terkait dengan kunci tertentu, untuk mengisi kategori toolbox kustom di ruang kerja ini. | |
getTopBlocks(ordered) | Menemukan blok tingkat teratas dan menampilkannya. Blok dapat diurutkan menurut posisi secara opsional; dari atas ke bawah (dengan sedikit bias LTR atau RTL). | |
getTopBoundedElements() | Menemukan elemen terbatas tingkat teratas dan menampilkannya. | |
getWidth() | Menampilkan offset horizontal ruang kerja. Dimaksudkan untuk kompatibilitas LTR/RTL dalam XML. | |
hideChaff(onlyClosePopups) | Menutup tooltip, menu konteks, pilihan dropdown, dll. | |
hideComponents(onlyClosePopups) | Sembunyikan komponen yang dapat disembunyikan secara otomatis (seperti flyout, tempat sampah, dan komponen apa pun yang terdaftar oleh pengguna). | |
highlightBlock(id, opt_state) | Menandai atau menghapus tanda pada blok di ruang kerja. Penandaan blok sering digunakan untuk menandai blok secara visual yang saat ini sedang dieksekusi. | |
isDraggable() | Apakah ruang kerja ini dapat ditarik? | |
isDragging() | Menampilkan nilai benar (true) jika pengguna saat ini melakukan gestur tarik, atau jika perpindahan yang dimulai keyboard sedang berlangsung. Gestur tarik biasanya melibatkan pemindahan blok atau item lain di ruang kerja, atau men-scroll flyout/ruang kerja. Gerakan yang dimulai keyboard diimplementasikan menggunakan infrastruktur penarikan dan dimaksudkan untuk mengemulasi (subkumpulan) gestur tarik sehingga biasanya harus diperlakukan seolah-olah itu adalah tarik berbasis gestur. |
|
isMovable() | Apakah ruang kerja ini dapat dipindahkan? Artinya, pengguna dapat memosisikan ulang koordinat X Y ruang kerja melalui input. Anda dapat melakukannya melalui scrollbar, roda scroll, menarik, atau dengan melakukan zoom menggunakan roda scroll atau cubit (karena zoom dipusatkan pada posisi mouse). Hal ini tidak termasuk zoom dengan kontrol zoom karena koordinat X Y ditentukan secara terprogram. |
|
isMovableHorizontally() | Apakah ruang kerja ini dapat dipindahkan secara horizontal? | |
isMovableVertically() | Apakah ruang kerja ini dapat dipindahkan secara vertikal? | |
isVisible() | Pengambil untuk isVisible | |
lookUpFocusableNode(id) | Lihat IFocusableTree.lookUpFocusableNode. | |
markFocused() | Menandai ruang kerja ini sebagai ruang kerja utama yang saat ini difokuskan. | |
moveDrag(e) | Melacak tarikan objek di ruang kerja ini. | |
newBlock(prototypeName, opt_id) | Mendapatkan blok yang baru dibuat. | |
newComment(id) | Mendapatkan komentar yang baru dibuat. | |
onNodeBlur() | Lihat IFocusableNode.onNodeBlur. | |
onNodeFocus() | Lihat IFocusableNode.onNodeFocus. | |
onTreeBlur(nextTree) | Lihat IFocusableTree.onTreeBlur. | |
onTreeFocus(_node, _previousTree) | Lihat IFocusableTree.onTreeFocus. | |
recordDragTargets() | Buat daftar semua area penghapusan untuk ruang kerja ini. | |
refreshTheme() | Memuat ulang semua blok di ruang kerja setelah tema diperbarui. | |
registerButtonCallback(key, func) | Mendaftarkan fungsi callback yang terkait dengan kunci tertentu, untuk klik pada tombol dan label di flyout. Misalnya, tombol yang ditentukan oleh XML harus dicocokkan dengan panggilan ke registerButtonCallback("CREATE_VARIABLE", yourCallbackFunction). | |
registerToolboxCategoryCallback(key, func) | Daftarkan fungsi callback yang terkait dengan kunci tertentu, untuk mengisi kategori toolbox kustom di ruang kerja ini. Lihat kategori variabel dan prosedur sebagai contoh. | |
removeButtonCallback(key) | Menghapus callback untuk klik pada tombol di flyout. | |
removeClass(className) | Menghapus class CSS dari ruang kerja. | |
removeToolboxCategoryCallback(key) | Hapus callback untuk klik pada nama kategori kustom di toolbox. | |
removeTopBlock(block) | Menghapus blok dari daftar blok teratas. | |
removeTopBoundedElement(element) | Menghapus elemen yang dibatasi dari daftar elemen yang dibatasi teratas. | |
removeTopComment(comment) | Menghapus komentar dari daftar komentar teratas. | |
render() | Merender semua blok di ruang kerja. | |
resize() | Mengubah ukuran dan memosisikan ulang semua chrome ruang kerja (kotak alat, sampah, scrollbar, dll.) Ini harus dipanggil saat ada perubahan yang memerlukan penghitungan ulang dimensi dan posisi sampah, zoom, kotak alat, dll. (misalnya, pengubahan ukuran jendela). | |
scroll(x, y) | Scroll ruang kerja ke offset yang ditentukan (dalam piksel), tetap dalam batas ruang kerja. Lihat komentar di workspaceSvg.scrollX untuk mengetahui detail selengkapnya tentang arti nilai ini. | |
scrollCenter() | Menempatkan ruang kerja di tengah. | |
setIsReadOnly(readOnly) | ||
setNavigator(newNavigator) | Menetapkan instance Navigator yang digunakan oleh ruang kerja ini. | |
setResizeHandlerWrapper(handler) | Simpan data pengendali pengubahan ukuran sehingga kita dapat menghapusnya nanti di dispose. | |
setResizesEnabled(enabled) | Memperbarui apakah ukuran ruang kerja ini telah diaktifkan. Jika diaktifkan, ruang kerja akan diubah ukurannya jika sesuai. Jika dinonaktifkan, ruang kerja tidak akan diubah ukurannya hingga diaktifkan kembali. Gunakan untuk menghindari pengubahan ukuran selama operasi batch, untuk performa. | |
setScale(newScale) | Menetapkan faktor zoom ruang kerja. | |
setTheme(theme) | Menetapkan objek tema ruang kerja. Jika tidak ada tema yang diteruskan, tema defaultnya adalah tema Classic . |
|
setVisible(isVisible) | Mengaktifkan/menonaktifkan visibilitas ruang kerja. Saat ini hanya ditujukan untuk ruang kerja utama. | |
startDrag(e, xy) | Mulai melacak tarikan objek di ruang kerja ini. | |
translate(x, y) | Terjemahkan ruang kerja ini ke koordinat baru. | |
updateInverseScreenCTM() | Menandai CTM layar terbalik sebagai kotor. | |
updateToolbox(toolboxDef) | Ubah hierarki blok di toolbox yang ada. | |
zoom(x, y, jumlah) | Memperbesar atau memperkecil ruang kerja relatif terhadap/dipusatkan pada koordinat (x, y) yang diberikan. | |
zoomCenter(type) | Memperbesar blok yang dipusatkan di tengah tampilan dengan memperbesar atau memperkecil. | |
zoomToFit() | Perbesar blok agar sesuai dengan ruang kerja jika memungkinkan. |