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 |