@deephaven/chart 0.38.1-beta.9 → 0.38.1-chart-refactor.20
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.
- package/dist/Chart.d.ts +5 -3
- package/dist/Chart.d.ts.map +1 -1
- package/dist/Chart.js +9 -4
- package/dist/Chart.js.map +1 -1
- package/dist/ChartModel.d.ts +2 -2
- package/dist/ChartModel.d.ts.map +1 -1
- package/dist/ChartModel.js.map +1 -1
- package/dist/ChartTestUtils.d.ts +17 -15
- package/dist/ChartTestUtils.d.ts.map +1 -1
- package/dist/ChartTestUtils.js +40 -28
- package/dist/ChartTestUtils.js.map +1 -1
- package/dist/ChartUtils.d.ts.map +1 -1
- package/dist/ChartUtils.js +11 -1
- package/dist/ChartUtils.js.map +1 -1
- package/dist/FigureChartModel.d.ts +3 -3
- package/dist/FigureChartModel.d.ts.map +1 -1
- package/dist/FigureChartModel.js +1 -1
- package/dist/FigureChartModel.js.map +1 -1
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FigureChartModel.js","names":["memoize","debounce","set","Log","ChartModel","ChartUtils","ChartTheme","log","module","FigureChartModel","constructor","dh","figure","settings","theme","axes","getAllAxes","pendingSeries","series","i","chart","charts","find","c","includes","addSeries","showLegend","subscribe","length","ADD_SERIES_DEBOUNCE","columnType","formatter","dataFormatter","getColumnTypeFormatter","dhTimeZone","undefined","timeZone","getTimeZone","value","chartUtils","unwrapValue","wrapValue","range","rangeStart","rangeEnd","valueParser","getValueParser","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","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","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 type {\n Axis,\n Chart,\n dh as DhType,\n Figure,\n OneClick,\n Series,\n SourceType,\n} from '@deephaven/jsapi-types';\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 } from './ChartModel';\nimport ChartUtils, {\n AxisTypeMap,\n ChartModelSettings,\n FilterColumnMap,\n FilterMap,\n} 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 dh JSAPI instance\n * @param figure The figure object created by the API\n * @param settings Chart settings\n */\n constructor(\n dh: DhType,\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.dh = dh;\n this.chartUtils = new ChartUtils(dh);\n this.figure = figure;\n this.settings = settings;\n this.theme = theme;\n this.data = [];\n const template = {\n data: {},\n layout: this.chartUtils.makeDefaultLayout(theme),\n };\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 chartUtils: ChartUtils;\n\n dh: DhType;\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: FilterMap;\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, chart.showLegend);\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 * @param showLegend Whether this series should show the legend or not\n */\n addSeries(series: Series, axes: Axis[], showLegend: boolean | null): void {\n const { dh } = this;\n const axisTypeMap: AxisTypeMap = ChartUtils.groupArray(axes, 'type');\n\n const seriesData = this.chartUtils.makeSeriesDataFromSeries(\n series,\n axisTypeMap,\n ChartUtils.getSeriesVisibility(series.name, this.settings),\n showLegend,\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 // We only want to force hide the legend if there is only one series that is not a PIE\n // Right now this means that if the user only has one series, they cannot explicitly show the legend until deephaven-core#3254 is implemented\n // TODO: deephaven-core#3254, once done, this can be removed.\n this.layout.showlegend =\n this.data.length > 1 || series.plotStyle === dh.plot.SeriesPlotStyle.PIE\n ? showLegend ?? undefined\n : false;\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 const chart = this.figure.charts.find(c => c.series.includes(series));\n this.addSeries(series, axes, chart?.showLegend ?? null);\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 ? this.dh.plot.DownsampleOptions.DISABLE\n : this.dh.plot.DownsampleOptions.DEFAULT\n );\n }\n\n unsubscribeFigure(): void {\n this.figure.unsubscribe();\n }\n\n startListeningFigure(): void {\n const { dh } = this;\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 const { dh } = this;\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) => this.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 this.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 this.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 = this.chartUtils.getAxisFormats(\n this.figure,\n this.formatter\n );\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 = this.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 { dh } = this;\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: FilterMap): 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","Log","ChartModel","ChartUtils","ChartTheme","log","module","FigureChartModel","constructor","dh","figure","settings","theme","axes","getAllAxes","pendingSeries","series","i","chart","charts","find","c","includes","addSeries","showLegend","subscribe","length","ADD_SERIES_DEBOUNCE","columnType","formatter","dataFormatter","getColumnTypeFormatter","dhTimeZone","undefined","timeZone","getTimeZone","value","chartUtils","unwrapValue","wrapValue","range","rangeStart","rangeEnd","valueParser","getValueParser","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","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","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 type {\n Axis,\n Chart,\n dh as DhType,\n Figure,\n OneClick,\n Series,\n SourceType,\n} from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { Range } from '@deephaven/utils';\nimport { Layout, Data, PlotData } from 'plotly.js';\nimport type {\n DateTimeColumnFormatter,\n Formatter,\n} from '@deephaven/jsapi-utils';\nimport ChartModel, { ChartEvent } from './ChartModel';\nimport ChartUtils, {\n AxisTypeMap,\n ChartModelSettings,\n FilterColumnMap,\n FilterMap,\n} 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 dh JSAPI instance\n * @param figure The figure object created by the API\n * @param settings Chart settings\n */\n constructor(\n dh: DhType,\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.dh = dh;\n this.chartUtils = new ChartUtils(dh);\n this.figure = figure;\n this.settings = settings;\n this.theme = theme;\n this.data = [];\n const template = {\n data: {},\n layout: this.chartUtils.makeDefaultLayout(theme),\n };\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 chartUtils: ChartUtils;\n\n dh: DhType;\n\n figure: Figure;\n\n settings: Partial<ChartModelSettings>;\n\n theme: typeof ChartTheme;\n\n data: Partial<Data>[];\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: FilterMap;\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, chart.showLegend);\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 * @param showLegend Whether this series should show the legend or not\n */\n addSeries(series: Series, axes: Axis[], showLegend: boolean | null): void {\n const { dh } = this;\n const axisTypeMap: AxisTypeMap = ChartUtils.groupArray(axes, 'type');\n\n const seriesData = this.chartUtils.makeSeriesDataFromSeries(\n series,\n axisTypeMap,\n ChartUtils.getSeriesVisibility(series.name, this.settings),\n showLegend,\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 // We only want to force hide the legend if there is only one series that is not a PIE\n // Right now this means that if the user only has one series, they cannot explicitly show the legend until deephaven-core#3254 is implemented\n // TODO: deephaven-core#3254, once done, this can be removed.\n this.layout.showlegend =\n this.data.length > 1 || series.plotStyle === dh.plot.SeriesPlotStyle.PIE\n ? showLegend ?? undefined\n : false;\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 const chart = this.figure.charts.find(c => c.series.includes(series));\n this.addSeries(series, axes, chart?.showLegend ?? null);\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 ? this.dh.plot.DownsampleOptions.DISABLE\n : this.dh.plot.DownsampleOptions.DEFAULT\n );\n }\n\n unsubscribeFigure(): void {\n this.figure.unsubscribe();\n }\n\n startListeningFigure(): void {\n const { dh } = this;\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 const { dh } = this;\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) => this.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 this.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 != null) {\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 this.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 = this.chartUtils.getAxisFormats(\n this.figure,\n this.formatter\n );\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 = this.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 { dh } = this;\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<Data>[] {\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: FilterMap): 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.38.1-
|
|
3
|
+
"version": "0.38.1-chart-refactor.20+052a4610",
|
|
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.38.1-
|
|
26
|
-
"@deephaven/jsapi-types": "^0.38.1-
|
|
27
|
-
"@deephaven/jsapi-utils": "^0.38.1-
|
|
28
|
-
"@deephaven/log": "^0.38.1-
|
|
29
|
-
"@deephaven/utils": "^0.38.1-
|
|
25
|
+
"@deephaven/icons": "^0.38.1-chart-refactor.20+052a4610",
|
|
26
|
+
"@deephaven/jsapi-types": "^0.38.1-chart-refactor.20+052a4610",
|
|
27
|
+
"@deephaven/jsapi-utils": "^0.38.1-chart-refactor.20+052a4610",
|
|
28
|
+
"@deephaven/log": "^0.38.1-chart-refactor.20+052a4610",
|
|
29
|
+
"@deephaven/utils": "^0.38.1-chart-refactor.20+052a4610",
|
|
30
30
|
"deep-equal": "^2.0.5",
|
|
31
31
|
"lodash.debounce": "^4.0.8",
|
|
32
32
|
"lodash.set": "^4.3.2",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"react": "^17.x"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@deephaven/jsapi-shim": "^0.38.1-
|
|
44
|
-
"@deephaven/mocks": "^0.38.1-
|
|
45
|
-
"@deephaven/tsconfig": "^0.38.1-
|
|
43
|
+
"@deephaven/jsapi-shim": "^0.38.1-chart-refactor.20+052a4610",
|
|
44
|
+
"@deephaven/mocks": "^0.38.1-chart-refactor.20+052a4610",
|
|
45
|
+
"@deephaven/tsconfig": "^0.38.1-chart-refactor.20+052a4610",
|
|
46
46
|
"@types/plotly.js": "^2.12.11"
|
|
47
47
|
},
|
|
48
48
|
"files": [
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"publishConfig": {
|
|
55
55
|
"access": "public"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "052a4610ca82d250aa07ac1d08ac277300d420b7"
|
|
58
58
|
}
|