Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unconditionally dump support files #303

Merged
merged 1 commit into from
Dec 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,238 @@
'use strict';


function xmlToString(xmlData) {

var xmlString;
//IE
if (window.ActiveXObject) {
xmlString = xmlData.xml;
}
// code for Mozilla, Firefox, Opera, etc.
else {
xmlString = (new XMLSerializer()).serializeToString(xmlData);
}
return xmlString;
}


function getEleData(ele) {
var type = ele.isNode() ? "node" : "edge";
var attrs = ["css", "data", "position"];
var result = {};

for (var i = 0; i < attrs.length; i++) {
var attr = attrs[i];
var opt = options[type][attr];
if (!opt)
result[attr] = {};
else if ($.isArray(opt)) {
result[attr] = {};
for (var j = 0; j < opt.length; j++) {
var el = opt[i];
if (ele[attr](el))
result[attr][el] = ele[attr](el);
}
} else {
var eleAttr = ele[attr]();
result[attr] = {};
for (var key in eleAttr)
if ($.inArray(key, options[type].discludeds) < 0) {
result[attr][key] = {value: eleAttr[key], attrType: attr};
}
}
}

return $.extend(result.css, result.data, result.position);
}


function parseNode(ele, xml) {
var node = $('<node />', xml).attr({id: ele.id()}).appendTo(xml);

var eleData = getEleData(ele); debugger;
for (var key in eleData)
$('<data />', node).attr({type: eleData[key].attrType, key: key}).text(eleData[key].value).appendTo(node);


if (ele.isParent()) {
var subgraph = $('<graph />', node).attr({id: ele.id() + ':'}).appendTo(node);
ele.children().each(function (i, child) {
parseNode(child, subgraph);
});
}

return node;
}

/*
options.node.discludeds.push("id");
options.edge.discludeds.push("id", "source", "target");

var xmlDoc = $.parseXML(
'<?xml version="1.0" encoding="UTF-8"?>\n' +
'<graphml xmlns="http://graphml.graphdrawing.org/xmlns"\n' +
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n' +
'xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns\n' +
'http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">\n' +
' <graph>\n' +
' </graph>\n' +
' </graphml>\n'
);
var $xml = $(xmlDoc);

var $graph = $xml.find("graph");

cy.nodes().orphans().forEach(function (ele) {
parseNode(ele, $graph);
});

cy.edges().forEach(function (ele) {

var edge = $('<edge />', $graph).attr({id: ele.id(), source: ele.source().id(), target: ele.target().id()}).appendTo($graph);

var eleData = getEleData(ele);
for (var key in eleData)
$('<data />', edge).attr({key: key}).text(eleData[key].value).appendTo(edge);

});


return xmlToString(xmlDoc);
*/
function renderNode(cy, $graph, parentNodeId) {
$graph.children("node").each(function () {
var $node = $(this);

var settings = {
data: {id: $node.attr("id"), name: $node.attr("name"), parent: parentNodeId},
css: {},
position: {}
};

$node.children('data').each(function () {
var $data = $(this);

//settings[$data.attr("type")][$data.attr("key")] = $data.text();
settings.data[$data.attr("key")] = $data.text();

});

cy.add({
group: "nodes",
data: settings.data,
css: settings.css,
position: settings.position
});

$node.children("graph").each(function () {
var $graph = $(this);

renderNode(cy, $graph, $node.attr("id"));
});
});
}

function loadXml(cy, pippo, options, xmlString) {

cy.batch(function () {
var xml = $.parseXML(xmlString);
var $xml = $(xml);

var $graphs = $xml.find("graph");

// $graphs.each(function () {
// var $graph = $(this);
var $graph = $graphs.first();

renderNode(cy, $graph, undefined);

$graph.children("edge").each(function () {
var $edge = $(this);

var settings = {
data: {id: $edge.attr("id"), source: $edge.attr("source"), target: $edge.attr("target")},
css: {},
position: {}
};

$edge.children('data').each(function () {
var $data = $(this);

//settings[$data.attr("type")][$data.attr("key")] = $data.text();
settings.data[$data.attr("key")] = $data.text();
});

cy.add({
group: "edges",
data: settings.data,
css: settings.css
});
});

// });
runLayout(cy, options);
});
}

function runLayout(cy, options) {
switch (typeof options.layoutBy) {
case 'string':
cy.layout({name: options.layoutBy}).run();
break;
case 'function':
options.layoutBy();
}
}

// registers the extension on a cytoscape lib ref
var register = function (cytoscape, $) {

if (!cytoscape || !$) {
return;
} // can't register if cytoscape unspecified

var options = {
node: {
css: false,
data: true,
position: true,
discludeds: []
},
edge: {
css: false,
data: true,
discludeds: []
},
layoutBy: "cose" // string of layout name or layout function
};

cytoscape('core', 'graphml', function (cyGraphML) {
var cy = this;
var res;

switch (typeof cyGraphML) {
case "string": // import
res = loadXml(cy, $, options, cyGraphML);
break;
case "object": // set options
$.extend(true, options, cyGraphML);
res = cy;
break;
case "undefined": // export
res = exporter(cy, $, options);
break;
default:
console.log("Functionality(argument) of .graphml() is not recognized.");
}

return res;

});

};

if( typeof cytoscape !== 'undefined' && typeof jQuery !== 'undefined' ){ // expose to global cytoscape (i.e. window.cytoscape)
register( cytoscape, jQuery );
}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"warnings" : [ ],
"files" : [ "js/cytoscape-3.21.1.min.js", "js/cytoscape-graphml-1.0.6-hier.js", "js/jquery-3.0.0.min.js", "report.json", "untyped_A.A(A__this)_cfg.html", "untyped_A.A(A__this)_cfg.json", "untyped_A.getOne(A__this)_cfg.html", "untyped_A.getOne(A__this)_cfg.json", "untyped_A.getPositive(A__this,_untyped_i)_cfg.html", "untyped_A.getPositive(A__this,_untyped_i)_cfg.json", "untyped_A.identity(A__this,_untyped_i)_cfg.html", "untyped_A.identity(A__this,_untyped_i)_cfg.json", "untyped_tests.helper(tests__this,_untyped_i,_untyped_dispatcher)_cfg.html", "untyped_tests.helper(tests__this,_untyped_i,_untyped_dispatcher)_cfg.json", "untyped_tests.main(tests__this)_cfg.html", "untyped_tests.main(tests__this)_cfg.json" ],
"info" : {
"cfgs" : "6",
"duration" : "408ms",
"end" : "2023-12-12T17:03:45.989+01:00",
"expressions" : "49",
"files" : "15",
"globals" : "0",
"members" : "6",
"programs" : "1",
"start" : "2023-12-12T17:03:45.581+01:00",
"statements" : "21",
"units" : "2",
"version" : "0.1b8",
"warnings" : "0"
},
"configuration" : {
"analysisGraphs" : "HTML",
"descendingPhaseType" : "NONE",
"dumpForcesUnwinding" : "false",
"fixpointWorkingSet" : "DuplicateFreeFIFOWorkingSet",
"glbThreshold" : "5",
"hotspots" : "unset",
"jsonOutput" : "true",
"openCallPolicy" : "WorstCasePolicy",
"optimize" : "false",
"recursionWideningThreshold" : "5",
"semanticChecks" : "",
"serializeInputs" : "true",
"serializeResults" : "false",
"syntacticChecks" : "",
"useWideningPoints" : "true",
"wideningThreshold" : "5",
"workdir" : "test-outputs/visualization/html-inputs"
}
}
Loading
Loading