1
0
forked from a/lifeto-shop
lifeto-shop/src/lib/columns/column.ts
2022-07-06 02:48:11 -05:00

76 lines
1.6 KiB
TypeScript

import Handsontable from "handsontable"
import numbro from 'numbro';
import { textRenderer } from "handsontable/renderers"
import { TricksterItem } from "../trickster"
import Core from "handsontable/core";
export const BasicColumns = [
"Image","Name","Count",
] 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 = [
"AP","GunAP","AC","DX","MP","MA","MD","WT","DA","LK","HP","DP","HV",
] as const
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)
}