From b6d1bf9a31a2f9085dd3fd8d061da68057349af8 Mon Sep 17 00:00:00 2001 From: Rohan Dey Date: Tue, 8 Jan 2019 11:48:52 +0530 Subject: [PATCH 1/2] Core fix/datasource bidirectional binding (#67) * Modified data binding method for datasource * Added check for different dataformats --- dist/angular-fusioncharts.js | 47 ++++++++++++++++++++++++++------ dist/angular-fusioncharts.min.js | 4 +-- example/data.json | 44 ++++++++++++++++++++++++++++++ example/index.html | 10 ++++++- src/angular-fusioncharts.js | 47 ++++++++++++++++++++++++++------ 5 files changed, 133 insertions(+), 19 deletions(-) create mode 100644 example/data.json diff --git a/dist/angular-fusioncharts.js b/dist/angular-fusioncharts.js index c051e8c..e17169f 100644 --- a/dist/angular-fusioncharts.js +++ b/dist/angular-fusioncharts.js @@ -45,7 +45,8 @@ map: '@', markers: '@', initialized: '&', - datasourceDt: '=datasourceDt' + datasourceDt: '=datasourceDt', + datasource: '=datasource' }, fcEvents = [ 'beforelinkeditemopen', @@ -627,7 +628,6 @@ chart.setJSONData(chartConfigObject.dataSource); } }, 0); - // chart.setJSONData(chartConfigObject.dataSource); }, createFCChart = function() { @@ -715,12 +715,43 @@ } } - if (attrs.datasource) { - chartConfigObject.dataSource = - chartConfigObject.dataFormat === 'json' - ? JSON.parse(attrs.datasource) - : attrs.datasource; - dataStringStore.dataSource = attrs.datasource; + if (chartConfigObject.dataFormat === 'json') { + if (scope.datasource) { + attrs.datasource = scope.datasource; + chartConfigObject.dataSource = scope.datasource; + dataStringStore.dataSource = attrs.datasource; + + scope.$watch( + 'datasource', + function(newData, oldData) { + if (newData !== oldData) { + chartConfigObject.dataSource = scope.datasource; + dataStringStore.dataSource = scope.datasource; + setChartData(); + if (chartConfigObject.dataFormat === 'json') { + setChartData(); + } else { + if (chartConfigObject.dataFormat === 'xml') { + chart.setXMLData(newData); + } else if (chartConfigObject.dataFormat === 'jsonurl') { + chart.setJSONUrl(newData); + } else if (chartConfigObject.dataFormat === 'xmlurl') { + chart.setXMLUrl(newData); + } + } + } + }, + true + ); + } + } else { + if (attrs.datasource) { + chartConfigObject.dataSource = + chartConfigObject.dataFormat === 'json' + ? JSON.parse(attrs.datasource) + : attrs.datasource; + dataStringStore.dataSource = attrs.datasource; + } } for (observableAttr in observeConf.DCObserver) { diff --git a/dist/angular-fusioncharts.min.js b/dist/angular-fusioncharts.min.js index ece3036..cec1ae9 100644 --- a/dist/angular-fusioncharts.min.js +++ b/dist/angular-fusioncharts.min.js @@ -1,3 +1,3 @@ -/*! angularjs-fusioncharts - v4.0.3*/ +/*! angularjs-fusioncharts - v5.0.0*/ -!function(){var a,b,c=angular.module("ng-fusioncharts",[]),d={width:"@",height:"@",data:"@",dataset:"@",categories:"@",chart:"@",linkeddata:"@",trendlines:"@",vtrendlines:"@",annotations:"@",colorrange:"@",lineset:"@",axis:"@",connectors:"@",pointers:"@",value:"@",processes:"@",tasks:"@",rows:"@",columns:"@",map:"@",markers:"@",initialized:"&",datasourceDt:"=datasourceDt"},e=["beforelinkeditemopen","linkeditemopened","beforelinkeditemclose","linkeditemclosed","printreadystatechange","dataloadrequestcompleted","dataloaderror","dataloadcancelled","dataloadrequestcancelled","dataupdated","dataupdatecancelled","dataloadrequested","beforedataupdate","realtimeupdatecomplete","chartcleared","slicingend","slicingstart","entityrollout","entityrollover","entityclick","connectorrollover","connectorrollout","connectorclick","markerrollover","markerrollout","markerclick","pagenavigated","rotationend","rotationstart","centerlabelrollover","centerlabelrollout","centerlabelclick","centerlabelchanged","chartclick","chartmousemove","chartrollover","chartrollout","backgroundloaded","backgroundloaderror","legenditemclicked","legenditemrollover","legenditemrollout","logorollover","logorollout","logoclick","logoloaded","logoloaderror","beforeexport","exported","exportcancelled","beforeprint","printcomplete","printcancelled","datalabelclick","datalabelrollover","datalabelrollout","scrollstart","scrollend","onscroll","zoomreset","zoomedout","zoomedin","zoomed","zoommodechanged","pinned","datarestored","beforedatasubmit","datasubmiterror","datasubmitted","datasubmitcancelled","chartupdated","nodeadded","nodeupdated","nodedeleted","connectoradded","connectorupdated","connectordeleted","labeladded","labeldeleted","selectionremoved","selectionstart","selectionend","labelclick","labelrollover","labelrollout","labeldragstart","labeldragend","dataplotdragstart","dataplotdragend","processclick","processrollover","processrollout","categoryclick","categoryrollover","categoryrollout","milestoneclick","milestonerollover","milestonerollout","charttypechanged","overlaybuttonclick","loaded","rendered","drawcomplete","rendercomplete","datainvalid","dataxmlinvalid","dataloaded","nodatatodisplay","legendpointerdragstart","legendpointerdragstop","legendrangeupdated","alertcomplete","realtimeupdateerror","dataplotrollover","dataplotrollout","dataplotclick","linkclicked","beforerender","rendercancelled","beforeresize","resized","resizecancelled","beforedispose","disposed","disposecancelled","linkedchartinvoked","beforedrilldown","drilldown","beforedrillup","drillup","drilldowncancelled","drillupcancelled"],f=e.length;for(a=0;a
+
Date: Tue, 8 Jan 2019 16:30:54 +0530 Subject: [PATCH 2/2] Core fix/datasource bidirectional binding (#68) * Modified data binding method for datasource * Added check for different dataformats * Minor fix * Changed Data string source * Minor fix --- dist/angular-fusioncharts.js | 9 ++++++--- dist/angular-fusioncharts.min.js | 2 +- src/angular-fusioncharts.js | 9 ++++++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/dist/angular-fusioncharts.js b/dist/angular-fusioncharts.js index e17169f..399b90e 100644 --- a/dist/angular-fusioncharts.js +++ b/dist/angular-fusioncharts.js @@ -200,8 +200,10 @@ scope: scope, link: function(scope, element, attrs) { function updateData(key, data) { - scope.datasourceDt.key = data; - chart.setJSONData(scope.datasourceDt); + if (key) { + scope.datasourceDt.key = data; + chart.setJSONData(scope.datasourceDt); + } } function createWatchersForAttrs(datasource) { @@ -689,6 +691,7 @@ } } } + for (i = 0; i < attribs.length; i++) { attr = attribs[i]; if (attr.match(/^on/i)) { @@ -719,7 +722,7 @@ if (scope.datasource) { attrs.datasource = scope.datasource; chartConfigObject.dataSource = scope.datasource; - dataStringStore.dataSource = attrs.datasource; + dataStringStore.dataSource = scope.datasource; scope.$watch( 'datasource', diff --git a/dist/angular-fusioncharts.min.js b/dist/angular-fusioncharts.min.js index cec1ae9..9cba1f7 100644 --- a/dist/angular-fusioncharts.min.js +++ b/dist/angular-fusioncharts.min.js @@ -1,3 +1,3 @@ /*! angularjs-fusioncharts - v5.0.0*/ -!function(){var a,b,c=angular.module("ng-fusioncharts",[]),d={width:"@",height:"@",data:"@",dataset:"@",categories:"@",chart:"@",linkeddata:"@",trendlines:"@",vtrendlines:"@",annotations:"@",colorrange:"@",lineset:"@",axis:"@",connectors:"@",pointers:"@",value:"@",processes:"@",tasks:"@",rows:"@",columns:"@",map:"@",markers:"@",initialized:"&",datasourceDt:"=datasourceDt",datasource:"=datasource"},e=["beforelinkeditemopen","linkeditemopened","beforelinkeditemclose","linkeditemclosed","printreadystatechange","dataloadrequestcompleted","dataloaderror","dataloadcancelled","dataloadrequestcancelled","dataupdated","dataupdatecancelled","dataloadrequested","beforedataupdate","realtimeupdatecomplete","chartcleared","slicingend","slicingstart","entityrollout","entityrollover","entityclick","connectorrollover","connectorrollout","connectorclick","markerrollover","markerrollout","markerclick","pagenavigated","rotationend","rotationstart","centerlabelrollover","centerlabelrollout","centerlabelclick","centerlabelchanged","chartclick","chartmousemove","chartrollover","chartrollout","backgroundloaded","backgroundloaderror","legenditemclicked","legenditemrollover","legenditemrollout","logorollover","logorollout","logoclick","logoloaded","logoloaderror","beforeexport","exported","exportcancelled","beforeprint","printcomplete","printcancelled","datalabelclick","datalabelrollover","datalabelrollout","scrollstart","scrollend","onscroll","zoomreset","zoomedout","zoomedin","zoomed","zoommodechanged","pinned","datarestored","beforedatasubmit","datasubmiterror","datasubmitted","datasubmitcancelled","chartupdated","nodeadded","nodeupdated","nodedeleted","connectoradded","connectorupdated","connectordeleted","labeladded","labeldeleted","selectionremoved","selectionstart","selectionend","labelclick","labelrollover","labelrollout","labeldragstart","labeldragend","dataplotdragstart","dataplotdragend","processclick","processrollover","processrollout","categoryclick","categoryrollover","categoryrollout","milestoneclick","milestonerollover","milestonerollout","charttypechanged","overlaybuttonclick","loaded","rendered","drawcomplete","rendercomplete","datainvalid","dataxmlinvalid","dataloaded","nodatatodisplay","legendpointerdragstart","legendpointerdragstop","legendrangeupdated","alertcomplete","realtimeupdateerror","dataplotrollover","dataplotrollout","dataplotclick","linkclicked","beforerender","rendercancelled","beforeresize","resized","resizecancelled","beforedispose","disposed","disposecancelled","linkedchartinvoked","beforedrilldown","drilldown","beforedrillup","drillup","drilldowncancelled","drillupcancelled"],f=e.length;for(a=0;a