11import {
2+ ArrayField ,
23 CallbackStateProcessor ,
34 CallbackStateProvider ,
45 CheckboxField ,
56 CrudDefinition ,
67 DateField ,
8+ KeyValueObjectField ,
79 List ,
810 NumberField ,
911 PaginatedResults ,
1012 TextField ,
1113 UrlAction ,
1214 View ,
13- type RequestParameters ,
1415 type CrudOperation ,
1516 type ListOperationOptions ,
16- KeyValueObjectField
17+ type RequestParameters ,
1718} from '@orbitale/svelte-admin' ;
1819
19- import { getOperationById , getOperations , getOperationsCount } from '$lib/db/operations' ;
20+ import { getOperationById , getOperations , getOperationsCount } from '$lib/db/operations' ;
2021import type Operation from '$lib/entities/Operation' ;
22+ import SortableField from "$lib/admin/src/SortableField" ;
23+ import type { OrderBy } from "$lib/admin/src/OrderBy" ;
2124
2225export default new CrudDefinition < Operation > ( {
2326 name : 'operations' ,
@@ -28,11 +31,11 @@ export default new CrudDefinition<Operation>({
2831 operations : [
2932 new List (
3033 [
31- new DateField ( 'operation_date' , 'Date' ) ,
34+ new DateField ( 'operation_date' , 'Date' , { sortable : true } ) ,
3235 new TextField ( 'op_type' , 'Type 1' ) ,
3336 new TextField ( 'type_display' , 'Type 2' ) ,
3437 new TextField ( 'details' , 'Details' ) ,
35- new TextField ( 'tags' , 'Tags' ) ,
38+ new ArrayField ( 'tags' , 'Tags' , new KeyValueObjectField ( '' , '' , 'name' ) ) ,
3639 new NumberField ( 'amount_display' , 'Montant' )
3740 ] ,
3841 [ new UrlAction ( 'View' , '/crud/operations/view' ) ] ,
@@ -54,7 +57,7 @@ export default new CrudDefinition<Operation>({
5457 new NumberField ( 'hash' , 'Hash' ) ,
5558 new TextField ( 'state' , 'State' ) ,
5659 new KeyValueObjectField ( 'bank_account' , 'Bank account' , 'name' ) ,
57- new TextField ( 'tags' , 'Tags' ) ,
60+ new ArrayField ( 'tags' , 'Tags' , new KeyValueObjectField ( '' , '' , 'name' ) ) ,
5861 new CheckboxField ( 'ignored_from_charts' , 'Is ignored from charts' )
5962 ] )
6063 ] ,
@@ -68,15 +71,19 @@ export default new CrudDefinition<Operation>({
6871
6972 if ( operation . name === 'list' ) {
7073 const options : ListOperationOptions = operation . options ;
71- const results = await getOperations ( Number ( requestParameters . page ) || 1 ) ;
74+ const page = Number ( requestParameters . page || 1 ) ;
75+ let sort : SortableField | null = null ;
76+ if ( requestParameters . sort ) {
77+ const firstKey = Object . keys ( requestParameters . sort ) [ 0 ] ;
78+ sort = new SortableField ( firstKey , requestParameters . sort [ firstKey ] as OrderBy , firstKey ) ;
79+ }
80+ const results = await getOperations ( page , sort ) ;
7281 const numberOfItems = await getOperationsCount ( null ) ;
73- return Promise . resolve (
74- new PaginatedResults (
75- Number ( requestParameters . page ) ,
76- numberOfItems / Number ( options . pagination ?. itemsPerPage || 10 ) ,
77- numberOfItems ,
78- results
79- )
82+ return new PaginatedResults (
83+ page ,
84+ numberOfItems / Number ( options . pagination ?. itemsPerPage || 10 ) ,
85+ numberOfItems ,
86+ results
8087 ) ;
8188 }
8289
0 commit comments