|
1 | 1 | // The MIT License (MIT)
|
2 | 2 | //
|
3 |
| -// Copyright (c) 2014 FusionCharts Technologies |
| 3 | +// Copyright (c) 2014 InfoSoft Global Pvt. Ltd. |
4 | 4 | //
|
5 | 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 | 6 | // of this software and associated documentation files (the "Software"), to deal
|
|
45 | 45 | map: '@',
|
46 | 46 | markers: '@',
|
47 | 47 | initialized: '&',
|
48 |
| - datasourceDt: '=datasourceDt', |
49 |
| - datasource: '=datasource' |
| 48 | + datasourceDt: '=datasourceDt' |
50 | 49 | },
|
51 | 50 | fcEvents = [
|
52 | 51 | 'beforelinkeditemopen',
|
|
199 | 198 | return {
|
200 | 199 | scope: scope,
|
201 | 200 | link: function(scope, element, attrs) {
|
202 |
| - function updateData(key, data) { |
203 |
| - if (key) { |
204 |
| - scope.datasourceDt.key = data; |
205 |
| - chart.setJSONData(scope.datasourceDt); |
206 |
| - } |
| 201 | + function updateData() { |
| 202 | + // no need to check for key. datasourceDt is 2 way binded. |
| 203 | + // also scope.datasourceDt.key = data; is logically wrong. |
| 204 | + chart.setJSONData(scope.datasourceDt); |
207 | 205 | }
|
208 | 206 |
|
209 | 207 | function createWatchersForAttrs(datasource) {
|
|
213 | 211 | scope.$watch(
|
214 | 212 | 'datasourceDt.' + key,
|
215 | 213 | function(newData, oldData) {
|
216 |
| - if (newData !== oldData && isDeep) updateData(key, newData); |
| 214 | + if (newData !== oldData && isDeep) updateData(); |
217 | 215 | },
|
218 | 216 | isDeep
|
219 | 217 | );
|
220 | 218 | });
|
221 | 219 | }
|
222 | 220 |
|
223 |
| - if (scope.datasourceDt) { |
224 |
| - scope.$watch( |
225 |
| - 'datasourceDt.data', |
226 |
| - function(newData, oldData) { |
227 |
| - if (newData !== oldData) updateData(newData, 'data'); |
228 |
| - }, |
229 |
| - false |
230 |
| - ); |
231 |
| - createWatchersForAttrs(scope.datasourceDt); |
232 |
| - } |
233 |
| - |
234 | 221 | var observeConf = {
|
235 | 222 | // non-data componenet observers
|
236 | 223 | NDCObserver: {
|
|
718 | 705 | }
|
719 | 706 | }
|
720 | 707 |
|
721 |
| - if (chartConfigObject.dataFormat === 'json') { |
722 |
| - if (scope.datasource) { |
723 |
| - attrs.datasource = scope.datasource; |
724 |
| - chartConfigObject.dataSource = scope.datasource; |
725 |
| - dataStringStore.dataSource = scope.datasource; |
726 |
| - |
727 |
| - scope.$watch( |
728 |
| - 'datasource', |
729 |
| - function(newData, oldData) { |
730 |
| - if (newData !== oldData) { |
731 |
| - chartConfigObject.dataSource = scope.datasource; |
732 |
| - dataStringStore.dataSource = scope.datasource; |
733 |
| - setChartData(); |
734 |
| - if (chartConfigObject.dataFormat === 'json') { |
735 |
| - setChartData(); |
736 |
| - } else { |
737 |
| - if (chartConfigObject.dataFormat === 'xml') { |
738 |
| - chart.setXMLData(newData); |
739 |
| - } else if (chartConfigObject.dataFormat === 'jsonurl') { |
740 |
| - chart.setJSONUrl(newData); |
741 |
| - } else if (chartConfigObject.dataFormat === 'xmlurl') { |
742 |
| - chart.setXMLUrl(newData); |
743 |
| - } |
744 |
| - } |
745 |
| - } |
746 |
| - }, |
747 |
| - true |
748 |
| - ); |
749 |
| - } |
750 |
| - } else { |
751 |
| - if (attrs.datasource) { |
752 |
| - chartConfigObject.dataSource = |
753 |
| - chartConfigObject.dataFormat === 'json' |
754 |
| - ? JSON.parse(attrs.datasource) |
755 |
| - : attrs.datasource; |
756 |
| - dataStringStore.dataSource = attrs.datasource; |
757 |
| - } |
| 708 | + if (attrs.datasource) { |
| 709 | + chartConfigObject.dataSource = |
| 710 | + chartConfigObject.dataFormat === 'json' |
| 711 | + ? JSON.parse(attrs.datasource) |
| 712 | + : attrs.datasource; |
| 713 | + dataStringStore.dataSource = attrs.datasource; |
758 | 714 | }
|
759 | 715 |
|
760 | 716 | for (observableAttr in observeConf.DCObserver) {
|
|
786 | 742 |
|
787 | 743 | createFCChart();
|
788 | 744 |
|
| 745 | + if (attrs.type.toLowerCase() === 'timeseries' && scope.datasourceDt) { |
| 746 | + scope.$watch( |
| 747 | + 'datasourceDt.data', |
| 748 | + function(newData, oldData) { |
| 749 | + if (newData !== oldData) updateData(); |
| 750 | + }, |
| 751 | + false |
| 752 | + ); |
| 753 | + createWatchersForAttrs(scope.datasourceDt); |
| 754 | + // set the data anyway, initially. |
| 755 | + chart.setJSONData(scope.datasourceDt); |
| 756 | + } else if (scope.datasourceDt) { |
| 757 | + attrs.datasourceDt = scope.datasourceDt; |
| 758 | + chartConfigObject.dataSource = scope.datasourceDt; |
| 759 | + dataStringStore.dataSource = scope.datasourceDt; |
| 760 | + setChartData(); |
| 761 | + scope.$watch( |
| 762 | + 'datasourceDt', |
| 763 | + function(newData, oldData) { |
| 764 | + if (newData !== oldData) { |
| 765 | + chartConfigObject.dataSource = scope.datasourceDt; |
| 766 | + dataStringStore.dataSource = scope.datasourceDt; |
| 767 | + setChartData(); |
| 768 | + if (chartConfigObject.dataFormat === 'json') { |
| 769 | + setChartData(); |
| 770 | + } else { |
| 771 | + if (chartConfigObject.dataFormat === 'xml') { |
| 772 | + chart.setXMLData(newData); |
| 773 | + } else if (chartConfigObject.dataFormat === 'jsonurl') { |
| 774 | + chart.setJSONUrl(newData); |
| 775 | + } else if (chartConfigObject.dataFormat === 'xmlurl') { |
| 776 | + chart.setXMLUrl(newData); |
| 777 | + } |
| 778 | + } |
| 779 | + } |
| 780 | + }, |
| 781 | + true |
| 782 | + ); |
| 783 | + } |
| 784 | + |
789 | 785 | scope.$on('$destroy', function() {
|
790 | 786 | // on destroy free used resources to avoid memory leaks
|
791 | 787 | if (chart && chart.dispose) {
|
|
0 commit comments