hswidget
Version:
Helpful Scripts UI widgets
52 lines (51 loc) • 1.3 kB
TypeScript
import m from "mithril";
import { Vnode } from './Widget';
import { Widget } from './Widget';
import { WidgetAttrs } from './Widget';
export interface PivotAttrs extends WidgetAttrs {
pivotName?: string;
pivotHeader?: PivotHeader;
table: {
header: string[];
data: any[][];
};
columns: ColumnSpec[];
by: string[];
}
export interface ColumnSpec {
[tableValueCol: string]: string | ColumnGenerator;
}
export interface ColumnGenerator {
(aggregators: {
[name: string]: Aggregator;
}, value: number | string, col?: number, rowData?: Array<number | string>): void;
}
export declare type Aggregator = number | {
[name: string]: number;
};
export declare type PivotHeader = Array<string | {
[oldkey: string]: string;
}>;
interface PivotStruct {
name: string;
values: Values;
tree: PivotStruct[];
}
declare type HeaderMap = string[];
interface Values {
cols: {
[colVal: string]: Aggregator;
};
rows: {
[rowName: string]: Values;
};
}
export declare class Pivot extends Widget {
id: number;
oldHeaders: HeaderMap;
newHeaders: m.ChildArray;
pivot: PivotStruct;
oninit(node: Vnode<PivotAttrs, this>): void;
view(node: Vnode<PivotAttrs, this>): m.Vnode<any, any>;
}
export {};