Skip to content
Snippets Groups Projects
Commit 732afdec authored by baigner's avatar baigner
Browse files

Right click options for variable lists work. Tool lists still to be done!

Former-commit-id: f5ca5e46aafb945b94bfb58fae6ceff0fd42e522
parent feed0353
No related branches found
No related tags found
No related merge requests found
Pipeline #192835 canceled
...@@ -18866,20 +18866,14 @@ ...@@ -18866,20 +18866,14 @@
$('.myPanel').lobiPanel('unpin'); $('.myPanel').lobiPanel('unpin');
} }
function markVariable(aNode,variableData) function markVariable(aNode,variableData)
{ {
var firstFromSchema = currentGraph.variableSchemes["schema"][0].xPath.split("/")[1]
function getFullXPath(data,aText) var xPath = "/"+firstFromSchema+aNode.data.xPath.split(firstFromSchema)[1];
{
aText = "/"+data.data.name+aText; d3.select('.d3-context-menu').style('display', 'none');
if (data.parent){return getFullXPath(data.parent,aText)}
else{return aText}
}
var path="";
var xPath = getFullXPath(aNode, path);
d3.select('.d3-context-menu').style('display', 'none');
var bootboxContent = {title: 'Marking variable as ' + variableData.variableType, message: '<p>Please be patient...</p>'}; var bootboxContent = {title: 'Marking variable as ' + variableData.variableType, message: '<p>Please be patient...</p>'};
var xhr = $.ajax({ var xhr = $.ajax({
type: 'POST', type: 'POST',
...@@ -18933,17 +18927,8 @@ ...@@ -18933,17 +18927,8 @@
function unmarkVariable(aNode) function unmarkVariable(aNode)
{ {
var firstFromSchema = currentGraph.variableSchemes["schema"].name var firstFromSchema = currentGraph.variableSchemes["schema"][0].xPath.split("/")[1]
function getFullXPath(data,aText) var xPath = "/"+firstFromSchema+aNode.data.xPath.split(firstFromSchema)[1];
{
aText = "/"+data.data.name+aText;
if (data.parent){return getFullXPath(data.parent,aText)}
else{return aText}
}
var path="";
var xPath = getFullXPath(aNode, path);
var xPath_split = xPath.split(firstFromSchema)[1]
xPath = "/"+firstFromSchema+xPath_split;
d3.select('.d3-context-menu').style('display', 'none'); d3.select('.d3-context-menu').style('display', 'none');
...@@ -19110,18 +19095,7 @@ ...@@ -19110,18 +19095,7 @@
{ {
title: 'Copy x-path to clipboard', title: 'Copy x-path to clipboard',
onMouseDown: function(elm, d, i) { onMouseDown: function(elm, d, i) {
function copyToClipboard(text) window.prompt("Copy to clipboard: Ctrl+C, Enter", d.data.xPath);
{
window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
}
function copyXPathToClipboard(data,aText)
{
aText = "/"+data.data.name+aText;
if (data.parent){copyXPathToClipboard(data.parent,aText)}
else{copyToClipboard(aText);}
}
var copyText="";
copyXPathToClipboard(d,copyText);
d3.select('.d3-context-menu').style('display', 'none'); d3.select('.d3-context-menu').style('display', 'none');
}, },
onMouseUp: function(elm, d, i) { onMouseUp: function(elm, d, i) {
...@@ -19130,57 +19104,6 @@ ...@@ -19130,57 +19104,6 @@
}, },
childrenItems: [] childrenItems: []
}, },
{
title: 'Download full tree as XML-file',
onMouseDown: function(elm, d, i) {
//Begin xml structure with the first element
var xmlString = "<"+nodes[0].data.name+">"+"</"+nodes[0].data.name+">";
//Create a new xml document
var parser = new DOMParser();
var xmlDocument = parser.parseFromString(xmlString, "text/xml"); //important to use "text/xml"
//Get initial xPath of the tree and pass it to the function "writeTreeToXML"
var initialXPath = "/"+nodes[0].data.name;
writeTreeToXML(nodes[0],xmlDocument,initialXPath);
//remove all attributes dummyID
removeAttributeInAllElements(xmlDocument,'dummyID');
//Make the xml document a string
var serializer = new XMLSerializer();
var xmlString = serializer.serializeToString(xmlDocument);
xmlString = vkbeautify.xml(xmlString);
//Download a document with the xml-schema
download(aName+'_full.xml',xmlString);
},
onMouseUp: function(elm, d, i) {
},
onMouseOver: function(elm, d, i) {
},
childrenItems: []
},
{
title: 'Download tree as XML-file from current node',
onMouseDown: function(elm, d, i) {
var xmlString = putAncestorsInXMLString({ val : '' }, d).val;
var initialXPath = putAncestorsInXPath({ val : '' }, d).val;
//Create a new xml document
var parser = new DOMParser();
var xmlDocument = parser.parseFromString(xmlString, "text/xml"); //important to use "text/xml"
//Get initial xPath of the tree and pass it to the function "writeCurrentTreeToXML"
writeTreeToXML(d,xmlDocument,initialXPath);
//remove all attributes dummyID
removeAttributeInAllElements(xmlDocument,'dummyID');
//Make the xml document a string
var serializer = new XMLSerializer();
xmlString = serializer.serializeToString(xmlDocument);
xmlString = vkbeautify.xml(xmlString);
//Download a document with the xml-schema
download(aName+"_"+d.data.name+'.xml',xmlString);
},
onMouseUp: function(elm, d, i) {
},
onMouseOver: function(elm, d, i) {
},
childrenItems: []
},
{ {
title: 'Mark variable', title: 'Mark variable',
onMouseDown: function(elm, d, i) {}, onMouseDown: function(elm, d, i) {},
...@@ -19202,169 +19125,8 @@ ...@@ -19202,169 +19125,8 @@
onMouseOver: function(elm, d, i) {}, onMouseOver: function(elm, d, i) {},
childrenItems: [] childrenItems: []
} }
] ]
//Function writeTreeToXML goes through tree nodes and puts the into an xml document
function writeTreeToXML(aNode,anXMLDoc,anXPath)
{
//Variable "children"
//--> One children variable, no matter whether a node has "_children" (collapsed) or "children" (expanded)
var children;
if (aNode._children){children = aNode._children;}
else if (aNode.children){children = aNode.children;}
//Get current xml element with its xPath
var element = anXMLDoc.evaluate(anXPath,anXMLDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;
if (element != null) {element.value = '...';}
//If a node has children (collapsed or expanded), loop through them
if (children)
{
for (var i=0; i < children.length;i++)
{
//Name of the new XML element --> childName
var child = children[i];
var childName = child.data.name.split(/[\[\]]+/);//Split childName at "[]" which is the uID
var cleanChildName = childName[0].split(/[\+\*\^\-\ \#]+/);//Split childName all special characters
var newNode = anXMLDoc.createElement(String(cleanChildName[0]));
//The children are appended to the xPath --> newXPath
var newXPath = anXPath+"/"+cleanChildName[0];
//If childName contains a uID, make the uID an attribute
if (childName[1])
{
if (parseInt(childName[1]))
{
var dummyID = childName[1];
newNode.setAttribute("dummyID", dummyID)
newXPath = newXPath+"[@dummyID='"+dummyID+"']";
}
else
{
var uID = childName[1];
newNode.setAttribute("uID", uID)
newXPath = newXPath+"[@uID='"+uID+"']";
}
}
if (cleanChildName.length>1) {newNode.setAttribute("elementName", childName[0])};
//Append the newNode to the xml structure
element.appendChild(newNode);
////aigner: Sorting of XML elements according to "uID"
// var items = element.children;
// var itemsArr = [];
// for (var j in items) {
// if (items[j].nodeType == 1) { // get rid of the whitespace text nodes
// itemsArr.push(items[j]);
// }
// }
// itemsArr.sort(function(a,b){
// if (a.getAttribute("uID") < b.getAttribute("uID"))
// return -1;
// if (a.getAttribute("uID") > b.getAttribute("uID"))
// return 1;
// return 0;
// });
// for (j = 0; j < itemsArr.length; ++j) {
// element.appendChild(itemsArr[j]);
// }
//call function writeTreeToXML recursively for all children
writeTreeToXML(child,anXMLDoc,newXPath)
}
}
else
{
if (aNode.data.value){element.innerHTML = String(aNode.data.value);}
else{element.innerHTML = " ";}
}
//return the xml document
return anXMLDoc;
}
function removeAttributeInAllElements(aDocument,attribute)
{
var matchingElements = [];
var allElements = aDocument.getElementsByTagName('*');
for (var i = 0, n = allElements.length; i < n; i++)
{
if (allElements[i].getAttribute(attribute) !== null)
{
allElements[i].removeAttribute(attribute);
}
}
return matchingElements;
}
function putAncestorsInXMLString(strWrapper, aNode)
{
//Name of the new XML element
var nodeName = aNode.data.name.split(/[\[\]]+/);//Split name at "[]" which is the uID
var cleanNodeName = nodeName[0].split(/[\+\*\^\-\ \#]+/);//Split nodeName all special characters
//If nodeName contains a uID, make the uID an attribute
if (nodeName[1])
{
var uID = nodeName[1];
strWrapper.val = "<"+cleanNodeName[0]+" uID='"+ uID +"'>"+strWrapper.val+"</"+cleanNodeName[0]+">";;
}
else
{
strWrapper.val = "<"+cleanNodeName[0]+">"+strWrapper.val+"</"+cleanNodeName[0]+">";;
}
var aParent = aNode.parent;
if (aParent)
{
return putAncestorsInXMLString(strWrapper, aParent);
}
else
{
return strWrapper;
}
}
function putAncestorsInXPath(strWrapper, aNode)
{
//Name of the new XML element
var nodeName = aNode.data.name.split(/[\[\]]+/);//Split name at "[]" which is the uID
var cleanNodeName = nodeName[0].split(/[\+\*\^\-\ \#]+/);//Split nodeName all special characters
//If nodeName contains a uID, make the uID an attribute
if (nodeName[1])
{
var uID = nodeName[1];
strWrapper.val = "/"+cleanNodeName[0]+"[@uID='"+uID+"']"+strWrapper.val;
}
else
{
strWrapper.val = "/"+cleanNodeName[0]+strWrapper.val;
}
var aParent = aNode.parent;
if (aParent)
{
return putAncestorsInXPath(strWrapper, aParent);
}
else
{
return strWrapper;
}
}
var graphs, currentGraph, varCategories, entireData; var graphs, currentGraph, varCategories, entireData;
entireData = data; entireData = data;
...@@ -20057,6 +19819,13 @@ ...@@ -20057,6 +19819,13 @@
variable.data = variable variable.data = variable
variable.data.name = variable.xPath.split("/")[variable.xPath.split("/").length-1] variable.data.name = variable.xPath.split("/")[variable.xPath.split("/").length-1]
}) })
//build tree layout for vistoms
var newTree = {};
buildTree(newTree, variables)
//variables = newTree
console.log(newTree)
console.log(variables)
bootbox.prompt( bootbox.prompt(
{ {
...@@ -20095,12 +19864,12 @@ ...@@ -20095,12 +19864,12 @@
var treeLayoutSVG = treeLayoutdiv.append("svg").attr("class","treeLayoutSVG") var treeLayoutSVG = treeLayoutdiv.append("svg").attr("class","treeLayoutSVG")
var treeLayout = treeLayoutSVG.append("g").attr("class","treeLayout"); var treeLayout = treeLayoutSVG.append("g").attr("class","treeLayout");
maketreeLayout(array, treeLayout, treeLayoutSVG, treeLayoutdiv, divClassName, headLine, varCategories[0].description); maketreeLayout(array, treeLayout, treeLayoutSVG, treeLayoutdiv, divClassName, headLine, varCategories[0].description);
show_bootBox_listMessage(functions,nodeMenu); show_bootBox_listMessage(functions,toolMenu);
} }
if (result.includes("List")) if (result.includes("List"))
{ {
show_bootBox_listMessage(variables,nodeMenu); show_bootBox_listMessage(variables,nodeMenu);
show_bootBox_listMessage(functions,nodeMenu); show_bootBox_listMessage(functions,toolMenu);
} }
} }
} }
...@@ -22376,9 +22145,217 @@ ...@@ -22376,9 +22145,217 @@
return d.children || d._children ? "end" : "start"; return d.children || d._children ? "end" : "start";
}) })
//.text(function(d) { return d.data.text; }); //.text(function(d) { return d.data.text; });
//Function writeTreeToXML goes through tree nodes and puts the into an xml document
function writeTreeToXML(aNode,anXMLDoc,anXPath)
{
//Variable "children"
//--> One children variable, no matter whether a node has "_children" (collapsed) or "children" (expanded)
var children;
if (aNode._children){children = aNode._children;}
else if (aNode.children){children = aNode.children;}
//Get current xml element with its xPath
var element = anXMLDoc.evaluate(anXPath,anXMLDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;
if (element != null) {element.value = '...';}
//If a node has children (collapsed or expanded), loop through them
if (children)
{
for (var i=0; i < children.length;i++)
{
//Name of the new XML element --> childName
var child = children[i];
var childName = child.data.name.split(/[\[\]]+/);//Split childName at "[]" which is the uID
var cleanChildName = childName[0].split(/[\+\*\^\-\ \#]+/);//Split childName all special characters
var newNode = anXMLDoc.createElement(String(cleanChildName[0]));
//The children are appended to the xPath --> newXPath
var newXPath = anXPath+"/"+cleanChildName[0];
//If childName contains a uID, make the uID an attribute
if (childName[1])
{
if (parseInt(childName[1]))
{
var dummyID = childName[1];
newNode.setAttribute("dummyID", dummyID)
newXPath = newXPath+"[@dummyID='"+dummyID+"']";
}
else
{
var uID = childName[1];
newNode.setAttribute("uID", uID)
newXPath = newXPath+"[@uID='"+uID+"']";
}
}
if (cleanChildName.length>1) {newNode.setAttribute("elementName", childName[0])};
//Append the newNode to the xml structure
element.appendChild(newNode);
////aigner: Sorting of XML elements according to "uID"
// var items = element.children;
// var itemsArr = [];
// for (var j in items) {
// if (items[j].nodeType == 1) { // get rid of the whitespace text nodes
// itemsArr.push(items[j]);
// }
// }
// itemsArr.sort(function(a,b){
// if (a.getAttribute("uID") < b.getAttribute("uID"))
// return -1;
// if (a.getAttribute("uID") > b.getAttribute("uID"))
// return 1;
// return 0;
// });
// for (j = 0; j < itemsArr.length; ++j) {
// element.appendChild(itemsArr[j]);
// }
//call function writeTreeToXML recursively for all children
writeTreeToXML(child,anXMLDoc,newXPath)
}
}
else
{
if (aNode.data.value){element.innerHTML = String(aNode.data.value);}
else{element.innerHTML = " ";}
}
//return the xml document
return anXMLDoc;
}
function removeAttributeInAllElements(aDocument,attribute)
{
var matchingElements = [];
var allElements = aDocument.getElementsByTagName('*');
for (var i = 0, n = allElements.length; i < n; i++)
{
if (allElements[i].getAttribute(attribute) !== null)
{
allElements[i].removeAttribute(attribute);
}
}
return matchingElements;
}
function putAncestorsInXMLString(strWrapper, aNode)
{
//Name of the new XML element
var nodeName = aNode.data.name.split(/[\[\]]+/);//Split name at "[]" which is the uID
var cleanNodeName = nodeName[0].split(/[\+\*\^\-\ \#]+/);//Split nodeName all special characters
//If nodeName contains a uID, make the uID an attribute
if (nodeName[1])
{
var uID = nodeName[1];
strWrapper.val = "<"+cleanNodeName[0]+" uID='"+ uID +"'>"+strWrapper.val+"</"+cleanNodeName[0]+">";;
}
else
{
strWrapper.val = "<"+cleanNodeName[0]+">"+strWrapper.val+"</"+cleanNodeName[0]+">";;
}
var aParent = aNode.parent;
if (aParent)
{
return putAncestorsInXMLString(strWrapper, aParent);
}
else
{
return strWrapper;
}
}
function putAncestorsInXPath(strWrapper, aNode)
{
//Name of the new XML element
var nodeName = aNode.data.name.split(/[\[\]]+/);//Split name at "[]" which is the uID
var cleanNodeName = nodeName[0].split(/[\+\*\^\-\ \#]+/);//Split nodeName all special characters
//If nodeName contains a uID, make the uID an attribute
if (nodeName[1])
{
var uID = nodeName[1];
strWrapper.val = "/"+cleanNodeName[0]+"[@uID='"+uID+"']"+strWrapper.val;
}
else
{
strWrapper.val = "/"+cleanNodeName[0]+strWrapper.val;
}
var aParent = aNode.parent;
if (aParent)
{
return putAncestorsInXPath(strWrapper, aParent);
}
else
{
return strWrapper;
}
}
var nodeTreeMenu = nodeMenu;
var treeMenu = [
{
title: 'Download full tree as XML-file',
onMouseDown: function(elm, d, i) {
//Begin xml structure with the first element
var xmlString = "<"+nodes[0].data.name+">"+"</"+nodes[0].data.name+">";
//Create a new xml document
var parser = new DOMParser();
var xmlDocument = parser.parseFromString(xmlString, "text/xml"); //important to use "text/xml"
//Get initial xPath of the tree and pass it to the function "writeTreeToXML"
var initialXPath = "/"+nodes[0].data.name;
writeTreeToXML(nodes[0],xmlDocument,initialXPath);
//remove all attributes dummyID
removeAttributeInAllElements(xmlDocument,'dummyID');
//Make the xml document a string
var serializer = new XMLSerializer();
var xmlString = serializer.serializeToString(xmlDocument);
xmlString = vkbeautify.xml(xmlString);
//Download a document with the xml-schema
download(aName+'_full.xml',xmlString);
},
onMouseUp: function(elm, d, i) {
},
onMouseOver: function(elm, d, i) {
},
childrenItems: []
},
{
title: 'Download tree as XML-file from current node',
onMouseDown: function(elm, d, i) {
var xmlString = putAncestorsInXMLString({ val : '' }, d).val;
var initialXPath = putAncestorsInXPath({ val : '' }, d).val;
//Create a new xml document
var parser = new DOMParser();
var xmlDocument = parser.parseFromString(xmlString, "text/xml"); //important to use "text/xml"
//Get initial xPath of the tree and pass it to the function "writeCurrentTreeToXML"
writeTreeToXML(d,xmlDocument,initialXPath);
//remove all attributes dummyID
removeAttributeInAllElements(xmlDocument,'dummyID');
//Make the xml document a string
var serializer = new XMLSerializer();
xmlString = serializer.serializeToString(xmlDocument);
xmlString = vkbeautify.xml(xmlString);
//Download a document with the xml-schema
download(aName+"_"+d.data.name+'.xml',xmlString);
},
onMouseUp: function(elm, d, i) {
},
onMouseOver: function(elm, d, i) {
},
childrenItems: []
}
]
var nodeTreeMenu = nodeMenu.concat(treeMenu);
nodeEnter = nodeEnter nodeEnter = nodeEnter
.on('contextmenu', d3.contextMenu(nodeMenu)); .on('contextmenu', d3.contextMenu(nodeTreeMenu));
nodeEnter.append("svg:title").text("Click left to expand, click right to inspect") nodeEnter.append("svg:title").text("Click left to expand, click right to inspect")
...@@ -24211,18 +24188,7 @@ ...@@ -24211,18 +24188,7 @@
{ {
title: 'Copy x-path to clipboard', title: 'Copy x-path to clipboard',
onMouseDown: function(elm, d, i) { onMouseDown: function(elm, d, i) {
function copyToClipboard(text) window.prompt("Copy to clipboard: Ctrl+C, Enter", d.xPath);
{
window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
}
function copyXPathToClipboard(data,aText)
{
aText = "/"+data.name+aText;
if (data.parent){copyXPathToClipboard(data.parent,aText)}
else{copyToClipboard(aText);}
}
var copyText="";
copyXPathToClipboard(d,copyText);
d3.select('.d3-context-menu').style('display', 'none'); d3.select('.d3-context-menu').style('display', 'none');
}, },
onMouseUp: function(elm, d, i) { onMouseUp: function(elm, d, i) {
...@@ -26640,18 +26606,7 @@ ...@@ -26640,18 +26606,7 @@
{ {
title: 'Copy x-path to clipboard', title: 'Copy x-path to clipboard',
onMouseDown: function(elm, d, i) { onMouseDown: function(elm, d, i) {
function copyToClipboard(text) window.prompt("Copy to clipboard: Ctrl+C, Enter", d.xPath);
{
window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
}
function copyXPathToClipboard(data,aText)
{
aText = "/"+data.name+aText;
if (data.parent){copyXPathToClipboard(data.parent,aText)}
else{copyToClipboard(aText);}
}
var copyText="";
copyXPathToClipboard(d,copyText);
d3.select('.d3-context-menu').style('display', 'none'); d3.select('.d3-context-menu').style('display', 'none');
}, },
onMouseUp: function(elm, d, i) { onMouseUp: function(elm, d, i) {
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment