@@ -31,7 +31,7 @@ export function useFileManager(entity, apiEndpoint, uploadRoute, isCourseDocumen
31
31
const itemToDelete = ref ( null ) ;
32
32
const item = ref ( { } ) ;
33
33
const submitted = ref ( false ) ;
34
- const filters = ref ( { shared : 0 , loadNode : 1 } ) ;
34
+ const filters = ref ( { shared : 0 , loadNode : 1 , itemsPerPage : 10 , page : 1 , sortBy : '' , sortDesc : false } ) ;
35
35
const viewMode = ref ( 'thumbnails' ) ;
36
36
const contextMenuVisible = ref ( false ) ;
37
37
const contextMenuPosition = ref ( { x : 0 , y : 0 } ) ;
@@ -48,7 +48,12 @@ export function useFileManager(entity, apiEndpoint, uploadRoute, isCourseDocumen
48
48
} ;
49
49
50
50
const onUpdateOptions = async ( ) => {
51
- let flattenedFilters = flattenFilters ( {
51
+
52
+ if ( ! filters . value ) {
53
+ filters . value = { shared : 0 , loadNode : 1 } ;
54
+ }
55
+
56
+ const flattenedFilters = flattenFilters ( {
52
57
...filters . value ,
53
58
cid : route . query . cid || '' ,
54
59
sid : route . query . sid || '' ,
@@ -58,16 +63,15 @@ export function useFileManager(entity, apiEndpoint, uploadRoute, isCourseDocumen
58
63
59
64
const params = {
60
65
...flattenedFilters ,
61
- page : 1 ,
62
- itemsPerPage : 10 ,
63
- sortBy : '' ,
64
- sortDesc : false ,
66
+ page : filters . value . page || 1 ,
67
+ itemsPerPage : filters . value . itemsPerPage || 10 ,
68
+ [ `order[${ filters . value . sortBy } ]` ] : filters . value . sortDesc ? 'desc' : 'asc' ,
65
69
} ;
66
70
67
71
isLoading . value = true ;
68
72
69
73
try {
70
- const response = await fetch ( `${ apiEndpoint } ?page= ${ params . page } &rows= ${ params . itemsPerPage } &sortBy= ${ params . sortBy } &sortDesc= ${ params . sortDesc } &shared= ${ params . shared } &loadNode= ${ params . loadNode } &resourceNode.parent= ${ params [ 'resourceNode.parent' ] } &cid= ${ params . cid } &sid= ${ params . sid } &gid= ${ params . gid } &type= ${ params . type } ` , {
74
+ const response = await fetch ( `${ apiEndpoint } ?${ new URLSearchParams ( params ) . toString ( ) } ` , {
71
75
method : 'GET' ,
72
76
headers : {
73
77
'Content-Type' : 'application/json'
@@ -260,15 +264,15 @@ export function useFileManager(entity, apiEndpoint, uploadRoute, isCourseDocumen
260
264
} ;
261
265
262
266
const onFilesPage = ( event ) => {
263
- filters . value . itemsPerPage = event . rows ;
267
+ filters . value . itemsPerPage = event . rows || 10 ;
264
268
filters . value . page = event . page + 1 ;
265
269
filters . value . sortBy = event . sortField ;
266
270
filters . value . sortDesc = event . sortOrder === - 1 ;
267
271
onUpdateOptions ( ) ;
268
272
} ;
269
273
270
274
const sortingFilesChanged = ( event ) => {
271
- filters . value . sortBy = event . sortField ;
275
+ filters . value . sortBy = event . sortField || '' ;
272
276
filters . value . sortDesc = event . sortOrder === - 1 ;
273
277
onUpdateOptions ( ) ;
274
278
} ;
@@ -337,6 +341,24 @@ export function useFileManager(entity, apiEndpoint, uploadRoute, isCourseDocumen
337
341
dialog . value = true ;
338
342
} ;
339
343
344
+ const totalPages = computed ( ( ) => {
345
+ return Math . ceil ( totalFiles . value / filters . value . itemsPerPage ) ;
346
+ } ) ;
347
+
348
+ const nextPage = ( ) => {
349
+ if ( filters . value . page < totalPages . value ) {
350
+ filters . value . page ++ ;
351
+ onUpdateOptions ( ) ;
352
+ }
353
+ } ;
354
+
355
+ const previousPage = ( ) => {
356
+ if ( filters . value . page > 1 ) {
357
+ filters . value . page -- ;
358
+ onUpdateOptions ( ) ;
359
+ }
360
+ } ;
361
+
340
362
return {
341
363
files,
342
364
totalFiles,
@@ -383,6 +405,9 @@ export function useFileManager(entity, apiEndpoint, uploadRoute, isCourseDocumen
383
405
isAuthenticated,
384
406
selectFile,
385
407
showHandler,
386
- editHandler
408
+ editHandler,
409
+ nextPage,
410
+ previousPage,
411
+ totalPages
387
412
} ;
388
413
}
0 commit comments