@deephaven/chart 0.22.3-beta.11 → 0.22.3-beta.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -2,7 +2,7 @@ import memoize from 'memoizee';
|
|
|
2
2
|
import { Axis, Chart, Figure, OneClick, Series, SourceType } from '@deephaven/jsapi-shim';
|
|
3
3
|
import { Range } from '@deephaven/utils';
|
|
4
4
|
import { Layout, PlotData } from 'plotly.js';
|
|
5
|
-
import { Formatter } from '@deephaven/jsapi-utils';
|
|
5
|
+
import type { Formatter } from '@deephaven/jsapi-utils';
|
|
6
6
|
import ChartModel, { ChartEvent, FilterColumnMap } from './ChartModel';
|
|
7
7
|
import { ChartModelSettings } from './ChartUtils';
|
|
8
8
|
import ChartTheme from './ChartTheme';
|
|
@@ -49,10 +49,10 @@ declare class FigureChartModel extends ChartModel {
|
|
|
49
49
|
unsubscribeFigure(): void;
|
|
50
50
|
startListeningFigure(): void;
|
|
51
51
|
stopListeningFigure(): void;
|
|
52
|
-
getTimeZone: ((columnType:
|
|
53
|
-
getValueTranslator: ((columnType:
|
|
52
|
+
getTimeZone: ((columnType: string, formatter: Formatter | undefined) => import("@deephaven/jsapi-shim").TimeZone | undefined) & memoize.Memoized<(columnType: string, formatter: Formatter | undefined) => import("@deephaven/jsapi-shim").TimeZone | undefined>;
|
|
53
|
+
getValueTranslator: ((columnType: string, formatter: Formatter | undefined) => (value: unknown) => unknown) & memoize.Memoized<(columnType: string, formatter: Formatter | undefined) => (value: unknown) => unknown>;
|
|
54
54
|
/** Gets the parser for a value with the provided column type */
|
|
55
|
-
getValueParser: ((columnType:
|
|
55
|
+
getValueParser: ((columnType: string, formatter: Formatter | undefined) => (value: unknown) => unknown) & memoize.Memoized<(columnType: string, formatter: Formatter | undefined) => (value: unknown) => unknown>;
|
|
56
56
|
/**
|
|
57
57
|
* Gets the range parser for a particular column type
|
|
58
58
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FigureChartModel.d.ts","sourceRoot":"","sources":["../src/FigureChartModel.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,UAAU,CAAC;AAG/B,OAAW,EACT,IAAI,EACJ,KAAK,EACL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,UAAU,EACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"FigureChartModel.d.ts","sourceRoot":"","sources":["../src/FigureChartModel.ts"],"names":[],"mappings":"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"}
|
package/dist/FigureChartModel.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FigureChartModel.js","names":["memoize","debounce","set","dh","Log","ChartModel","ChartUtils","ChartTheme","log","module","FigureChartModel","constructor","figure","settings","theme","axes","getAllAxes","pendingSeries","i","length","series","addSeries","subscribe","ADD_SERIES_DEBOUNCE","columnType","formatter","dataFormatter","getColumnTypeFormatter","dhTimeZone","timeZone","getTimeZone","value","unwrapValue","wrapValue","range","rangeStart","rangeEnd","valueParser","getValueParser","chart","axis","source","getSourceForAxis","getRangeParser","handleFigureUpdated","bind","handleFigureDisconnected","handleFigureReconnected","handleFigureSeriesAdded","handleDownsampleStart","handleDownsampleFinish","handleDownsampleFail","handleDownsampleNeeded","handleRequestFailed","data","template","layout","makeDefaultLayout","grid","rows","columns","cols","pattern","seriesDataMap","Map","oneClicks","filterColumnMap","lastFilter","isConnected","seriesToProcess","Set","setTitle","getDefaultTitle","initAllSeries","updateAxisPositions","startListeningFigure","close","addPendingSeries","cancel","stopListeningFigure","charts","title","clear","activeSeriesNames","j","push","name","allSeriesNames","keys","inactiveSeriesNames","filter","seriesName","indexOf","delete","axisTypeMap","groupArray","seriesData","makeSeriesDataFromSeries","getSeriesVisibility","values","plotStyle","plot","SeriesPlotStyle","STACKED_BAR","barmode","PIE","hiddenlabels","getHiddenLabels","showlegend","oneClick","updateLayoutFormats","callback","listeners","subscribeFigure","unsubscribe","unsubscribeFigure","debug","isDownsamplingDisabled","DownsampleOptions","DISABLE","DEFAULT","addEventListener","Figure","EVENT_UPDATED","EVENT_SERIES_ADDED","EVENT_DISCONNECT","EVENT_RECONNECT","EVENT_DOWNSAMPLESTARTED","EVENT_DOWNSAMPLEFINISHED","EVENT_DOWNSAMPLEFAILED","EVENT_DOWNSAMPLENEEDED","Client","EVENT_REQUEST_FAILED","removeEventListener","event","fireDownsampleStart","detail","fireDownsampleFinish","error","fireDownsampleFail","info","fireDownsampleNeeded","figureUpdateEvent","seriesArray","debug2","sources","type","valueTranslator","getValueTranslator","dataArray","getArray","setDataArrayForSeries","size","fireLoadFinished","cleanSeries","fireUpdate","resubscribe","setFormatter","setDownsamplingDisabled","fireDisconnect","fireReconnect","setDimensions","rect","subtitleCount","match","margin","DEFAULT_MARGIN","t","SUBTITLE_LINE_HEIGHT","text","pad","DEFAULT_TITLE_PADDING","getPlotWidth","width","Math","max","l","r","getPlotHeight","height","b","plotWidth","plotHeight","updateFigureAxes","getAxisRangeParser","axisFormats","getAxisFormats","forEach","axisFormat","axisLayoutProperty","props","Object","assign","sourceType","get","property","getPlotlyProperty","HISTOGRAM","xLow","xHigh","LINE","x","y","yLow","yHigh","error_x","getPlotlyErrorBars","error_y","TREEMAP","ids","labels","undefined","getData","getLayout","getFilterColumnMap","isFilterRequired","find","requireAllFiltersToDisplay","setFilter","filterMap","warn","key","column","setValueForColumn","setFigure","updateSettings"],"sources":["../src/FigureChartModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport set from 'lodash.set';\nimport dh, {\n Axis,\n Chart,\n Figure,\n OneClick,\n Series,\n SourceType,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { Range } from '@deephaven/utils';\nimport { Layout, PlotData } from 'plotly.js';\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport ChartModel, { ChartEvent, FilterColumnMap } from './ChartModel';\nimport ChartUtils, { AxisTypeMap, ChartModelSettings } from './ChartUtils';\nimport ChartTheme from './ChartTheme';\n\nconst log = Log.module('FigureChartModel');\n\n/**\n * Takes a Figure object from a widget to make a model for a chart\n */\nclass FigureChartModel extends ChartModel {\n static ADD_SERIES_DEBOUNCE = 50;\n\n /**\n * @param figure The figure object created by the API\n * @param settings Chart settings\n */\n constructor(\n figure: Figure,\n settings: Partial<ChartModelSettings> = {},\n theme: typeof ChartTheme = ChartTheme\n ) {\n super();\n\n this.handleFigureUpdated = this.handleFigureUpdated.bind(this);\n this.handleFigureDisconnected = this.handleFigureDisconnected.bind(this);\n this.handleFigureReconnected = this.handleFigureReconnected.bind(this);\n this.handleFigureSeriesAdded = this.handleFigureSeriesAdded.bind(this);\n this.handleDownsampleStart = this.handleDownsampleStart.bind(this);\n this.handleDownsampleFinish = this.handleDownsampleFinish.bind(this);\n this.handleDownsampleFail = this.handleDownsampleFail.bind(this);\n this.handleDownsampleNeeded = this.handleDownsampleNeeded.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n\n this.figure = figure;\n this.settings = settings;\n this.theme = theme;\n this.data = [];\n const template = { data: {}, layout: ChartUtils.makeDefaultLayout(theme) };\n this.layout = {\n grid: {\n rows: figure.rows,\n columns: figure.cols,\n pattern: 'independent',\n },\n template,\n };\n this.seriesDataMap = new Map();\n this.pendingSeries = [];\n this.oneClicks = [];\n this.filterColumnMap = new Map();\n this.lastFilter = new Map();\n this.isConnected = true; // Assume figure is connected to start\n this.seriesToProcess = new Set();\n\n this.setTitle(this.getDefaultTitle());\n this.initAllSeries();\n this.updateAxisPositions();\n this.startListeningFigure();\n }\n\n figure: Figure;\n\n settings: Partial<ChartModelSettings>;\n\n theme: typeof ChartTheme;\n\n data: Partial<PlotData>[];\n\n layout: Partial<Layout>;\n\n seriesDataMap: Map<\n string,\n Partial<PlotData> & {\n xLow?: number[];\n xHigh?: number[];\n yLow?: number[];\n yHigh?: number[];\n }\n >;\n\n pendingSeries: Series[];\n\n oneClicks: OneClick[];\n\n filterColumnMap: FilterColumnMap;\n\n lastFilter: Map<string, string>;\n\n isConnected: boolean; // Assume figure is connected to start\n\n seriesToProcess;\n\n close(): void {\n this.figure.close();\n this.addPendingSeries.cancel();\n this.stopListeningFigure();\n }\n\n getDefaultTitle(): string {\n if (this.figure.charts.length > 0) {\n const chart = this.figure.charts[0];\n return chart.title;\n }\n\n return '';\n }\n\n initAllSeries(): void {\n this.oneClicks = [];\n this.filterColumnMap.clear();\n\n const { charts } = this.figure;\n const axes = ChartUtils.getAllAxes(this.figure);\n const activeSeriesNames: string[] = [];\n for (let i = 0; i < charts.length; i += 1) {\n const chart = charts[i];\n\n for (let j = 0; j < chart.series.length; j += 1) {\n const series = chart.series[j];\n activeSeriesNames.push(series.name);\n this.addSeries(series, axes);\n }\n }\n\n // Remove any series that no longer exist\n const allSeriesNames = [...this.seriesDataMap.keys()];\n const inactiveSeriesNames = allSeriesNames.filter(\n seriesName => activeSeriesNames.indexOf(seriesName) < 0\n );\n for (let i = 0; i < inactiveSeriesNames.length; i += 1) {\n const seriesName = inactiveSeriesNames[i];\n this.seriesDataMap.delete(seriesName);\n }\n this.seriesToProcess = new Set([...this.seriesDataMap.keys()]);\n }\n\n /**\n * Add a series to the model\n * @param series Series object to add\n * @param axes All the axis in this figure\n */\n addSeries(series: Series, axes: Axis[]): void {\n const axisTypeMap: AxisTypeMap = ChartUtils.groupArray(axes, 'type');\n\n const seriesData = ChartUtils.makeSeriesDataFromSeries(\n series,\n axisTypeMap,\n ChartUtils.getSeriesVisibility(series.name, this.settings),\n this.theme\n );\n\n this.seriesDataMap.set(series.name, seriesData);\n\n this.data = [...this.seriesDataMap.values()];\n\n if (series.plotStyle === dh.plot.SeriesPlotStyle.STACKED_BAR) {\n this.layout.barmode = 'stack';\n } else if (series.plotStyle === dh.plot.SeriesPlotStyle.PIE) {\n this.layout.hiddenlabels = ChartUtils.getHiddenLabels(this.settings);\n }\n\n this.layout.showlegend =\n this.data.length > 1 || series.plotStyle === dh.plot.SeriesPlotStyle.PIE;\n\n if (series.oneClick != null) {\n const { oneClick } = series;\n const { columns } = oneClick;\n for (let i = 0; i < columns.length; i += 1) {\n this.filterColumnMap.set(columns[i].name, columns[i]);\n }\n\n this.oneClicks.push(oneClick);\n }\n\n this.updateLayoutFormats();\n }\n\n // We need to debounce adding series so we subscribe to them all in the same tick\n // This should no longer be necessary after IDS-5049 lands\n addPendingSeries = debounce(() => {\n const axes = ChartUtils.getAllAxes(this.figure);\n const { pendingSeries } = this;\n for (let i = 0; i < pendingSeries.length; i += 1) {\n const series = pendingSeries[i];\n this.addSeries(series, axes);\n\n series.subscribe();\n // We'll get an update with the data after subscribing\n }\n\n this.pendingSeries = [];\n }, FigureChartModel.ADD_SERIES_DEBOUNCE);\n\n subscribe(callback: (event: ChartEvent) => void): void {\n super.subscribe(callback);\n\n if (this.listeners.length === 1) {\n // Need to initialize the series here as we may have missed some series when not subscribed\n this.initAllSeries();\n this.subscribeFigure();\n }\n }\n\n unsubscribe(callback: (event: ChartEvent) => void): void {\n super.unsubscribe(callback);\n\n if (this.listeners.length === 0) {\n this.unsubscribeFigure();\n }\n }\n\n subscribeFigure(): void {\n if (!this.isConnected) {\n log.debug('Ignoring subscribe when figure in disconnected state');\n return;\n }\n\n this.figure.subscribe(\n this.isDownsamplingDisabled\n ? dh.plot.DownsampleOptions.DISABLE\n : dh.plot.DownsampleOptions.DEFAULT\n );\n }\n\n unsubscribeFigure(): void {\n this.figure.unsubscribe();\n }\n\n startListeningFigure(): void {\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_UPDATED,\n this.handleFigureUpdated\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_SERIES_ADDED,\n this.handleFigureSeriesAdded\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DISCONNECT,\n this.handleFigureDisconnected\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_RECONNECT,\n this.handleFigureReconnected\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLESTARTED,\n this.handleDownsampleStart\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFINISHED,\n this.handleDownsampleFinish\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFAILED,\n this.handleDownsampleFail\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLENEEDED,\n this.handleDownsampleNeeded\n );\n this.figure.addEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n stopListeningFigure(): void {\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_UPDATED,\n this.handleFigureUpdated\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_SERIES_ADDED,\n this.handleFigureSeriesAdded\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DISCONNECT,\n this.handleFigureDisconnected\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_RECONNECT,\n this.handleFigureReconnected\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLESTARTED,\n this.handleDownsampleStart\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFINISHED,\n this.handleDownsampleFinish\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFAILED,\n this.handleDownsampleFail\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLENEEDED,\n this.handleDownsampleNeeded\n );\n this.figure.removeEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n getTimeZone = memoize((columnType, formatter) => {\n if (formatter != null) {\n const dataFormatter = formatter.getColumnTypeFormatter(columnType);\n if (dataFormatter != null) {\n return dataFormatter.dhTimeZone;\n }\n }\n return null;\n });\n\n getValueTranslator = memoize((columnType, formatter) => {\n const timeZone = this.getTimeZone(columnType, formatter);\n return (value: unknown) => ChartUtils.unwrapValue(value, timeZone);\n });\n\n /** Gets the parser for a value with the provided column type */\n getValueParser = memoize((columnType, formatter) => {\n const timeZone = this.getTimeZone(columnType, formatter);\n return (value: unknown) =>\n ChartUtils.wrapValue(value, columnType, timeZone);\n });\n\n /**\n * Gets the range parser for a particular column type\n */\n getRangeParser = memoize(\n (columnType: string, formatter?: Formatter) => (range: Range) => {\n let [rangeStart, rangeEnd]: [unknown, unknown] = range;\n const valueParser = this.getValueParser(columnType, formatter);\n rangeStart = valueParser(rangeStart);\n rangeEnd = valueParser(rangeEnd);\n return [rangeStart, rangeEnd];\n }\n );\n\n /**\n * Gets the parser for parsing the range from an axis within the given chart\n */\n getAxisRangeParser = memoize(\n (chart: Chart, formatter?: Formatter) => (axis: Axis) => {\n const source = ChartUtils.getSourceForAxis(chart, axis);\n if (source) {\n return this.getRangeParser(source.columnType, formatter);\n }\n\n return (range: [unknown, unknown]) => range;\n }\n );\n\n handleDownsampleStart(event: ChartEvent): void {\n log.debug('Downsample started', event);\n\n this.fireDownsampleStart(event.detail);\n }\n\n handleDownsampleFinish(event: ChartEvent): void {\n log.debug('Downsample finished', event);\n\n this.fireDownsampleFinish(event.detail);\n }\n\n handleDownsampleFail(event: ChartEvent): void {\n log.error('Downsample failed', event);\n\n this.fireDownsampleFail(event.detail);\n }\n\n handleDownsampleNeeded(event: ChartEvent): void {\n log.info('Downsample needed', event);\n\n this.fireDownsampleNeeded(event.detail);\n }\n\n handleFigureUpdated(event: ChartEvent): void {\n const { detail: figureUpdateEvent } = event;\n const { series: seriesArray } = figureUpdateEvent;\n\n log.debug2('handleFigureUpdated', seriesArray);\n\n for (let i = 0; i < seriesArray.length; i += 1) {\n const series = seriesArray[i];\n\n log.debug2('handleFigureUpdated updating series', series.name);\n\n const { sources } = series;\n for (let j = 0; j < sources.length; j += 1) {\n const source = sources[j];\n const { columnType, type } = source;\n const valueTranslator = this.getValueTranslator(\n columnType,\n this.formatter\n );\n const dataArray = figureUpdateEvent.getArray(\n series,\n type,\n valueTranslator\n );\n this.setDataArrayForSeries(series, type, dataArray);\n }\n\n this.seriesToProcess.delete(series.name);\n if (this.seriesToProcess.size === 0) {\n this.fireLoadFinished();\n }\n\n this.cleanSeries(series);\n }\n\n const { data } = this;\n this.fireUpdate(data);\n }\n\n handleRequestFailed(event: ChartEvent): void {\n log.error('Request failed', event);\n }\n\n /**\n * Resubscribe to the figure, should be done if settings change\n */\n resubscribe(): void {\n if (this.listeners.length > 0) {\n this.unsubscribeFigure();\n this.subscribeFigure();\n }\n }\n\n setFormatter(formatter: Formatter): void {\n super.setFormatter(formatter);\n\n this.updateLayoutFormats();\n\n // Unsubscribe and resubscribe to trigger a data update\n // Data may need to be translated again because of the new formatter\n this.resubscribe();\n }\n\n setDownsamplingDisabled(isDownsamplingDisabled: boolean): void {\n super.setDownsamplingDisabled(isDownsamplingDisabled);\n\n this.resubscribe();\n }\n\n handleFigureDisconnected(event: CustomEvent): void {\n log.debug('Figure disconnected', event);\n\n this.isConnected = false;\n\n if (this.listeners.length > 0) {\n this.unsubscribeFigure();\n }\n\n this.fireDisconnect();\n }\n\n handleFigureReconnected(event: CustomEvent): void {\n log.debug('Figure reconnected', event);\n\n this.isConnected = true;\n\n // It's possible the series have changed completely, as the query could have been changed\n this.initAllSeries();\n\n this.fireReconnect();\n\n if (this.listeners.length > 0) {\n this.subscribeFigure();\n }\n }\n\n handleFigureSeriesAdded(event: { detail: Series }): void {\n const { detail: series } = event;\n log.debug('handleFigureSeriesAdded', series);\n\n this.pendingSeries.push(series);\n this.addPendingSeries();\n }\n\n setDimensions(rect: DOMRect): void {\n super.setDimensions(rect);\n\n this.updateAxisPositions();\n }\n\n setTitle(title: string): void {\n super.setTitle(title);\n\n // Need to recalculate the padding based on how many lines of text the title is\n // Plotly doesn't handle positioning it correctly, and it's an undocumented feature\n const subtitleCount = (title ?? '').match(/<br>/g)?.length ?? 0;\n const margin =\n ChartUtils.DEFAULT_MARGIN.t +\n subtitleCount * ChartUtils.SUBTITLE_LINE_HEIGHT;\n\n if (this.layout.margin) {\n this.layout.margin.t = margin;\n } else {\n this.layout.margin = { t: margin };\n }\n\n if (typeof this.layout.title === 'string') {\n this.layout.title = title;\n } else {\n this.layout.title = { ...this.layout.title };\n this.layout.title.text = title;\n this.layout.title.pad = { ...this.layout.title.pad };\n this.layout.title.pad.t =\n ChartUtils.DEFAULT_TITLE_PADDING.t +\n subtitleCount * ChartUtils.SUBTITLE_LINE_HEIGHT * 0.5;\n }\n }\n\n getPlotWidth(): number {\n if (!this.rect || !this.rect.width) {\n return 0;\n }\n\n return Math.max(\n this.rect.width -\n (this.layout.margin?.l ?? 0) -\n (this.layout.margin?.r ?? 0),\n 0\n );\n }\n\n getPlotHeight(): number {\n if (!this.rect || !this.rect.height) {\n return 0;\n }\n\n return Math.max(\n this.rect.height -\n (this.layout.margin?.t ?? 0) -\n (this.layout.margin?.b ?? 0),\n 0\n );\n }\n\n updateAxisPositions(): void {\n const plotWidth = this.getPlotWidth();\n const plotHeight = this.getPlotHeight();\n ChartUtils.updateFigureAxes(\n this.layout,\n this.figure,\n chart => this.getAxisRangeParser(chart, this.formatter),\n plotWidth,\n plotHeight,\n this.theme\n );\n }\n\n /**\n * Updates the format patterns used\n */\n updateLayoutFormats(): void {\n if (!this.formatter) {\n return;\n }\n\n const axisFormats = ChartUtils.getAxisFormats(this.figure, this.formatter);\n axisFormats.forEach((axisFormat, axisLayoutProperty) => {\n log.debug(\n `Assigning ${axisLayoutProperty}`,\n this.layout[axisLayoutProperty],\n axisFormat\n );\n\n const props = this.layout[axisLayoutProperty];\n if (props != null) {\n Object.assign(props, axisFormat);\n } else {\n log.debug(`Ignoring null layout.${axisLayoutProperty}`);\n }\n });\n }\n\n /**\n * Set a specific array for the array of series properties specified.\n * @param series The series to set the data array for.\n * @param sourceType The source type within that series to set the data for.\n * @param dataArray The array to use for the data for this series source.\n */\n setDataArrayForSeries(\n series: Series,\n sourceType: SourceType,\n dataArray: unknown[]\n ): void {\n const { name, plotStyle } = series;\n\n const seriesData = this.seriesDataMap.get(name);\n const property = ChartUtils.getPlotlyProperty(plotStyle, sourceType);\n\n if (seriesData) {\n set(seriesData, property, dataArray);\n }\n }\n\n /**\n * After setting all the data in the series data, we may need to adjust some other properties\n * Eg. Calculating the width from the xLow/xHigh values; Plot.ly uses `width` instead of a low/high\n * value for x.\n * @param series The series to clean the data for\n */\n cleanSeries(series: Series): void {\n const { name, plotStyle } = series;\n const seriesData = this.seriesDataMap.get(name);\n if (seriesData == null) {\n return;\n }\n if (plotStyle === dh.plot.SeriesPlotStyle.HISTOGRAM) {\n const { xLow, xHigh } = seriesData;\n if (xLow && xHigh && xLow.length === xHigh.length) {\n const width = [];\n for (let i = 0; i < xLow.length; i += 1) {\n width.push(xHigh[i] - xLow[i]);\n }\n seriesData.width = width;\n }\n } else if (plotStyle === dh.plot.SeriesPlotStyle.LINE) {\n const { x, xLow, xHigh, y, yLow, yHigh } = seriesData;\n if (xLow && xHigh && xLow !== x) {\n seriesData.error_x = ChartUtils.getPlotlyErrorBars(\n x as number[],\n xLow,\n xHigh\n );\n }\n if (yLow && yHigh && yLow !== y) {\n seriesData.error_y = ChartUtils.getPlotlyErrorBars(\n y as number[],\n yLow,\n yHigh\n );\n }\n } else if (plotStyle === dh.plot.SeriesPlotStyle.TREEMAP) {\n const { ids, labels } = seriesData;\n if (ids !== undefined && labels === undefined) {\n // If the user only provided IDs, we assign the IDs to the labels property as well automatically\n // Plotly uses the labels primarily, which from our API perspective seems kind of backwards\n seriesData.labels = ids;\n }\n }\n }\n\n getData(): Partial<PlotData>[] {\n return this.data;\n }\n\n getLayout(): Partial<Layout> {\n return this.layout;\n }\n\n getFilterColumnMap(): FilterColumnMap {\n return new Map(this.filterColumnMap);\n }\n\n isFilterRequired(): boolean {\n return (\n this.oneClicks.find(oneClick => oneClick.requireAllFiltersToDisplay) !=\n null\n );\n }\n\n /**\n * Sets the filter on the model. Will only set the values that have changed.\n * @param filterMap Map of filter column names to values\n */\n setFilter(filterMap: Map<string, string>): void {\n if (this.oneClicks.length === 0) {\n log.warn('Trying to set a filter, but no one click!');\n return;\n }\n\n log.debug('setFilter', filterMap);\n\n for (let i = 0; i < this.oneClicks.length; i += 1) {\n const oneClick = this.oneClicks[i];\n const { columns } = oneClick;\n // Need to get all the keys in case a filter was removed\n const keys = new Set([...filterMap.keys(), ...this.lastFilter.keys()]);\n keys.forEach(key => {\n const value = filterMap.get(key);\n if (\n this.lastFilter.get(key) !== value &&\n columns.find(column => column.name === key) != null\n ) {\n oneClick.setValueForColumn(key, value);\n }\n });\n }\n\n this.lastFilter = new Map(filterMap);\n }\n\n setFigure(figure: Figure): void {\n this.close();\n\n this.figure = figure;\n\n this.setTitle(this.getDefaultTitle());\n this.initAllSeries();\n this.updateAxisPositions();\n this.startListeningFigure();\n if (this.listeners.length > 0) {\n this.subscribeFigure();\n }\n }\n\n updateSettings(settings: Partial<ChartModelSettings>): void {\n this.settings = settings;\n }\n}\n\nexport default FigureChartModel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FigureChartModel.js","names":["memoize","debounce","set","dh","Log","ChartModel","ChartUtils","ChartTheme","log","module","FigureChartModel","constructor","figure","settings","theme","axes","getAllAxes","pendingSeries","i","length","series","addSeries","subscribe","ADD_SERIES_DEBOUNCE","columnType","formatter","dataFormatter","getColumnTypeFormatter","dhTimeZone","undefined","timeZone","getTimeZone","value","unwrapValue","wrapValue","range","rangeStart","rangeEnd","valueParser","getValueParser","chart","axis","source","getSourceForAxis","getRangeParser","handleFigureUpdated","bind","handleFigureDisconnected","handleFigureReconnected","handleFigureSeriesAdded","handleDownsampleStart","handleDownsampleFinish","handleDownsampleFail","handleDownsampleNeeded","handleRequestFailed","data","template","layout","makeDefaultLayout","grid","rows","columns","cols","pattern","seriesDataMap","Map","oneClicks","filterColumnMap","lastFilter","isConnected","seriesToProcess","Set","setTitle","getDefaultTitle","initAllSeries","updateAxisPositions","startListeningFigure","close","addPendingSeries","cancel","stopListeningFigure","charts","title","clear","activeSeriesNames","j","push","name","allSeriesNames","keys","inactiveSeriesNames","filter","seriesName","indexOf","delete","axisTypeMap","groupArray","seriesData","makeSeriesDataFromSeries","getSeriesVisibility","values","plotStyle","plot","SeriesPlotStyle","STACKED_BAR","barmode","PIE","hiddenlabels","getHiddenLabels","showlegend","oneClick","updateLayoutFormats","callback","listeners","subscribeFigure","unsubscribe","unsubscribeFigure","debug","isDownsamplingDisabled","DownsampleOptions","DISABLE","DEFAULT","addEventListener","Figure","EVENT_UPDATED","EVENT_SERIES_ADDED","EVENT_DISCONNECT","EVENT_RECONNECT","EVENT_DOWNSAMPLESTARTED","EVENT_DOWNSAMPLEFINISHED","EVENT_DOWNSAMPLEFAILED","EVENT_DOWNSAMPLENEEDED","Client","EVENT_REQUEST_FAILED","removeEventListener","event","fireDownsampleStart","detail","fireDownsampleFinish","error","fireDownsampleFail","info","fireDownsampleNeeded","figureUpdateEvent","seriesArray","debug2","sources","type","valueTranslator","getValueTranslator","dataArray","getArray","setDataArrayForSeries","size","fireLoadFinished","cleanSeries","fireUpdate","resubscribe","setFormatter","setDownsamplingDisabled","fireDisconnect","fireReconnect","setDimensions","rect","subtitleCount","match","margin","DEFAULT_MARGIN","t","SUBTITLE_LINE_HEIGHT","text","pad","DEFAULT_TITLE_PADDING","getPlotWidth","width","Math","max","l","r","getPlotHeight","height","b","plotWidth","plotHeight","updateFigureAxes","getAxisRangeParser","axisFormats","getAxisFormats","forEach","axisFormat","axisLayoutProperty","props","Object","assign","sourceType","get","property","getPlotlyProperty","HISTOGRAM","xLow","xHigh","LINE","x","y","yLow","yHigh","error_x","getPlotlyErrorBars","error_y","TREEMAP","ids","labels","getData","getLayout","getFilterColumnMap","isFilterRequired","find","requireAllFiltersToDisplay","setFilter","filterMap","warn","key","column","setValueForColumn","setFigure","updateSettings"],"sources":["../src/FigureChartModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport set from 'lodash.set';\nimport dh, {\n Axis,\n Chart,\n Figure,\n OneClick,\n Series,\n SourceType,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { Range } from '@deephaven/utils';\nimport { Layout, PlotData } from 'plotly.js';\nimport type {\n DateTimeColumnFormatter,\n Formatter,\n} from '@deephaven/jsapi-utils';\nimport ChartModel, { ChartEvent, FilterColumnMap } from './ChartModel';\nimport ChartUtils, { AxisTypeMap, ChartModelSettings } from './ChartUtils';\nimport ChartTheme from './ChartTheme';\n\nconst log = Log.module('FigureChartModel');\n\n/**\n * Takes a Figure object from a widget to make a model for a chart\n */\nclass FigureChartModel extends ChartModel {\n static ADD_SERIES_DEBOUNCE = 50;\n\n /**\n * @param figure The figure object created by the API\n * @param settings Chart settings\n */\n constructor(\n figure: Figure,\n settings: Partial<ChartModelSettings> = {},\n theme: typeof ChartTheme = ChartTheme\n ) {\n super();\n\n this.handleFigureUpdated = this.handleFigureUpdated.bind(this);\n this.handleFigureDisconnected = this.handleFigureDisconnected.bind(this);\n this.handleFigureReconnected = this.handleFigureReconnected.bind(this);\n this.handleFigureSeriesAdded = this.handleFigureSeriesAdded.bind(this);\n this.handleDownsampleStart = this.handleDownsampleStart.bind(this);\n this.handleDownsampleFinish = this.handleDownsampleFinish.bind(this);\n this.handleDownsampleFail = this.handleDownsampleFail.bind(this);\n this.handleDownsampleNeeded = this.handleDownsampleNeeded.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n\n this.figure = figure;\n this.settings = settings;\n this.theme = theme;\n this.data = [];\n const template = { data: {}, layout: ChartUtils.makeDefaultLayout(theme) };\n this.layout = {\n grid: {\n rows: figure.rows,\n columns: figure.cols,\n pattern: 'independent',\n },\n template,\n };\n this.seriesDataMap = new Map();\n this.pendingSeries = [];\n this.oneClicks = [];\n this.filterColumnMap = new Map();\n this.lastFilter = new Map();\n this.isConnected = true; // Assume figure is connected to start\n this.seriesToProcess = new Set();\n\n this.setTitle(this.getDefaultTitle());\n this.initAllSeries();\n this.updateAxisPositions();\n this.startListeningFigure();\n }\n\n figure: Figure;\n\n settings: Partial<ChartModelSettings>;\n\n theme: typeof ChartTheme;\n\n data: Partial<PlotData>[];\n\n layout: Partial<Layout>;\n\n seriesDataMap: Map<\n string,\n Partial<PlotData> & {\n xLow?: number[];\n xHigh?: number[];\n yLow?: number[];\n yHigh?: number[];\n }\n >;\n\n pendingSeries: Series[];\n\n oneClicks: OneClick[];\n\n filterColumnMap: FilterColumnMap;\n\n lastFilter: Map<string, string>;\n\n isConnected: boolean; // Assume figure is connected to start\n\n seriesToProcess;\n\n close(): void {\n this.figure.close();\n this.addPendingSeries.cancel();\n this.stopListeningFigure();\n }\n\n getDefaultTitle(): string {\n if (this.figure.charts.length > 0) {\n const chart = this.figure.charts[0];\n return chart.title;\n }\n\n return '';\n }\n\n initAllSeries(): void {\n this.oneClicks = [];\n this.filterColumnMap.clear();\n\n const { charts } = this.figure;\n const axes = ChartUtils.getAllAxes(this.figure);\n const activeSeriesNames: string[] = [];\n for (let i = 0; i < charts.length; i += 1) {\n const chart = charts[i];\n\n for (let j = 0; j < chart.series.length; j += 1) {\n const series = chart.series[j];\n activeSeriesNames.push(series.name);\n this.addSeries(series, axes);\n }\n }\n\n // Remove any series that no longer exist\n const allSeriesNames = [...this.seriesDataMap.keys()];\n const inactiveSeriesNames = allSeriesNames.filter(\n seriesName => activeSeriesNames.indexOf(seriesName) < 0\n );\n for (let i = 0; i < inactiveSeriesNames.length; i += 1) {\n const seriesName = inactiveSeriesNames[i];\n this.seriesDataMap.delete(seriesName);\n }\n this.seriesToProcess = new Set([...this.seriesDataMap.keys()]);\n }\n\n /**\n * Add a series to the model\n * @param series Series object to add\n * @param axes All the axis in this figure\n */\n addSeries(series: Series, axes: Axis[]): void {\n const axisTypeMap: AxisTypeMap = ChartUtils.groupArray(axes, 'type');\n\n const seriesData = ChartUtils.makeSeriesDataFromSeries(\n series,\n axisTypeMap,\n ChartUtils.getSeriesVisibility(series.name, this.settings),\n this.theme\n );\n\n this.seriesDataMap.set(series.name, seriesData);\n\n this.data = [...this.seriesDataMap.values()];\n\n if (series.plotStyle === dh.plot.SeriesPlotStyle.STACKED_BAR) {\n this.layout.barmode = 'stack';\n } else if (series.plotStyle === dh.plot.SeriesPlotStyle.PIE) {\n this.layout.hiddenlabels = ChartUtils.getHiddenLabels(this.settings);\n }\n\n this.layout.showlegend =\n this.data.length > 1 || series.plotStyle === dh.plot.SeriesPlotStyle.PIE;\n\n if (series.oneClick != null) {\n const { oneClick } = series;\n const { columns } = oneClick;\n for (let i = 0; i < columns.length; i += 1) {\n this.filterColumnMap.set(columns[i].name, columns[i]);\n }\n\n this.oneClicks.push(oneClick);\n }\n\n this.updateLayoutFormats();\n }\n\n // We need to debounce adding series so we subscribe to them all in the same tick\n // This should no longer be necessary after IDS-5049 lands\n addPendingSeries = debounce(() => {\n const axes = ChartUtils.getAllAxes(this.figure);\n const { pendingSeries } = this;\n for (let i = 0; i < pendingSeries.length; i += 1) {\n const series = pendingSeries[i];\n this.addSeries(series, axes);\n\n series.subscribe();\n // We'll get an update with the data after subscribing\n }\n\n this.pendingSeries = [];\n }, FigureChartModel.ADD_SERIES_DEBOUNCE);\n\n subscribe(callback: (event: ChartEvent) => void): void {\n super.subscribe(callback);\n\n if (this.listeners.length === 1) {\n // Need to initialize the series here as we may have missed some series when not subscribed\n this.initAllSeries();\n this.subscribeFigure();\n }\n }\n\n unsubscribe(callback: (event: ChartEvent) => void): void {\n super.unsubscribe(callback);\n\n if (this.listeners.length === 0) {\n this.unsubscribeFigure();\n }\n }\n\n subscribeFigure(): void {\n if (!this.isConnected) {\n log.debug('Ignoring subscribe when figure in disconnected state');\n return;\n }\n\n this.figure.subscribe(\n this.isDownsamplingDisabled\n ? dh.plot.DownsampleOptions.DISABLE\n : dh.plot.DownsampleOptions.DEFAULT\n );\n }\n\n unsubscribeFigure(): void {\n this.figure.unsubscribe();\n }\n\n startListeningFigure(): void {\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_UPDATED,\n this.handleFigureUpdated\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_SERIES_ADDED,\n this.handleFigureSeriesAdded\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DISCONNECT,\n this.handleFigureDisconnected\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_RECONNECT,\n this.handleFigureReconnected\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLESTARTED,\n this.handleDownsampleStart\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFINISHED,\n this.handleDownsampleFinish\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFAILED,\n this.handleDownsampleFail\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLENEEDED,\n this.handleDownsampleNeeded\n );\n this.figure.addEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n stopListeningFigure(): void {\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_UPDATED,\n this.handleFigureUpdated\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_SERIES_ADDED,\n this.handleFigureSeriesAdded\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DISCONNECT,\n this.handleFigureDisconnected\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_RECONNECT,\n this.handleFigureReconnected\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLESTARTED,\n this.handleDownsampleStart\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFINISHED,\n this.handleDownsampleFinish\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFAILED,\n this.handleDownsampleFail\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLENEEDED,\n this.handleDownsampleNeeded\n );\n this.figure.removeEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n getTimeZone = memoize(\n (columnType: string, formatter: Formatter | undefined) => {\n if (formatter != null) {\n const dataFormatter = formatter.getColumnTypeFormatter(columnType);\n if (dataFormatter != null) {\n return (dataFormatter as DateTimeColumnFormatter).dhTimeZone;\n }\n }\n return undefined;\n }\n );\n\n getValueTranslator = memoize(\n (columnType: string, formatter: Formatter | undefined) => {\n const timeZone = this.getTimeZone(columnType, formatter);\n return (value: unknown) => ChartUtils.unwrapValue(value, timeZone);\n }\n );\n\n /** Gets the parser for a value with the provided column type */\n getValueParser = memoize(\n (columnType: string, formatter: Formatter | undefined) => {\n const timeZone = this.getTimeZone(columnType, formatter);\n return (value: unknown) =>\n ChartUtils.wrapValue(value, columnType, timeZone);\n }\n );\n\n /**\n * Gets the range parser for a particular column type\n */\n getRangeParser = memoize(\n (columnType: string, formatter?: Formatter) => (range: Range) => {\n let [rangeStart, rangeEnd]: [unknown, unknown] = range;\n const valueParser = this.getValueParser(columnType, formatter);\n rangeStart = valueParser(rangeStart);\n rangeEnd = valueParser(rangeEnd);\n return [rangeStart, rangeEnd];\n }\n );\n\n /**\n * Gets the parser for parsing the range from an axis within the given chart\n */\n getAxisRangeParser = memoize(\n (chart: Chart, formatter?: Formatter) => (axis: Axis) => {\n const source = ChartUtils.getSourceForAxis(chart, axis);\n if (source) {\n return this.getRangeParser(source.columnType, formatter);\n }\n\n return (range: [unknown, unknown]) => range;\n }\n );\n\n handleDownsampleStart(event: ChartEvent): void {\n log.debug('Downsample started', event);\n\n this.fireDownsampleStart(event.detail);\n }\n\n handleDownsampleFinish(event: ChartEvent): void {\n log.debug('Downsample finished', event);\n\n this.fireDownsampleFinish(event.detail);\n }\n\n handleDownsampleFail(event: ChartEvent): void {\n log.error('Downsample failed', event);\n\n this.fireDownsampleFail(event.detail);\n }\n\n handleDownsampleNeeded(event: ChartEvent): void {\n log.info('Downsample needed', event);\n\n this.fireDownsampleNeeded(event.detail);\n }\n\n handleFigureUpdated(event: ChartEvent): void {\n const { detail: figureUpdateEvent } = event;\n const { series: seriesArray } = figureUpdateEvent;\n\n log.debug2('handleFigureUpdated', seriesArray);\n\n for (let i = 0; i < seriesArray.length; i += 1) {\n const series = seriesArray[i];\n\n log.debug2('handleFigureUpdated updating series', series.name);\n\n const { sources } = series;\n for (let j = 0; j < sources.length; j += 1) {\n const source = sources[j];\n const { columnType, type } = source;\n const valueTranslator = this.getValueTranslator(\n columnType,\n this.formatter\n );\n const dataArray = figureUpdateEvent.getArray(\n series,\n type,\n valueTranslator\n );\n this.setDataArrayForSeries(series, type, dataArray);\n }\n\n this.seriesToProcess.delete(series.name);\n if (this.seriesToProcess.size === 0) {\n this.fireLoadFinished();\n }\n\n this.cleanSeries(series);\n }\n\n const { data } = this;\n this.fireUpdate(data);\n }\n\n handleRequestFailed(event: ChartEvent): void {\n log.error('Request failed', event);\n }\n\n /**\n * Resubscribe to the figure, should be done if settings change\n */\n resubscribe(): void {\n if (this.listeners.length > 0) {\n this.unsubscribeFigure();\n this.subscribeFigure();\n }\n }\n\n setFormatter(formatter: Formatter): void {\n super.setFormatter(formatter);\n\n this.updateLayoutFormats();\n\n // Unsubscribe and resubscribe to trigger a data update\n // Data may need to be translated again because of the new formatter\n this.resubscribe();\n }\n\n setDownsamplingDisabled(isDownsamplingDisabled: boolean): void {\n super.setDownsamplingDisabled(isDownsamplingDisabled);\n\n this.resubscribe();\n }\n\n handleFigureDisconnected(event: CustomEvent): void {\n log.debug('Figure disconnected', event);\n\n this.isConnected = false;\n\n if (this.listeners.length > 0) {\n this.unsubscribeFigure();\n }\n\n this.fireDisconnect();\n }\n\n handleFigureReconnected(event: CustomEvent): void {\n log.debug('Figure reconnected', event);\n\n this.isConnected = true;\n\n // It's possible the series have changed completely, as the query could have been changed\n this.initAllSeries();\n\n this.fireReconnect();\n\n if (this.listeners.length > 0) {\n this.subscribeFigure();\n }\n }\n\n handleFigureSeriesAdded(event: { detail: Series }): void {\n const { detail: series } = event;\n log.debug('handleFigureSeriesAdded', series);\n\n this.pendingSeries.push(series);\n this.addPendingSeries();\n }\n\n setDimensions(rect: DOMRect): void {\n super.setDimensions(rect);\n\n this.updateAxisPositions();\n }\n\n setTitle(title: string): void {\n super.setTitle(title);\n\n // Need to recalculate the padding based on how many lines of text the title is\n // Plotly doesn't handle positioning it correctly, and it's an undocumented feature\n const subtitleCount = (title ?? '').match(/<br>/g)?.length ?? 0;\n const margin =\n ChartUtils.DEFAULT_MARGIN.t +\n subtitleCount * ChartUtils.SUBTITLE_LINE_HEIGHT;\n\n if (this.layout.margin) {\n this.layout.margin.t = margin;\n } else {\n this.layout.margin = { t: margin };\n }\n\n if (typeof this.layout.title === 'string') {\n this.layout.title = title;\n } else {\n this.layout.title = { ...this.layout.title };\n this.layout.title.text = title;\n this.layout.title.pad = { ...this.layout.title.pad };\n this.layout.title.pad.t =\n ChartUtils.DEFAULT_TITLE_PADDING.t +\n subtitleCount * ChartUtils.SUBTITLE_LINE_HEIGHT * 0.5;\n }\n }\n\n getPlotWidth(): number {\n if (!this.rect || !this.rect.width) {\n return 0;\n }\n\n return Math.max(\n this.rect.width -\n (this.layout.margin?.l ?? 0) -\n (this.layout.margin?.r ?? 0),\n 0\n );\n }\n\n getPlotHeight(): number {\n if (!this.rect || !this.rect.height) {\n return 0;\n }\n\n return Math.max(\n this.rect.height -\n (this.layout.margin?.t ?? 0) -\n (this.layout.margin?.b ?? 0),\n 0\n );\n }\n\n updateAxisPositions(): void {\n const plotWidth = this.getPlotWidth();\n const plotHeight = this.getPlotHeight();\n ChartUtils.updateFigureAxes(\n this.layout,\n this.figure,\n chart => this.getAxisRangeParser(chart, this.formatter),\n plotWidth,\n plotHeight,\n this.theme\n );\n }\n\n /**\n * Updates the format patterns used\n */\n updateLayoutFormats(): void {\n if (!this.formatter) {\n return;\n }\n\n const axisFormats = ChartUtils.getAxisFormats(this.figure, this.formatter);\n axisFormats.forEach((axisFormat, axisLayoutProperty) => {\n log.debug(\n `Assigning ${axisLayoutProperty}`,\n this.layout[axisLayoutProperty],\n axisFormat\n );\n\n const props = this.layout[axisLayoutProperty];\n if (props != null) {\n Object.assign(props, axisFormat);\n } else {\n log.debug(`Ignoring null layout.${axisLayoutProperty}`);\n }\n });\n }\n\n /**\n * Set a specific array for the array of series properties specified.\n * @param series The series to set the data array for.\n * @param sourceType The source type within that series to set the data for.\n * @param dataArray The array to use for the data for this series source.\n */\n setDataArrayForSeries(\n series: Series,\n sourceType: SourceType,\n dataArray: unknown[]\n ): void {\n const { name, plotStyle } = series;\n\n const seriesData = this.seriesDataMap.get(name);\n const property = ChartUtils.getPlotlyProperty(plotStyle, sourceType);\n\n if (seriesData) {\n set(seriesData, property, dataArray);\n }\n }\n\n /**\n * After setting all the data in the series data, we may need to adjust some other properties\n * Eg. Calculating the width from the xLow/xHigh values; Plot.ly uses `width` instead of a low/high\n * value for x.\n * @param series The series to clean the data for\n */\n cleanSeries(series: Series): void {\n const { name, plotStyle } = series;\n const seriesData = this.seriesDataMap.get(name);\n if (seriesData == null) {\n return;\n }\n if (plotStyle === dh.plot.SeriesPlotStyle.HISTOGRAM) {\n const { xLow, xHigh } = seriesData;\n if (xLow && xHigh && xLow.length === xHigh.length) {\n const width = [];\n for (let i = 0; i < xLow.length; i += 1) {\n width.push(xHigh[i] - xLow[i]);\n }\n seriesData.width = width;\n }\n } else if (plotStyle === dh.plot.SeriesPlotStyle.LINE) {\n const { x, xLow, xHigh, y, yLow, yHigh } = seriesData;\n if (xLow && xHigh && xLow !== x) {\n seriesData.error_x = ChartUtils.getPlotlyErrorBars(\n x as number[],\n xLow,\n xHigh\n );\n }\n if (yLow && yHigh && yLow !== y) {\n seriesData.error_y = ChartUtils.getPlotlyErrorBars(\n y as number[],\n yLow,\n yHigh\n );\n }\n } else if (plotStyle === dh.plot.SeriesPlotStyle.TREEMAP) {\n const { ids, labels } = seriesData;\n if (ids !== undefined && labels === undefined) {\n // If the user only provided IDs, we assign the IDs to the labels property as well automatically\n // Plotly uses the labels primarily, which from our API perspective seems kind of backwards\n seriesData.labels = ids;\n }\n }\n }\n\n getData(): Partial<PlotData>[] {\n return this.data;\n }\n\n getLayout(): Partial<Layout> {\n return this.layout;\n }\n\n getFilterColumnMap(): FilterColumnMap {\n return new Map(this.filterColumnMap);\n }\n\n isFilterRequired(): boolean {\n return (\n this.oneClicks.find(oneClick => oneClick.requireAllFiltersToDisplay) !=\n null\n );\n }\n\n /**\n * Sets the filter on the model. Will only set the values that have changed.\n * @param filterMap Map of filter column names to values\n */\n setFilter(filterMap: Map<string, string>): void {\n if (this.oneClicks.length === 0) {\n log.warn('Trying to set a filter, but no one click!');\n return;\n }\n\n log.debug('setFilter', filterMap);\n\n for (let i = 0; i < this.oneClicks.length; i += 1) {\n const oneClick = this.oneClicks[i];\n const { columns } = oneClick;\n // Need to get all the keys in case a filter was removed\n const keys = new Set([...filterMap.keys(), ...this.lastFilter.keys()]);\n keys.forEach(key => {\n const value = filterMap.get(key);\n if (\n this.lastFilter.get(key) !== value &&\n columns.find(column => column.name === key) != null\n ) {\n oneClick.setValueForColumn(key, value);\n }\n });\n }\n\n this.lastFilter = new Map(filterMap);\n }\n\n setFigure(figure: Figure): void {\n this.close();\n\n this.figure = figure;\n\n this.setTitle(this.getDefaultTitle());\n this.initAllSeries();\n this.updateAxisPositions();\n this.startListeningFigure();\n if (this.listeners.length > 0) {\n this.subscribeFigure();\n }\n }\n\n updateSettings(settings: Partial<ChartModelSettings>): void {\n this.settings = settings;\n }\n}\n\nexport default FigureChartModel;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/chart",
|
|
3
|
-
"version": "0.22.3-beta.
|
|
3
|
+
"version": "0.22.3-beta.18+8d1ab1f",
|
|
4
4
|
"description": "Deephaven Chart",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@deephaven/icons": "^0.22.3-beta.
|
|
26
|
-
"@deephaven/jsapi-shim": "^0.22.3-beta.
|
|
27
|
-
"@deephaven/jsapi-utils": "^0.22.3-beta.
|
|
28
|
-
"@deephaven/log": "^0.22.3-beta.
|
|
29
|
-
"@deephaven/utils": "^0.22.3-beta.
|
|
25
|
+
"@deephaven/icons": "^0.22.3-beta.18+8d1ab1f",
|
|
26
|
+
"@deephaven/jsapi-shim": "^0.22.3-beta.18+8d1ab1f",
|
|
27
|
+
"@deephaven/jsapi-utils": "^0.22.3-beta.18+8d1ab1f",
|
|
28
|
+
"@deephaven/log": "^0.22.3-beta.18+8d1ab1f",
|
|
29
|
+
"@deephaven/utils": "^0.22.3-beta.18+8d1ab1f",
|
|
30
30
|
"deep-equal": "^2.0.5",
|
|
31
31
|
"lodash.debounce": "^4.0.8",
|
|
32
32
|
"lodash.set": "^4.3.2",
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
"react": "^17.x"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@deephaven/mocks": "^0.22.3-beta.
|
|
44
|
-
"@deephaven/tsconfig": "^0.22.3-beta.
|
|
43
|
+
"@deephaven/mocks": "^0.22.3-beta.18+8d1ab1f",
|
|
44
|
+
"@deephaven/tsconfig": "^0.22.3-beta.18+8d1ab1f",
|
|
45
45
|
"@types/plotly.js": "^2.12.2"
|
|
46
46
|
},
|
|
47
47
|
"files": [
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"publishConfig": {
|
|
54
54
|
"access": "public"
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "8d1ab1fa6e893a438891194f922e069417b7f2d0"
|
|
57
57
|
}
|