
Blocks.js es un editor visual de JavaScript para editar el gráfico de flujo de datos, se puede utilizar para editar gráficos de procesos.
Tenga en cuenta que este es solo un editor de front-end flexible, no hay back-end aquí.
Puedes probar una demostración en vivo.
Blocks.js se alimenta utilizando especificaciones de bloques, utilizando meta informaciones que explican sus campos, nombre y comportamiento.
Permite al usuario editar la escena de bloques.
Luego, gracias por ejemplo al método export() , puede recuperar la escena editada. Cuando carga los bloques, también puede cargar una escena.
Si desea usarlo, tendrá que obtener el código, ya sea clonando este repositorio o descargándolo.
blocks.js usa:
Todos estos requisitos están incluidos en este repositorio. Es por eso que las bibliotecas de terceros se verán así:
<!-- 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 " /> Luego, tendrá que cargar blocks.js y blocks.css :
<!-- blocks.js -->
< script type =" text/javascript " src =" build/blocks.js " > </ script >
< link rel =" stylesheet " type =" text/css " href =" build/blocks.css " />Aquí hay un ejemplo simple:
// 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" ) ; Eche un vistazo a simple.html .
Los bloques son un objeto que contiene:
name : El nombre del bloquefamily : la familia de bloques, esto se usará para ponerlo en la subsección del menú de bloques correctosmodule : el módulo de bloque, actúe como un espacio de nombres y evite las colisiones de nombresdescription : Una descripción de lo que hace el bloque para ayudar al usuariosize : el tamaño del bloque, puede ser ̀ small , normal o un cierto número de píxelesclass : Clases CSS adicionales que se agregarán al bloquefields : una lista de matriz de los campos de bloques, ver a continuaciónUn campo puede ser una entrada, salida y/o un parámetro editable del bloque. Es un objeto que contiene:
name : El nombre del campo no debe contener caracteres especialeslabel : La etiqueta del campo, que se imprimirá en el título de bloques, puede contener caracteres especialesattrs : un campo de contenido de cadena atributos, puede contener input , output y/o editable . Por ejemplo: "editable input"type : el tipo de campo. Ver tipificación.defaultValue : el valor predeterminado del campo, que se usará si es editablehide : no muestre el campo editable en la información del bloquehideLabel : no muestre la etiqueta de campo editable en la información del bloquecard : la cardinalidad de la entrada/salida. Esto puede ser una cadena como "0-3" o y una matriz como [0,3] , representa los bordes mínimo y máximo que se pueden conectar a la E/S.dimension : el número de conexión en el mismo campo puede depender de otro valor de campo, tamaño o ser fijado a un número estático. Ver Variadic I/OSNo dude en echar un vistazo a la demostración del repositorio, en el directorio `demostración/̀.
La escena es un objeto fácil de ser que contiene:
blocks : la escena bloqueaedges : la escena bordesTodo el bloque de escena está representado con:
id : su identificación numéricax e y , la posición del bloque en la escenatype : el nombre del tipo de bloquemodule : el tipo de bloque de bloque Nombre del módulovalues : una matriz que contiene los valores de todos sus campos editablesUna ventaja de escena está representada con:
id : su identificación numéricablock1 : La ID del bloque donde comienza el bordeconnector1 : el conector del bloque donde comienza el bordeblock2 : La ID del bloque donde termina el bordeconnector2 : el conector del bloque donde termina el bordeUn conector es una matriz que contiene 2 o 3 elementos:
input o output , explicando si el conector está saliendo del bloque o entrando en él Cada campo se puede escribir. Los tipos básicos ( string , choice , longtext , bool , int ) se representan como entradas de formulario, todos los demás tipos desconocidos se representan como una simple entrada de texto. (Nota: para el tipo choice , puede definir opciones agregando una entrada choices ̀ en el campo de bloque).
Si el tipo termina con [] , se considera una matriz, los botones Agregar y Retirar se agregarán al editar.
Por defecto, los diferentes tipos no son compatibles y, por lo tanto, no se pueden vincular juntos. Sin embargo, puede decirle a Blocks.js que algunos tipos son compatibles usando:
// 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' ) ; Algunos E/S pueden ser variádicos, piense en un bloque que generaría los n primeros usuarios de una base de datos, podría definirlo de esta manera:
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"
}
]
} ) ; Aquí, el número de usuarios producidos será editable, utilizando el campo n editable. Tenga en cuenta que el # será reemplazado por el número de la salida.
Aquí hay un ejemplo que usa blocks.js:
El desarrollo toma lugar en el directorio src/ . Hay un Makefile usando la línea de comandos uglifyjs para crear la compilación.
Puede usar index-dev.html para probar blocks.js usando sus fuentes y index.html para probarlo en modo de compilación.
La build/ directorio de este repositorio no se actualizará en cada confirmación, sino que debe contener una instantánea reciente del repositorio.
Blocks.js está bajo licencia MIT. Eche un vistazo al archivo de licencia para obtener más información.