11<template lang="pug">
2- div.fit
2+ div
33 //- .q-px-md
44 //- sesame-searchfilters(:fields="fieldsList")
5- q-scroll-area.fit.q-px-lg
6- q-timeline.q-px-lg
5+ q-timeline.q-px-lg
6+ q-infinite-scroll.q-px-lg ( @load ="load" : offset= "250" )
7+ template( #loading )
8+ .row.justify-center.q-my-md
9+ q-spinner-dots( color ="primary" size ="40px" )
10+
711 q-timeline-entry( heading ) November, 2017
812 q-timeline-entry(
9- v-for ="(job, key) in jobs.data " : key= "key"
13+ v-for ="(job, key) in jobs" : key= "key"
1014 icon ="mdi-account" color ="orange"
1115 )
12- template( #title ) Titre
13- template( #subtitle ) Titre
14- div
15- pre( v-html ="JSON.stringify(job, null, 2)" )
16+ template( #title )
17+ span( v-text ="'[' + job.jobId + ']'" )
18+ | -
19+ span( v-text ="job.params?.identity?.identity?.inetOrgPerson?.cn" )
20+ |
21+ span( v-text ="job.params?.identity?.identity?.inetOrgPerson?.givenName" )
22+ template( #subtitle )
23+ q-card.bg-transparent ( flat )
24+ q-card-actions
25+ div( v-text ="job.action" )
26+ q-space
27+ div
28+ q-icon( name ="mdi-clock" size ="20px" left )
29+ time( v-text ="$dayjs(job.metadata?.createdAt).format('DD/MM/YYYY HH:mm:ss').toString()" )
30+ q-card( flat )
31+ q-tabs(
32+ v-model ="tabs[key]"
33+ align ="justify"
34+ dense
35+ )
36+ q-tab( name ="params" ) Paramètres d'appel
37+ q-tab( name ="result" ) Résultat
38+ q-btn(
39+ v-if ="tabs[key]"
40+ @click ="delete tabs[key]"
41+ slot ="right"
42+ color ="primary"
43+ icon ="mdi-close"
44+ flat
45+ )
46+ q-tab-panels.overflow-auto ( v-model ="tabs[key]" style ="max-height: 300px" )
47+ q-tab-panel( name ="params" )
48+ pre( v-html ="JSON.stringify(job.params, null, 2)" )
49+ q-tab-panel( name ="result" )
50+ pre( v-html ="JSON.stringify(job.result, null, 2)" )
1651</template >
1752
1853<script lang="ts" setup>
@@ -30,18 +65,31 @@ div.fit
3065// }, [])
3166// })
3267
68+ const scrollTargetRef = ref (null )
69+ const tabs = ref ([])
70+
3371const $route = useRoute ();
3472
73+ const offset = ref (0 );
3574const query = computed (() => {
3675 return {
37- limit: 100 ,
76+ limit: 10 ,
77+ skip: offset .value * 10 ,
3878 ' sort[metadata.lastUpdatedAt]' : ' desc' ,
3979 ... $route .query ,
4080 };
4181});
4282
43- const { data : jobs, pending, error, refresh } = await useHttp (` /core/jobs/ ` , {
44- method: ' GET' ,
45- query ,
46- });
83+ const jobs = ref <any >([]);
84+
85+ const load = async (index , done ) => {
86+ offset .value = index ;
87+ const { data, pending, error, refresh } = await useHttp <any >(` /core/jobs/ ` , {
88+ method: ' GET' ,
89+ query ,
90+ });
91+
92+ jobs .value .push (... data .value .data );
93+ done (data .value .data .length === 0 );
94+ }
4795 </script >
0 commit comments