JQMGenerator = new Blockly.Generator( "CafeSQL" ) ;
CafeGenerator = JQMGenerator
$ = Agregar ;
VALUE = "input_value"
STATEMENT = "input_statement"
FIELDINPUT = "field_input"
FIELDDROPDOWN = "field_dropdown"
ID = '{DId|field_variable|{"variable":"idPagina1","variableTypes":["idPagina"],"defaultType":"idPagina"}'
ATRIBUTOS = '{DAtributos|input_value}'
TEMAPPAL = '{DTema|field_dropdown|{"options":[["Normal",""],["Flat UI redondeado","flr"],["Flat UI cuadrado","flq"],["Rojo","red"],["Rosa","pink"],["Violeta","purple"],["Púrpura","deep-purple"],["Índigo","indigo"],["Azul","blue"],["Celeste","lightblue"],["Cian","cyan"],["Turquesa","teal"],["Verde","green"],["Verde limón","light-green"],["Lima","lime"],["Amarillo","yellow"],["Ámbar","amber"],["Oro","orange"],["Naranja","deep-orange"],["Marrón","brown"],["Gris","grey"],["Gris azulado","blue-grey"],["Modo oscuro","dark"]]}' ;
TEMA = '{DTema|field_dropdown|{"options":[["A","a"],["B","b"],["C","c"],["D","d"],["E", "e"],["F", "f"],["G", "g"],["H", "h"],["I", "i"],["J", "j"],["K", "k"],["L", "l"],["M", "m"],["N", "n"]]}' ;
DTEMA = `red.pink.amber.orange.blue.green.lime.black`.split(".").map(function(n){return `["${n}","${n}"]`}).join(",") ;
DORG = `responsive.izquierda.centrado.derecha.justificado`.split(".").map(function(n){return `["${n}","${n}"]`}).join(",") ;
DTIPOS = `div.section.article.header.footer.aside.ul.ol.main.form.fieldset.legend.iframe.audio.title.table.thead.tbody.tfooter.tr.td.th.video`.split(".").map(function(n){return `["${n}","${n}"]`}).join(",") ;
DROLES = `Ninguno.panel.none.page.header.footer.content.main.navbar.listview.listdivider.controlgroup.button.popup.dialog`.split(".").map(function(n){return `["${n}","${n}"]`}).join(",");
DEFECTOSTEXTO = `b.strong.i.em.u.strike.strikethrough.sub.super.span`.split(".").map(function(n){return `["${n}","${n}"]`}).join(",");
DINPUTTYPES = `text.hidden.search.password.number.range.email.url..tel.button.checkbox.radio.color.date.datetime.datetime-local.time.month.week.file.image.reset.submit`.split(".").map(function(n){return `["${n}","${n}"]`}).join(",");
DPARRAFO = `párrafo P.botón BUTTON.anclaje/hipervínculo A.item de lista LI.citación blockquote.titular H1.titular H2.titular H3.titular H4.titular H5.titular H6.desplegable SELECT.opción OPTION.etiqueta LABEL.leyenda LEGEND.resumen SUMMARY`.split(".").map(function(n){return `["${n}","${n.split(" ").at(-1)}"]`}).join(",");
DDATA = `role.button.position.theme.icon.iconpos.transition.reverse.ajax.mini.inset.filter.filter-placeholder`.split(".").map(function(n){return `["${n}","${n}"]`}).join(",");
DATRI = `src.href.rel.id.class.name.type.src.r.cx.cy.rx.ry.width.height.fill.stroke.min.max.step.download.target.alt.title`.split(".").map(function(n){return `["${n}","${n}"]`}).join(",");
NARANJA = "#FFA500"
BLOQUES = "#1E90FF"
LISTAS = "#FF4500"
DATO = "#8B0045"
FUNCIONES = "#8B008B"
COLOR = {}
COLOR.NARANJA_CLARO = NARANJA.replace("FF","CC")
COLOR.NARANJA_OSCURO = "red"
COLOR.REGLA = "#630235"
COLOR.REGLA1 = "#721250"
Agregar( `TPuntoComa`, ';', { salida: true, color: "#CC0022" }, [' ;\n',0] ) ;
function AgrStat(Nombre,Mensaje,Color,Fn) {
Agregar( Nombre, Mensaje, { esStatement:true,color: Color||"#550055"},Fn)
}
AgrStat( "TIdea", "// {DIdea|field_input}", "#340099", `\n// {DIdea}\n` )
AgrStat( "TIdea2", "// {DIdea|field_input}{A|input_dummy}{DContenido|input_statement}", "#340099", `\n// {DIdea}\n{DContenido}\n` )
AgrStat( "TIdea3", " {A|input_dummy}{DContenido|input_statement}", "#340099", `\n<${"!--"} {DIdea} -->\n{DContenido}\n` )
Agregar(
`TEvento`
, `{DDato|field_input|{"text":"idAbc"}.on{DEvento|field_input|{"text":"dblclick"} = {DFn|input_value}`
, {
esStatement: true, color: "#CC0011"
}
, function(D){
if( D.DDato.trim() == "" || D.DFn.trim() == "" ) return "/* Acá debiera haber un evento "+D.DEvento+" */\n" ;
return `${D.DDato}.on${D.DEvento} = ${D.DFn} ;\n`
}
)
Agregar(
`TEventoAdd`
, `{DDato|field_input|{"text":"idAbc"}.addEventListener( "{DEvento|field_input|{"text":"dblclick"}", {DFn|input_value}, {DTrue|field_dropdown|["false","false"],["true","true"]} );`
, {
esStatement: true, color: "#CC0011"
}
, function(D){
if( D.DDato.trim() == "" || D.DFn.trim() == "" ) return "/* Acá debiera haber un evento "+D.DEvento+" */\n" ;
return `${D.DDato}.addEventListener( "${D.DEvento}", ${D.DFn}, ${D.DTrue.toLowerCase()} ) ;\n`;
}
)
Agregar(
`TEventoRemove`
, `{DDato|field_input|{"text":"idAbc"}.removeEventListener( "{DEvento|field_input|{"text":"dblclick"}" );`
, {
esStatement: true, color: "#CC0011"
}
, function(D){
if( D.DDato.trim() == "" || D.DFn.trim() == "" ) return "/* Acá debiera haber un evento "+D.DEvento+" */\n" ;
return `${D.DDato}.removeEventListener( "${D.DEvento}" ) ;\n`;
}
)
Agregar(
"TRepetir"
, `Repetir {N|field_number|{"value":"10"} veces con {T|field_input|{"text":"%%"}{A|input_dummy}{DContenido|input_statement}`
, {
esStatement: true
, color: "#111"
}
, function(D){
var s = "" ;
for( var i = 1; i <= Math.abs(D.N) ; i++ ) {
s+= D.DContenido.replace(
new RegExp( D.T, "gi" )
, i+""
)
}
return s ;
}
)
$(
"TTData", ` data-{clave|field_input}="{valor|field_input}"`
, {esStatement:true, color: "fuchsia"}
, ` data-{clave}="{valor}"`
)
$(
"TImpressSlide", `
{DContenido|input_statement}
`
, {esStatement:true,color:"purple"}
, `\n{DContenido}
\n`
)
$(
`TImpress`
, `{D|input_dummy}{DContenido|input_statement}
{B|input_dummy}{C|input_dummy}`
, {
color: "purple", esStatement: true
}
,`
{DContenido}
`
)
$(
"TImpressCircular"
, `Diapositivas en círculo{A|input_dummy}Radio:{DRadio|field_input}{B|input_dummy}{DContenido|input_statement}`
, {
color: "#400040", esStatement: true
}
, function(D){
$list = D.DContenido.match(/xxyy/g).length || 1 ;
$radio = D.DRadio || 100
$x = 0 ;
D.DContenido = D.DContenido.replace( /xxyy/g, function(a,b){
$ang = 360 / $list * $x ;
$d = "" ;
$d += ` data-x="${ $radio*Math.cos($ang/180*Math.PI) }" `
$d += ` data-z="${ $radio*Math.sin($ang/180*Math.PI) }" `
$d += ` data-rotate-y="${$ang}" `
$x++ ;
return $d;
} )
return D.DContenido ;
}
)
$(
"TImpressHoriz"
, `Diapositivas Horiz:{A|input_dummy}
X:{DXPrimer|field_number}
Y:{DYPrimir|field_number}{B|input_dummy}
Separación:{DSeparacion|field_number}
{C|input_dummy}{DContenido|input_statement}`
, {
color: "#400040", esStatement: true
}
, function(D){
$list = D.DContenido.match(/xxyy/g).length || 1 ;
$radio = D.DRadio || 100
$x = D.DXPrimer ;
$y = D.DYPrimir ;
D.DContenido = D.DContenido.replace( /xxyy/g, function(a,b){
$ang = 360 / $list * $x ;
$d = "" ;
$d += ` data-x="${ $x }" `
$d += ` data-y="${ $y }" `
//$d += ` data-rotate-y="${$ang}" `
$x+=D.DSeparacion ;
return $d;
} )
return D.DContenido ;
}
)
$(
"TImpressVerti"
, `Diapositivas Vertical:{A|input_dummy}
X:{DXPrimer|field_number}
Y:{DYPrimir|field_number}{B|input_dummy}
Separación:{DSeparacion|field_number}
{C|input_dummy}{DContenido|input_statement}`
, {
color: "#400040", esStatement: true
}
, function(D){
$list = D.DContenido.match(/xxyy/g).length || 1 ;
$radio = D.DRadio || 100
$x = D.DXPrimer ;
$y = D.DYPrimir ;
D.DContenido = D.DContenido.replace( /xxyy/g, function(a,b){
$d = "" ;
$d += ` data-x="${ $x }" `
$d += ` data-y="${ $y }" `
//$d += ` data-rotate-y="${$ang}" `
$y+=D.DSeparacion ;
return $d;
} )
return D.DContenido ;
}
)
// --------------------------------------------------[ PHP ]
$(
'TPHPInclude'
, 'Incluir con PHP el archivo __DIR__{DDir|field_checkbox}{DArchivo|field_input|{"text":"archivo"}.php'
, { esStatement: true, color: "black" }
, '\<\?php include {[DDir]=="TRUE"?`__DIR__ . "/`:`"`}{DArchivo}.php" ; \?\>'
, 'Si trabajás con PHP permite incluir el contenido de otro archivo .php'
)
$(
'TPHPIfElse'
, 'PHP Si ocurriera {DCondicion|field_input|{"text":"isset($variable) AND $a == 25"} entonces mostrar {D|input_dummy}{DSi|input_statement} /Fin Si PHP'
, { esStatement: true, color: "black" }
,function(D){return `
\<\?php if( ${D.DCondicion||1} ) { \?\>
${D.DSi}
\<\?php } \?\>
`}
,`Si trabajás con PHP permite tomar decisiones según la condición que agregues`
)
$(
'TPHPElseIf'
, `PHP Pero si (elseif) ocurriera que {DCondicion|field_input|{"text":"isset($variable) AND $b==-1"} entonces...`
, { esStatement: true, color: "black" }
, function(D){return '\n\<\?php } else if( '+D.DCondicion+' ) { \?\>\n'}
)
$(
`TPHPElse`
, `PHP Caso contrario (else) `
, { esStatement: true, color: "black" }
, function(D){return '\<\?php } else { \?\>\n'}
)
$(
'TPHPForEach'
, 'PHP foreach( {DCondicion|field_input|{"text":"$lista as $n => $valor"} ) repetir {D|input_dummy}{DRepetir|input_statement}/Fin Para Cada PHP'
, { esStatement: true, color: "black" }
,function(D){return `
\<\?php foreach( ${D.DCondicion||1} ) { \?\>
${D.DRepetir}
\<\?php } \?\>`}
, `Si trabajás con PHP permite iterar un Array/Conjunto \ny repetir los mismos bloques para cada item`
)
$(
'TPHPFor'
, 'PHP for( {DCondicion|field_input|{"text":"$i = 0 ; $i < 25 ; $i++"} ) repetir {D|input_dummy}{DSi|input_statement} /Fin For PHP'
, { esStatement: true, color: "black" }
,function(D){return `
\<\?php for( ${D.DCondicion||1} ) { \?\>
${D.DSi}
\<\?php } \?\>
`}
,`Si trabajás con PHP permite repetir un proceso con la variable dada`
)
$(
'TPHPIniciarSesiones'
, 'Habilitar las sesiones'
, {esStatement:true, color: "black"}
, `\<\?php session_start() ; \?\>`
, `Si trabajás con PHP habilita la variable $_SESSION[]`
)
$(
'TPHPDestruirSesiones'
, 'Destruir cualquier sesión'
, {esStatement: true, color: "black"}
, `\<\?php session_destroy() ; \?\>`
, `Si trabajás con PHP deshabilita la variable $_SESSION[]`
)
$(
'TPHPHeader'
, 'PHP Header {DHeader|field_input|{"text":"Location: abc.php"}'
, {esStatement: true, color: "black"}
, `\<\?php header( "{DHeader}" ) ; \?\>`
)
$(
"PErrores", 'PHP Habilitar ver errores', {esStatement: true, color: "#A5AA00"}
, function(){return"\n\<\?php // Bloque: PErrores\nini_set('display_errors', 1);\nini_set('display_startup_errors', 1);\nerror_reporting(E_ALL);\?\>\n"}
, `Si trabajás con PHP habilita la muestra de errores`
)
$(
'TPHPVar'
, 'PHP Variable {DTipo|field_dropdown|{"options":[["$",""],["$_GET","$_GET"],["$_POST","$_POST"],["$_SESSION","$_SESSION"]]} {DNombre|field_input|{"text":"abc"}'
, { salida: "String", color: "black" }
, function(D){return [D.DTipo==="$" ? '$'+D.DNombre : `${D.DTipo}["${D.DNombre}"]`,0] }
)
$(
'TPHPInline'
, 'PHP mostrar {DInline|input_value} {DOtro|input_value}'
, { salida: "String", color: "black", renglones: 2}
, [`\<\?= {DInline} \?\>{DOtro}`,0]
)
// --------------------------------------------------[ /PHP ]
////////////////// SVG
Agregar(
`AMano`
, `Convertir SVG a dibujo pintado a mano`
, {
esStatement: true
}
, `
`
)
Agregar(
`TSVG`
, `<{DItem|field_dropdown|["svg","svg"],["rect","rect"],["circle","circle"],["ellipse","ellipse"],["image","image"],["path","path"],["text","text"],["polygon","polygon"],["polyline","polyline"],["line","line"],["foreignObject","foreignObject"]} atr{DAtributos|input_value}>{DContenido|input_statement}>`
, {
esStatement: true
, color: "30"
}
, `<{DItem} {DAtributos}>\n{DContenido}{DItem}>\n`
)
Agregar(
`TSVG2`
, `<{DItem|field_dropdown|["rect","rect"],["circle","circle"],["ellipse","ellipse"],["image","image"],["path","path"],["text","text"],["polygon","polygon"],["polyline","polyline"],["line","line"],["svg","svg"]} atr{DAtributos|input_value}>{DContenido|input_statement}>`
, {
esStatement: true
, color: "50"
}
, `<{DItem} {DAtributos}>\n{DContenido}{DItem}>\n`
)
Agregar(
`TSVG3`
, `{DCodigo|field_input}`
, {
esStatement: true
, color: "50"
}
, function(D) {
//console.log(7000,D);
return D.DCodigo.replace( /\