UNPKG

virool-pivot

Version:

A web-based exploratory visualization UI for Druid.io

78 lines (61 loc) 2.06 kB
import { List } from 'immutable'; import { Class, Instance, isInstanceOf, immutableArraysEqual } from 'immutable-class'; import { $, Expression } from 'plywood'; import { immutableListsEqual } from '../../utils/general/general'; import { LinkItem, LinkItemJS, LinkItemContext } from '../link-item/link-item'; export interface LinkViewConfigValue { title: string; linkItems: List<LinkItem>; } export interface LinkViewConfigJS { title: string; linkItems: LinkItemJS[]; } var check: Class<LinkViewConfigValue, LinkViewConfigJS>; export class LinkViewConfig implements Instance<LinkViewConfigValue, LinkViewConfigJS> { static isLinkViewConfig(candidate: any): candidate is LinkViewConfig { return isInstanceOf(candidate, LinkViewConfig); } static fromJS(parameters: LinkViewConfigJS, context?: LinkItemContext): LinkViewConfig { return new LinkViewConfig({ title: parameters.title, linkItems: List(parameters.linkItems.map(linkItem => LinkItem.fromJS(linkItem, context))) }); } public title: string; public linkItems: List<LinkItem>; constructor(parameters: LinkViewConfigValue) { this.title = parameters.title; this.linkItems = parameters.linkItems; } public valueOf(): LinkViewConfigValue { return { title: this.title, linkItems: this.linkItems }; } public toJS(): LinkViewConfigJS { return { title: this.title, linkItems: this.linkItems.toArray().map(linkItem => linkItem.toJS()) }; } public toJSON(): LinkViewConfigJS { return this.toJS(); } public toString(): string { return `[LinkViewConfig: ${this.title}]`; } public equals(other: LinkViewConfig): boolean { return LinkViewConfig.isLinkViewConfig(other) && this.title === other.title && immutableListsEqual(this.linkItems, other.linkItems); } public defaultLinkItem(): LinkItem { return this.linkItems.first(); } public findByName(name: string): LinkItem { return this.linkItems.find(li => li.name === name); } } check = LinkViewConfig;