// (C) 2007-2019 GoodData Corporation import { VisualizationClass } from "@gooddata/typings"; import { IUser } from "../../model/User"; import { first, partial } from "lodash"; import { ensureItems, ensureIdentifier } from "../helpers/objects"; import { objectUri, profileUri } from "../../route/routes"; import { IProject, getProjectId } from "../../model/Project"; import { webalize } from "../../utils/string"; import { ISchemaVisualizationClass } from "../model/SchemaVisualizationClass"; import { ISchema } from "../model/Schema"; import { createUsers } from "./UserBuilder"; import { createProject } from "./ProjectBuilder"; function createVisualizationClass( project: IProject, users: IUser[], visualizationClass: ISchemaVisualizationClass, ): VisualizationClass.IVisualizationClass { const author = profileUri(visualizationClass.author || first(users).identifier); const identifier = ensureIdentifier(visualizationClass, webalize(visualizationClass.title)); const deprecated = visualizationClass.deprecated ? { deprecated: visualizationClass.deprecated } : {}; return { content: { url: visualizationClass.url, icon: visualizationClass.url, iconSelected: `${visualizationClass.url}.selected`, checksum: "local", }, meta: { author, category: "visualizationClass", ...deprecated, identifier, title: visualizationClass.title, uri: objectUri(getProjectId(project), identifier), }, }; } export function createVisualizationClasses(schema: ISchema): VisualizationClass.IVisualizationClass[] { const project = createProject(schema); const users = createUsers(schema); return ensureItems(schema.visualizationClasses).map(partial(createVisualizationClass, project, users)); }