From 921ba47da57ea67b99ea7ba9b618ad63bf28bf29 Mon Sep 17 00:00:00 2001 From: baigner <benedikt.aigner@rwth-aachen.de> Date: Mon, 2 Jul 2018 13:02:29 +0200 Subject: [PATCH] Started on "create graph from scratch" (not finished) Former-commit-id: 8bfd7929caf51d8fa21f998f1e872602a7922662 --- kadmos/vistoms/templates/VISTOMS.html | 747 +++++++++++++------------- 1 file changed, 381 insertions(+), 366 deletions(-) diff --git a/kadmos/vistoms/templates/VISTOMS.html b/kadmos/vistoms/templates/VISTOMS.html index 704c21815..120c2acf2 100644 --- a/kadmos/vistoms/templates/VISTOMS.html +++ b/kadmos/vistoms/templates/VISTOMS.html @@ -32,6 +32,10 @@ alert("OOPS! VISTOMS unfortunately does not work properly on " + bowser.name + ". Please use a different browser to see its awesome visualization features!") } + //aigner: Include function + function include(arr,obj) { + return (arr.indexOf(obj) != -1); + } //aigner: Move to front function d3.selection.prototype.moveToFront = function() { @@ -257,6 +261,360 @@ //############################################################## + //aigner: HIER WEITER!!! + function addDesignCompetence() + { + bootbox.hideAll(); + + var html = d3.select("html") + var form_content = html.append("div").attr("class","form-content").attr("style","display:none") + var form = form_content.append("form").attr("class","form").attr("role","form") + var form_group, input; + + //Tool information + form_group = form.append("div").attr("class","form-group") + form_group.append("text").text("Name") + input = form_group.append("input") + .attr("id","function_node") + .attr("class","form-control") + .attr("name","function_node") + .attr("placeholder","Add a tool name here...") + //Tool input xml + form_group = form.append("div").attr("class","form-group") + form_group.append("text").text("Tool input XML") + input = form_group.append("input") + .attr("type","file") + .attr("id","input_xml") + .attr("name","input_xml") + //Tool output xml + form_group = form.append("div").attr("class","form-group") + form_group.append("text").text("Tool output XML") + input = form_group.append("input") + .attr("type","file") + .attr("id","output_xml") + .attr("name","output_xml") + + + var modal = bootbox.dialog({ + message: $(".form-content").html(), + title: "Add design competence", + size: "large", + buttons: [ + { + label: "Cancel", + className: "btn btn-default pull-left", + callback: function() { + modal.modal("hide"); + d3.selectAll(".form-content").remove(); + } + }, + { + label: "OK", + className: "btn btn-primary pull-left", + callback: function() { + + //get form data + var form_data = { + function_node: $('form #function_node').val(), + input_nodes_xPath: $('form #input_nodes_xPath').val(), + input_nodes_name: $('form #input_nodes_name').val(), + output_node_xPath: $('form #output_node_xPath').val(), + equation: $('form #equation').val(), + language: $('form #language').val() + } + + + var bootboxContent = {title: "Add mathematical function", message: '<p>Please be patient...</p>'}; + var xhr = $.ajax({ + type: 'POST', + url: '/kadmos_add_mathematical_function', + data: {'graphID':graphID, 'currentOrder':nodeOrder, 'form_data':JSON.stringify(form_data)}, + success: function(result) + { + if (result.includes("ERROR:")) + { + bootboxContent.message = result + kadmosErrorMessage(bootboxContent); + } + else + { + var updatedData = {}; + updatedData = data; + var graphData = JSON.parse(result); + for (var i = 0; i < updatedData.graphs.length; i++) + { + if (graphID == updatedData.graphs[i].id) + { + updatedData.graphs[i] = graphData.graphs[0]; + } + } + + clearView(); + makeKadmosMenu(updatedData); + xdsm_script(updatedData,graphID); + + bootboxContent.message = "Success!" + kadmosSuccessMessage(bootboxContent) + } + }, + error: function(result) + { + bootboxContent.message = result + kadmosErrorMessage(bootboxContent); + } + }); + kadmosHavePatience(xhr, bootboxContent) + kadmosHavePatience(xhr, bootboxContent) + modal.modal("hide"); + d3.selectAll(".form-content").remove(); + } + } + ], + onEscape: function() { + modal.modal("hide"); + d3.selectAll(".form-content").remove(); + } + }); + + } + + //aigner: HIER WEITER!!! --> Add contacts if not already existing + function addDCMetadata(theCurrentGraph, aNode=null) + { + bootbox.hideAll(); + + var metadata; + if (aNode != null) + { + metadata = aNode.metadata; + } + + var html = d3.select("html") + var form_content = html.append("div").attr("class","form-content").attr("style","display:none") + var form = form_content.append("form").attr("class","form").attr("role","form") + var form_group, input; + + //General information + form_group = form.append("div").attr("class","form-group") + form_group.append("label").text("General information") + form_group = form.append("div").attr("class","form-group") + form_group.append("text").text("Description") + input = form_group.append("textarea") + .attr("id","description") + .attr("class","form-control") + .attr("name","description") + .attr("placeholder","Add a description for the DC here") + + form_group = form.append("div").attr("class","form-group") + form_group.append("text").text("Status") + input = form_group.append("select").attr("id","status").style("margin-left","5px") + input.append("option").attr("type","select").attr("value","-").text("Please select...") + input.append("option").attr("type","select").attr("value","Available").text("Available") + input.append("option").attr("type","select").attr("value","N/A").text("N/A") + var contacts = [] + if (theCurrentGraph.organization.contacts){contacts=theCurrentGraph.organization.contacts}; + console.log(theCurrentGraph) + form_group = form.append("div").attr("class","form-group") + form_group.append("text").text("Owner") + input = form_group.append("select").attr("id","owner_uid").style("margin-left","5px") + input.append("option").attr("type","select").attr("value","-").text("Please select...") + contacts.forEach(function(contact){ + input.append("option").attr("type","select").attr("value",contact.attrib.uID).text(contact.name + " (" + contact.company + ")") + }) + form_group = form.append("div").attr("class","form-group") + form_group.append("text").text("Creator") + input = form_group.append("select").attr("id","creator_uid").style("margin-left","5px") + input.append("option").attr("type","select").attr("value","-").text("Please select...") + contacts.forEach(function(contact){ + input.append("option").attr("type","select").attr("value",contact.attrib.uID).text(contact.name + " (" + contact.company + ")") + }) + form_group = form.append("div").attr("class","form-group") + form_group.append("text").text("Operator") + input = form_group.append("select").attr("id","operator_uid").style("margin-left","5px") + input.append("option").attr("type","select").attr("value","-").text("Please select...") + contacts.forEach(function(contact){ + input.append("option").attr("type","select").attr("value",contact.attrib.uID).text(contact.name + " (" + contact.company + ")") + }) + + + //Information on tool execution + form_group = form.append("div").attr("class","form-group").style("margin-top","40px") + form_group.append("label").text("Execution information") + form_group = form.append("div").attr("class","form-group") + form_group.append("text").text("Operating System") + input = form_group.append("select").attr("id","operating_system").style("margin-left","5px") + input.append("option").attr("type","select").attr("value","-").text("Please select...") + input.append("option").attr("type","select").attr("value","windows").text("Windows") + input.append("option").attr("type","select").attr("value","linux").text("Linux") + input.append("option").attr("type","select").attr("value","mac").text("Mac OS") + input.append("option").attr("type","select").attr("value","other").text("Other") + form_group = form.append("div").attr("class","form-group") + form_group.append("text").text("Integration platform") + input = form_group.append("input") + .attr("id","integration_platform") + .attr("class","form-control") + .attr("name","integration_platform") + .attr("placeholder","Integration platform (e.g. RCE, Optimus)") + form_group = form.append("div").attr("class","form-group") + form_group.append("text").text("Execution command") + input = form_group.append("textarea") + .attr("id","command") + .attr("class","form-control") + .attr("cols","40") + .attr("rows","5") + .attr("name","command") + .attr("placeholder","Execution command") + form_group = form.append("div").attr("class","form-group") + input = form_group.append("input") + .attr("id","description_cmd") + .attr("class","form-control") + .attr("name","description_cmd") + .attr("placeholder","Details on the exectuion command (optional)") + form_group = form.append("div").attr("class","form-group") + input = form_group.append("input") + .attr("id","software_requirements") + .attr("class","form-control") + .attr("name","software_requirements") + .attr("placeholder","Software requirements") + form_group = form.append("div").attr("class","form-group") + input = form_group.append("input") + .attr("id","hardware_requirements") + .attr("class","form-control") + .attr("name","hardware_requirements") + .attr("placeholder","Hardware requirements") + + //Information on tool licensing + form_group = form.append("div").attr("class","form-group").style("margin-top","40px") + form_group.append("label").text("License information (optional)") + input = form_group.append("input") + .attr("id","license_type") + .attr("class","form-control") + .attr("name","license_type") + .attr("placeholder","License type (e.g. open-source, commercial)") + form_group = form.append("div").attr("class","form-group") + input = form_group.append("input") + .attr("id","license_specification") + .attr("class","form-control") + .attr("name","license_specification") + .attr("placeholder","License specification (e.g. Apache License 2.0)") + form_group = form.append("div").attr("class","form-group") + input = form_group.append("input") + .attr("id","license_info") + .attr("class","form-control") + .attr("name","license_info") + .attr("placeholder","License information (e.g. https://www.apache.org/licenses/LICENSE-2.0)") + + //Information on tool sources + form_group = form.append("div").attr("class","form-group").style("margin-top","40px") + form_group.append("label").text("Source information (optional)") + input = form_group.append("input") + .attr("id","repository_link") + .attr("class","form-control") + .attr("name","repository_link") + .attr("placeholder","Repository link") + form_group = form.append("div").attr("class","form-group") + input = form_group.append("input") + .attr("id","download_link") + .attr("class","form-control") + .attr("name","download_link") + .attr("placeholder","Download link") + form_group = form.append("div").attr("class","form-group") + input = form_group.append("input") + .attr("id","references") + .attr("class","form-control") + .attr("name","references") + .attr("placeholder","References") + + + var modal = bootbox.dialog({ + message: $(".form-content").html(), + title: "Add Competence Metadata", + size: "large", + buttons: [ + { + label: "Cancel", + className: "btn btn-default pull-left", + callback: function() { + modal.modal("hide"); + d3.selectAll(".form-content").remove(); + } + }, + { + label: "OK", + className: "btn btn-primary pull-left", + callback: function() { + var metadata = { + uID: aNode.uID, + description: $('form #description').val(), + status: $('form #status').val(), + owner_uid: $('form #owner_uid').val(), + creator_uid: $('form #creator_uid').val(), + operator_uid: $('form #operator_uid').val() + } + var metadata_str = JSON.stringify(metadata) + var bootboxContent = {title: "Get graph elements", message: '<p>Please be patient...</p>'}; + var xhr = $.ajax( + { + type: 'POST', + url: '/kadmos_add_DC_metadata', + data: {'graphID':graphID, 'currentOrder':nodeOrder, 'nodeName':metadata.uID, 'metadata_str':metadata_str}, + success: function(result) + { + if (result.includes("ERROR:")) + { + bootboxContent.message = result + kadmosErrorMessage(bootboxContent); + } + else + { + var updatedData = {}; + updatedData = data; + var graphData = JSON.parse(result); + for (var i = 0; i < updatedData.graphs.length; i++) + { + if (graphID == updatedData.graphs[i].id) + { + updatedData.graphs[i] = graphData.graphs[0]; + } + } + + clearView(); + makeKadmosMenu(updatedData); + xdsm_script(updatedData,graphID); + + bootboxContent.message = "Success!" + kadmosSuccessMessage(bootboxContent) + } + }, + error: function(result) + { + bootboxContent.message = result + kadmosErrorMessage(bootboxContent); + } + }); + kadmosHavePatience(xhr, bootboxContent) + modal.modal("hide"); + d3.selectAll(".form-content").remove(); + } + } + ], + onEscape: function() { + modal.modal("hide"); + d3.selectAll(".form-content").remove(); + } + }); + + + } + + function sendDCMetadata(aMetadata) + { + + } + + + + function makeKadmosMenu(data, initial=false) { //First of all, clear everything if it is already there @@ -589,7 +947,7 @@ .style("display","inline-block") - var options = ["Choose...","KDMS file(s)", "CMDOWS file", "Database"]; + var options = ["Choose...", "Create graph from scratch", "Upload KDMS file(s)", "Upload CMDOWS file", "Upload Database"]; var select = panelBody.append('select') .attr('id','addselect') @@ -613,7 +971,24 @@ function onchange() { selectValue = d3.select('#addselect').property('value') - if (selectValue == "KDMS file(s)") + if (include(selectValue,"Create")) + { + if (file){ + fileText.remove(); + file.remove(); + } + if (submit){submit.remove();} + submit = label.append("button") + .style("margin-top","10pt") + .attr("type","button") + .attr("class","btn btn-primary") + .text("Go!") + submit.on("mousedown", function() + { + addDesignCompetence(); + }) + } + else if (include(selectValue,"KDMS")) { if (file){ fileText.remove(); @@ -627,7 +1002,7 @@ file = label.append("input").attr("type","file").attr("name","file[]").attr("multiple","") submit = label.append("input").attr("type","submit").attr("value","Submit"); } - else if (selectValue == "CMDOWS file") + else if (include(selectValue,"CMDOWS")) { if (file){ fileText.remove(); @@ -641,7 +1016,7 @@ file = label.append("input").attr("type","file").attr("name","file[]") submit = label.append("input").attr("type","submit").attr("value","Submit"); } - else if (selectValue == "Database") + else if (include(selectValue,"Database")) { if (file){ fileText.remove(); @@ -18591,10 +18966,7 @@ this.parentNode.appendChild(this); }); }; - //aigner: Include function - function include(arr,obj) { - return (arr.indexOf(obj) != -1); - } + //d3-context-menu for right-click-option d3.contextMenu = function (menu, openCallback) { @@ -19610,355 +19982,6 @@ - } - - - //aigner: HIER WEITER!!! - function addDesignCompetence() - { - bootbox.hideAll(); - - var html = d3.select("html") - var form_content = html.append("div").attr("class","form-content").attr("style","display:none") - var form = form_content.append("form").attr("class","form").attr("role","form") - var form_group, input; - - //Tool information - form_group = form.append("div").attr("class","form-group") - form_group.append("text").text("Name") - input = form_group.append("input") - .attr("id","function_node") - .attr("class","form-control") - .attr("name","function_node") - .attr("placeholder","Add a tool name here...") - //Tool input xml - form_group = form.append("div").attr("class","form-group") - form_group.append("text").text("Tool input xml") - input = form_group.append("input") - .attr("type","file") - .attr("id","input_xml") - .attr("name","input_xml") - //Tool output xml - form_group = form.append("div").attr("class","form-group") - form_group.append("text").text("Tool output xml") - input = form_group.append("input") - .attr("type","file") - .attr("id","output_xml") - .attr("name","output_xml") - - - var modal = bootbox.dialog({ - message: $(".form-content").html(), - title: "Add mathematical function", - size: "large", - buttons: [ - { - label: "Cancel", - className: "btn btn-default pull-left", - callback: function() { - modal.modal("hide"); - d3.selectAll(".form-content").remove(); - } - }, - { - label: "OK", - className: "btn btn-primary pull-left", - callback: function() { - - //get form data - var form_data = { - function_node: $('form #function_node').val(), - input_nodes_xPath: $('form #input_nodes_xPath').val(), - input_nodes_name: $('form #input_nodes_name').val(), - output_node_xPath: $('form #output_node_xPath').val(), - equation: $('form #equation').val(), - language: $('form #language').val() - } - - - var bootboxContent = {title: "Add mathematical function", message: '<p>Please be patient...</p>'}; - var xhr = $.ajax({ - type: 'POST', - url: '/kadmos_add_mathematical_function', - data: {'graphID':graphID, 'currentOrder':nodeOrder, 'form_data':JSON.stringify(form_data)}, - success: function(result) - { - if (result.includes("ERROR:")) - { - bootboxContent.message = result - kadmosErrorMessage(bootboxContent); - } - else - { - var updatedData = {}; - updatedData = data; - var graphData = JSON.parse(result); - for (var i = 0; i < updatedData.graphs.length; i++) - { - if (graphID == updatedData.graphs[i].id) - { - updatedData.graphs[i] = graphData.graphs[0]; - } - } - - clearView(); - makeKadmosMenu(updatedData); - xdsm_script(updatedData,graphID); - - bootboxContent.message = "Success!" - kadmosSuccessMessage(bootboxContent) - } - }, - error: function(result) - { - bootboxContent.message = result - kadmosErrorMessage(bootboxContent); - } - }); - kadmosHavePatience(xhr, bootboxContent) - kadmosHavePatience(xhr, bootboxContent) - modal.modal("hide"); - d3.selectAll(".form-content").remove(); - } - } - ], - onEscape: function() { - modal.modal("hide"); - d3.selectAll(".form-content").remove(); - } - }); - - } - - function addDCMetadata(aNode=null) - { - bootbox.hideAll(); - - var metadata; - if (aNode != null) - { - metadata = aNode.metadata; - } - - var html = d3.select("html") - var form_content = html.append("div").attr("class","form-content").attr("style","display:none") - var form = form_content.append("form").attr("class","form").attr("role","form") - var form_group, input; - - //General information - form_group = form.append("div").attr("class","form-group") - form_group.append("label").text("General information") - form_group = form.append("div").attr("class","form-group") - form_group.append("text").text("Description") - input = form_group.append("textarea") - .attr("id","description") - .attr("class","form-control") - .attr("name","description") - .attr("placeholder","Add a description for the DC here") - - form_group = form.append("div").attr("class","form-group") - form_group.append("text").text("Status") - input = form_group.append("select").attr("id","status").style("margin-left","5px") - input.append("option").attr("type","select").attr("value","-").text("Please select...") - input.append("option").attr("type","select").attr("value","Available").text("Available") - input.append("option").attr("type","select").attr("value","N/A").text("N/A") - var contacts = currentGraph.organization.contacts; - form_group = form.append("div").attr("class","form-group") - form_group.append("text").text("Owner") - input = form_group.append("select").attr("id","owner_uid").style("margin-left","5px") - input.append("option").attr("type","select").attr("value","-").text("Please select...") - contacts.forEach(function(contact){ - input.append("option").attr("type","select").attr("value",contact.attrib.uID).text(contact.name + " (" + contact.company + ")") - }) - form_group = form.append("div").attr("class","form-group") - form_group.append("text").text("Creator") - input = form_group.append("select").attr("id","creator_uid").style("margin-left","5px") - input.append("option").attr("type","select").attr("value","-").text("Please select...") - contacts.forEach(function(contact){ - input.append("option").attr("type","select").attr("value",contact.attrib.uID).text(contact.name + " (" + contact.company + ")") - }) - form_group = form.append("div").attr("class","form-group") - form_group.append("text").text("Operator") - input = form_group.append("select").attr("id","operator_uid").style("margin-left","5px") - input.append("option").attr("type","select").attr("value","-").text("Please select...") - contacts.forEach(function(contact){ - input.append("option").attr("type","select").attr("value",contact.attrib.uID).text(contact.name + " (" + contact.company + ")") - }) - - - //Information on tool execution - form_group = form.append("div").attr("class","form-group").style("margin-top","40px") - form_group.append("label").text("Execution information") - form_group = form.append("div").attr("class","form-group") - form_group.append("text").text("Operating System") - input = form_group.append("select").attr("id","operating_system").style("margin-left","5px") - input.append("option").attr("type","select").attr("value","-").text("Please select...") - input.append("option").attr("type","select").attr("value","windows").text("Windows") - input.append("option").attr("type","select").attr("value","linux").text("Linux") - input.append("option").attr("type","select").attr("value","mac").text("Mac OS") - input.append("option").attr("type","select").attr("value","other").text("Other") - form_group = form.append("div").attr("class","form-group") - form_group.append("text").text("Integration platform") - input = form_group.append("input") - .attr("id","integration_platform") - .attr("class","form-control") - .attr("name","integration_platform") - .attr("placeholder","Integration platform (e.g. RCE, Optimus)") - form_group = form.append("div").attr("class","form-group") - form_group.append("text").text("Execution command") - input = form_group.append("textarea") - .attr("id","command") - .attr("class","form-control") - .attr("cols","40") - .attr("rows","5") - .attr("name","command") - .attr("placeholder","Execution command") - form_group = form.append("div").attr("class","form-group") - input = form_group.append("input") - .attr("id","description_cmd") - .attr("class","form-control") - .attr("name","description_cmd") - .attr("placeholder","Details on the exectuion command (optional)") - form_group = form.append("div").attr("class","form-group") - input = form_group.append("input") - .attr("id","software_requirements") - .attr("class","form-control") - .attr("name","software_requirements") - .attr("placeholder","Software requirements") - form_group = form.append("div").attr("class","form-group") - input = form_group.append("input") - .attr("id","hardware_requirements") - .attr("class","form-control") - .attr("name","hardware_requirements") - .attr("placeholder","Hardware requirements") - - //Information on tool licensing - form_group = form.append("div").attr("class","form-group").style("margin-top","40px") - form_group.append("label").text("License information (optional)") - input = form_group.append("input") - .attr("id","license_type") - .attr("class","form-control") - .attr("name","license_type") - .attr("placeholder","License type (e.g. open-source, commercial)") - form_group = form.append("div").attr("class","form-group") - input = form_group.append("input") - .attr("id","license_specification") - .attr("class","form-control") - .attr("name","license_specification") - .attr("placeholder","License specification (e.g. Apache License 2.0)") - form_group = form.append("div").attr("class","form-group") - input = form_group.append("input") - .attr("id","license_info") - .attr("class","form-control") - .attr("name","license_info") - .attr("placeholder","License information (e.g. https://www.apache.org/licenses/LICENSE-2.0)") - - //Information on tool sources - form_group = form.append("div").attr("class","form-group").style("margin-top","40px") - form_group.append("label").text("Source information (optional)") - input = form_group.append("input") - .attr("id","repository_link") - .attr("class","form-control") - .attr("name","repository_link") - .attr("placeholder","Repository link") - form_group = form.append("div").attr("class","form-group") - input = form_group.append("input") - .attr("id","download_link") - .attr("class","form-control") - .attr("name","download_link") - .attr("placeholder","Download link") - form_group = form.append("div").attr("class","form-group") - input = form_group.append("input") - .attr("id","references") - .attr("class","form-control") - .attr("name","references") - .attr("placeholder","References") - - - var modal = bootbox.dialog({ - message: $(".form-content").html(), - title: "Add Competence Metadata", - size: "large", - buttons: [ - { - label: "Cancel", - className: "btn btn-default pull-left", - callback: function() { - modal.modal("hide"); - d3.selectAll(".form-content").remove(); - } - }, - { - label: "OK", - className: "btn btn-primary pull-left", - callback: function() { - var metadata = { - uID: aNode.uID, - description: $('form #description').val(), - status: $('form #status').val(), - owner_uid: $('form #owner_uid').val(), - creator_uid: $('form #creator_uid').val(), - operator_uid: $('form #operator_uid').val() - } - var metadata_str = JSON.stringify(metadata) - var bootboxContent = {title: "Get graph elements", message: '<p>Please be patient...</p>'}; - var xhr = $.ajax( - { - type: 'POST', - url: '/kadmos_add_DC_metadata', - data: {'graphID':graphID, 'currentOrder':nodeOrder, 'nodeName':metadata.uID, 'metadata_str':metadata_str}, - success: function(result) - { - if (result.includes("ERROR:")) - { - bootboxContent.message = result - kadmosErrorMessage(bootboxContent); - } - else - { - var updatedData = {}; - updatedData = data; - var graphData = JSON.parse(result); - for (var i = 0; i < updatedData.graphs.length; i++) - { - if (graphID == updatedData.graphs[i].id) - { - updatedData.graphs[i] = graphData.graphs[0]; - } - } - - clearView(); - makeKadmosMenu(updatedData); - xdsm_script(updatedData,graphID); - - bootboxContent.message = "Success!" - kadmosSuccessMessage(bootboxContent) - } - }, - error: function(result) - { - bootboxContent.message = result - kadmosErrorMessage(bootboxContent); - } - }); - kadmosHavePatience(xhr, bootboxContent) - modal.modal("hide"); - d3.selectAll(".form-content").remove(); - } - } - ], - onEscape: function() { - modal.modal("hide"); - d3.selectAll(".form-content").remove(); - } - }); - - - } - - function sendDCMetadata(aMetadata) - { - } @@ -20060,7 +20083,7 @@ { title: 'Add metadata', onMouseDown: function(elm, k, i) { - addDCMetadata(k) + addDCMetadata(currentGraph,k) //sendDCMetadata(dc_metadata); }, onMouseUp: function(elm, k, i) { @@ -24778,10 +24801,6 @@ }); return input; } - - function include(arr,obj) { - return (arr.indexOf(obj) != -1); - } function prepareTreeData(aSchema,aLink) @@ -25582,10 +25601,6 @@ }; }; - //aigner: Include function - function include(arr,obj) { - return (arr.indexOf(obj) != -1); - } //aigner: Function creates a table function tabulate(aTable,data,columns) { -- GitLab