// (C) 2007-2019 GoodData Corporation import { IMetadataObject } from "./MetadataObject"; export interface IAttributeFilterReference { attributeFilterReference: { displayForm: string; }; } export interface IDateFilterReference { dateFilterReference: { displaForm: string; }; } export interface IKpiProjectDashboardLink { projectDashboard: string; projectDashboardTab: string; } export type PossibleFilters = IDateFilterReference | IAttributeFilterReference; export type KpiComparisonTypeNoComparison = "none"; export type KpiComparisonTypeComparison = "previousPeriod" | "lastYear"; export type KpiComparisonDirection = "growIsGood" | "growIsBad"; export interface IKpiContentBase { metric: string; ignoreDashboardFilters: PossibleFilters[]; drillTo?: IKpiProjectDashboardLink; dateDimension?: string; dateDataSet?: string; } export interface IKpiContentWithoutComparison extends IKpiContentBase { comparisonType: KpiComparisonTypeNoComparison; } export interface IKpiContentWithComparison extends IKpiContentBase { comparisonType: KpiComparisonTypeComparison; comparisonDirection: KpiComparisonDirection; } export interface IKpi extends IMetadataObject { content: IKpiContentWithoutComparison | IKpiContentWithComparison; } export interface IWrappedKpi { kpi: IKpi; } export function isKpi(object: IMetadataObject): object is IKpi { return object.meta.category === "kpi"; }