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