Skip to content

Commit be3b17b

Browse files
committed
feat: fix moving selection
1 parent 700103c commit be3b17b

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

src/app/data.rs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,18 +128,27 @@ impl Data {
128128
DataIter::new(self)
129129
}
130130

131+
pub fn len(&self) -> usize {
132+
if let Some(filtered) = self.filtered_rows.as_ref() {
133+
filtered.len()
134+
} else {
135+
self.rows.len()
136+
}
137+
}
138+
131139
pub fn selected_row_data_as_slice(
132140
&mut self,
133141
common_fields: &BTreeSet<String>,
134142
) -> Option<&[(String, String)]> {
135143
let selected_row_index = self.selected_row?;
144+
// TODO 1: Fix here to use appropriate list
136145
Some(self.rows[selected_row_index].as_slice(common_fields))
137146
}
138147

139148
pub fn move_selected_to_next(&mut self) {
140-
// TODO 1: Fix index values used
149+
let n = self.len();
141150
if let Some(selected) = self.selected_row.as_mut() {
142-
if *selected < self.rows.len() - 1 {
151+
if *selected < n - 1 {
143152
*selected += 1;
144153
} else {
145154
// Do nothing already on last row
@@ -162,16 +171,17 @@ impl Data {
162171
}
163172

164173
pub fn move_selected_to_first(&mut self) {
165-
if !self.rows.is_empty() {
174+
if self.len() > 0 {
166175
self.selected_row = Some(0)
167176
} else {
168177
// No rows to select
169178
}
170179
}
171180

172181
pub fn move_selected_to_last(&mut self) {
173-
if !self.rows.is_empty() {
174-
self.selected_row = Some(self.rows.len() - 1);
182+
let n = self.len();
183+
if n > 0 {
184+
self.selected_row = Some(n - 1);
175185
} else {
176186
// No rows to select
177187
}
@@ -188,7 +198,7 @@ impl Data {
188198

189199
pub fn apply_filter(&mut self, common_fields: &BTreeSet<String>) {
190200
if let Some(filter) = self.filter.as_ref() {
191-
self.selected_row = None;
201+
self.selected_row = None; // TODO 3: Update selected if still included in displayed rows
192202
self.filtered_rows = Some(
193203
self.rows
194204
.iter_mut()

0 commit comments

Comments
 (0)