forked from a/lifeto-shop
76 lines
1.6 KiB
TypeScript
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)
|
|
}
|
|
|