1111 :galleryConfig =" props.galleryConfig"
1212 :selectedPhotos =" props.selectedPhotos"
1313 :iter =" 0"
14- :idx =" 0"
14+ :group- idx =" 0"
1515 @clicked =" propagateClicked"
1616 @selected =" propagateSelected"
1717 @contexted =" propagateMenuOpen"
3333 :galleryConfig =" props.galleryConfig"
3434 :selectedPhotos =" props.selectedPhotos"
3535 :iter =" slotProps.item.iter"
36- :idx =" slotProps.index"
36+ :group- idx =" slotProps.index"
3737 :isTimeline =" isTimeline"
3838 @contexted =" propagateMenuOpen"
3939 @selected =" propagateSelected"
5757 :galleryConfig =" props.galleryConfig"
5858 :selectedPhotos =" props.selectedPhotos"
5959 :iter =" photoTimeline.iter"
60- :idx =" idx"
60+ :group- idx =" idx"
6161 :isTimeline =" isTimeline"
6262 @contexted =" propagateMenuOpen"
6363 @selected =" propagateSelected"
@@ -79,9 +79,11 @@ import Timeline from "primevue/timeline";
7979import PhotoThumbPanelList from " ./PhotoThumbPanelList.vue" ;
8080import PhotoThumbPanelControl from " ./PhotoThumbPanelControl.vue" ;
8181import { isTouchDevice } from " @/utils/keybindings-utils" ;
82+ import { onMounted } from " vue" ;
83+ import { watch } from " vue" ;
8284
8385const lycheeStore = useLycheeStateStore ();
84- const { is_timeline_left_border_visible } = storeToRefs (lycheeStore );
86+ const { is_timeline_left_border_visible, is_debug_enabled } = storeToRefs (lycheeStore );
8587
8688const props = defineProps <{
8789 header: string ;
@@ -122,15 +124,39 @@ const propagateMenuOpen = (idx: number, e: MouseEvent) => {
122124 emits (" contexted" , idx , e );
123125};
124126
125- const { spliter } = useSplitter ();
127+ const { spliter, verifyOrder } = useSplitter ();
126128
127129const photosTimeLine = computed <SplitData <App .Http .Resources .Models .PhotoResource >[]>(() =>
128- spliter (
129- props .photos as App .Http .Resources .Models .PhotoResource [],
130- (p : App .Http .Resources .Models .PhotoResource ) => p .timeline ?.time_date ?? " " ,
131- (p : App .Http .Resources .Models .PhotoResource ) => p .timeline ?.format ?? " Others" ,
132- ),
130+ split (props .photos as App .Http .Resources .Models .PhotoResource []),
133131);
134132
135133const isTimeline = computed (() => props .isTimeline && photosTimeLine .value .length > 1 );
134+
135+ function split(albums : App .Http .Resources .Models .PhotoResource []) {
136+ return spliter (
137+ albums ,
138+ (a : App .Http .Resources .Models .PhotoResource ) => a .timeline ?.time_date ?? " " ,
139+ (a : App .Http .Resources .Models .PhotoResource ) => a .timeline ?.format ?? " Others" ,
140+ );
141+ }
142+
143+ onMounted (() => {
144+ validate (props .photos as App .Http .Resources .Models .PhotoResource []);
145+ });
146+
147+ function validate(albums : App .Http .Resources .Models .PhotoResource []) {
148+ if (props .isTimeline ) {
149+ const splitted = split (albums );
150+ verifyOrder (is_debug_enabled .value , albums , splitted );
151+ }
152+ }
153+
154+ watch (
155+ () => props .album ?.id ,
156+ () => {
157+ if (props .isTimeline ) {
158+ validate (props .photos as App .Http .Resources .Models .PhotoResource []);
159+ }
160+ },
161+ );
136162 </script >
0 commit comments