From 9dd53d390221672805b268506ad2cfc7992aab13 Mon Sep 17 00:00:00 2001 From: Johnny Date: Thu, 18 Feb 2016 18:25:15 -0500 Subject: [PATCH 1/2] removed travis --- .travis.yml | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index cce5c68..0000000 --- a/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: node_js -node_js: - - "0.10" - -before_script: - - export DISPLAY=:99.0 - - sh -e /etc/init.d/xvfb start - - npm start > /dev/null & - - npm run update-webdriver - - sleep 1 # give server time to start - -script: - - node_modules/.bin/karma start karma.conf.js --no-auto-watch --single-run --reporters=dots --browsers=Firefox - - node_modules/.bin/protractor e2e-tests/protractor.conf.js --browser=firefox From 019f8f7dd8492538d80fb4fbd6596c8a9c302703 Mon Sep 17 00:00:00 2001 From: Johnny Date: Sun, 21 Feb 2016 12:40:59 -0500 Subject: [PATCH 2/2] Added graph destroy on $destroy --- dst/ngCytoscape.js | 10 +++++++++- dst/ngCytoscape.min.js | 2 +- src/directives/cytoscape-directive.js | 4 ++++ src/services/cytoData.js | 5 +++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/dst/ngCytoscape.js b/dst/ngCytoscape.js index bfd22a4..9b1f3d6 100644 --- a/dst/ngCytoscape.js +++ b/dst/ngCytoscape.js @@ -95,6 +95,10 @@ cy.ready(function() { cytoData.setGraph(cy, attrs.id); }); + scope.$on('$destroy', function(){ + cy.destroy(); + cytoData.unresolveGraph(attrs.id) + }) } } @@ -244,6 +248,11 @@ _private.Graph = {}; var self = this; + self.unresolveGraph = function(graphId){ + var id = cytoHelpers.obtainEffectiveGraphId(_private.Graph, graphId); + _private['Graph'][id] = undefined; + }; + self.setGraph = function(gObject, scopeId) { var defer = getUnresolvedDefer(_private.Graph, scopeId); defer.resolve(gObject); @@ -280,7 +289,6 @@ graph.remove(graph.elements()); return; } - //Add All Elements if(graph.elements().length === 0){ angular.forEach(newEles, function(ele,index){ if(isValidElement(ele,index)){ diff --git a/dst/ngCytoscape.min.js b/dst/ngCytoscape.min.js index 2f85599..1c74178 100644 --- a/dst/ngCytoscape.min.js +++ b/dst/ngCytoscape.min.js @@ -1 +1 @@ -!function(){"use strict";function e(e,t,n,o,a,i,r){function s(t){this._cytoGraph=e.defer(),this._getCytoscapeGraph=function(){return this._cytoGraph.promise},this._getCytoscapeScope=function(){return t}}function u(e,s,u,l){var c=t.isDefined,d=t.isEmpty;o.setDefaults(e.graphOptions,e.graphLayout,u.id,e.graphStyle),e.graphId=u.id;var p=new a(s[0],o.getGraphCreationDefaults(u.id));i.setEvents(p),l._cytoGraph.resolve(p),c(e.graphElements&&!d(e.graphElements))&&(r.addAllElements(e.graphElements,p,e),c(e.graphLayout)&&!d(e.graphLayout)&&p.layout(e.graphLayout)),e.$watch(function(){return s[0].offsetHeight},function(e,t){e!==t&&p.resize()}),e.$watch(function(){return s[0].offsetWidth},function(e,t){e!==t&&p.resize()}),p.ready(function(){n.setGraph(p,u.id)})}s.$inject=["$scope"];var l={restrict:"EA",replace:!0,scope:{graphElements:"=",graphLayout:"=",graphOptions:"=",graphStyle:"="},template:'
',controller:s,link:u};return l}angular.module("ngCytoscape",[]).directive("cytoscape",e),e.$inject=["$q","cytoHelpers","cytoData","cytoGraphDefaults","CytoscapeGraph","cytoEvents","cytoElementsHelpers"]}(),function(){"use strict";function e(e,t){function n(n,o,a,i){var r,s=i._getCytoscapeScope(),u=e.isDefined;i._getCytoscapeGraph().then(function(e){r=e}),n.$watch(function(){return s.graphElements},function(e,n){u(e)&&e!==n&&t.processChange(e,n,r,s)},!0)}var o={restric:"A",require:"^cytoscape",link:n};return o}angular.module("ngCytoscape").directive("graphElements",e),e.$inject=["cytoHelpers","cytoElementsHelpers"]}(),function(){"use strict";function e(e,t){function n(n,o,a,i){var r,s,u=(e.isDefined,t.getDefaultLayouts()),l=u.grid;s=i._getCytoscapeScope(),i._getCytoscapeGraph().then(function(e){r=e}),n.$watch(function(){return s.graphLayout},function(e,t){e!=t&&r.elements().length>0&&r.elements(":visible").layout(s.graphLayout||l)},!0)}var o={restrict:"A",require:"^cytoscape",link:n};return o}angular.module("ngCytoscape").directive("graphLayout",e),e.$inject=["cytoHelpers","cytoLayoutDefaults"]}(),function(){"use strict";function e(){var e={restrict:"A",require:"^cytoscape",link:function(e,t,n,o){var a={};o._getCytoscapeGraph().then(function(e){a=e});var i=o._getCytoscapeScope();i.$watch(function(){return i.graphStyle},function(e,t){e!==t&&a&&a.style(e)},!0)}};return e}angular.module("ngCytoscape").directive("graphStyle",e)}(),function(){"use strict";function e(){var e=function(e,t,n){var o={container:e};return angular.isDefined(t)&&null!==t&&angular.extend(o,t),cytoscape(o)};return e}angular.module("ngCytoscape").factory("CytoscapeGraph",e)}(),function(){"use strict";function e(e){var t=e.getDefer,n=e.getUnresolvedDefer,o=e.setResolvedDefer,a={};a.Graph={};var i=this;i.setGraph=function(e,t){var i=n(a.Graph,t);i.resolve(e),o(a.Graph,t)},i.getGraph=function(e){var n=t(a.Graph,e);return n.promise}}angular.module("ngCytoscape").service("cytoData",e),e.$inject=["cytoHelpers"]}(),function(){"use strict";function e(e,t){function n(t,n,i,u){var l,c=e.isEmpty,d=[];if(c(t))return void i.remove(i.elements());if(0===i.elements().length)angular.forEach(t,function(e,t){r(e,t)&&d.push(new s(e,t).ele)});else{var p=a(t,n,i);c(p.toAdd)||angular.forEach(p.toAdd,function(e,t){d.push(new s(e,t).ele)}),c(p.toUpdate)||o(p.toUpdate,i),c(p.toRemove)||(l=i.collection(),angular.forEach(p.toRemove,function(e,t){l=l.add(i.elements("#"+t))}))}0!==d.length&&(i.add(d),i.layout(u.graphLayout||{name:"grid"})),l&&0!==l.length&&i.remove(l),i.style().update()}function o(e,t){t.batch(function(){angular.forEach(e,function(e){t.$("#"+e.id).data(e.data)}),t.style().update()})}function a(e,t,n){var o={toAdd:{},toRemove:{},toUpdate:[]};return Object.keys(t).length!==Object.keys(e).length&&(angular.forEach(t,function(t,n){e[n]||(o.toRemove[n]={},angular.extend(o.toRemove[n],t))}),angular.forEach(e,function(e,n){t[n]||(o.toAdd[n]={},angular.extend(o.toAdd[n],e))})),o}function i(e,t,n){var o=[],a=!0;angular.forEach(e,function(e,t){r(e,t)?o.push(new s(e,t).ele):a=!1}),a&&t.add(o)}function r(e){var n=!0;return e.hasOwnProperty("data")||(t.error("Elements require a data property",e),n=!1),n}function s(e,t){return this.ele={},angular.extend(this.ele,e),this.ele.data.hasOwnProperty("id")||(this.ele.data.id=t),this.hasOwnProperty("group")||(this.ele.data.hasOwnProperty("target")&&this.ele.data.hasOwnProperty("source")?this.ele.group="edges":this.ele.group="nodes"),this}var u={addAllElements:i,processChange:n,elementsMap:{}};return u}angular.module("ngCytoscape").factory("cytoElementsHelpers",e),e.$inject=["cytoHelpers","$log"]}(),function(){"use strict";function e(){return["mousedown","mouseup","click","mouseover","mouseout","mousemove","touchstart","touchmove","touchend","add","remove","select","unselect","lock","unlock","grab","drag","free","position","data","scratch","style","layoutstart","layoutready","layoutstop","load","ready","initrender","done","pan","zoom","tapstart","tapdrag","tapdragover","tapdragout","tapend","tap","taphold","cxttapstart","cxttapend","cxttap","cxtdrag","cxtdragover","cxtdragout"]}function t(t){function n(n){for(var o=e(),a=0;a=1)for(a in e)e.hasOwnProperty(a)&&(n=a);else $log.error(o+"- You have more than 1 graph on the DOM, you must provide the graph ID to the cytoData.geGraph call");return n}function n(n,o){var a,i=t(n,o);return angular.isDefined(n[i])&&n[i].resolvedDefer!==!0?a=n[i].defer:(a=e.defer(),n[i]={defer:a,resolvedDefer:!1}),a}var o="[AngularJS - Cytoscape] ",a=angular.copy,i=a,r=function(e){return angular.isDefined(e)&&null!==e},s=function(e){return!r(e)};return{copy:a,clone:i,defaultTo:function(e,t){return r(e)?e:t},isTruthy:function(e){return"true"===e||e===!0},isEmpty:function(e){return 0===Object.keys(e).length},isUndefinedOrEmpty:function(e){return angular.isUndefined(e)||null===e||0===Object.keys(e).length},isDefined:r,isUndefined:s,isNumber:angular.isNumber,isString:angular.isString,isArray:angular.isArray,isObject:angular.isObject,isFunction:angular.isFunction,equals:angular.equals,safeApply:function(e,t){var n=e.$root.$$phase;"$apply"==n||"$digest"==n?e.$eval(t):e.$apply(t)},asyncEach:function(t,n,o,a){function i(){return(new Date).getTime()}function r(){for(var e=i();u>l&&i()-e<=o;)n.call(a,t[l],l,t),++l;u>l?setTimeout(r,1):l===u&&s.resolve()}var s=e.defer(),u=t.length;a=a||window,o=o||200;var l=0;return r(),s.promise},obtainEffectiveGraphId:t,getDefer:function(e,o){var a,i=t(e,o);return a=angular.isDefined(e[i])&&e[i].resolvedDefer!==!1?e[i].defer:n(e,o)},getUnresolvedDefer:n,setResolvedDefer:function(e,n){var o=t(e,n);e[o].resolvedDefer=!0}}}angular.module("ngCytoscape").service("cytoHelpers",e),e.$inject=["$q"]}(),function(){"use strict";function e(){return{random:{name:"random",fit:!0,padding:30,boundingBox:void 0,animate:!1,animationDuration:500,animationEasing:void 0,ready:void 0,stop:void 0},preset:{name:"preset",positions:void 0,zoom:void 0,pan:void 0,fit:!0,padding:30,animate:!1,animationDuration:500,animationEasing:void 0,ready:void 0,stop:void 0},grid:{name:"grid",fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,ready:void 0,stop:void 0},circle:{name:"circle",fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,ready:void 0,stop:void 0},concentric:{name:"concentric",fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,height:void 0,width:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,ready:void 0,stop:void 0},breadthfirst:{name:"breadthfirst",fit:!0,directed:!1,padding:30,circle:!1,spacingFactor:1.75,boundingBox:void 0,avoidOverlap:!0,roots:void 0,maximalAdjustments:0,animate:!1,animationDuration:500,animationEasing:void 0,ready:void 0,stop:void 0},cose:{name:"cose",ready:function(){},stop:function(){},animate:!1,animationThreshold:250,refresh:20,fit:!0,padding:30,boundingBox:void 0,componentSpacing:100,nodeRepulsion:function(e){return 4e5},nodeOverlap:10,idealEdgeLength:function(e){return 10},edgeElasticity:function(e){return 100},nestingFactor:5,gravity:80,numIter:1e3,initialTemp:200,coolingFactor:.95,minTemp:1,useMultitasking:!0}}}function t(){function t(){return e()}var n={getDefaultLayouts:t};return n}angular.module("ngCytoscape").factory("cytoLayoutDefaults",t)}(); \ No newline at end of file +!function(){"use strict";function e(e,t,n,o,a,i,r){function s(t){this._cytoGraph=e.defer(),this._getCytoscapeGraph=function(){return this._cytoGraph.promise},this._getCytoscapeScope=function(){return t}}function u(e,s,u,l){var c=t.isDefined,d=t.isEmpty;o.setDefaults(e.graphOptions,e.graphLayout,u.id,e.graphStyle),e.graphId=u.id;var p=new a(s[0],o.getGraphCreationDefaults(u.id));i.setEvents(p),l._cytoGraph.resolve(p),c(e.graphElements&&!d(e.graphElements))&&(r.addAllElements(e.graphElements,p,e),c(e.graphLayout)&&!d(e.graphLayout)&&p.layout(e.graphLayout)),e.$watch(function(){return s[0].offsetHeight},function(e,t){e!==t&&p.resize()}),e.$watch(function(){return s[0].offsetWidth},function(e,t){e!==t&&p.resize()}),p.ready(function(){n.setGraph(p,u.id)}),e.$on("$destroy",function(){p.destroy(),n.unresolveGraph(u.id)})}s.$inject=["$scope"];var l={restrict:"EA",replace:!0,scope:{graphElements:"=",graphLayout:"=",graphOptions:"=",graphStyle:"="},template:'
',controller:s,link:u};return l}angular.module("ngCytoscape",[]).directive("cytoscape",e),e.$inject=["$q","cytoHelpers","cytoData","cytoGraphDefaults","CytoscapeGraph","cytoEvents","cytoElementsHelpers"]}(),function(){"use strict";function e(e,t){function n(n,o,a,i){var r,s=i._getCytoscapeScope(),u=e.isDefined;i._getCytoscapeGraph().then(function(e){r=e}),n.$watch(function(){return s.graphElements},function(e,n){u(e)&&e!==n&&t.processChange(e,n,r,s)},!0)}var o={restric:"A",require:"^cytoscape",link:n};return o}angular.module("ngCytoscape").directive("graphElements",e),e.$inject=["cytoHelpers","cytoElementsHelpers"]}(),function(){"use strict";function e(e,t){function n(n,o,a,i){var r,s,u=(e.isDefined,t.getDefaultLayouts()),l=u.grid;s=i._getCytoscapeScope(),i._getCytoscapeGraph().then(function(e){r=e}),n.$watch(function(){return s.graphLayout},function(e,t){e!=t&&r.elements().length>0&&r.elements(":visible").layout(s.graphLayout||l)},!0)}var o={restrict:"A",require:"^cytoscape",link:n};return o}angular.module("ngCytoscape").directive("graphLayout",e),e.$inject=["cytoHelpers","cytoLayoutDefaults"]}(),function(){"use strict";function e(){var e={restrict:"A",require:"^cytoscape",link:function(e,t,n,o){var a={};o._getCytoscapeGraph().then(function(e){a=e});var i=o._getCytoscapeScope();i.$watch(function(){return i.graphStyle},function(e,t){e!==t&&a&&a.style(e)},!0)}};return e}angular.module("ngCytoscape").directive("graphStyle",e)}(),function(){"use strict";function e(){var e=function(e,t,n){var o={container:e};return angular.isDefined(t)&&null!==t&&angular.extend(o,t),cytoscape(o)};return e}angular.module("ngCytoscape").factory("CytoscapeGraph",e)}(),function(){"use strict";function e(e){var t=e.getDefer,n=e.getUnresolvedDefer,o=e.setResolvedDefer,a={};a.Graph={};var i=this;i.unresolveGraph=function(t){var n=e.obtainEffectiveGraphId(a.Graph,t);a.Graph[n]=void 0},i.setGraph=function(e,t){var i=n(a.Graph,t);i.resolve(e),o(a.Graph,t)},i.getGraph=function(e){var n=t(a.Graph,e);return n.promise}}angular.module("ngCytoscape").service("cytoData",e),e.$inject=["cytoHelpers"]}(),function(){"use strict";function e(e,t){function n(t,n,i,u){var l,c=e.isEmpty,d=[];if(c(t))return void i.remove(i.elements());if(0===i.elements().length)angular.forEach(t,function(e,t){r(e,t)&&d.push(new s(e,t).ele)});else{var p=a(t,n,i);c(p.toAdd)||angular.forEach(p.toAdd,function(e,t){d.push(new s(e,t).ele)}),c(p.toUpdate)||o(p.toUpdate,i),c(p.toRemove)||(l=i.collection(),angular.forEach(p.toRemove,function(e,t){l=l.add(i.elements("#"+t))}))}0!==d.length&&(i.add(d),i.layout(u.graphLayout||{name:"grid"})),l&&0!==l.length&&i.remove(l),i.style().update()}function o(e,t){t.batch(function(){angular.forEach(e,function(e){t.$("#"+e.id).data(e.data)}),t.style().update()})}function a(e,t,n){var o={toAdd:{},toRemove:{},toUpdate:[]};return Object.keys(t).length!==Object.keys(e).length&&(angular.forEach(t,function(t,n){e[n]||(o.toRemove[n]={},angular.extend(o.toRemove[n],t))}),angular.forEach(e,function(e,n){t[n]||(o.toAdd[n]={},angular.extend(o.toAdd[n],e))})),o}function i(e,t,n){var o=[],a=!0;angular.forEach(e,function(e,t){r(e,t)?o.push(new s(e,t).ele):a=!1}),a&&t.add(o)}function r(e){var n=!0;return e.hasOwnProperty("data")||(t.error("Elements require a data property",e),n=!1),n}function s(e,t){return this.ele={},angular.extend(this.ele,e),this.ele.data.hasOwnProperty("id")||(this.ele.data.id=t),this.hasOwnProperty("group")||(this.ele.data.hasOwnProperty("target")&&this.ele.data.hasOwnProperty("source")?this.ele.group="edges":this.ele.group="nodes"),this}var u={addAllElements:i,processChange:n,elementsMap:{}};return u}angular.module("ngCytoscape").factory("cytoElementsHelpers",e),e.$inject=["cytoHelpers","$log"]}(),function(){"use strict";function e(){return["mousedown","mouseup","click","mouseover","mouseout","mousemove","touchstart","touchmove","touchend","add","remove","select","unselect","lock","unlock","grab","drag","free","position","data","scratch","style","layoutstart","layoutready","layoutstop","load","ready","initrender","done","pan","zoom","tapstart","tapdrag","tapdragover","tapdragout","tapend","tap","taphold","cxttapstart","cxttapend","cxttap","cxtdrag","cxtdragover","cxtdragout"]}function t(t){function n(n){for(var o=e(),a=0;a=1)for(a in e)e.hasOwnProperty(a)&&(n=a);else $log.error(o+"- You have more than 1 graph on the DOM, you must provide the graph ID to the cytoData.geGraph call");return n}function n(n,o){var a,i=t(n,o);return angular.isDefined(n[i])&&n[i].resolvedDefer!==!0?a=n[i].defer:(a=e.defer(),n[i]={defer:a,resolvedDefer:!1}),a}var o="[AngularJS - Cytoscape] ",a=angular.copy,i=a,r=function(e){return angular.isDefined(e)&&null!==e},s=function(e){return!r(e)};return{copy:a,clone:i,defaultTo:function(e,t){return r(e)?e:t},isTruthy:function(e){return"true"===e||e===!0},isEmpty:function(e){return 0===Object.keys(e).length},isUndefinedOrEmpty:function(e){return angular.isUndefined(e)||null===e||0===Object.keys(e).length},isDefined:r,isUndefined:s,isNumber:angular.isNumber,isString:angular.isString,isArray:angular.isArray,isObject:angular.isObject,isFunction:angular.isFunction,equals:angular.equals,safeApply:function(e,t){var n=e.$root.$$phase;"$apply"==n||"$digest"==n?e.$eval(t):e.$apply(t)},asyncEach:function(t,n,o,a){function i(){return(new Date).getTime()}function r(){for(var e=i();u>l&&i()-e<=o;)n.call(a,t[l],l,t),++l;u>l?setTimeout(r,1):l===u&&s.resolve()}var s=e.defer(),u=t.length;a=a||window,o=o||200;var l=0;return r(),s.promise},obtainEffectiveGraphId:t,getDefer:function(e,o){var a,i=t(e,o);return a=angular.isDefined(e[i])&&e[i].resolvedDefer!==!1?e[i].defer:n(e,o)},getUnresolvedDefer:n,setResolvedDefer:function(e,n){var o=t(e,n);e[o].resolvedDefer=!0}}}angular.module("ngCytoscape").service("cytoHelpers",e),e.$inject=["$q"]}(),function(){"use strict";function e(){return{random:{name:"random",fit:!0,padding:30,boundingBox:void 0,animate:!1,animationDuration:500,animationEasing:void 0,ready:void 0,stop:void 0},preset:{name:"preset",positions:void 0,zoom:void 0,pan:void 0,fit:!0,padding:30,animate:!1,animationDuration:500,animationEasing:void 0,ready:void 0,stop:void 0},grid:{name:"grid",fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,ready:void 0,stop:void 0},circle:{name:"circle",fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,ready:void 0,stop:void 0},concentric:{name:"concentric",fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,height:void 0,width:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,ready:void 0,stop:void 0},breadthfirst:{name:"breadthfirst",fit:!0,directed:!1,padding:30,circle:!1,spacingFactor:1.75,boundingBox:void 0,avoidOverlap:!0,roots:void 0,maximalAdjustments:0,animate:!1,animationDuration:500,animationEasing:void 0,ready:void 0,stop:void 0},cose:{name:"cose",ready:function(){},stop:function(){},animate:!1,animationThreshold:250,refresh:20,fit:!0,padding:30,boundingBox:void 0,componentSpacing:100,nodeRepulsion:function(e){return 4e5},nodeOverlap:10,idealEdgeLength:function(e){return 10},edgeElasticity:function(e){return 100},nestingFactor:5,gravity:80,numIter:1e3,initialTemp:200,coolingFactor:.95,minTemp:1,useMultitasking:!0}}}function t(){function t(){return e()}var n={getDefaultLayouts:t};return n}angular.module("ngCytoscape").factory("cytoLayoutDefaults",t)}(); \ No newline at end of file diff --git a/src/directives/cytoscape-directive.js b/src/directives/cytoscape-directive.js index 61a34e1..bda9a9e 100644 --- a/src/directives/cytoscape-directive.js +++ b/src/directives/cytoscape-directive.js @@ -95,6 +95,10 @@ cy.ready(function() { cytoData.setGraph(cy, attrs.id); }); + scope.$on('$destroy', function(){ + cy.destroy(); + cytoData.unresolveGraph(attrs.id) + }) } } diff --git a/src/services/cytoData.js b/src/services/cytoData.js index c42d178..9119229 100644 --- a/src/services/cytoData.js +++ b/src/services/cytoData.js @@ -13,6 +13,11 @@ _private.Graph = {}; var self = this; + self.unresolveGraph = function(graphId){ + var id = cytoHelpers.obtainEffectiveGraphId(_private.Graph, graphId); + _private['Graph'][id] = undefined; + }; + self.setGraph = function(gObject, scopeId) { var defer = getUnresolvedDefer(_private.Graph, scopeId); defer.resolve(gObject);