Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(422)

Side by Side Diff: charted/lib/charts/src/chart_state_impl.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 //
2 // Copyright 2014 Google Inc. All rights reserved.
3 //
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file or at
6 // https://developers.google.com/open-source/licenses/bsd
7 //
8
9 part of charted.charts;
10
11 ///
12 /// Model that maintains state of each visualization item. Each entry in the
13 /// legend is considered one visualization item.
14 /// - In [CartesianArea] it is always a column.
15 /// - In [LayoutArea] renders choose either columns or rows.
16 ///
17 class DefaultChartStateImpl extends ChangeNotifier implements ChartState {
18 final bool isMultiSelect;
19 final bool isMultiHighlight;
20 final bool isSelectOrHighlight;
21 final bool supportColumnSelection;
22 final bool supportColumnPreview;
23 final bool supportValueHighlight;
24 final bool supportValueHover;
25
26 LinkedHashSet<int> hidden = new LinkedHashSet<int>();
27
28 LinkedHashSet<int> selection = new LinkedHashSet<int>();
29 LinkedHashSet<Pair<int,int>> highlights = new LinkedHashSet<Pair<int,int>>();
30
31 Pair<int,int> _hovered;
32 int _preview;
33
34 DefaultChartStateImpl({
35 this.supportColumnSelection: true,
36 this.supportColumnPreview: true,
37 this.supportValueHighlight: true,
38 this.supportValueHover: true,
39 this.isMultiSelect: false,
40 this.isMultiHighlight: false,
41 this.isSelectOrHighlight: true});
42
43 set hovered(Pair<int,int> value) {
44 if (!this.supportValueHover) return null;
45 if (value != _hovered) {
46 _hovered = value;
47 notifyChange(new ChartHoverChangeRecord(_hovered));
48 }
49 return value;
50 }
51 Pair<int,int> get hovered => _hovered;
52
53 set preview(int value) {
54 if (!this.supportColumnPreview) return null;
55 if (value != _preview) {
56 _preview = value;
57 notifyChange(new ChartPreviewChangeRecord(_preview));
58 }
59 return value;
60 }
61 int get preview => _preview;
62
63 bool unhide(int id) {
64 if (hidden.contains(id)) {
65 hidden.remove(id);
66 notifyChange(new ChartVisibilityChangeRecord(unhide:id));
67 }
68 return true;
69 }
70
71 bool hide(int id) {
72 if (!hidden.contains(id)) {
73 hidden.add(id);
74 notifyChange(new ChartVisibilityChangeRecord(hide:id));
75 }
76 return false;
77 }
78
79 bool isVisible(int id) => !hidden.contains(id);
80
81 bool select(int id) {
82 if (!this.supportColumnSelection) return false;
83 if (!selection.contains(id)) {
84 if (!isMultiSelect) {
85 selection.clear();
86 }
87 if (isSelectOrHighlight) {
88 highlights.clear();
89 }
90 selection.add(id);
91 notifyChange(new ChartSelectionChangeRecord(add:id));
92 }
93 return true;
94 }
95
96 bool unselect(int id) {
97 if (selection.contains(id)) {
98 selection.remove(id);
99 notifyChange(new ChartSelectionChangeRecord(remove:id));
100 }
101 return false;
102 }
103
104 bool isSelected(int id) => selection.contains(id);
105
106 bool highlight(int column, int row) {
107 if (!this.supportValueHighlight) return false;
108 if (!isHighlighted(column, row)) {
109 if (!isMultiHighlight) {
110 highlights.clear();
111 }
112 if (isSelectOrHighlight) {
113 selection.clear();
114 }
115 var item = new Pair(column, row);
116 highlights.add(item);
117 notifyChange(new ChartHighlightChangeRecord(add: item));
118 }
119 return true;
120 }
121
122 bool unhighlight(int column, int row) {
123 if (isHighlighted(column, row)) {
124 var item = new Pair(column, row);
125 highlights.remove(item);
126 notifyChange(new ChartHighlightChangeRecord(remove: item));
127 }
128 return false;
129 }
130
131 bool isHighlighted(int column, int row) =>
132 highlights.any((x) => x.first == column && x.last == row);
133 }
OLDNEW
« no previous file with comments | « charted/lib/charts/src/chart_series_impl.dart ('k') | charted/lib/charts/src/layout_area_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698