2 'common/sigmatopology/sigmatopology.module',
\r
4 'sigma-parsers-gexf',
\r
10 define(modules, function(topologyModule) {
\r
11 topologyModule.directive('sigmaTopology', ['$timeout',function($timeout) {
\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 $timeout(function(){
\r
79 if ( sigmaIstance !== null ) {
\r
80 sigmaIstance.kill();
\r
82 var timeToStopAtlas;
\r
84 // Instantiate sigma:
\r
85 Sigma.renderers.def = Sigma.renderers.canvas;
\r
87 Sigma.prototype.resetZoom = function(camera){
\r
88 if(typeof camera == "undefined"){
\r
89 camera = this.cameras[0];
\r
97 // console.info('sigma topology data', ntdata, $scope.topologyData);
\r
98 sigmaIstance = new Sigma({
\r
100 nodes: $scope.topologyData.nodes ? $scope.topologyData.nodes : [],
\r
101 edges: $scope.topologyData.links
\r
103 container: 'graph-container',
\r
104 settings: $scope.settings ? $scope.settings : defaulSettings
\r
107 if ( $scope.settingsAtlas ) {
\r
108 $scope.settingsAtlas.slowDown = getSlowDownNum($scope.topologyData.nodes.length);
\r
111 var defaultConfigAtlas = {
\r
113 // scalingRatio: 10,
\r
115 slowDown: getSlowDownNum($scope.topologyData.nodes.length)
\r
117 configAtlas = $scope.settingsAtlas ? $scope.settingsAtlas : defaultConfigAtlas;
\r
119 if ( $scope.customShapes ) {
\r
120 CustomShapes.init(sigmaIstance);
\r
121 sigmaIstance.refresh();
\r
124 var dragListener = null;
\r
126 if ( $scope.dragNodes ) {
\r
127 dragListener = Sigma.plugins.dragNodes(sigmaIstance, sigmaIstance.renderers[0]);
\r
130 if ( !$scope.topologyData.disabledAtlas ) {
\r
131 console.log('atlas');
\r
132 sigmaIstance.startForceAtlas2(configAtlas);
\r
135 if ( $scope.topologyCustfunc && angular.isFunction($scope.topologyCustfunc) ) {
\r
136 $scope.topologyCustfunc(sigmaIstance, getSlowDownNum, dragListener);
\r
139 }, ntdata.delay ? ntdata.delay : 0);
\r
144 $scope.$watch('triggerResizeSigma', function () {
\r
150 if ( sigmaIstance !== null ) {
\r
151 topoData.nodes = sigmaIstance.graph.nodes();
\r
152 topoData.links = sigmaIstance.graph.edges();
\r
153 sigmaIstance.kill();
\r
156 // Instantiate sigma:
\r
157 Sigma.renderers.def = Sigma.renderers.canvas;
\r
159 sigmaIstance = new Sigma({
\r
161 nodes: topoData ? topoData.nodes : [],
\r
162 edges: topoData ? topoData.links : []
\r
164 container: 'graph-container',
\r
165 settings: $scope.settings ? $scope.settings : defaulSettings
\r
170 if ( $scope.customShapes ) {
\r
171 CustomShapes.init(sigmaIstance);
\r
172 sigmaIstance.refresh();
\r
175 var dragListener = null;
\r
177 if ( $scope.dragNodes ) {
\r
178 dragListener = Sigma.plugins.dragNodes(sigmaIstance, sigmaIstance.renderers[0]);
\r
181 if ( $scope.topologyCustfunc && angular.isFunction($scope.topologyCustfunc) ) {
\r
183 $scope.topologyCustfunc(sigmaIstance, getSlowDownNum, dragListener, resize);
\r