1
0
forked from a/lifeto-shop
lifeto-shop/src/lib/columns/column.ts

73 lines
1.5 KiB
TypeScript
Raw Normal View History

2025-06-20 05:41:10 +00:00
import { TricksterItem } from '../trickster'
2022-07-06 07:48:11 +00:00
2025-06-20 05:41:10 +00:00
export const BasicColumns = ['uid', 'Image', 'Name', 'Count'] as const
2022-07-06 07:48:11 +00:00
2025-06-20 05:41:10 +00:00
export const DetailsColumns = ['Desc', 'Use'] as const
2022-07-06 07:48:11 +00:00
2025-06-20 05:41:10 +00:00
export const MoveColumns = ['MoveCount', 'Move'] as const
2022-07-06 07:48:11 +00:00
2025-06-20 05:41:10 +00:00
export const TagColumns = ['All', 'Equip', 'Drill', 'Card', 'Quest', 'Consume', 'Compound'] as const
2022-07-06 07:48:11 +00:00
2025-06-20 05:41:10 +00:00
export const EquipmentColumns = ['MinLvl', 'Slots', 'RefineNumber', 'RefineState'] as const
2022-07-06 07:48:11 +00:00
export const StatsColumns = [
2025-06-20 05:41:10 +00:00
'HV',
'AC',
'LK',
'WT',
'HP',
'MA',
'DP',
'DX',
'MP',
'AP',
'MD',
'DA',
'GunAP',
2022-07-06 07:48:11 +00:00
] as const
2025-06-20 05:41:10 +00:00
export const DebugColumns = []
export const HackColumns = [] as const
2022-07-06 07:48:11 +00:00
export const ColumnNames = [
...BasicColumns,
...MoveColumns,
...DetailsColumns,
...EquipmentColumns,
...StatsColumns,
...TagColumns,
...HackColumns,
] as const
2025-06-20 05:41:10 +00:00
export type ColumnName = (typeof ColumnNames)[number]
2022-07-06 07:48:11 +00:00
2025-06-20 05:41:10 +00:00
const c = (a: ColumnName | ColumnInfo): ColumnName => {
switch (typeof a) {
case 'string':
2022-07-06 07:48:11 +00:00
return a
2025-06-20 05:41:10 +00:00
case 'object':
2022-07-06 07:48:11 +00:00
return a.name
}
}
2025-06-20 05:41:10 +00:00
export const LazyColumn = c
2022-07-06 07:48:11 +00:00
2025-06-20 05:41:10 +00:00
export const ColumnSorter = (a: ColumnName | ColumnInfo, b: ColumnName | ColumnInfo): number => {
const n1 = ColumnNames.indexOf(c(a))
const n2 = ColumnNames.indexOf(c(b))
if (n1 === n2) {
2022-07-06 07:48:11 +00:00
return 0
}
return n1 > n2 ? 1 : -1
}
2025-06-20 05:41:10 +00:00
export interface ColumnInfo {
2022-07-06 07:48:11 +00:00
name: ColumnName
2025-06-20 05:41:10 +00:00
displayName: string
2022-07-06 07:48:11 +00:00
2025-06-20 05:41:10 +00:00
options?: (s: string[]) => string[]
renderer?: any
filtering?: boolean
writable?: boolean
getter(item: TricksterItem): string | number
2022-07-06 07:48:11 +00:00
}