qlik
Version:
A collection of helpful utilities for using the Qlik Capability APIs
340 lines (339 loc) • 11 kB
TypeScript
import { Layout, NxDimensionInfo, NxMeasureInfo, NxCellRows, NxCell, Size, SelectionObject, HyperCubeDef, NxMeasure, NxPage } from './data';
export interface NxAutoSortByStateDef {
qDisplayNumberOfRows: number;
}
export interface NxListObjectExpressionDef {
qExpr: string;
qLibraryId: string;
}
export interface ListObjectDef {
qStateName: string;
qLibraryId: string;
qDef: any;
qAutoSortByState: NxAutoSortByStateDef;
qFrequencyMode: "NX_FREQUENCY_NONE" | "NX_FREQUENCY_VALUE" | "NX_FREQUENCY_PERCENT" | "NX_FREQUENCY_RELATIVE";
qShowAlternatives: boolean;
qInitialDataFetch: NxPage[];
qExpressions: NxListObjectExpressionDef[];
}
export interface InitialPropertiesHyperCube {
qHyperCubeDef: HyperCubeDef;
[key: string]: any;
}
export interface InitialPropertiesListObject {
qListObjectDef: ListObjectDef;
[key: string]: any;
}
export type InitialProperties = InitialPropertiesHyperCube | InitialPropertiesListObject;
export interface SnapshotLegacy {
canTakeSnapshot: boolean;
}
export type SupportFunction = (layout: Layout) => boolean;
export type SupportItem = boolean | SupportFunction;
export interface Support {
snapshot: SupportItem | SnapshotLegacy;
export: SupportItem;
exportData: SupportItem;
}
export type Paint = (this: ExtensionContext, $element?: any, layout?: Layout, qDimensionInfo?: NxDimensionInfo, qMeasureInfo?: NxMeasureInfo, qMatrix?: NxCellRows[], dimensions?: NxCell[], measures?: NxCell[], qSize?: Size, qId?: string, qSelectionInfo?: SelectionObject) => void;
export interface VisualizationCommon {
qHyperCubeDef: HyperCubeDef;
title: string;
showTitles: boolean;
subtitle: string;
footnote: string;
}
export type VisualizationOptions = VisualizationCommon;
export type ShowFunction = (layout: Layout, cls: any, obj: any) => boolean | ((measure: NxMeasure) => boolean);
export interface CustomPropertyCommon {
type?: "string" | "integer" | "number" | "array" | "boolean" | "items";
ref?: string;
label?: string;
show?: boolean | ShowFunction;
}
export interface CustomPropertyString extends CustomPropertyCommon {
type: "string";
expression?: "always" | "optional" | "";
maxLength?: number;
defaultValue?: string;
}
export interface CustomPropertyInteger extends CustomPropertyCommon {
type: "integer";
component?: string;
min?: string;
max?: string;
defaultValue?: number;
}
export interface CustomPropertyNumber extends CustomPropertyCommon {
type: "number";
component?: string;
min?: string;
max?: string;
defaultValue?: number;
}
export interface CustomPropertyArray extends CustomPropertyCommon {
type: "array";
component?: undefined;
itemTitleRef?: string;
allowAdd?: boolean;
allowRemove?: boolean;
addTranslation?: string;
allowMove?: boolean;
}
export interface CustomPropertyButton extends CustomPropertyCommon {
component: "button";
action(data: VisualizationOptions): void;
}
export interface ButtonGroupOption {
value: string;
label: string;
tooltip: string;
}
export interface CustomPropertyButtonGroup extends CustomPropertyCommon {
type: "string";
component: "buttongroup";
defaultValue?: string;
options?: ButtonGroupOption[] | (() => ButtonGroupOption[]);
}
export interface CustomPropertyCheckbox extends CustomPropertyCommon {
type: "boolean";
defaultValue?: boolean;
}
export interface CustomPropertyColorPicker extends CustomPropertyCommon {
type: "integer";
component: "color-picker";
defaultValue?: number;
}
export interface CustomPropertyOption {
value: string;
label: string;
}
export type CustomPropertyOptions = CustomPropertyOption[] | (() => CustomPropertyOption[]);
export interface CustomPropertyDropdown extends CustomPropertyCommon {
type: "string";
ref: string;
component: "dropdown";
defaultValue?: string;
options?: CustomPropertyOptions;
}
export interface CustomPropertyLink extends CustomPropertyCommon {
component: "link";
url?: string;
}
export interface CustomPropertyMedia extends CustomPropertyCommon {
type: "string";
component: "media";
layoutRef?: string;
}
export interface CustomPropertyRadio extends CustomPropertyCommon {
type: "string";
component: "radiobuttons";
defaultValue?: string;
options?: CustomPropertyOptions;
}
export interface CustomPropertySlider extends CustomPropertyCommon {
type: "number";
component: "slider";
defaultValue?: number;
min?: number;
max?: number;
step?: number;
}
export interface CustomPropertyRangeSlider extends CustomPropertyCommon {
type: "array";
component: "slider";
defaultValue?: number;
min?: number;
max?: number;
step?: number;
}
export interface CustomPropertySwitch extends CustomPropertyCommon {
type: "boolean";
component: "switch";
defaultValue?: string;
options?: CustomPropertyOptions;
}
export interface CustomPropertyText extends CustomPropertyCommon {
component: "text";
}
export interface CustomPropertyTextArea extends CustomPropertyCommon {
type: "string";
component: "textarea";
rows?: number;
maxlength?: number;
defaultValue?: string;
}
export interface CustomPropertyExpression extends CustomPropertyCommon {
type: undefined;
component: "expression";
expressionType: "dimension" | "measure" | "StringExpr" | "ValueExpr" | "ValueExpression" | "StringExpression";
defaultValue?: string;
}
export interface CustomPropertyItems extends CustomPropertyCommon {
type: "items";
items: {
[key: string]: CustomProperty;
};
}
export type CustomProperty = CustomPropertyString | CustomPropertyInteger | CustomPropertyNumber | CustomPropertyArray | CustomPropertyButton | CustomPropertyButtonGroup | CustomPropertyCheckbox | CustomPropertyColorPicker | CustomPropertyDropdown | CustomPropertyLink | CustomPropertyMedia | CustomPropertyRadio | CustomPropertySlider | CustomPropertyRangeSlider | CustomPropertySwitch | CustomPropertyText | CustomPropertyTextArea | CustomPropertyExpression | CustomPropertyItems;
export interface Definition {
type: "items";
component: "accordion";
items: {
data?: {
uses: "data";
};
dimensions?: {
uses: "dimensions";
ref?: string;
min?: number;
max?: number;
items?: {
[key: string]: CustomProperty;
};
};
measures?: {
uses: "measures";
ref?: string;
min?: number;
max?: number;
items?: {
[key: string]: CustomProperty;
};
};
sorting?: {
uses: "sorting";
items?: {
[key: string]: CustomProperty;
};
};
settings?: {
uses: "settings";
items?: {
[key: string]: CustomProperty;
};
};
};
}
export interface Extension {
initialProperties: InitialProperties;
definition: Definition;
paint: Paint;
support?: Support;
}
export interface Patch {
qOp: "add" | "remove" | "replace";
qPath: string;
qValue: string;
}
export interface BackendApi {
abortSearch(): void;
acceptSearch(toggleMode: boolean): void;
applyPatches(qPatches: Patch[], qSoftPatch: boolean): Promise<any>;
clearSelections(): void;
clearSoftPatches(): Promise<any>;
collapseLeft(qRow: number, qCol: number, qAll?: boolean): Promise<any>;
collapseTop(qRow: number, qCol: number, qAll?: boolean): Promise<any>;
eachDataRow(callback: (i: number, d: NxCellRows) => boolean | void): NxCellRows;
expandLeft(qRow: number, qCol: number, qAll?: boolean): Promise<any>;
expandTop(qRow: number, qCol: number, qAll?: boolean): Promise<any>;
getData(qPages: NxPage[]): Promise<any[]>;
getDataRow(rownum: number): NxCellRows | null;
getDimensionInfos(): NxDimensionInfo[];
getMeasureInfos(): NxMeasureInfo[];
getPivotData(qPages: NxPage[]): Promise<any>;
getRowCount(): number;
getStackeddata(qPages: NxPage[], qMaxNbrCells: number): Promise<any>;
hasSelections(): boolean;
save(): Promise<undefined>;
search(term: string): void;
selectValues(qDimNo: number, qValues: number[], qToggleMode: boolean): void;
selectProperties(props: {}): Promise<any>;
}
export interface ExtensionContext {
$element: any;
$scope: any;
_inAnalysisState: boolean;
_inEditState: boolean;
_interactionState: number;
_on: boolean;
backendApi: BackendApi;
paint: Paint;
selectionsEnabled: boolean;
toggleLasso(): void;
selectValues(dimNo: number, values: number[], toggleMode: boolean): void;
}
export interface QDimensionCell {
qText: string;
qElemNumber: number;
qState: string;
qNum?: number;
select(): void;
}
export interface QMeasureCell {
qText: string;
qNum?: number;
getPercent(): number;
getPercentOfMax(): number;
}
export interface QRow {
dimensions: QDimensionCell[];
measures: QMeasureCell[];
cells: Array<QDimensionCell | QMeasureCell>;
}
export interface QHeader {
qFallbackTitle: string;
qSortIndicator: "A" | "B";
isOrderedBy: boolean;
qReverseSort: boolean;
col: number;
qCardinal?: number;
qStateCounts?: {
[state: string]: number;
};
qMin?: number;
qMax?: number;
errorCode?: number;
errorMessage?: number;
orderBy(): void;
reverseOrder(): void;
selectRange(min: number, max: number, inclMin: boolean, inclMax: boolean): Promise<any>;
}
export interface ExportDataOptions {
format: "OOXML" | "CSV_C" | "CSV_T";
filename?: string;
state: "A" | "P";
download: boolean;
}
export interface QTable {
rows: QRow[];
headers: QHeader[];
totals: QMeasureCell[];
rowCount: number;
colCount: number;
exportData(options: ExportDataOptions, callback: (url: string) => void): void;
getColByName(fld: string): number | undefined;
getMoreData(): void;
}
export declare namespace LanguageCodes {
type German = "de" | "de-DE";
type English = "en" | "en-US";
type Spanish = "es" | "es-ES";
type French = "fr" | "fr-FR";
type Italian = "it" | "it-IT";
type Japanese = "ja" | "ja-JP";
type Korean = "ko" | "ko-KR";
type Dutch = "nl" | "nl-NL";
type Polish = "pl" | "pl-PL";
type BrazilianPortuguese = "pt" | "pt-BR";
type Russian = "ru" | "ru-RU";
type Swedish = "sv" | "sv-SE";
type Turkish = "tr" | "tr-TR";
type SimplifiedChinese = "zh-CN";
type TraditionalChinese = "zh-TW";
type All = German | English | Spanish | French | Italian | Japanese | Korean | Dutch | Polish | BrazilianPortuguese | Russian | Swedish | Turkish | SimplifiedChinese | TraditionalChinese;
}
export interface Error {
code: string | number;
message: string;
}