// (C) 2007-2020 GoodData Corporation import { VisualizationObject } from "@gooddata/typings"; export interface ISchemaVisualizationAttribute { localIdentifier: string; displayForm: string; alias?: string; } export type ISchemaBucketItem = ISchemaVisualizationAttribute | ISchemaMeasure; export interface ISchemaMeasureBase { localIdentifier: string; identifier?: string; alias?: string; title?: string; format?: string; filters?: ISchemaFilter[]; computeRatio?: boolean; aggregation?: "sum" | "count" | "avg" | "min" | "max" | "median" | "runsum"; isDerived?: boolean; isArithmetic?: boolean; } export interface ISchemaDerivedMeasure extends ISchemaMeasureBase { isDerived: true; measureIdentifier?: string; popAttribute?: string; previousPeriod?: IPreviousPeriod; } export interface ISchemaArithmeticMeasure extends ISchemaMeasureBase { isArithmetic: true; operator: "sum" | "difference" | "multiplication" | "ratio" | "change"; measureIdentifiers: string[]; } export type ISchemaMeasure = ISchemaMeasureBase | ISchemaDerivedMeasure | ISchemaArithmeticMeasure; export interface IPreviousPeriod { dateDataSets?: IPreviousPeriodDateDataSet[]; } export interface IPreviousPeriodDateDataSet { dataSet: string; periodsAgo: number; } export interface ISchemaTotal { type: "sum" | "avg" | "max" | "min" | "nat" | "med"; measureIdentifier: string; attributeIdentifier: string; } export interface ISchemaBucket { localIdentifier?: string; items: ISchemaBucketItem[]; totals?: ISchemaTotal[]; } export interface ISchemaFilter { // common properties type: "attribute" | "date" | "measureComparison" | "measureRange" | "ranking"; identifier: string; // used as measure local identifier for "measureComparison" and "measureRange" and "ranking" // date related properties relative?: boolean; from?: number | string; // used by "measureRange" as well to?: number | string; // used by "measureRange" as well granularity?: string; dataset?: string; // attribute related properties negative?: boolean; elements?: number[]; // measure value and ranking filter related properties operator?: | VisualizationObject.ComparisonConditionOperator | VisualizationObject.RangeConditionOperator | "TOP" | "BOTTOM"; value?: number; // measure value filter related property treatNullValuesAs?: number; // ranking filter related properties attributes?: string[]; // local identifiers of measures } export interface ISchemaVisualizationObject { type: string; // will be matched against VisualizationClass-s url buckets?: ISchemaBucket[]; filters?: ISchemaFilter[]; properties?: any; // meta info title: string; author?: string; identifier?: string; }