| OLD | NEW |
| 1 // | 1 // |
| 2 // Copyright 2014 Google Inc. All rights reserved. | 2 // Copyright 2014 Google Inc. All rights reserved. |
| 3 // | 3 // |
| 4 // Use of this source code is governed by a BSD-style | 4 // Use of this source code is governed by a BSD-style |
| 5 // license that can be found in the LICENSE file or at | 5 // license that can be found in the LICENSE file or at |
| 6 // https://developers.google.com/open-source/licenses/bsd | 6 // https://developers.google.com/open-source/licenses/bsd |
| 7 // | 7 // |
| 8 | 8 |
| 9 part of charted.charts; | 9 part of charted.charts; |
| 10 | 10 |
| 11 class DefaultChartConfigImpl extends ChangeNotifier implements ChartConfig { | 11 class DefaultChartConfigImpl extends ChangeNotifier implements ChartConfig { |
| 12 final Map<String,ChartAxisConfig> _measureAxisRegistry = {}; | 12 final Map<String, ChartAxisConfig> _measureAxisRegistry = {}; |
| 13 final Map<int,ChartAxisConfig> _dimensionAxisRegistry = {}; | 13 final Map<int, ChartAxisConfig> _dimensionAxisRegistry = {}; |
| 14 final SubscriptionsDisposer _disposer = new SubscriptionsDisposer(); | 14 final SubscriptionsDisposer _disposer = new SubscriptionsDisposer(); |
| 15 | 15 |
| 16 bool _isRTL = false; | 16 bool _isRTL = false; |
| 17 Iterable<ChartSeries> _series; | 17 Iterable<ChartSeries> _series; |
| 18 Iterable<int> _dimensions; | 18 Iterable<int> _dimensions; |
| 19 StreamSubscription _dimensionsSubscription; | 19 StreamSubscription _dimensionsSubscription; |
| 20 | 20 |
| 21 @override | 21 @override |
| 22 Rect minimumSize = const Rect.size(400, 300); | 22 Rect minimumSize = const Rect.size(400, 300); |
| 23 | 23 |
| 24 @override | 24 @override |
| 25 bool isLeftAxisPrimary = false; | 25 bool isLeftAxisPrimary = false; |
| 26 | 26 |
| 27 @override | 27 @override |
| 28 bool autoResizeAxis = true; | 28 bool autoResizeAxis = true; |
| 29 | 29 |
| 30 @override | 30 @override |
| 31 ChartLegend legend; | 31 ChartLegend legend; |
| 32 | 32 |
| 33 @override | 33 @override |
| 34 Iterable<String> displayedMeasureAxes; | 34 Iterable<String> displayedMeasureAxes; |
| 35 | 35 |
| 36 @override | 36 @override |
| 37 bool renderDimensionAxes = true; | 37 bool renderDimensionAxes = true; |
| 38 | 38 |
| 39 @override | 39 @override |
| 40 bool switchAxesForRTL = true; | 40 bool switchAxesForRTL = true; |
| 41 | 41 |
| 42 DefaultChartConfigImpl(Iterable<ChartSeries> series, Iterable<int> dimensions)
{ | 42 DefaultChartConfigImpl( |
| 43 Iterable<ChartSeries> series, Iterable<int> dimensions) { |
| 43 this.series = series; | 44 this.series = series; |
| 44 this.dimensions = dimensions; | 45 this.dimensions = dimensions; |
| 45 } | 46 } |
| 46 | 47 |
| 47 @override | 48 @override |
| 48 set series(Iterable<ChartSeries> values) { | 49 set series(Iterable<ChartSeries> values) { |
| 49 assert(values != null && values.isNotEmpty); | 50 assert(values != null && values.isNotEmpty); |
| 50 | 51 |
| 51 _disposer.dispose(); | 52 _disposer.dispose(); |
| 52 _series = values; | 53 _series = values; |
| 53 notifyChange(const ChartConfigChangeRecord()); | 54 notifyChange(const ChartConfigChangeRecord()); |
| 54 | 55 |
| 55 // Monitor each series for changes on them | 56 // Monitor each series for changes on them |
| 56 values.forEach((item) { | 57 values.forEach((item) { |
| 57 if (item is Observable) { | 58 if (item is Observable) { |
| 58 _disposer.add(item.changes.listen( | 59 _disposer.add( |
| 59 (_) => notifyChange(const ChartConfigChangeRecord())), item); | 60 item.changes |
| 61 .listen((_) => notifyChange(const ChartConfigChangeRecord())), |
| 62 item); |
| 60 } | 63 } |
| 61 }); | 64 }); |
| 62 | 65 |
| 63 // Monitor series for changes. When the list changes, update | 66 // Monitor series for changes. When the list changes, update |
| 64 // subscriptions to ChartSeries changes. | 67 // subscriptions to ChartSeries changes. |
| 65 if (_series is ObservableList) { | 68 if (_series is ObservableList) { |
| 66 var observable = _series as ObservableList; | 69 var observable = _series as ObservableList; |
| 67 _disposer.add(observable.listChanges.listen((records) { | 70 _disposer.add(observable.listChanges.listen((records) { |
| 68 records.forEach((record) { | 71 records.forEach((record) { |
| 69 record.removed.forEach((value) => _disposer.unsubscribe(value)); | 72 record.removed.forEach((value) => _disposer.unsubscribe(value)); |
| 70 for (int i = 0; i < record.addedCount; i++) { | 73 for (int i = 0; i < record.addedCount; i++) { |
| 71 var added = observable[i + record.index]; | 74 var added = observable[i + record.index]; |
| 72 _disposer.add(added.changes.listen( | 75 _disposer.add(added.changes |
| 73 (_) => notifyChange(const ChartConfigChangeRecord()))); | 76 .listen((_) => notifyChange(const ChartConfigChangeRecord()))); |
| 74 } | 77 } |
| 75 }); | 78 }); |
| 76 notifyChange(const ChartConfigChangeRecord()); | 79 notifyChange(const ChartConfigChangeRecord()); |
| 77 })); | 80 })); |
| 78 } | 81 } |
| 79 } | 82 } |
| 80 | 83 |
| 81 @override | 84 @override |
| 82 Iterable<ChartSeries> get series => _series; | 85 Iterable<ChartSeries> get series => _series; |
| 83 | 86 |
| 84 @override | 87 @override |
| 85 set dimensions(Iterable<int> values) { | 88 set dimensions(Iterable<int> values) { |
| 86 _dimensions = values; | 89 _dimensions = values; |
| 87 | 90 |
| 88 if (_dimensionsSubscription != null) { | 91 if (_dimensionsSubscription != null) { |
| 89 _dimensionsSubscription.cancel(); | 92 _dimensionsSubscription.cancel(); |
| 90 _dimensionsSubscription = null; | 93 _dimensionsSubscription = null; |
| 91 } | 94 } |
| 92 | 95 |
| 93 if (values == null || values.isEmpty) return; | 96 if (values == null || values.isEmpty) return; |
| 94 | 97 |
| 95 if (_dimensions is ObservableList) { | 98 if (_dimensions is ObservableList) { |
| 96 _dimensionsSubscription = | 99 _dimensionsSubscription = (_dimensions as ObservableList) |
| 97 (_dimensions as ObservableList).listChanges.listen( | 100 .listChanges |
| 98 (_) => notifyChange(const ChartConfigChangeRecord())); | 101 .listen((_) => notifyChange(const ChartConfigChangeRecord())); |
| 99 } | 102 } |
| 100 } | 103 } |
| 101 | 104 |
| 102 @override | 105 @override |
| 103 Iterable<int> get dimensions => _dimensions; | 106 Iterable<int> get dimensions => _dimensions; |
| 104 | 107 |
| 105 @override | 108 @override |
| 106 void registerMeasureAxis(String id, ChartAxisConfig config) { | 109 void registerMeasureAxis(String id, ChartAxisConfig config) { |
| 107 assert(config != null); | 110 assert(config != null); |
| 108 _measureAxisRegistry[id] = config; | 111 _measureAxisRegistry[id] = config; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 126 set isRTL(bool value) { | 129 set isRTL(bool value) { |
| 127 if (_isRTL != value && value != null) { | 130 if (_isRTL != value && value != null) { |
| 128 _isRTL = value; | 131 _isRTL = value; |
| 129 notifyChange(const ChartConfigChangeRecord()); | 132 notifyChange(const ChartConfigChangeRecord()); |
| 130 } | 133 } |
| 131 } | 134 } |
| 132 | 135 |
| 133 @override | 136 @override |
| 134 bool get isRTL => _isRTL; | 137 bool get isRTL => _isRTL; |
| 135 } | 138 } |
| OLD | NEW |