@gooddata/gooddata-js
Version:
GoodData JavaScript SDK
160 lines (134 loc) • 4 kB
text/typescript
// (C) 2007-2020 GoodData Corporation
export type SortDirection = "asc" | "desc";
export type EmbeddedFilter = IEmbeddedDateFilter | IEmbeddedListAttributeFilter;
export type EmbeddedDateFilterType = "relative" | "absolute";
export interface IEmbeddedDateFilter {
dateFilter: {
type: EmbeddedDateFilterType;
from?: string | number;
to?: string | number;
granularity: string;
attribute?: string;
dataset?: string;
dimension?: string;
};
}
export interface IEmbeddedListAttributeFilter {
listAttributeFilter: {
attribute?: string;
displayForm: string;
default: {
negativeSelection: boolean;
attributeElements: string[];
};
};
}
export interface IMeasureSort {
direction: SortDirection;
sortByPoP?: boolean;
}
export type VisualizationStyleType = "common" | "table" | "line" | "column" | "bar";
export interface IVisualizationStyle {
visualizationStyle: {
type: VisualizationStyleType;
colorPalette: {
measure?: {
color: string;
periodOverPeriod: string;
};
stack?: any;
};
};
}
export type MeasureType = "metric" | "fact" | "attribute";
export type MeasureAggregation = "sum" | "count" | "avg" | "min" | "max" | "median" | "runsum";
export interface IMeasure {
measure: {
type: MeasureType;
aggregation?: MeasureAggregation;
objectUri: string;
showInPercent: boolean;
showPoP: boolean;
title: string;
measureFilters: EmbeddedFilter[];
format?: string;
sort?: IMeasureSort;
styles?: IVisualizationStyle[];
localIdentifier?: string; // Used only in AD,
alias?: string;
};
}
export type CategoryType = "attribute" | "date";
export interface ICategory {
category: {
type: CategoryType;
collection: CategoryCollection;
displayForm: string;
attribute?: string;
sort?: SortDirection;
styles?: IVisualizationStyle[];
localIdentifier?: string; // Used only in AD,
alias?: string;
};
}
export type CategoryCollection = "attribute" | "stack" | "view" | "trend" | "segment";
export type VisualizationType = "table" | "line" | "column" | "bar" | "pie" | "doughnut" | "combo";
export interface IVisualizationObject {
meta: IVisualizationObjectMeta;
content: IVisualizationObjectContent;
}
export interface IVisualization {
visualization: IVisualizationObject;
}
export interface IVisualizationObjectResponse {
visualization: IVisualizationObject;
}
export interface IBuckets {
measures: IMeasure[];
categories: ICategory[];
filters: EmbeddedFilter[];
totals?: IVisualizationTotal[];
}
export type TotalType = "sum" | "max" | "min" | "avg" | "med" | "nat";
export interface IVisualizationTotal {
total: {
type: TotalType;
outputMeasureIndexes: number[];
alias?: string;
};
}
export interface IVisualizationObjectMeta {
author?: string;
category?: string;
contributor?: string;
created?: Date;
deprecated?: boolean;
identifier?: string;
isProduction?: boolean;
locked?: boolean;
projectTemplate?: string;
sharedWithSomeone?: boolean;
summary?: string;
tags?: string;
title: string;
unlisted?: boolean;
updated?: Date;
uri?: string;
}
export interface IVisualizationObjectContent {
type: VisualizationType;
buckets: IBuckets;
}
export interface IAttributesMap {
[x: string]: string;
}
export interface IVisualizationMetadataResult {
metadata: IVisualizationObject;
}
export function isEmbeddedDateFilter(dateFilter: EmbeddedFilter): dateFilter is IEmbeddedDateFilter {
// TODO unused
return (dateFilter as IEmbeddedDateFilter).dateFilter !== undefined;
}
export interface IVisualizationProperties {
[property: string]: any;
}