Author: clopes
Date: 2010-11-24 10:23:35 -0800 (Wed, 24 Nov 2010)
New Revision: 23003
Modified:
cytoscapeweb/trunk/cytoscapeweb/html-template/js/cytoscapeweb.js
cytoscapeweb/trunk/cytoscapeweb/html-template/js/tests.js
cytoscapeweb/trunk/cytoscapeweb/html-template/tests.html
cytoscapeweb/trunk/cytoscapeweb/src-test/org/cytoscapeweb/model/converters/ExternalObjectConverterTest.as
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/DeselectCommand.as
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/FilterCommand.as
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/HandleClickCommand.as
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/HandleHoverCommand.as
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/RemoveFilterCommand.as
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/SelectCommand.as
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/model/converters/ExternalObjectConverter.as
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/model/converters/SVGExporter.as
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/model/data/FirstNeighborsVO.as
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/ContextMenuMediator.as
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/ExternalMediator.as
Log:
Added CSS classes to SVG's node/edge/background elements.
Added network() method to Visualization object (JS API).
Added unit tests for API methods: xgmml, graphml, network, svg.
Modified: cytoscapeweb/trunk/cytoscapeweb/html-template/js/cytoscapeweb.js
===================================================================
--- cytoscapeweb/trunk/cytoscapeweb/html-template/js/cytoscapeweb.js
2010-11-24 01:43:37 UTC (rev 23002)
+++ cytoscapeweb/trunk/cytoscapeweb/html-template/js/cytoscapeweb.js
2010-11-24 18:23:35 UTC (rev 23003)
@@ -1161,13 +1161,25 @@
},
/**
+ * <p>Return the network as an object.</p>
+ * @return {org.cytoscapeweb.Network} The network as a JavaScript
object.
+ * @see org.cytoscapeweb.Visualization#graphml
+ * @see org.cytoscapeweb.Visualization#xgmml
+ * @see org.cytoscapeweb.Visualization#sif
+ */
+ network: function () {
+ return this.swf().getNetwork();
+ },
+
+ /**
* <p>Return the network data as <a
href="http://graphml.graphdrawing.org/primer/graphml-primer.html"
target="_blank">GraphML</a>.</p>
* @return {String} The XML text.
* @see org.cytoscapeweb.Visualization#xgmml
* @see org.cytoscapeweb.Visualization#sif
+ * @see org.cytoscapeweb.Visualization#network
*/
graphml: function () {
- return this.swf().getNetworkAsText("graphml");
+ return this.swf().getNetworkAsText("graphml");
},
/**
@@ -1175,6 +1187,7 @@
* @return {String} The XML text.
* @see org.cytoscapeweb.Visualization#graphml
* @see org.cytoscapeweb.Visualization#sif
+ * @see org.cytoscapeweb.Visualization#network
*/
xgmml: function () {
return this.swf().getNetworkAsText("xgmml");
@@ -1219,6 +1232,7 @@
* @return {String} The SIF text.
* @see org.cytoscapeweb.Visualization#graphml
* @see org.cytoscapeweb.Visualization#xgmml
+ * @see org.cytoscapeweb.Visualization#network
*/
sif: function (interactionAttr) {
return this.swf().getNetworkAsText("sif", { interactionAttr:
interactionAttr });
Modified: cytoscapeweb/trunk/cytoscapeweb/html-template/js/tests.js
===================================================================
--- cytoscapeweb/trunk/cytoscapeweb/html-template/js/tests.js 2010-11-24
01:43:37 UTC (rev 23002)
+++ cytoscapeweb/trunk/cytoscapeweb/html-template/js/tests.js 2010-11-24
18:23:35 UTC (rev 23003)
@@ -1193,6 +1193,65 @@
ok(fail === false, "Null 'name' throws exception");
});
+ test("Network", function() {
+ var net = vis.network();
+ var nodes = vis.nodes();
+ var edges = vis.edges();
+ var schema = vis.dataSchema();
+
+ var nodesData = [];
+ var edgesData = [];
+ $.each(nodes, function(i, n) { nodesData.push(n.data); });
+ $.each(edges, function(i, e) { edgesData.push(e.data); });
+
+ same(net.schema, schema, "Schema");
+ same(net.data.nodes, nodesData, "Nodes Data");
+ same(net.data.edges, edgesData, "Edges Data");
+ });
+
+ test("GraphML", function() {
+ var xml = $(vis.graphml());
+ var nodes = vis.nodes();
+ var edges = vis.edges();
+ var schema = vis.dataSchema();
+ var ignoredFields = 5; // id (nodes), id (edges), source, target,
directed
+
+ same(xml[0].tagName.toLowerCase(), "graphml", "<graphml> tag");
+ same(xml.find("graph").length, 1, "<graph> tag");
+ same(xml.find("key").length, (schema.nodes.length + schema.edges.length
- ignoredFields), "Number <key> tags");
+ same(xml.find("node").length, nodes.length, "Number of nodes");
+ same(xml.find("edge").length, edges.length, "Number of edges");
+ });
+
+ test("XGMML", function() {
+ var xml = $(vis.xgmml());
+ var nodes = vis.nodes();
+ var edges = vis.edges();
+
+ same(xml[0].tagName.toLowerCase(), "graph", "<graph> tag");
+ same(xml.find("node").length, nodes.length, "Number of nodes");
+ same(xml.find("node graphics").length, nodes.length, "Number of node
graphics");
+ same(xml.find("edge").length, edges.length, "Number of edges");
+ same(xml.find("edge graphics").length, edges.length, "Number of edge
graphics");
+ });
+
+ test("SIF", function() {
+ var sif = vis.sif();
+ var edges = vis.edges();
+ $.each(edges, function(i, e) {
+ var inter = e.data.interaction ? e.data.interaction : e.data.id;
+ var line = e.data.source + "\t" + inter + "\t" + e.data.target;
+ ok(sif.indexOf(line) > -1, "SIF text should have the line:
'"+line+"'");
+ });
+ // Now replace the default interaction field:
+ var sif = vis.sif("type");
+ var edges = vis.edges();
+ $.each(edges, function(i, e) {
+ var line = e.data.source + "\t" + e.data.type + "\t" +
e.data.target;
+ ok(sif.indexOf(line) > -1, "SIF text should have the line:
'"+line+"'");
+ });
+ });
+
test("PNG", function() {
vis.zoom(Math.random()*2);
vis.panBy(Math.random()*-1000, Math.random()*1000);
@@ -1232,24 +1291,21 @@
same(base64.indexOf(beginning), 0, "PDF begins with correct chars");
});
- test("SIF", function() {
- var sif = vis.sif();
+ test("SVG", function() {
+ var svg = $(vis.svg());
+ var nodes = vis.nodes();
var edges = vis.edges();
- $.each(edges, function(i, e) {
- var inter = e.data.interaction ? e.data.interaction : e.data.id;
- var line = e.data.source + "\t" + inter + "\t" + e.data.target;
- ok(sif.indexOf(line) > -1, "SIF text should have the line:
'"+line+"'");
- });
- // Now replace the default interaction field:
- var sif = vis.sif("type");
- var edges = vis.edges();
- $.each(edges, function(i, e) {
- var line = e.data.source + "\t" + e.data.type + "\t" +
e.data.target;
- ok(sif.indexOf(line) > -1, "SIF text should have the line:
'"+line+"'");
- });
+
+ same(svg.find(".cw-background").length, 1, "Background rectangle");
+ same(svg.find(".cw-node").length, nodes.length, "Number of SVG nodes");
+ same(svg.find(".cw-node .cw-node-shape").length, nodes.length, "Number
of SVG node shapes");
+ same(svg.find(".cw-edge").length, edges.length, "Number of SVG edges");
+ same(svg.find(".cw-edge .cw-edge-line").length, edges.length, "Number
of SVG edge lines");
+
+ // TODO: test node images
+ // TODO: test edge arrows
});
- // TODO: test graphml(), xgmml()
// TODO: test selection styles
// TODO: text context menu methods
}
Modified: cytoscapeweb/trunk/cytoscapeweb/html-template/tests.html
===================================================================
--- cytoscapeweb/trunk/cytoscapeweb/html-template/tests.html 2010-11-24
01:43:37 UTC (rev 23002)
+++ cytoscapeweb/trunk/cytoscapeweb/html-template/tests.html 2010-11-24
18:23:35 UTC (rev 23003)
@@ -34,7 +34,6 @@
<title>Cytoscape Web API Tests</title>
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
-<script type="text/javascript" src="js/jquery.base64.min.js"></script>
<script type="text/javascript" src="js/qunit.js"></script>
<script type="text/javascript" src="js/json2.js"></script>
<script type="text/javascript" src="js/AC_OETags.js"></script>
Modified:
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/DeselectCommand.as
===================================================================
---
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/DeselectCommand.as
2010-11-24 01:43:37 UTC (rev 23002)
+++
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/DeselectCommand.as
2010-11-24 18:23:35 UTC (rev 23003)
@@ -69,7 +69,7 @@
var objs:Array, body:Object, type:String = "deselect";
if (nodes.length > 0 && extMediator.hasListener(type,
Groups.NODES)) {
- objs = ExternalObjectConverter.toExtObjectsArray(nodes);
+ objs = ExternalObjectConverter.toExtElementsArray(nodes);
body = { functionName: ExternalFunctions.INVOKE_LISTENERS,
argument: { type: type, group: Groups.NODES,
target: objs } };
@@ -77,7 +77,7 @@
}
if (edges.length > 0 && extMediator.hasListener(type,
Groups.EDGES)) {
- objs = ExternalObjectConverter.toExtObjectsArray(edges);
+ objs = ExternalObjectConverter.toExtElementsArray(edges);
body = { functionName: ExternalFunctions.INVOKE_LISTENERS,
argument: { type: type, group: Groups.EDGES,
target: objs } };
@@ -89,7 +89,7 @@
all = all.concat(nodes).concat(edges);
if (all.length > 0) {
- objs = ExternalObjectConverter.toExtObjectsArray(all);
+ objs = ExternalObjectConverter.toExtElementsArray(all);
body = { functionName:
ExternalFunctions.INVOKE_LISTENERS,
argument: { type: type, group: Groups.NONE,
target: objs } };
Modified:
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/FilterCommand.as
===================================================================
---
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/FilterCommand.as
2010-11-24 01:43:37 UTC (rev 23002)
+++
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/FilterCommand.as
2010-11-24 18:23:35 UTC (rev 23003)
@@ -79,7 +79,7 @@
var objs:Array, body:Object, type:String = "filter";
if (nodes != null && extMediator.hasListener(type,
Groups.NODES)) {
- objs =
ExternalObjectConverter.toExtObjectsArray(nodes);
+ objs =
ExternalObjectConverter.toExtElementsArray(nodes);
body = { functionName:
ExternalFunctions.INVOKE_LISTENERS,
argument: { type: type, group: Groups.NODES,
target: objs } };
@@ -87,7 +87,7 @@
}
if (edges != null && extMediator.hasListener(type,
Groups.EDGES)) {
- objs =
ExternalObjectConverter.toExtObjectsArray(edges);
+ objs =
ExternalObjectConverter.toExtElementsArray(edges);
body = { functionName:
ExternalFunctions.INVOKE_LISTENERS,
argument: { type: type, group: Groups.EDGES,
target: objs } };
@@ -95,7 +95,7 @@
}
if ((nodes != null || edges != null) &&
extMediator.hasListener(type, Groups.NONE)) {
- objs = ExternalObjectConverter.toExtObjectsArray(arr);
+ objs = ExternalObjectConverter.toExtElementsArray(arr);
body = { functionName:
ExternalFunctions.INVOKE_LISTENERS,
argument: { type: type, group: Groups.NONE,
target: objs } };
Modified:
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/HandleClickCommand.as
===================================================================
---
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/HandleClickCommand.as
2010-11-24 01:43:37 UTC (rev 23002)
+++
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/HandleClickCommand.as
2010-11-24 18:23:35 UTC (rev 23003)
@@ -60,7 +60,7 @@
// Call external listener:
if (extMediator.hasListener(type, group)) {
- var target:Object = ExternalObjectConverter.toExtObject(ds);
+ var target:Object = ExternalObjectConverter.toExtElement(ds);
body = { functionName: ExternalFunctions.INVOKE_LISTENERS,
argument: { type: type,
Modified:
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/HandleHoverCommand.as
===================================================================
---
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/HandleHoverCommand.as
2010-11-24 01:43:37 UTC (rev 23002)
+++
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/HandleHoverCommand.as
2010-11-24 18:23:35 UTC (rev 23003)
@@ -79,7 +79,7 @@
// Call external listener:
if (extMediator.hasListener(type, group)) {
- var target:Object = ExternalObjectConverter.toExtObject(ds);
+ var target:Object = ExternalObjectConverter.toExtElement(ds);
var body:Object = { functionName:
ExternalFunctions.INVOKE_LISTENERS,
argument: { type: type, group: group,
target: target } };
Modified:
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/RemoveFilterCommand.as
===================================================================
---
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/RemoveFilterCommand.as
2010-11-24 01:43:37 UTC (rev 23002)
+++
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/RemoveFilterCommand.as
2010-11-24 18:23:35 UTC (rev 23003)
@@ -95,7 +95,7 @@
if (fe != null) all = all.concat(fe);
}
- objs = ExternalObjectConverter.toExtObjectsArray(all);
+ objs = ExternalObjectConverter.toExtElementsArray(all);
body = { functionName: ExternalFunctions.INVOKE_LISTENERS,
argument: { type: type, group: Groups.NONE,
target: objs } };
Modified:
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/SelectCommand.as
===================================================================
---
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/SelectCommand.as
2010-11-24 01:43:37 UTC (rev 23002)
+++
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/controller/SelectCommand.as
2010-11-24 18:23:35 UTC (rev 23003)
@@ -67,7 +67,7 @@
var objs:Array, body:Object, type:String = "select";
if (nodes.length > 0 && extMediator.hasListener(type,
Groups.NODES)) {
- objs = ExternalObjectConverter.toExtObjectsArray(nodes);
+ objs = ExternalObjectConverter.toExtElementsArray(nodes);
body = { functionName: ExternalFunctions.INVOKE_LISTENERS,
argument: { type: type, group: Groups.NODES,
target: objs } };
@@ -75,7 +75,7 @@
}
if (edges.length > 0 && extMediator.hasListener(type,
Groups.EDGES)) {
- objs = ExternalObjectConverter.toExtObjectsArray(edges);
+ objs = ExternalObjectConverter.toExtElementsArray(edges);
body = { functionName: ExternalFunctions.INVOKE_LISTENERS,
argument: { type: type, group: Groups.EDGES,
target: objs } };
@@ -86,7 +86,7 @@
var all:Array = [];
all = all.concat(nodes).concat(edges);
- objs = ExternalObjectConverter.toExtObjectsArray(all);
+ objs = ExternalObjectConverter.toExtElementsArray(all);
body = { functionName: ExternalFunctions.INVOKE_LISTENERS,
argument: { type: type, group: Groups.NONE,
target: objs } };
Modified:
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/model/converters/ExternalObjectConverter.as
===================================================================
---
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/model/converters/ExternalObjectConverter.as
2010-11-24 01:43:37 UTC (rev 23002)
+++
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/model/converters/ExternalObjectConverter.as
2010-11-24 18:23:35 UTC (rev 23003)
@@ -92,16 +92,8 @@
/** @inheritDoc */
public function write(ds:DataSet, output:IDataOutput=null):IDataOutput
{
// Plain object to output
- var obj:Object = {};
+ var obj:Object = toExtNetwork(ds);
- // Add schema
- obj[SCHEMA] = convertFromSchema(ds.nodes.schema, ds.edges.schema);
-
- // Add graph data
- var objData:Object = obj[DATA] = {};
- obj[Groups.NODES] = ds.nodes.data;
- obj[Groups.EDGES] = ds.edges.data;
-
if (output == null) output = new ByteArray();
output.writeObject(obj);
@@ -192,20 +184,34 @@
);
}
- public static function toExtObjectsArray(dataSprites:*):Array {
+ public static function toExtNetwork(ds:DataSet):Object {
+ var obj:Object = {};
+
+ // Add schema
+ obj[SCHEMA] = toExtSchema(ds.nodes.schema, ds.edges.schema);
+
+ // Add graph data
+ obj[DATA] = {};
+ obj[DATA][Groups.NODES] = ds.nodes.data;
+ obj[DATA][Groups.EDGES] = ds.edges.data;
+
+ return obj;
+ }
+
+ public static function toExtElementsArray(dataSprites:*):Array {
var arr:Array = null;
if (dataSprites is DataList || dataSprites is Array) {
arr = [];
for each (var ds:DataSprite in dataSprites) {
- arr.push(toExtObject(ds));
+ arr.push(toExtElement(ds));
}
}
return arr;
}
- public static function toExtObject(ds:DataSprite):Object {
+ public static function toExtElement(ds:DataSprite):Object {
var obj:Object = null;
if (ds != null) {
@@ -244,7 +250,7 @@
if (e.props.$merged) {
var ee:Array = e.props.$edges;
- ee = toExtObjectsArray(ee);
+ ee = toExtElementsArray(ee);
obj.edges = ee;
}
}
@@ -253,7 +259,7 @@
return obj;
}
- public static function convertFromSchema(nodesSchema:DataSchema,
edgesSchema:DataSchema):Object {
+ public static function toExtSchema(nodesSchema:DataSchema,
edgesSchema:DataSchema):Object {
var obj:Object = {};
var convertFromDataFields:Function = function(fields:Array):Array {
Modified:
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/model/converters/SVGExporter.as
===================================================================
---
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/model/converters/SVGExporter.as
2010-11-24 01:43:37 UTC (rev 23002)
+++
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/model/converters/SVGExporter.as
2010-11-24 18:23:35 UTC (rev 23003)
@@ -69,6 +69,11 @@
// ========[ CONSTANTS
]====================================================================
private static const GLOW_WIDTH:Number = 3;
+ private static const BACKGROUND_CLASS:String = "cw-background";
+ private static const NODE_CLASS:String = "cw-node";
+ private static const NODE_SHAPE_CLASS:String = "cw-node-shape";
+ private static const EDGE_CLASS:String = "cw-edge";
+ private static const EDGE_LINE_CLASS:String = "cw-edge-line";
// ========[ PRIVATE PROPERTIES
]===========================================================
@@ -134,7 +139,7 @@
// Draw the background:
var bgColor:String =
Utils.rgbColorAsString(_style.getValue(VisualProperties.BACKGROUND_COLOR));
- svg += '<rect x="0" y="0" width="100%" height="100%"
fill="'+bgColor+'"/>';
+ svg += '<rect class="'+BACKGROUND_CLASS+'" x="0" y="0"
width="100%" height="100%" fill="'+bgColor+'"/>';
// Get the shift, in case one or more nodes were dragged or the
graph view is not at [0,0]:
var sp:Point = _graphView.vis.globalToLocal(new Point(bounds.x,
bounds.y));
@@ -203,6 +208,8 @@
if (cap === CapsStyle.ROUND) cap = 'round';
}
+ svg += '<g class="'+EDGE_CLASS+'">';
+
// First let's draw any glow (e.g. for selected edges):
// -----------------------------------------------------
var filters:Array = e.filters;
@@ -237,7 +244,7 @@
// Draw the edge's line and joints:
// -----------------------------------------------------
- svg += '<g stroke-linejoin="round" stroke-width="'+w+'"
stroke-linecap="'+cap+'" fill="none" stroke-opacity="'+a+'" stroke="'+c+'"
'+dashArr+'>';
+ svg += '<g class="'+EDGE_LINE_CLASS+'"
stroke-linejoin="round" stroke-width="'+w+'" stroke-linecap="'+cap+'"
fill="none" stroke-opacity="'+a+'" stroke="'+c+'" '+dashArr+'>';
svg += drawEdgeShaft(start, end, c1, c2, loop);
svg += '</g>';
@@ -259,6 +266,9 @@
svg += '<g fill="'+c+'" fill-opacity="'+a+'"
stroke="none">';
svg += drawEdgeArrow(taStyle.shape, tArrowPoints,
taStyle.height*_scale);
svg += '</g>';
+
+ // Close edge group:
+ svg += '</g>';
}
}
@@ -282,6 +292,8 @@
// Get the Global node point (relative to the stage):
var np:Point = toImagePoint(new Point(n.x, n.y), n);
+ svg += '<g class="'+NODE_CLASS+'">';
+
// First let's draw any node glow (e.g. for selected nodes):
var filters:Array = n.filters;
for each (var f:BitmapFilter in filters) {
@@ -309,7 +321,7 @@
w = (n.width - n.lineWidth) * _scale;
h = (n.height - n.lineWidth) * _scale;
- svg += '<g fill="'+c+'" fill-opacity="'+a+'" stroke="'+lc+'"
stroke-linejoin="round" stroke-width="'+lw+'" stroke-linecap="butt"
stroke-opacity="'+a+'">';
+ svg += '<g class="'+NODE_SHAPE_CLASS+'" fill="'+c+'"
fill-opacity="'+a+'" stroke="'+lc+'" stroke-linejoin="round"
stroke-width="'+lw+'" stroke-linecap="butt" stroke-opacity="'+a+'">';
// Basic node shape
svg += (nodeSvgShape = drawNodeShape(n.shape, np.x, np.y, w,
h));
@@ -338,7 +350,8 @@
svg += '</g>';
}
- svg += '</g>';
+ svg += '</g>'; // Close node shape groupd
+ svg += '</g>'; // Close node group
}
return svg;
Modified:
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/model/data/FirstNeighborsVO.as
===================================================================
---
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/model/data/FirstNeighborsVO.as
2010-11-24 01:43:37 UTC (rev 23002)
+++
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/model/data/FirstNeighborsVO.as
2010-11-24 18:23:35 UTC (rev 23003)
@@ -153,10 +153,10 @@
public function toObject():Object {
var obj:Object = {};
- obj.rootNodes =
ExternalObjectConverter.toExtObjectsArray(rootNodes);
- obj.neighbors =
ExternalObjectConverter.toExtObjectsArray(neighbors);
- obj.edges = ExternalObjectConverter.toExtObjectsArray(edges);
- obj.mergedEdges =
ExternalObjectConverter.toExtObjectsArray(mergedEdges);
+ obj.rootNodes =
ExternalObjectConverter.toExtElementsArray(rootNodes);
+ obj.neighbors =
ExternalObjectConverter.toExtElementsArray(neighbors);
+ obj.edges = ExternalObjectConverter.toExtElementsArray(edges);
+ obj.mergedEdges =
ExternalObjectConverter.toExtElementsArray(mergedEdges);
return obj;
}
Modified:
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/ContextMenuMediator.as
===================================================================
---
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/ContextMenuMediator.as
2010-11-24 01:43:37 UTC (rev 23002)
+++
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/ContextMenuMediator.as
2010-11-24 18:23:35 UTC (rev 23003)
@@ -151,7 +151,7 @@
menuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,
function(evt:ContextMenuEvent):void {
var target:* = _rolledOverNode ? _rolledOverNode :
_rolledOverEdge;
- target = ExternalObjectConverter.toExtObject(target);
+ target = ExternalObjectConverter.toExtElement(target);
var body:Object = { functionName:
ExternalFunctions.INVOKE_CONTEXT_MENU_CALLBACK,
argument: { type: "contextmenu",
Modified:
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/ExternalMediator.as
===================================================================
---
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/ExternalMediator.as
2010-11-24 01:43:37 UTC (rev 23002)
+++
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/ExternalMediator.as
2010-11-24 18:23:35 UTC (rev 23003)
@@ -30,6 +30,8 @@
package org.cytoscapeweb.view {
import com.adobe.serialization.json.JSON;
+ import flare.data.DataSchema;
+ import flare.data.DataSet;
import flare.vis.data.EdgeSprite;
import flare.vis.data.NodeSprite;
@@ -42,6 +44,7 @@
import org.cytoscapeweb.ApplicationFacade;
import org.cytoscapeweb.model.converters.ExternalObjectConverter;
import org.cytoscapeweb.model.data.FirstNeighborsVO;
+ import org.cytoscapeweb.model.data.GraphicsDataTable;
import org.cytoscapeweb.model.data.VisualStyleBypassVO;
import org.cytoscapeweb.model.data.VisualStyleVO;
import org.cytoscapeweb.model.methods.error;
@@ -285,39 +288,39 @@
}
private function getNodeById(id:String):String {
- var obj:Object =
ExternalObjectConverter.toExtObject(graphProxy.getNode(id));
+ var obj:Object =
ExternalObjectConverter.toExtElement(graphProxy.getNode(id));
return JSON.encode(obj);
}
private function getEdgeById(id:String):String {
- var obj:Object =
ExternalObjectConverter.toExtObject(graphProxy.getEdge(id));
+ var obj:Object =
ExternalObjectConverter.toExtElement(graphProxy.getEdge(id));
return JSON.encode(obj);
}
private function getNodes():String {
- var arr:Array =
ExternalObjectConverter.toExtObjectsArray(graphProxy.graphData.nodes);
+ var arr:Array =
ExternalObjectConverter.toExtElementsArray(graphProxy.graphData.nodes);
return JSON.encode(arr);
}
private function getEdges():String {
var edges:Array = graphProxy.edges;
- var arr:Array = ExternalObjectConverter.toExtObjectsArray(edges);
+ var arr:Array = ExternalObjectConverter.toExtElementsArray(edges);
return JSON.encode(arr);
}
private function getMergedEdges():String {
var edges:Array = graphProxy.mergedEdges;
- var arr:Array = ExternalObjectConverter.toExtObjectsArray(edges);
+ var arr:Array = ExternalObjectConverter.toExtElementsArray(edges);
return JSON.encode(arr);
}
private function getSelectedNodes():String {
- var arr:Array =
ExternalObjectConverter.toExtObjectsArray(graphProxy.selectedNodes);
+ var arr:Array =
ExternalObjectConverter.toExtElementsArray(graphProxy.selectedNodes);
return JSON.encode(arr);
}
private function getSelectedEdges():String {
- var arr:Array =
ExternalObjectConverter.toExtObjectsArray(graphProxy.selectedEdges);
+ var arr:Array =
ExternalObjectConverter.toExtElementsArray(graphProxy.selectedEdges);
return JSON.encode(arr);
}
@@ -365,7 +368,7 @@
graphMediator.initialize(Groups.NODES, [n]);
if (updateVisualMappers)
sendNotification(ApplicationFacade.GRAPH_DATA_CHANGED);
- o = ExternalObjectConverter.toExtObject(n);
+ o = ExternalObjectConverter.toExtElement(n);
} catch (err:Error) {
trace("[ERROR]: addNode: " + err.getStackTrace());
@@ -385,7 +388,7 @@
graphMediator.initialize(Groups.EDGES, [e]);
if (updateVisualMappers)
sendNotification(ApplicationFacade.GRAPH_DATA_CHANGED);
- o = ExternalObjectConverter.toExtObject(e);
+ o = ExternalObjectConverter.toExtElement(e);
} catch (err:Error) {
trace("[ERROR]: addEdge: " + err.getStackTrace());
@@ -403,7 +406,7 @@
}
private function getDataSchema():Object {
- var obj:Object =
ExternalObjectConverter.convertFromSchema(graphProxy.nodesSchema,
graphProxy.edgesSchema);
+ var obj:Object =
ExternalObjectConverter.toExtSchema(graphProxy.nodesSchema,
graphProxy.edgesSchema);
return obj;
}
@@ -420,6 +423,18 @@
sendNotification(ApplicationFacade.UPDATE_DATA, { group:
group, items: items, data: data });
}
+ private function getNetwork():Object {
+ var data:Object = graphProxy.graphData;
+ var nodesSchema:DataSchema = graphProxy.nodesSchema;
+ var edgesSchema:DataSchema = graphProxy.edgesSchema;
+
+ var nodesTable:GraphicsDataTable = new
GraphicsDataTable(data.nodes, nodesSchema);
+ var edgesTable:GraphicsDataTable = new
GraphicsDataTable(data.group(Groups.REGULAR_EDGES), edgesSchema);
+ var ds:DataSet = new DataSet(nodesTable, edgesTable);
+
+ return ExternalObjectConverter.toExtNetwork(ds);
+ }
+
private function getNetworkAsText(format:String="xgmml",
options:Object=null):String {
return graphProxy.getDataAsText(format, options);
}
@@ -469,7 +484,7 @@
"getVisualStyleBypass",
"setVisualStyleBypass",
"addNode", "addEdge", "removeElements",
"getDataSchema", "addDataField",
"removeDataField", "updateData",
- "getNetworkAsText",
"getNetworkAsImage",
+ "getNetwork", "getNetworkAsText",
"getNetworkAsImage",
"exportNetwork" ];
for each (var f:String in functions) addFunction(f);
Modified:
cytoscapeweb/trunk/cytoscapeweb/src-test/org/cytoscapeweb/model/converters/ExternalObjectConverterTest.as
===================================================================
---
cytoscapeweb/trunk/cytoscapeweb/src-test/org/cytoscapeweb/model/converters/ExternalObjectConverterTest.as
2010-11-24 01:43:37 UTC (rev 23002)
+++
cytoscapeweb/trunk/cytoscapeweb/src-test/org/cytoscapeweb/model/converters/ExternalObjectConverterTest.as
2010-11-24 18:23:35 UTC (rev 23003)
@@ -127,7 +127,7 @@
var attrs:Array = ["id"];
for each (var n:NodeSprite in data.nodes) {
- o = ExternalObjectConverter.toExtObject(n);
+ o = ExternalObjectConverter.toExtElement(n);
assertEquals(Groups.NODES, o.group);
for each (k in props) assertTrue("Node property: " + k,
o.hasOwnProperty(k));
@@ -141,7 +141,7 @@
attrs = ["id","source","target","directed"];
for each (var e:EdgeSprite in data.edges) {
- o = ExternalObjectConverter.toExtObject(e);
+ o = ExternalObjectConverter.toExtElement(e);
assertEquals(Groups.EDGES, o.group);
for each (k in props) assertTrue("Edge property: " + k,
o.hasOwnProperty(k));
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.