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) }