virool-pivot
Version:
A web-based exploratory visualization UI for Druid.io
146 lines (145 loc) • 6 kB
TypeScript
import { List, OrderedSet } from 'immutable';
import { Instance } from 'immutable-class';
import { Timezone } from 'chronoshift';
import { Expression, RefExpression, TimeRange, ApplyAction, SortAction, Set } from 'plywood';
import { DataSource } from '../data-source/data-source';
import { Filter, FilterJS } from '../filter/filter';
import { Highlight, HighlightJS } from '../highlight/highlight';
import { Splits, SplitsJS } from '../splits/splits';
import { SplitCombine } from '../split-combine/split-combine';
import { Dimension } from '../dimension/dimension';
import { Measure } from '../measure/measure';
import { Colors, ColorsJS } from '../colors/colors';
import { Manifest, Resolve } from '../manifest/manifest';
export interface VisualizationAndResolve {
visualization: Manifest;
resolve: Resolve;
}
/**
* FairGame - Run all visualizations pretending that there is no current
* UnfairGame - Run all visualizations but mark current vis as current
* KeepAlways - Just keep the current one
*/
export declare enum VisStrategy {
FairGame = 0,
UnfairGame = 1,
KeepAlways = 2,
}
export interface EssenceValue {
visualizations?: List<Manifest>;
dataSource?: DataSource;
visualization: Manifest;
timezone: Timezone;
filter: Filter;
splits: Splits;
multiMeasureMode: boolean;
singleMeasure: string;
selectedMeasures: OrderedSet<string>;
pinnedDimensions: OrderedSet<string>;
colors: Colors;
pinnedSort: string;
compare: Filter;
highlight: Highlight;
}
export interface EssenceJS {
visualization?: string;
timezone?: string;
filter?: FilterJS;
splits?: SplitsJS;
multiMeasureMode?: boolean;
singleMeasure?: string;
selectedMeasures?: string[];
pinnedDimensions?: string[];
colors?: ColorsJS;
pinnedSort?: string;
compare?: FilterJS;
highlight?: HighlightJS;
}
export interface EssenceContext {
dataSource: DataSource;
visualizations: List<Manifest>;
}
export declare class Essence implements Instance<EssenceValue, EssenceJS> {
static isEssence(candidate: any): candidate is Essence;
static getBestVisualization(visualizations: List<Manifest>, dataSource: DataSource, splits: Splits, colors: Colors, currentVisualization: Manifest): VisualizationAndResolve;
static fromHash(hash: string, context: EssenceContext): Essence;
static fromDataSource(dataSource: DataSource, context: EssenceContext): Essence;
static fromJS(parameters: EssenceJS, context?: EssenceContext): Essence;
dataSource: DataSource;
visualizations: List<Manifest>;
visualization: Manifest;
timezone: Timezone;
filter: Filter;
splits: Splits;
multiMeasureMode: boolean;
singleMeasure: string;
selectedMeasures: OrderedSet<string>;
pinnedDimensions: OrderedSet<string>;
colors: Colors;
pinnedSort: string;
compare: Filter;
highlight: Highlight;
visResolve: Resolve;
constructor(parameters: EssenceValue);
valueOf(): EssenceValue;
toJS(): EssenceJS;
toJSON(): EssenceJS;
toString(): string;
equals(other: Essence): boolean;
toHash(): string;
getURL(urlPrefix: string): string;
getTimeAttribute(): RefExpression;
getTimeDimension(): Dimension;
evaluateSelection(selection: Expression, now?: Date): TimeRange;
getEffectiveFilter(highlightId?: string, unfilterDimension?: Dimension): Filter;
getTimeSelection(): Expression;
isFixedMeasureMode(): boolean;
getEffectiveMultiMeasureMode(): boolean;
getEffectiveMeasures(): List<Measure>;
getMeasures(): List<Measure>;
getEffectiveSelectedMeasure(): OrderedSet<string>;
differentDataSource(other: Essence): boolean;
differentTimezone(other: Essence): boolean;
differentTimezoneMatters(other: Essence): boolean;
differentFilter(other: Essence): boolean;
differentSplits(other: Essence): boolean;
differentEffectiveSplits(other: Essence): boolean;
differentColors(other: Essence): boolean;
differentSelectedMeasures(other: Essence): boolean;
differentEffectiveMeasures(other: Essence): boolean;
newSelectedMeasures(other: Essence): boolean;
newEffectiveMeasures(other: Essence): boolean;
differentPinnedDimensions(other: Essence): boolean;
differentPinnedSort(other: Essence): boolean;
differentCompare(other: Essence): boolean;
differentHighligh(other: Essence): boolean;
differentEffectiveFilter(other: Essence, highlightId?: string, unfilterDimension?: Dimension): boolean;
highlightOn(owner: string, measure?: string): boolean;
highlightOnDifferentMeasure(owner: string, measure: string): boolean;
getSingleHighlightSet(): Set;
getApplyForSort(sort: SortAction): ApplyAction;
getCommonSort(): SortAction;
updateDataSource(newDataSource: DataSource): Essence;
changeFilter(filter: Filter, removeHighlight?: boolean): Essence;
changeTimezone(newTimezone: Timezone): Essence;
changeTimeSelection(check: Expression): Essence;
convertToSpecificFilter(): Essence;
changeSplits(splits: Splits, strategy: VisStrategy): Essence;
changeSplit(splitCombine: SplitCombine, strategy: VisStrategy): Essence;
addSplit(split: SplitCombine, strategy: VisStrategy): Essence;
removeSplit(split: SplitCombine, strategy: VisStrategy): Essence;
updateSplitsWithFilter(): Essence;
changeColors(colors: Colors): Essence;
changeVisualization(visualization: Manifest): Essence;
pin(dimension: Dimension): Essence;
unpin(dimension: Dimension): Essence;
getPinnedSortMeasure(): Measure;
changePinnedSortMeasure(measure: Measure): Essence;
toggleMultiMeasureMode(): Essence;
changeSingleMeasure(measure: Measure): Essence;
toggleSelectedMeasure(measure: Measure): Essence;
toggleEffectiveMeasure(measure: Measure): Essence;
acceptHighlight(): Essence;
changeHighlight(owner: string, measure: string, delta: Filter): Essence;
dropHighlight(): Essence;
}