
Blocks.js adalah editor visual JavaScript untuk mengedit grafik DataFlow, dapat digunakan untuk mengedit grafik proses.
Perhatikan bahwa ini hanyalah editor front-end yang fleksibel, tidak ada back-end di sini.
Anda dapat mencoba demo langsung.
Blocks.js diberi makan menggunakan spesifikasi blok, menggunakan informasi meta yang menjelaskan bidang, nama, dan perilakunya.
Ini memungkinkan pengguna untuk mengedit adegan blok.
Kemudian, terima kasih misalnya untuk export() , metode, Anda bisa mendapatkan kembali adegan yang diedit. Saat Anda memuat blok, Anda juga dapat memuat kembali pemandangan.
Jika Anda ingin menggunakannya, Anda harus mengambil kode, baik dengan mengkloning repositori ini, atau dengan mengunduhnya.
blocks.js menggunakan:
Semua persyaratan ini termasuk dalam repositori ini. Inilah sebabnya mengapa perpustakaan pihak ketiga akan terlihat seperti ini:
<!-- Third party libraries -->
< script type =" text/javascript " src =" build/jquery.js " > </ script >
< script type =" text/javascript " src =" build/jquery.json.min.js " > </ script >
< script type =" text/javascript " src =" build/jquery.mousewheel.min.js " > </ script >
< script type =" text/javascript " src =" build/jquery.svg.min.js " > </ script >
< script type =" text/javascript " src =" build/jquery.formserialize.min.js " > </ script >
< script type =" text/javascript " src =" build/jquery.fancybox.min.js " > </ script >
< link rel =" stylesheet " type =" text/css " href =" build/fancybox/jquery.fancybox.css " /> Kemudian, Anda harus memuat blocks.js dan blocks.css :
<!-- blocks.js -->
< script type =" text/javascript " src =" build/blocks.js " > </ script >
< link rel =" stylesheet " type =" text/css " href =" build/blocks.css " />Berikut adalah contoh sederhana:
// Instanciate Blocks
var blocks = new Blocks ( ) ;
// Registering a simple block, with an input
// and an output
blocks . register ( {
name : "Test" ,
fields : [
{
name : "Input" ,
attrs : "input"
} ,
{
name : "Output" ,
attrs : "output"
}
]
} ) ;
// Running blocks on the div with the name "blocks"
blocks . run ( "#blocks" ) ; Lihatlah simple.html .
Blok adalah objek yang berisi:
name : Nama blokfamily : The Block Family, ini akan digunakan untuk meletakkannya di sub-bagian menu blok kananmodule : Modul Blok, Bertindak Seperti Namespace dan Hindari Tabrakan Namadescription : Deskripsi apa yang dilakukan blok, untuk membantu penggunasize : Ukuran blok, bisa ̀ small , normal atau sejumlah piksel tertentuclass : Kelas tambahan CSS yang akan ditambahkan ke blokfields : Daftar Array Bidang Blok, lihat di bawahBidang dapat berupa input, output dan/atau parameter blok yang dapat diedit. Itu adalah objek yang berisi:
name : Nama lapangan, tidak boleh berisi karakter khususlabel : Label bidang, yang akan dicetak dalam judul blok, dapat berisi karakter khususattrs : Atribut bidang penentuan string, dapat berisi input , output dan/atau editable . Misalnya: "editable input"type : Jenis bidang. Lihat pengetikan.defaultValue : Nilai default bidang, yang akan digunakan jika itu dapat diedithide : Jangan menampilkan bidang yang dapat diedit di informasi blokhideLabel : Jangan menampilkan label bidang yang dapat diedit di informasi blokcard : Kardinalitas input/output. Ini bisa berupa string seperti "0-3" atau dan array seperti [0,3] , itu mewakili minimum dan tepi maksimum yang dapat dihubungkan ke I/O.dimension : Jumlah koneksi pada bidang yang sama dapat bergantung pada nilai bidang lain, ukuran, atau diperbaiki ke nomor statis. Lihat I/OS VariadikJangan ragu untuk melihat demo repositori, di direktori `demo/̀.
Adegan ini adalah objek yang mudah diarahkan:
blocks : adegan blokedges : Tepi AdeganSemua blok adegan diwakili dengan:
id : ID numeriknyax dan y , posisi blok di tempat kejadiantype : Nama Jenis Blokmodule : Nama Modul Jenis Blokvalues : Array yang berisi nilai semua bidang yang dapat dieditnyaTepi adegan diwakili dengan:
id : ID numeriknyablock1 : ID blok di mana tepi dimulaiconnector1 : Konektor blok di mana tepi dimulaiblock2 : ID blok di mana ujungnya berakhirconnector2 : Konektor blok di mana tepi berakhirKonektor adalah array yang berisi 2 atau 3 elemen:
input atau output , menjelaskan jika konektor keluar dari blok atau masuk ke dalamnya Setiap bidang dapat diketik. Tipe dasar ( string , choice , longtext , bool , int ) diterjemahkan sebagai input bentuk, semua jenis lain yang tidak diketahui diterjemahkan sebagai input teks sederhana. (Catatan: Untuk jenis choice , Anda dapat menentukan pilihan menambahkan entri ̀ choices di bidang blok).
Jika jenisnya berakhir dengan [] , itu dianggap sebagai array, tombol Tambah & Lepaskan akan ditambahkan saat mengedit.
Secara default, berbagai jenis tidak kompatibel, dan karenanya tidak dapat dihubungkan bersama. Namun Anda dapat memberi tahu Bloks.js bahwa beberapa jenis yang kompatibel menggunakan:
// Tells blocks.js that string and number are compatible and can be linked
blocks . types . addCompatibility ( 'string' , 'number' ) ;
// Tells blocks.js that an image can be converted to a string, however, the
// string can't be converted to an image
blocks . types . addCompatibilityOneWay ( 'image' , 'string' ) ; Beberapa I/OS dapat berupa variadik, pikirkan blok yang akan menghasilkan N pengguna pertama dari suatu database, Anda dapat mendefinisikannya dengan cara ini:
blocks . register ( {
name : "TopUsers" ,
description : "Outputs the n first users of the database" ,
fields : [
{
name : "n" ,
type : "int" ,
hide : true ,
defaultValue : 3 ,
attrs : "editable"
} ,
{
name : "users" ,
label : "User #" ,
dimension : "n" ,
attrs : "output"
}
]
} ) ; Di sini, jumlah pengguna yang dikeluarkan akan dapat diedit, menggunakan bidang n dapat diedit. Perhatikan bahwa # akan diganti dengan jumlah output.
Berikut adalah contoh yang menggunakan blocks.js:
Pengembangan berlangsung di src/ Direktori. Ada Makefile menggunakan baris perintah uglifyjs untuk membuat build.
Anda dapat menggunakan index-dev.html untuk menguji blocks.js menggunakan sumbernya, dan index.html untuk mencobanya dalam mode build.
build/ direktori repositori ini tidak akan diperbarui pada setiap komit, tetapi harus berisi snapshot terbaru dari repositori.
Blocks.js berada di bawah lisensi MIT. Lihatlah file lisensi untuk informasi lebih lanjut.