2 'common/sigmatopology/sigmatopology.module',
\r
4 'sigma-parsers-gexf',
\r
5 'sigma-forceAtlas2',
\r
10 define(modules, function(topologyModule) {
\r
11 topologyModule.register.directive('sigmaTopology', function() {
\r
16 topologyData: '=topologyData',
\r
17 topologyOptions: '=topologyOptions',
\r
18 topologyCustfunc: '=topologyCustfunc',
\r
20 customShapes: '=customShapes',
\r
21 dragNodes: '=dragNodes',
\r
22 settings: '=settingsSigma',
\r
23 settingsAtlas: '=settingsAtlas',
\r
24 triggerResizeSigma: '=triggerResizeSigma'
\r
26 templateUrl: 'src/common/sigmatopology/sigma.tpl.html',
\r
27 link: function($scope, iElm, iAttrs, controller) {
\r
29 var sigmaIstance = null,
\r
30 getSlowDownNum = function(numOfNodes){
\r
31 // return 1/numOfNodes;
\r
34 case (numOfNodes < 20):
\r
37 case (numOfNodes < 50):
\r
40 case (numOfNodes < 100):
\r
43 case (numOfNodes < 250):
\r
46 case (numOfNodes < 500):
\r
49 case (numOfNodes < 1000):
\r
52 case (numOfNodes < 2000):
\r
55 // case (numOfNodes < 5000):
\r
58 case (numOfNodes < 10000):
\r
68 defaultLabelColor: '#fff',
\r
69 doubleClickEnabled: false,
\r
73 $scope.$watch('topologyData', function (ntdata) {
\r
77 if ( sigmaIstance !== null ) {
\r
78 sigmaIstance.kill();
\r
80 var timeToStopAtlas;
\r
82 // Instantiate sigma:
\r
83 Sigma.renderers.def = Sigma.renderers.canvas;
\r
85 Sigma.prototype.resetZoom = function(camera){
\r
86 if(typeof camera == "undefined"){
\r
87 camera = this.cameras[0];
\r
95 // console.info('sigma topology data', ntdata, $scope.topologyData);
\r
96 sigmaIstance = new Sigma({
\r
98 nodes: $scope.topologyData.nodes ? $scope.topologyData.nodes : [],
\r
99 edges: $scope.topologyData.links
\r
101 container: 'graph-container',
\r
102 settings: $scope.settings ? $scope.settings : defaulSettings
\r
105 if ( $scope.settingsAtlas ) {
\r
106 $scope.settingsAtlas.slowDown = getSlowDownNum($scope.topologyData.nodes.length);
\r
109 var defaultConfigAtlas = {
\r
111 // scalingRatio: 10,
\r
113 slowDown: getSlowDownNum($scope.topologyData.nodes.length)
\r
115 configAtlas = $scope.settingsAtlas ? $scope.settingsAtlas : defaultConfigAtlas;
\r
117 if ( $scope.customShapes ) {
\r
118 CustomShapes.init(sigmaIstance);
\r
119 sigmaIstance.refresh();
\r
122 var dragListener = null;
\r
124 if ( $scope.dragNodes ) {
\r
125 dragListener = Sigma.plugins.dragNodes(sigmaIstance, sigmaIstance.renderers[0]);
\r
128 if ( !$scope.topologyData.disabledAtlas ) {
\r
129 sigmaIstance.startForceAtlas2(configAtlas);
\r
132 if ( $scope.topologyCustfunc && angular.isFunction($scope.topologyCustfunc) ) {
\r
133 $scope.topologyCustfunc(sigmaIstance, getSlowDownNum, dragListener);
\r
139 $scope.$watch('triggerResizeSigma', function () {
\r
145 if ( sigmaIstance !== null ) {
\r
146 topoData.nodes = sigmaIstance.graph.nodes();
\r
147 topoData.links = sigmaIstance.graph.edges();
\r
148 sigmaIstance.kill();
\r
151 // Instantiate sigma:
\r
152 Sigma.renderers.def = Sigma.renderers.canvas;
\r
154 sigmaIstance = new Sigma({
\r
156 nodes: topoData ? topoData.nodes : [],
\r
157 edges: topoData ? topoData.links : []
\r
159 container: 'graph-container',
\r
160 settings: $scope.settings ? $scope.settings : defaulSettings
\r
165 if ( $scope.customShapes ) {
\r
166 CustomShapes.init(sigmaIstance);
\r
167 sigmaIstance.refresh();
\r
170 var dragListener = null;
\r
172 if ( $scope.dragNodes ) {
\r
173 dragListener = Sigma.plugins.dragNodes(sigmaIstance, sigmaIstance.renderers[0]);
\r
176 if ( $scope.topologyCustfunc && angular.isFunction($scope.topologyCustfunc) ) {
\r
178 $scope.topologyCustfunc(sigmaIstance, getSlowDownNum, dragListener, resize);
\r