// (C) 2007-2019 GoodData Corporation import { flatMap, has } from "lodash"; import { SchemaWidget } from "../model/SchemaWidget"; import { IProject } from "../../model/Project"; import { Widget } from "../../model/Widget"; import { ISchema } from "../model/Schema"; import { createProject } from "./ProjectBuilder"; import { createUsers } from "./UserBuilder"; import { ISchemaKpi } from "../model/SchemaKpi"; import { ISchemaVisualizationWidget } from "../model/SchemaVisualizationWidget"; import { createKpi } from "./KpiBuilder"; import { createVisualizationWidget } from "./VisualizationWidgetBuilder"; import { IKpi } from "../../model/Kpi"; import { IVisualizationWidget } from "../../model/VisualizationWidget"; function createKpiWidget(project: IProject, userId: string, widget: ISchemaKpi): IKpi { return createKpi(project, userId, widget); } function createVisWidget( project: IProject, userId: string, widget: ISchemaVisualizationWidget, ): IVisualizationWidget { return createVisualizationWidget(project, userId, widget); } function createWidget(project: IProject, userId: string, widget: SchemaWidget): Widget { if (has(widget, "visualizationUri")) { return createVisWidget(project, userId, widget as ISchemaVisualizationWidget); } return createKpiWidget(project, userId, widget as ISchemaKpi); } export function createWidgets(schema: ISchema): Widget[] { const project = createProject(schema); const users = createUsers(schema); return flatMap( schema.analyticalDashboards || [], analyticalDashboard => analyticalDashboard.widgets || [], ).map((widget: SchemaWidget) => createWidget(project, users[0].identifier, widget)); }