| Index: charted/lib/charts/src/chart_data_impl.dart
|
| diff --git a/charted/lib/charts/src/chart_data_impl.dart b/charted/lib/charts/src/chart_data_impl.dart
|
| deleted file mode 100644
|
| index 9a62f1d4076175e539bac6bf59e0e795b12bb757..0000000000000000000000000000000000000000
|
| --- a/charted/lib/charts/src/chart_data_impl.dart
|
| +++ /dev/null
|
| @@ -1,136 +0,0 @@
|
| -//
|
| -// Copyright 2014 Google Inc. All rights reserved.
|
| -//
|
| -// Use of this source code is governed by a BSD-style
|
| -// license that can be found in the LICENSE file or at
|
| -// https://developers.google.com/open-source/licenses/bsd
|
| -//
|
| -
|
| -part of charted.charts;
|
| -
|
| -class DefaultChartDataImpl extends ChangeNotifier implements ChartData {
|
| - Iterable<ChartColumnSpec> _columns;
|
| - Iterable<Iterable> _rows;
|
| -
|
| - bool _hasObservableRows = false;
|
| - SubscriptionsDisposer _disposer = new SubscriptionsDisposer();
|
| -
|
| - DefaultChartDataImpl(Iterable<ChartColumnSpec> columns, Iterable<Iterable> rows) {
|
| - this.columns = columns;
|
| - this.rows = rows;
|
| - }
|
| -
|
| - set columns(Iterable<ChartColumnSpec> value) {
|
| - assert(value != null);
|
| -
|
| - // Create a copy of columns. We do not currently support
|
| - // changes to the list of columns. Any changes to the spec
|
| - // will be applied at the next ChartBase.draw();
|
| - this._columns = new List<ChartColumnSpec>.from(value);
|
| - }
|
| -
|
| - Iterable<ChartColumnSpec> get columns => _columns;
|
| -
|
| - set rows(Iterable<Iterable> value) {
|
| - assert(value != null);
|
| -
|
| - _rows = value;
|
| - if (_rows is ObservableList) {
|
| - _disposer.add(
|
| - (_rows as ObservableList).listChanges.listen(rowsChanged));
|
| - }
|
| -
|
| - if (_rows.every((row) => row is ObservableList)) {
|
| - _hasObservableRows = true;
|
| - for (int i = 0; i < _rows.length; i++) {
|
| - var row = _rows.elementAt(i);
|
| - _disposer.add(row.listChanges.listen((changes)
|
| - => _valuesChanged(i, changes)), row);
|
| - };
|
| - } else if (_rows is Observable) {
|
| - logger.info('List of rows is Observable, but not rows themselves!');
|
| - }
|
| - }
|
| -
|
| - Iterable<Iterable> get rows => _rows;
|
| -
|
| - rowsChanged(List<ListChangeRecord> changes) {
|
| - if (_rows is! ObservableList) return;
|
| - notifyChange(new ChartRowChangeRecord(changes));
|
| -
|
| - if (!_hasObservableRows) return;
|
| - changes.forEach((ListChangeRecord change) {
|
| - change.removed.forEach((item) => _disposer.unsubscribe(item));
|
| -
|
| - for(int i = 0; i < change.addedCount; i++) {
|
| - var index = change.index + i,
|
| - row = _rows.elementAt(index);
|
| -
|
| - if (row is! ObservableList) {
|
| - logger.severe('A non-observable row was added! '
|
| - 'Changes on this row will not be monitored');
|
| - } else {
|
| - _disposer.add(row.listChanges.listen((changes)
|
| - => _valuesChanged(index, changes)), row);
|
| - }
|
| - }
|
| - });
|
| - }
|
| -
|
| - _valuesChanged(int index, List<ListChangeRecord> changes) {
|
| - if (!_hasObservableRows) return;
|
| - notifyChange(new ChartValueChangeRecord(index, changes));
|
| - }
|
| -
|
| - @override
|
| - String toString() {
|
| - var cellDataLength = new List.filled(rows.elementAt(0).length, 0);
|
| - for (var i = 0; i < columns.length; i++) {
|
| - if (cellDataLength[i] < columns.elementAt(i).label.toString().length) {
|
| - cellDataLength[i] = columns.elementAt(i).label.toString().length;
|
| - }
|
| - }
|
| - for (var row in rows) {
|
| - for (var i = 0; i < row.length; i++) {
|
| - if (cellDataLength[i] < row.elementAt(i).toString().length) {
|
| - cellDataLength[i] = row.elementAt(i).toString().length;
|
| - }
|
| - }
|
| - }
|
| -
|
| - var totalLength = 1; // 1 for the leading '|'.
|
| - for (var length in cellDataLength) {
|
| - // 3 for the leading and trailing ' ' padding and trailing '|'.
|
| - totalLength += length + 3;
|
| - }
|
| -
|
| - // Second pass for building the string buffer and pad each cell with space
|
| - // according to the difference between cell string length and max length.
|
| - var strBuffer = new StringBuffer();
|
| - strBuffer.write('-' * totalLength + '\n');
|
| - strBuffer.write('|');
|
| -
|
| - // Process columns.
|
| - for (var i = 0; i < columns.length; i++) {
|
| - var label = columns.elementAt(i).label;
|
| - var lengthDiff = cellDataLength[i] - label.length;
|
| - strBuffer.write(' ' * lengthDiff + ' ${label} |');
|
| - }
|
| - strBuffer.write('\n' + '-' * totalLength + '\n');
|
| -
|
| - // Process rows.
|
| - for (var row in rows) {
|
| - strBuffer.write('|');
|
| - for (var i = 0; i < row.length; i++) {
|
| - var data = row.elementAt(i).toString();
|
| - var lengthDiff = cellDataLength[i] - data.length;
|
| - strBuffer.write(' ' * lengthDiff + ' ${data} |');
|
| -
|
| - if (i == row.length - 1) {
|
| - strBuffer.write('\n' + '-' * totalLength + '\n');
|
| - }
|
| - }
|
| - }
|
| - return strBuffer.toString();
|
| - }
|
| -}
|
|
|