| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of app; | 5 part of app; |
| 6 | 6 |
| 7 typedef String ValueFormatter(dynamic value); | 7 typedef String ValueFormatter(dynamic value); |
| 8 | 8 |
| 9 class SortedTableColumn { | 9 class SortedTableColumn { |
| 10 static String toStringFormatter(dynamic v) { | 10 static String toStringFormatter(dynamic v) { |
| 11 return v != null ? v.toString() : '<null>'; | 11 return v != null ? v.toString() : '<null>'; |
| 12 } | 12 } |
| 13 |
| 13 final String label; | 14 final String label; |
| 14 final ValueFormatter formatter; | 15 final ValueFormatter formatter; |
| 15 SortedTableColumn.withFormatter(this.label, this.formatter); | 16 SortedTableColumn.withFormatter(this.label, this.formatter); |
| 16 SortedTableColumn(this.label) | 17 SortedTableColumn(this.label) : formatter = toStringFormatter; |
| 17 : formatter = toStringFormatter; | |
| 18 } | 18 } |
| 19 | 19 |
| 20 class SortedTableRow { | 20 class SortedTableRow { |
| 21 final List values; | 21 final List values; |
| 22 SortedTableRow(this.values); | 22 SortedTableRow(this.values); |
| 23 } | 23 } |
| 24 | 24 |
| 25 class SortedTable { | 25 class SortedTable { |
| 26 final List<SortedTableColumn> columns; | 26 final List<SortedTableColumn> columns; |
| 27 final List<SortedTableRow> rows = new List<SortedTableRow>(); | 27 final List<SortedTableRow> rows = new List<SortedTableRow>(); |
| 28 final List<int> sortedRows = []; | 28 final List<int> sortedRows = []; |
| 29 | 29 |
| 30 SortedTable(this.columns); | 30 SortedTable(this.columns); |
| 31 | 31 |
| 32 int _sortColumnIndex = 0; | 32 int _sortColumnIndex = 0; |
| 33 set sortColumnIndex(var index) { | 33 set sortColumnIndex(var index) { |
| 34 assert(index >= 0); | 34 assert(index >= 0); |
| 35 assert(index < columns.length); | 35 assert(index < columns.length); |
| 36 _sortColumnIndex = index; | 36 _sortColumnIndex = index; |
| 37 } | 37 } |
| 38 |
| 38 int get sortColumnIndex => _sortColumnIndex; | 39 int get sortColumnIndex => _sortColumnIndex; |
| 39 bool _sortDescending = true; | 40 bool _sortDescending = true; |
| 40 bool get sortDescending => _sortDescending; | 41 bool get sortDescending => _sortDescending; |
| 41 set sortDescending(var descending) { | 42 set sortDescending(var descending) { |
| 42 _sortDescending = descending; | 43 _sortDescending = descending; |
| 43 } | 44 } |
| 44 | 45 |
| 45 | |
| 46 dynamic getSortKeyFor(int row, int col) { | 46 dynamic getSortKeyFor(int row, int col) { |
| 47 return rows[row].values[col]; | 47 return rows[row].values[col]; |
| 48 } | 48 } |
| 49 | 49 |
| 50 int _sortFuncDescending(int i, int j) { | 50 int _sortFuncDescending(int i, int j) { |
| 51 var a = getSortKeyFor(i, _sortColumnIndex); | 51 var a = getSortKeyFor(i, _sortColumnIndex); |
| 52 var b = getSortKeyFor(j, _sortColumnIndex); | 52 var b = getSortKeyFor(j, _sortColumnIndex); |
| 53 return b.compareTo(a); | 53 return b.compareTo(a); |
| 54 } | 54 } |
| 55 | 55 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 if (column != _sortColumnIndex) { | 95 if (column != _sortColumnIndex) { |
| 96 return columns[column].label + '\u2003'; | 96 return columns[column].label + '\u2003'; |
| 97 } | 97 } |
| 98 return columns[column].label + (_sortDescending ? arrowUp : arrowDown); | 98 return columns[column].label + (_sortDescending ? arrowUp : arrowDown); |
| 99 } | 99 } |
| 100 | 100 |
| 101 dynamic getValue(int row, int column) { | 101 dynamic getValue(int row, int column) { |
| 102 return rows[row].values[column]; | 102 return rows[row].values[column]; |
| 103 } | 103 } |
| 104 } | 104 } |
| OLD | NEW |