1
1
import {
2
+ ArrayField ,
2
3
CallbackStateProcessor ,
3
4
CallbackStateProvider ,
4
5
CheckboxField ,
5
6
CrudDefinition ,
6
7
DateField ,
8
+ KeyValueObjectField ,
7
9
List ,
8
10
NumberField ,
9
11
PaginatedResults ,
10
12
TextField ,
11
13
UrlAction ,
12
14
View ,
13
- type RequestParameters ,
14
15
type CrudOperation ,
15
16
type ListOperationOptions ,
16
- KeyValueObjectField
17
+ type RequestParameters ,
17
18
} from '@orbitale/svelte-admin' ;
18
19
19
- import { getOperationById , getOperations , getOperationsCount } from '$lib/db/operations' ;
20
+ import { getOperationById , getOperations , getOperationsCount } from '$lib/db/operations' ;
20
21
import type Operation from '$lib/entities/Operation' ;
22
+ import SortableField from "$lib/admin/src/SortableField" ;
23
+ import type { OrderBy } from "$lib/admin/src/OrderBy" ;
21
24
22
25
export default new CrudDefinition < Operation > ( {
23
26
name : 'operations' ,
@@ -28,11 +31,11 @@ export default new CrudDefinition<Operation>({
28
31
operations : [
29
32
new List (
30
33
[
31
- new DateField ( 'operation_date' , 'Date' ) ,
34
+ new DateField ( 'operation_date' , 'Date' , { sortable : true } ) ,
32
35
new TextField ( 'op_type' , 'Type 1' ) ,
33
36
new TextField ( 'type_display' , 'Type 2' ) ,
34
37
new TextField ( 'details' , 'Details' ) ,
35
- new TextField ( 'tags' , 'Tags' ) ,
38
+ new ArrayField ( 'tags' , 'Tags' , new KeyValueObjectField ( '' , '' , 'name' ) ) ,
36
39
new NumberField ( 'amount_display' , 'Montant' )
37
40
] ,
38
41
[ new UrlAction ( 'View' , '/crud/operations/view' ) ] ,
@@ -54,7 +57,7 @@ export default new CrudDefinition<Operation>({
54
57
new NumberField ( 'hash' , 'Hash' ) ,
55
58
new TextField ( 'state' , 'State' ) ,
56
59
new KeyValueObjectField ( 'bank_account' , 'Bank account' , 'name' ) ,
57
- new TextField ( 'tags' , 'Tags' ) ,
60
+ new ArrayField ( 'tags' , 'Tags' , new KeyValueObjectField ( '' , '' , 'name' ) ) ,
58
61
new CheckboxField ( 'ignored_from_charts' , 'Is ignored from charts' )
59
62
] )
60
63
] ,
@@ -68,15 +71,19 @@ export default new CrudDefinition<Operation>({
68
71
69
72
if ( operation . name === 'list' ) {
70
73
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 ) ;
72
81
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
80
87
) ;
81
88
}
82
89
0 commit comments