// (C) 2007-2019 GoodData Corporation import { IObjectMeta } from "./ObjectMeta"; import { IMetadataObject } from "./MetadataObject"; import { INestedAttributeDisplayForm } from "./NestedAttributeDisplayForm"; import { IWrappedAttribute } from "./Attribute"; export interface IDateAttributeFragment { type: string; // type of date attribute (e.g. 'GDC.time.date', 'GDC.time.quarter', etc.) attributeMeta: IObjectMeta; defaultDisplayFormMeta: IObjectMeta; } export interface IWrappedDateDataSet { relevance: number; availableDateAttributes?: IDateAttributeFragment[]; meta: IObjectMeta; } export interface IDateAttribute extends IMetadataObject { type: string; // type of date attribute (e.g. 'GDC.time.date', 'GDC.time.quarter', etc.) meta: IObjectMeta; displayForms: INestedAttributeDisplayForm[]; } export interface IDateDataSet extends IMetadataObject { relevance: number; availableDateAttributes?: IDateAttribute[]; } export function isDateDataSet(object: IMetadataObject): object is IDateDataSet { return object.meta.category === "dateDataSet"; } export function isDateAttribute(object: IMetadataObject): object is IDateAttribute { return object.meta.category === "attribute" && (object as IDateAttribute).type !== undefined; } export function wrapDateDataSet(object: IDateDataSet): IWrappedDateDataSet { return { relevance: object.relevance, meta: object.meta, availableDateAttributes: object.availableDateAttributes.map(attribute => { return { type: attribute.type, attributeMeta: attribute.meta, defaultDisplayFormMeta: attribute.displayForms[0].meta, }; }), }; } // get dateAttribute as MD object export function wrapDateAttribute(object: IDateAttribute): IWrappedAttribute { return { attribute: { content: { type: object.type, displayForms: object.displayForms, }, meta: object.meta, }, }; }