be-enhanced
Version:
be-enhanced provides a base class that enables casting spells, or enhancing server-rendered DOM elements based on cross-cutting custom attributes
193 lines (154 loc) • 4.14 kB
TypeScript
//import {SimpleWCInfo} from 'may-it-be/SimpleWCInfo';
declare interface WeakRef<S>{}
export interface SelectedElement {
label: string;
values: any[];
index: number;
}
export interface SelectedElementEventDetail {
value: SelectedElement
}
export interface XtalFrappeChartEventNameMap {
'selected-element-changed': SelectedElementEventDetail;
}
export interface IAddDataPointParams {
label: string;
valueFromEachDataset: number[];
index?: number;
}
export interface XtalFrappeChartProps{
/**
* Data to be displayed in chart (JSON string for attribute)
*/
data: HeatMapData | TabularData;
selectedElement: object,
value: object,
mainTemplate: HTMLTemplateElement | string,
clonedTemplate: DocumentFragment | undefined,
target: HTMLDivElement,
//refs: any,
/**
* Add new data point to chart
*
*/
newDataPoint: IAddDataPointParams;
/**
* Remove data point from chart
*/
staleDataPoint: number;
/**
* Title of chart
*/
chartTitle: string;
/**
* Height of chart
*/
height: number;
/**
* Colors to be used in chart
*/
colors: string[];
/**
* Type of chart to be displayed
*/
type: ChartType;
/**
* Whether or not chart is navigable
*/
isNavigable: boolean;
toolTipOptions: any;
isC: boolean;
chartContainerPart: WeakRef<HTMLDivElement>[];
}
export interface AllProps extends XtalFrappeChartProps{}
export interface XtalFrappeChartActions{
createChart(self: XtalFrappeChartProps): void;
handleDataSelect(e: Event): void;
}
export type ChartType = 'axis-mixed' | 'bar' | 'line' | 'scatter' | 'pie' | 'percentage';
export interface ChartOptions{
data?: HeatMapData | TabularData,
title?: string,
height?: number,
colors?: string[],
type?: ChartType,
toolTipOptions: any,
isNavigable: boolean,
}
export interface ChartData{
tooltipOptions: TooltipOptions,
valuesOverPoints: OneOrZero,
}
export interface HeatMapData extends ChartData{
dataPoints: {[key: string]: number},
start: Date,
end: Date
}
//type TabularDataChartTypes = 'bar' | 'line';
export interface DataSet{
name?: string,
values: number[]
}
export interface TabularData extends ChartData{
//type?: TabularDataChartTypes,
labels?: string[],
datasets?: any[],
yMarkers?: Marker[],
yRegions?: Region[],
}
export interface BarOptions{
spaceRatio: number,
}
export type OneOrZero = 0 | 1;
export interface LineOptions{
dotSize: number,
regionFill: OneOrZero,
hideDots: OneOrZero,
hideLine: OneOrZero
heatLine: OneOrZero,
}
export type AxisMode = 'span' | 'tick'
export interface AxisOptions{
xAxisMode?: AxisMode,
xIsSeries?: boolean,
}
export interface BarChartData extends TabularData{
barOptions?: BarOptions,
axisOptions?: AxisOptions
}
export interface LineChartData extends TabularData{
axisOptions?: AxisOptions,
lineOptions?: LineOptions
}
export type LeftRight = 'left' | 'right';
export interface MarkerOptions{
labelPos?: LeftRight
}
export interface Marker{
label?: string,
value?: number,
options?: MarkerOptions
}
export interface RegionOptions{
labelPos?: LeftRight
}
export interface Region{
label?: string,
start?: number,
end?: number,
options?: RegionOptions,
}
export interface TooltipOptions{
formatTooltipX: (d: any) => string,
formatTooltipY: (d: any) => string,
}
/**
* Web component wrapper around the cool Frappe chart (https://frappe.io/charts) library.
*/
export abstract class XtalFrappeChartInfo{ //implements SimpleWCInfo<XtalFrappeChartProps>{
src: './xtal-frappe-chart.js';
tagName: 'xtal-frappe-chart';
props: XtalFrappeChartProps;
methods: XtalFrappeChartActions;
}
export type Package = [XtalFrappeChartInfo];