]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/shared/rest/rest-table.ts
Add zh-Hans-CN to client.sh
[github/Chocobozzz/PeerTube.git] / client / src / app / shared / rest / rest-table.ts
CommitLineData
0bd78bf3 1import { peertubeLocalStorage } from '@app/shared/misc/peertube-local-storage'
3523b64a
C
2import { LazyLoadEvent } from 'primeng/components/common/lazyloadevent'
3import { SortMeta } from 'primeng/components/common/sortmeta'
d592e0a9
C
4
5import { RestPagination } from './rest-pagination'
6
7export 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}