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

75 lines
1.5 KiB
TypeScript
Raw Normal View History

2022-07-06 07:48:11 +00:00
import { TricksterItem } from "../trickster"
export const BasicColumns = [
2022-07-07 07:54:36 +00:00
"uid","Image","Name","Count",
2022-07-06 07:48:11 +00:00
] as const
export const DetailsColumns = [
"Desc","Use",
] as const
export const MoveColumns = [
"MoveCount","Move",
] as const
export const TagColumns = [
"All","Equip","Drill","Card","Quest","Consume", "Compound"
] as const
export const EquipmentColumns = [
"MinLvl","Slots","RefineNumber","RefineState",
] as const
export const StatsColumns = [
2025-05-25 05:17:41 +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
2022-07-07 07:54:36 +00:00
export const DebugColumns = [
]
2022-07-06 07:48:11 +00:00
export const HackColumns = [
] as const
export const ColumnNames = [
...BasicColumns,
...MoveColumns,
...DetailsColumns,
...EquipmentColumns,
...StatsColumns,
...TagColumns,
...HackColumns,
] as const
export type ColumnName = typeof ColumnNames[number]
const c = (a:ColumnName | ColumnInfo):ColumnName => {
switch(typeof a) {
case "string":
return a
case "object":
return a.name
}
}
export const LazyColumn = c;
export const ColumnSorter = (a:ColumnName | ColumnInfo, b: ColumnName | ColumnInfo):number => {
let n1 = ColumnNames.indexOf(c(a))
let n2 = ColumnNames.indexOf(c(b))
if(n1 == n2) {
return 0
}
return n1 > n2 ? 1 : -1
}
export interface ColumnInfo {
name: ColumnName
displayName:string
options?:(s:string[])=>string[]
renderer?:any
filtering?:boolean
writable?:boolean
getter(item:TricksterItem):(string | number)
}