bug: fixed service_item_id changes

Recorded a dest_count of the destination_index slides in order to
appropriately change the right service_item_id's.
This commit is contained in:
Chris Cochrun 2023-04-15 06:43:30 -05:00
parent e11e454062
commit 343e1ed0bc

View file

@ -567,6 +567,7 @@ mod slide_model {
let mut first_slide = 0; let mut first_slide = 0;
let mut dest_slide = 0; let mut dest_slide = 0;
let mut count = 0; let mut count = 0;
let mut dest_count = 0;
for (i, slide) in slides_iter.clone().enumerate() { for (i, slide) in slides_iter.clone().enumerate() {
if slide.service_item_id == source_index { if slide.service_item_id == source_index {
@ -583,7 +584,11 @@ mod slide_model {
// dest_slide = i as i32 - count // dest_slide = i as i32 - count
// } else { // } else {
dest_slide = i as i32; dest_slide = i as i32;
println!("RUST_dest_slide: {:?}", dest_slide); dest_count = slide.slide_count;
println!(
"RUST_dest_slide: {:?} with {:?} slides",
dest_slide, dest_count
);
// } // }
break; break;
} }
@ -617,6 +622,22 @@ mod slide_model {
.move_items(first_slide as usize, dest_slide as usize, count as usize); .move_items(first_slide as usize, dest_slide as usize, count as usize);
if count > 1 { if count > 1 {
if move_down {
for (i, slide) in slides_iter
.clone()
.enumerate()
.filter(|x| x.0 >= (first_slide + dest_count) as usize)
.filter(|x| x.0 < (first_slide + dest_count + count) as usize)
{
if let Some(slide) = self.as_mut().slides_mut().get_mut(i) {
println!(
"rust: these ones right here officer. from {:?} to {:?}",
slide.service_item_id, destination_index
);
slide.service_item_id = destination_index;
}
}
} else {
for (i, slide) in slides_iter for (i, slide) in slides_iter
.clone() .clone()
.enumerate() .enumerate()
@ -631,6 +652,7 @@ mod slide_model {
slide.service_item_id = destination_index; slide.service_item_id = destination_index;
} }
} }
}
} else { } else {
if let Some(slide) = self.as_mut().slides_mut().get_mut(dest_slide as usize) { if let Some(slide) = self.as_mut().slides_mut().get_mut(dest_slide as usize) {
println!( println!(
@ -644,7 +666,7 @@ mod slide_model {
if move_down { if move_down {
for (i, slide) in slides_iter for (i, slide) in slides_iter
.enumerate() .enumerate()
.filter(|x| x.0 <= (dest_slide as usize - count as usize)) .filter(|x| x.0 < (first_slide + dest_count) as usize)
.filter(|x| x.1.service_item_id <= destination_index) .filter(|x| x.1.service_item_id <= destination_index)
.filter(|x| x.1.service_item_id >= source_index) .filter(|x| x.1.service_item_id >= source_index)
{ {