]>
Commit | Line | Data |
---|---|---|
0bd78bf3 | 1 | import { peertubeLocalStorage } from '@app/shared/misc/peertube-local-storage' |
3523b64a C |
2 | import { LazyLoadEvent } from 'primeng/components/common/lazyloadevent' |
3 | import { SortMeta } from 'primeng/components/common/sortmeta' | |
d592e0a9 C |
4 | |
5 | import { RestPagination } from './rest-pagination' | |
6 | ||
7 | export abstract class RestTable { | |
ab998f7b | 8 | |
d592e0a9 C |
9 | abstract totalRecords: number |
10 | abstract rowsPerPage: number | |
11 | abstract sort: SortMeta | |
12 | abstract pagination: RestPagination | |
13 | ||
ab998f7b C |
14 | private sortLocalStorageKey = 'rest-table-sort-' + this.constructor.name |
15 | ||
d592e0a9 C |
16 | protected abstract loadData (): void |
17 | ||
ab998f7b | 18 | loadSort () { |
0bd78bf3 | 19 | const result = peertubeLocalStorage.getItem(this.sortLocalStorageKey) |
ab998f7b C |
20 | |
21 | if (result) { | |
22 | try { | |
23 | this.sort = JSON.parse(result) | |
24 | } catch (err) { | |
25 | console.error('Cannot load sort of local storage key ' + this.sortLocalStorageKey, err) | |
26 | } | |
27 | } | |
28 | } | |
29 | ||
d592e0a9 C |
30 | loadLazy (event: LazyLoadEvent) { |
31 | this.sort = { | |
32 | order: event.sortOrder, | |
33 | field: event.sortField | |
34 | } | |
35 | ||
36 | this.pagination = { | |
37 | start: event.first, | |
38 | count: this.rowsPerPage | |
39 | } | |
40 | ||
41 | this.loadData() | |
ab998f7b C |
42 | this.saveSort() |
43 | } | |
44 | ||
45 | saveSort () { | |
0bd78bf3 | 46 | peertubeLocalStorage.setItem(this.sortLocalStorageKey, JSON.stringify(this.sort)) |
d592e0a9 C |
47 | } |
48 | ||
49 | } |