diff --git a/js/script_Luk_Q.js b/js/script_Luk_Q.js index 7e8833b..86e9a9f 100644 --- a/js/script_Luk_Q.js +++ b/js/script_Luk_Q.js @@ -129,11 +129,9 @@ $(document).ready(function() { break; case "andCond": addLogicCond("AND","#sortable0") - refreshConnectWith(); break; case "orCond": addLogicCond("OR","#sortable0") - refreshConnectWith(); break; default: }; @@ -658,6 +656,7 @@ $(document).ready(function() { cursor: 'move', update: function() {refreshSortables();} }); + refreshConnectWith(); } // Funzione di refresh della lista delle tab delle clausole @@ -694,38 +693,56 @@ $(document).ready(function() { // Funzione di refresh della lista clausole nella tab principale e del json della query function refreshClaList(){ + var l_f = $("form #lemma_forma")[0].options[$("form #lemma_forma")[0].selectedIndex].value; var qText = $("form #queryText")[0].value; if (qText == "") { //disattivo clausola 0 se il testo e' vuoto var claActive = 0 } else { var claActive = 1 }; - var l_f = $("form #lemma_forma")[0].options[$("form #lemma_forma")[0].selectedIndex].value; - var tabsContent=$("#cla-TabContent").find(".tab-pane:not(:first)"); - var len=0; queryJson.Clausola0 = JSON.parse('{"queryText": "' + qText + '", "lemma_forma": "' + l_f + '", "TipoClausola": "0", "Attiva": "' + claActive + '"}'); + var tabsContent=$("#cla-TabContent").find(".tab-pane:not(:first)"); + var len=0; if ($(tabsContent).length) { + if ($("#H-cla0")[0]) { + $("#H-cla0")[0].remove(); + }; $(tabsContent).each(function(){ - if ($("#H-cla0")[0]) { - $("#H-cla0")[0].remove(); - }; len++; + var claId = $(this).attr('id'); + createClaListItem(len, claId, "#sortable0"); + }); + if (queryJson["Clausola" + (len + 1)]) //se vengo dalla rimozione di una clausola + delete queryJson["Clausola" + (len + 1)]; + } else { + if (claListLen == 0 && condListLen == 0) { + $('#sortable0').html(emptyClaList); + queryJson.EsprLogica = ""; + queryJson.LogicaGui = ""; + } + tabID = 0; + }; + } + + // Funzione di creazione del LI nella lista delle clausole nel tab principale + function createClaListItem(len, claId, sortableNum){ var claText = ''; var checkInsert = '"'; - var claId = $(this).attr('id'); var claListItemID = "H-" + claId; - var claType = $(this).attr('data-claType'); - var claActive = $(this).attr('data-claActive'); + var claType = $("#" + claId).attr('data-claType'); + var claActive = $("#" + claId).attr('data-claActive'); if (claActive > 0) { checkInsert = '" checked="checked"'; }; + var l_f = $("form #lemma_forma")[0].options[$("form #lemma_forma")[0].selectedIndex].value; + var qText = $("form #queryText")[0].value; var jsonTextToParse = '{"queryText": "' + qText + '", "lemma_forma": "' + l_f + '", "TipoClausola": "' + claType + '", "Attiva": "' + claActive + '"'; switch (claType) { case "Grammaticale": - var gramSelect = $(this).find(".catgram"); + var gramSelect = $("#" + claId).find(".catgram"); claText = len + ". Categoria grammaticale: " + gramSelect[0].options[gramSelect[0].selectedIndex].text + '
'; jsonTextToParse = jsonTextToParse + ', "' + gramSelect.attr('name') + '": "' + gramSelect[0].options[gramSelect[0].selectedIndex].value + '"'; - var claSubParList = $(this).children(".dettaglifiltri").find("select, fieldset"); + var claSubParList = $("#" + claId).children(".dettaglifiltri").find("select, fieldset"); claSubParList.each(function(){ var claSubParType = $(this)[0].type; if (claSubParType == "fieldset" && $(this).find(":checked").length) { @@ -743,33 +760,23 @@ $(document).ready(function() { }); break; case "Sintattico": - var syntSelect = $(this).find("#synttypes"); -; var funcSelect = $(this).find("#syntfunc"); + var syntSelect = $("#" + claId).find("#synttypes"); +; var funcSelect = $("#" + claId).find("#syntfunc"); claText = len + ". Tipo sintattico: " + syntSelect[0].options[syntSelect[0].selectedIndex].text + ';
Livello di subordinazione: ' + funcSelect[0].options[funcSelect[0].selectedIndex].text; jsonTextToParse = jsonTextToParse + ', "' + syntSelect.attr('name') + '": "' + syntSelect[0].options[syntSelect[0].selectedIndex].value + '", "' + funcSelect.attr('name') + '": "' + funcSelect[0].options[funcSelect[0].selectedIndex].value + '"'; break; default: - claText = len + ". " + $(this).text(); + claText = len + ". " + $("#" + claId).text(); checkInsert = '" disabled'; }; var LItext = claLIpart1 + claListItemID + claLIpart2 + claText + claLIpart3 + len + checkInsert + claLIpart4 + len + claLIpart5; if ($("#" + claListItemID)[0]) { $("#" + claListItemID).replaceWith(LItext); } else { - $("#sortable0").append(LItext); + $(sortableNum).append(LItext); }; queryJson["Clausola" + len] = JSON.parse(jsonTextToParse + '}'); - }); - if (queryJson["Clausola" + (len + 1)]) //se vengo dalla rimozione di una clausola - delete queryJson["Clausola" + (len + 1)]; - } else { - if (claListLen == 0 && condListLen == 0) { - $('#sortable0').html(emptyClaList); - queryJson.EsprLogica = ""; - queryJson.LogicaGui = ""; - } - tabID = 0; - }; + } // Funzione di refresh dei placeholders e attivazione/disattivazione bottoni nelle liste sortable @@ -856,7 +863,6 @@ $(document).ready(function() { $("#sparqlquery").val(logicExprString); queryJson.EsprLogica = logicExprString.split(' '); queryJson.LogicaGui = guiLogicString.split(' '); - console.log(queryJson.LogicaGui); }; // Funzione di refresh dei collegamenti tra elementi sortable @@ -933,14 +939,8 @@ $(document).ready(function() { function makeUpGui(queryJson) { $("#risultatitesto").val(queryJson["LogicaGui"]); // 1. verifica json legit --> TO DO - // 2. pulire interfaccia --> OK - // 3. clausola0 --> OK - // 4. contare clausole, ricrearle in ordine e popolarle --> OK - // 5. ricreare condizioni logiche --> OK - // 6. ricreare albero logico --> TO DO - // 7. ??? // ------------------- - // 2: + // Pulizia interfaccia: var tabsContent=$("#cla-TabContent").find(".tab-pane:not(:first)"); var tabs=$("#tab-list li:not(:first)"); if ($(tabsContent).length) { @@ -955,16 +955,17 @@ $(document).ready(function() { condListLen = 0; tabID = 0; $('#sortable0').html(emptyClaList); - // 3: + // Rigenerazione Clausola0: if (queryJson["Clausola0"].Attiva) { $("#cla0 #lemma_forma").val(queryJson["Clausola0"].lemma_forma); $("#cla0 #queryText").val(queryJson["Clausola0"].queryText); }; - // 4 e 5: + // Generazione lista clausole e condizioni con elementi padre: guiLogicString = queryJson.LogicaGui; var clau2Make = ""; - var treeLevel = []; - var claParent = []; + var claParent = []; // array di coppie [elemento, elemento padre] + var treeLevel = []; // pila di elementi padre + var condNum = 0; for (var i=0; i < guiLogicString.length; i++) { switch (guiLogicString[i]) { case "(": @@ -973,84 +974,81 @@ $(document).ready(function() { treeLevel.pop(); break; case "OR": - addLogicCond("OR",treeLevel[treeLevel.length - 1]); - treeLevel.push("#sortable" + condListLen); - guiLogicString[i] = "#sortable" + condListLen; - refreshConnectWith(); + claParent.push([guiLogicString[i], treeLevel[treeLevel.length - 1]]); + treeLevel.push("#sortable" + ++condNum); break; case "AND": if (i > 1) { - addLogicCond("AND",treeLevel[treeLevel.length - 1]); - treeLevel.push("#sortable" + condListLen); - refreshConnectWith(); - guiLogicString[i] = "#sortable" + condListLen; + claParent.push([guiLogicString[i], treeLevel[treeLevel.length - 1]]); + treeLevel.push("#sortable" + ++condNum); } else { - guiLogicString[1] = "#sortable0"; treeLevel.push("#sortable0"); }; break; default: - claParent.push(treeLevel[treeLevel.length - 1]); + claParent.push([guiLogicString[i].replace("Clausola", ""), treeLevel[treeLevel.length - 1]]); }; }; - //console.log(claParent); - for (var i=1; i <= claParent.length; i++) { - clau2Make = queryJson["Clausola" + i].TipoClausola; - active = queryJson["Clausola" + i].Attiva - switch (clau2Make) { - case "Grammaticale": - selectedValue = queryJson["Clausola" + i].typeGramm0; - addGramCla(active); - if (selectedValue != "all") { - $("#cla" + tabID + " .catgram").val(selectedValue); - addCatgramSubcla("cla" + tabID,selectedValue); - var ks = Object.keys(queryJson["Clausola" + i]); - for (var j = 5; j < ks.length; j++) { - var test="cla" + i + ks[j]; - var melement = document.getElementById(test); - switch (melement.type) { - case "fieldset": - var sval = queryJson["Clausola" + i][ks[j]] - $("#cla" + tabID + sval.replace(/\s/g, '')).attr("checked",true); - break; - case "select-one": - melement.value=([queryJson["Clausola" + i][ks[j]]]) - break; - default: + $(claParent).each(function(){ // rigenero le clausole nei tab + var itm = $(this)[0] + if (itm != "OR" && itm != "AND") { + clau2Make = queryJson["Clausola" + itm].TipoClausola; + active = queryJson["Clausola" + itm].Attiva + switch (clau2Make) { + case "Grammaticale": + selectedValue = queryJson["Clausola" + itm].typeGramm0; + addGramCla(active); + if (selectedValue != "all") { + $("#cla" + tabID + " .catgram").val(selectedValue); + addCatgramSubcla("cla" + tabID, selectedValue); + var ks = Object.keys(queryJson["Clausola" + itm]); + for (var j = 5; j < ks.length; j++) { + var melID = "cla" + tabID + ks[j]; + var melement = document.getElementById(melID); + switch (melement.type) { + case "fieldset": + var sval = queryJson["Clausola" + itm][ks[j]] + $("#cla" + tabID + sval.replace(/\s/g, '')).attr("checked", true); + break; + case "select-one": + melement.value = ([queryJson["Clausola" + itm][ks[j]]]) + break; + default: + }; }; }; - }; - break; - case "Sintattico": - addSyntCla(active); - if (queryJson["Clausola" + i].typeSyntax0 != ".+") { - $("#cla" + tabID + " #synttypes").val(queryJson["Clausola" + i].typeSyntax0); - } - if (queryJson["Clausola" + i].functionSyntax != ".+") { - $("#cla" + tabID + " #syntfunc").val(queryJson["Clausola" + i].functionSyntax); - } - break; - case "Metafore": - addMetaCla(active); - break; - case "Dialoghi": - addDialCla(active); - break; - case "Struttura": - addStruCla(active); - break; - default: - }; - var ind = guiLogicString.indexOf("Clausola" + i); - guiLogicString[ind] = "#cla" + tabID; - }; - // 6: - //console.log(guiLogicString); - refreshTabList(); - refreshClaList(); - refreshSortables(); + break; + case "Sintattico": + addSyntCla(active); + if (queryJson["Clausola" + itm].typeSyntax0 != ".+") { + $("#cla" + tabID + " #synttypes").val(queryJson["Clausola" + itm].typeSyntax0); + } + if (queryJson["Clausola" + itm].functionSyntax != ".+") { + $("#cla" + tabID + " #syntfunc").val(queryJson["Clausola" + itm].functionSyntax); + } + break; + case "Metafore": + addMetaCla(active); + break; + case "Dialoghi": + addDialCla(active); + break; + case "Struttura": + addStruCla(active); + break; + default: + }; + }; + }); + $(claParent).each(function(){ // rigenero le liste di clausole e condizioni logiche nel tab principale + if ($(this)[0] == "OR" || $(this)[0] == "AND") { + addLogicCond($(this)[0],$(this)[1]); + } else { + createClaListItem($(this)[0], "cla" + $(this)[0], $(this)[1]); + refreshSortables(); + }; + }); }; - });