diff --git a/html/admin/js/graphViewer/graphViewer.js b/html/admin/js/graphViewer/graphViewer.js
index 675eb42589..4bb6d23fef 100644
--- a/html/admin/js/graphViewer/graphViewer.js
+++ b/html/admin/js/graphViewer/graphViewer.js
@@ -1,7 +1,7 @@
/*jslint indent: 2, nomen: true, maxlen: 100, white: true plusplus: true */
/*global _*/
/*global EventDispatcher, ArangoAdapter, JSONAdapter */
-/*global ForceLayouter, EdgeShaper, NodeShaper */
+/*global ForceLayouter, EdgeShaper, NodeShaper, ZoomManager */
////////////////////////////////////////////////////////////////////////////////
/// @brief Graph functionality
///
@@ -30,8 +30,7 @@
////////////////////////////////////////////////////////////////////////////////
-function GraphViewer(svg, width, height,
- adapterConfig, config) {
+function GraphViewer(svg, width, height, adapterConfig, config) {
"use strict";
// Check if all required inputs are given
@@ -52,8 +51,10 @@ function GraphViewer(svg, width, height,
}
var self = this,
+ graphContainer,
nodeContainer,
edgeContainer,
+ zoomManager,
fixedSize,
dispatcher,
edges = [],
@@ -82,17 +83,27 @@ function GraphViewer(svg, width, height,
throw "Sorry unknown layout type.";
}
},
+
+ parseZoomConfig = function(config) {
+ if (config) {
+ zoomManager = new ZoomManager(width, height,
+ graphContainer, self.nodeShaper, self.edgeShaper);
+ }
+ },
+
parseConfig = function(config) {
var esConf = config.edgeShaper || {},
nsConf = config.nodeShaper || {},
- idFunc = nsConf.idfunc || undefined;
+ idFunc = nsConf.idfunc || undefined,
+ zConf = config.zoom || false;
parseLayouterConfig(config.layouter);
- edgeContainer = svg.append("svg:g");
+ edgeContainer = graphContainer.append("g");
self.edgeShaper = new EdgeShaper(edgeContainer, esConf);
- nodeContainer = svg.append("svg:g");
+ nodeContainer = graphContainer.append("g");
self.nodeShaper = new NodeShaper(nodeContainer, nsConf, idFunc);
self.layouter.setCombinedUpdateFunction(self.nodeShaper, self.edgeShaper);
+ parseZoomConfig(zConf);
};
switch (adapterConfig.type.toLowerCase()) {
@@ -118,6 +129,8 @@ function GraphViewer(svg, width, height,
throw "Sorry unknown adapter type.";
}
+ graphContainer = svg.append("g");
+
parseConfig(config || {});
self.start = function() {
diff --git a/html/admin/js/graphViewer/jasmine_test/specGraphViewer/graphViewerSpec.js b/html/admin/js/graphViewer/jasmine_test/specGraphViewer/graphViewerSpec.js
index aea06c2e3b..e1d2ae89bf 100644
--- a/html/admin/js/graphViewer/jasmine_test/specGraphViewer/graphViewerSpec.js
+++ b/html/admin/js/graphViewer/jasmine_test/specGraphViewer/graphViewerSpec.js
@@ -1,11 +1,11 @@
/*jslint indent: 2, nomen: true, maxlen: 100, white: true plusplus: true */
/*global beforeEach, afterEach */
-/*global describe, it, expect, jasmine */
+/*global describe, it, expect, jasmine, spyOn*/
/*global waitsFor, runs, waits */
/*global window, eb, loadFixtures, document */
/*global $, _, d3*/
/*global helper*/
-/*global GraphViewer*/
+/*global GraphViewer, EdgeShaper, NodeShaper*/
////////////////////////////////////////////////////////////////////////////////
/// @brief Graph functionality
@@ -38,7 +38,7 @@
describe("Graph Viewer", function() {
"use strict";
var viewer,
- waittime = 200,
+ waittime = 500,
svg,
docSVG;
@@ -115,7 +115,7 @@ describe("Graph Viewer", function() {
});
- describe('GraphViewer set up correctly', function() {
+ describe('set up correctly', function() {
var viewer, adapterConfig;
@@ -234,4 +234,32 @@ describe("Graph Viewer", function() {
});
+ describe('set up to support zoom', function() {
+ var viewer, adapterConfig;
+
+ beforeEach(function() {
+ if (window.ZoomManager === undefined) {
+ window.ZoomManager = {};
+ }
+ spyOn(window, "ZoomManager");
+ adapterConfig = {type: "json", path: "../test_data/"};
+ var config = {
+ zoom: true
+ };
+ viewer = new GraphViewer(svg, 42, 13, adapterConfig, config);
+ });
+
+ it('should set up the zoom manager', function() {
+ expect(window.ZoomManager).toHaveBeenCalledWith(
+ 42,
+ 13,
+ jasmine.any(Object),
+ jasmine.any(NodeShaper),
+ jasmine.any(EdgeShaper)
+ );
+ });
+
+
+ });
+
});
\ No newline at end of file