@deephaven/chart 0.15.5 → 0.15.6-beta.5
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 -12
- package/dist/Chart.d.ts.map +1 -1
- package/dist/Chart.js +7 -3
- package/dist/Chart.js.map +1 -1
- package/dist/ChartModel.d.ts +12 -11
- package/dist/ChartModel.d.ts.map +1 -1
- package/dist/ChartModel.js +3 -3
- package/dist/ChartModel.js.map +1 -1
- package/dist/ChartModelFactory.d.ts +2 -7
- package/dist/ChartModelFactory.d.ts.map +1 -1
- package/dist/ChartModelFactory.js.map +1 -1
- package/dist/ChartTestUtils.d.ts +16 -15
- package/dist/ChartTestUtils.d.ts.map +1 -1
- package/dist/ChartTestUtils.js +5 -0
- package/dist/ChartTestUtils.js.map +1 -1
- package/dist/ChartUtils.d.ts +252 -225
- package/dist/ChartUtils.d.ts.map +1 -1
- package/dist/ChartUtils.js +216 -174
- package/dist/ChartUtils.js.map +1 -1
- package/dist/FigureChartModel.d.ts +70 -106
- package/dist/FigureChartModel.d.ts.map +1 -1
- package/dist/FigureChartModel.js +90 -36
- package/dist/FigureChartModel.js.map +1 -1
- package/dist/MockChartModel.d.ts +3 -201
- package/dist/MockChartModel.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +10 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/FigureChartModel.js"],"names":["memoize","debounce","set","dh","Log","ChartModel","ChartUtils","log","module","FigureChartModel","constructor","figure","settings","theme","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","addPendingSeries","ADD_SERIES_DEBOUNCE","data","layout","makeDefaultLayout","seriesDataMap","Map","pendingSeries","oneClicks","filterColumnMap","lastFilter","isConnected","seriesToProcess","Set","setTitle","getDefaultTitle","initAllSeries","updateAxisPositions","startListeningFigure","close","cancel","stopListeningFigure","charts","length","title","clear","activeSeriesNames","i","j","series","push","name","addSeries","allSeriesNames","keys","inactiveSeriesNames","filter","seriesName","indexOf","delete","getChartForSeries","error","axisTypeMap","groupArray","axes","seriesData","makeSeriesDataFromSeries","getSeriesVisibility","values","plotStyle","plot","SeriesPlotStyle","STACKED_BAR","barmode","PIE","hiddenlabels","getHiddenLabels","showlegend","oneClick","columns","updateLayoutFormats","subscribe","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","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","t","DEFAULT_MARGIN","SUBTITLE_LINE_HEIGHT","text","pad","DEFAULT_TITLE_PADDING","getPlotWidth","width","Math","max","l","r","getPlotHeight","height","b","plotWidth","plotHeight","axisRangeParser","getAxisRangeParser","updateLayoutAxes","axisFormats","getAxisFormats","forEach","axisFormat","axisLayoutProperty","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"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport set from 'lodash.set';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport ChartModel from './ChartModel';\nimport ChartUtils from './ChartUtils';\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.plot.Figure} figure The figure object created by the API\n * @param {Object} settings Chart settings\n */\n constructor(figure, settings = {}, theme = {}) {\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 // 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 this.addPendingSeries = debounce(\n this.addPendingSeries.bind(this),\n FigureChartModel.ADD_SERIES_DEBOUNCE\n );\n\n this.figure = figure;\n this.settings = settings;\n this.theme = theme;\n this.data = [];\n this.layout = ChartUtils.makeDefaultLayout(theme);\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 close() {\n this.figure.close();\n this.addPendingSeries.cancel();\n this.stopListeningFigure();\n }\n\n getDefaultTitle() {\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() {\n this.oneClicks = [];\n this.filterColumnMap.clear();\n\n const { charts } = this.figure;\n const activeSeriesNames = [];\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);\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; i += 1) {\n const seriesName = inactiveSeriesNames[i];\n this.seriesDataMap.delete(seriesName);\n }\n this.seriesToProcess = new Set([...this.seriesDataMap.keys()]);\n }\n\n addSeries(series) {\n const chart = ChartUtils.getChartForSeries(this.figure, series);\n if (chart == null) {\n log.error('Unable to find matching chart for series', series);\n return;\n }\n\n const axisTypeMap = ChartUtils.groupArray(chart.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) {\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 addPendingSeries() {\n const { pendingSeries } = this;\n for (let i = 0; i < pendingSeries.length; i += 1) {\n const series = pendingSeries[i];\n this.addSeries(series);\n\n series.subscribe();\n // We'll get an update with the data after subscribing\n }\n\n this.pendingSeries = [];\n }\n\n subscribe(...args) {\n super.subscribe(...args);\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(...args) {\n super.unsubscribe(...args);\n\n if (this.listeners.length === 0) {\n this.unsubscribeFigure();\n }\n }\n\n subscribeFigure() {\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() {\n this.figure.unsubscribe();\n }\n\n startListeningFigure() {\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() {\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 => 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 => ChartUtils.wrapValue(value, columnType, timeZone);\n });\n\n /**\n * Gets the range parser for a particular column type\n */\n getRangeParser = memoize((columnType, formatter) => range => {\n let [rangeStart, rangeEnd] = range;\n const valueParser = this.getValueParser(columnType, formatter);\n rangeStart = valueParser(rangeStart);\n rangeEnd = valueParser(rangeEnd);\n return [rangeStart, rangeEnd];\n });\n\n /**\n * Gets the parser for parsing the range from an axis within the given chart\n */\n getAxisRangeParser = memoize((chart, formatter) => axis => {\n const source = ChartUtils.getSourceForAxis(chart, axis);\n if (source) {\n return this.getRangeParser(source.columnType, formatter);\n }\n\n return range => range;\n });\n\n handleDownsampleStart(event) {\n log.debug('Downsample started', event);\n\n this.fireDownsampleStart(event.detail);\n }\n\n handleDownsampleFinish(event) {\n log.debug('Downsample finished', event);\n\n this.fireDownsampleFinish(event.detail);\n }\n\n handleDownsampleFail(event) {\n log.error('Downsample failed', event);\n\n this.fireDownsampleFail(event.detail);\n }\n\n handleDownsampleNeeded(event) {\n log.info('Downsample needed', event);\n\n this.fireDownsampleNeeded(event.detail);\n }\n\n handleFigureUpdated(event) {\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) {\n log.error('Request failed', event);\n }\n\n /**\n * Resubscribe to the figure, should be done if settings change\n */\n resubscribe() {\n if (this.listeners.length > 0) {\n this.unsubscribeFigure();\n this.subscribeFigure();\n }\n }\n\n setFormatter(formatter) {\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(...args) {\n super.setDownsamplingDisabled(...args);\n\n this.resubscribe();\n }\n\n handleFigureDisconnected(event) {\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) {\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) {\n const { detail: series } = event;\n log.debug('handleFigureSeriesAdded', series);\n\n this.pendingSeries.push(series);\n\n this.addPendingSeries();\n }\n\n setDimensions(rect) {\n super.setDimensions(rect);\n\n this.updateAxisPositions();\n }\n\n setTitle(title) {\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 this.layout.margin.t =\n ChartUtils.DEFAULT_MARGIN.t +\n subtitleCount * ChartUtils.SUBTITLE_LINE_HEIGHT;\n this.layout.title.text = title;\n this.layout.title.pad.t =\n ChartUtils.DEFAULT_TITLE_PADDING.t +\n subtitleCount * ChartUtils.SUBTITLE_LINE_HEIGHT * 0.5;\n }\n\n getPlotWidth() {\n if (!this.rect || !this.rect.width) {\n return 0;\n }\n\n return Math.max(\n this.rect.width - this.layout.margin.l - this.layout.margin.r,\n 0\n );\n }\n\n getPlotHeight() {\n if (!this.rect || !this.rect.height) {\n return 0;\n }\n\n return Math.max(\n this.rect.height - this.layout.margin.t - this.layout.margin.b,\n 0\n );\n }\n\n updateAxisPositions() {\n const plotWidth = this.getPlotWidth();\n const plotHeight = this.getPlotHeight();\n\n for (let i = 0; i < this.figure.charts.length; i += 1) {\n const chart = this.figure.charts[i];\n const axisRangeParser = this.getAxisRangeParser(chart, this.formatter);\n ChartUtils.updateLayoutAxes(\n this.layout,\n chart.axes,\n plotWidth,\n plotHeight,\n axisRangeParser,\n this.theme\n );\n }\n }\n\n /**\n * Updates the format patterns used\n */\n updateLayoutFormats() {\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 if (this.layout[axisLayoutProperty] != null) {\n Object.assign(this.layout[axisLayoutProperty], 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 {dh.Series} series The series to set the data array for.\n * @param {dh.plot.SourceType} sourceType The source type within that series to set the data for.\n * @param {Any[]} dataArray The array to use for the data for this series source.\n */\n setDataArrayForSeries(series, sourceType, dataArray) {\n const { name, plotStyle } = series;\n\n const seriesData = this.seriesDataMap.get(name);\n const property = ChartUtils.getPlotlyProperty(plotStyle, sourceType);\n set(seriesData, property, dataArray);\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 {dh.Series} series The series to clean the data for\n */\n cleanSeries(series) {\n const { name, plotStyle } = series;\n const seriesData = this.seriesDataMap.get(name);\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(x, xLow, xHigh);\n }\n if (yLow && yHigh && yLow !== y) {\n seriesData.error_y = ChartUtils.getPlotlyErrorBars(y, yLow, yHigh);\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() {\n return this.data;\n }\n\n getLayout() {\n return this.layout;\n }\n\n getFilterColumnMap() {\n return new Map(this.filterColumnMap);\n }\n\n isFilterRequired() {\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 {Map<String, String>} filterMap Map of filter column names to values\n */\n setFilter(filterMap) {\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) {\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) {\n this.settings = settings;\n }\n}\n\nexport default FigureChartModel;\n"],"file":"FigureChartModel.js"}
|
|
1
|
+
{"version":3,"sources":["../src/FigureChartModel.ts"],"names":["memoize","debounce","set","dh","Log","ChartModel","ChartUtils","ChartTheme","log","module","FigureChartModel","constructor","figure","settings","theme","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","layout","makeDefaultLayout","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","getChartForSeries","error","axisTypeMap","groupArray","axes","seriesData","makeSeriesDataFromSeries","getSeriesVisibility","values","plotStyle","plot","SeriesPlotStyle","STACKED_BAR","barmode","PIE","hiddenlabels","getHiddenLabels","showlegend","oneClick","columns","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","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","axisRangeParser","getAxisRangeParser","updateLayoutAxes","axisFormats","getAxisFormats","forEach","axisFormat","axisLayoutProperty","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"],"mappings":"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","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 // 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\n this.figure = figure;\n this.settings = settings;\n this.theme = theme;\n this.data = [];\n this.layout = ChartUtils.makeDefaultLayout(theme);\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 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);\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 addSeries(series: Series): void {\n const chart = ChartUtils.getChartForSeries(this.figure, series);\n if (chart == null) {\n log.error('Unable to find matching chart for series', series);\n return;\n }\n\n const axisTypeMap: AxisTypeMap = ChartUtils.groupArray(chart.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) {\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 addPendingSeries = debounce(() => {\n const { pendingSeries } = this;\n for (let i = 0; i < pendingSeries.length; i += 1) {\n const series = pendingSeries[i];\n this.addSeries(series);\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\n for (let i = 0; i < this.figure.charts.length; i += 1) {\n const chart = this.figure.charts[i];\n const axisRangeParser = this.getAxisRangeParser(chart, this.formatter);\n ChartUtils.updateLayoutAxes(\n this.layout,\n chart.axes,\n plotWidth,\n plotHeight,\n axisRangeParser,\n this.theme\n );\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 if (this.layout[axisLayoutProperty] != null) {\n Object.assign(this.layout[axisLayoutProperty], 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"],"file":"FigureChartModel.js"}
|
package/dist/MockChartModel.d.ts
CHANGED
|
@@ -84,73 +84,7 @@ declare class MockChartModel extends ChartModel {
|
|
|
84
84
|
width: number;
|
|
85
85
|
};
|
|
86
86
|
}[];
|
|
87
|
-
static makeDefaultLayout():
|
|
88
|
-
autosize: boolean;
|
|
89
|
-
colorway: string[];
|
|
90
|
-
font: {
|
|
91
|
-
family: string;
|
|
92
|
-
};
|
|
93
|
-
title: {
|
|
94
|
-
font: {
|
|
95
|
-
color: any;
|
|
96
|
-
};
|
|
97
|
-
yanchor: string;
|
|
98
|
-
pad: {
|
|
99
|
-
t: number;
|
|
100
|
-
};
|
|
101
|
-
y: number;
|
|
102
|
-
};
|
|
103
|
-
legend: {
|
|
104
|
-
font: {
|
|
105
|
-
color: any;
|
|
106
|
-
};
|
|
107
|
-
};
|
|
108
|
-
margin: {
|
|
109
|
-
l: number;
|
|
110
|
-
r: number;
|
|
111
|
-
t: number;
|
|
112
|
-
b: number;
|
|
113
|
-
pad: number;
|
|
114
|
-
};
|
|
115
|
-
xaxis: {
|
|
116
|
-
automargin: boolean;
|
|
117
|
-
gridcolor: any;
|
|
118
|
-
linecolor: any;
|
|
119
|
-
rangeslider: {
|
|
120
|
-
visible: boolean;
|
|
121
|
-
};
|
|
122
|
-
showline: boolean;
|
|
123
|
-
ticklen: number;
|
|
124
|
-
tickcolor: any;
|
|
125
|
-
tickfont: {
|
|
126
|
-
color: any;
|
|
127
|
-
};
|
|
128
|
-
title: {
|
|
129
|
-
font: {
|
|
130
|
-
color: any;
|
|
131
|
-
};
|
|
132
|
-
};
|
|
133
|
-
};
|
|
134
|
-
yaxis: {
|
|
135
|
-
automargin: boolean;
|
|
136
|
-
gridcolor: any;
|
|
137
|
-
linecolor: any;
|
|
138
|
-
rangeslider: {
|
|
139
|
-
visible: boolean;
|
|
140
|
-
};
|
|
141
|
-
showline: boolean;
|
|
142
|
-
ticklen: number;
|
|
143
|
-
tickcolor: any;
|
|
144
|
-
tickfont: {
|
|
145
|
-
color: any;
|
|
146
|
-
};
|
|
147
|
-
title: {
|
|
148
|
-
font: {
|
|
149
|
-
color: any;
|
|
150
|
-
};
|
|
151
|
-
};
|
|
152
|
-
};
|
|
153
|
-
};
|
|
87
|
+
static makeDefaultLayout(): Partial<import("plotly.js").Layout>;
|
|
154
88
|
constructor({ data, layout, filterFields, }?: {
|
|
155
89
|
data?: {
|
|
156
90
|
name: string;
|
|
@@ -164,73 +98,7 @@ declare class MockChartModel extends ChartModel {
|
|
|
164
98
|
width: number;
|
|
165
99
|
};
|
|
166
100
|
}[] | undefined;
|
|
167
|
-
layout?:
|
|
168
|
-
autosize: boolean;
|
|
169
|
-
colorway: string[];
|
|
170
|
-
font: {
|
|
171
|
-
family: string;
|
|
172
|
-
};
|
|
173
|
-
title: {
|
|
174
|
-
font: {
|
|
175
|
-
color: any;
|
|
176
|
-
};
|
|
177
|
-
yanchor: string;
|
|
178
|
-
pad: {
|
|
179
|
-
t: number;
|
|
180
|
-
};
|
|
181
|
-
y: number;
|
|
182
|
-
};
|
|
183
|
-
legend: {
|
|
184
|
-
font: {
|
|
185
|
-
color: any;
|
|
186
|
-
};
|
|
187
|
-
};
|
|
188
|
-
margin: {
|
|
189
|
-
l: number;
|
|
190
|
-
r: number;
|
|
191
|
-
t: number;
|
|
192
|
-
b: number;
|
|
193
|
-
pad: number;
|
|
194
|
-
};
|
|
195
|
-
xaxis: {
|
|
196
|
-
automargin: boolean;
|
|
197
|
-
gridcolor: any;
|
|
198
|
-
linecolor: any;
|
|
199
|
-
rangeslider: {
|
|
200
|
-
visible: boolean;
|
|
201
|
-
};
|
|
202
|
-
showline: boolean;
|
|
203
|
-
ticklen: number;
|
|
204
|
-
tickcolor: any;
|
|
205
|
-
tickfont: {
|
|
206
|
-
color: any;
|
|
207
|
-
};
|
|
208
|
-
title: {
|
|
209
|
-
font: {
|
|
210
|
-
color: any;
|
|
211
|
-
};
|
|
212
|
-
};
|
|
213
|
-
};
|
|
214
|
-
yaxis: {
|
|
215
|
-
automargin: boolean;
|
|
216
|
-
gridcolor: any;
|
|
217
|
-
linecolor: any;
|
|
218
|
-
rangeslider: {
|
|
219
|
-
visible: boolean;
|
|
220
|
-
};
|
|
221
|
-
showline: boolean;
|
|
222
|
-
ticklen: number;
|
|
223
|
-
tickcolor: any;
|
|
224
|
-
tickfont: {
|
|
225
|
-
color: any;
|
|
226
|
-
};
|
|
227
|
-
title: {
|
|
228
|
-
font: {
|
|
229
|
-
color: any;
|
|
230
|
-
};
|
|
231
|
-
};
|
|
232
|
-
};
|
|
233
|
-
} | undefined;
|
|
101
|
+
layout?: Partial<import("plotly.js").Layout> | undefined;
|
|
234
102
|
filterFields?: any[] | undefined;
|
|
235
103
|
});
|
|
236
104
|
data: {
|
|
@@ -245,73 +113,7 @@ declare class MockChartModel extends ChartModel {
|
|
|
245
113
|
width: number;
|
|
246
114
|
};
|
|
247
115
|
}[];
|
|
248
|
-
layout:
|
|
249
|
-
autosize: boolean;
|
|
250
|
-
colorway: string[];
|
|
251
|
-
font: {
|
|
252
|
-
family: string;
|
|
253
|
-
};
|
|
254
|
-
title: {
|
|
255
|
-
font: {
|
|
256
|
-
color: any;
|
|
257
|
-
};
|
|
258
|
-
yanchor: string;
|
|
259
|
-
pad: {
|
|
260
|
-
t: number;
|
|
261
|
-
};
|
|
262
|
-
y: number;
|
|
263
|
-
};
|
|
264
|
-
legend: {
|
|
265
|
-
font: {
|
|
266
|
-
color: any;
|
|
267
|
-
};
|
|
268
|
-
};
|
|
269
|
-
margin: {
|
|
270
|
-
l: number;
|
|
271
|
-
r: number;
|
|
272
|
-
t: number;
|
|
273
|
-
b: number;
|
|
274
|
-
pad: number;
|
|
275
|
-
};
|
|
276
|
-
xaxis: {
|
|
277
|
-
automargin: boolean;
|
|
278
|
-
gridcolor: any;
|
|
279
|
-
linecolor: any;
|
|
280
|
-
rangeslider: {
|
|
281
|
-
visible: boolean;
|
|
282
|
-
};
|
|
283
|
-
showline: boolean;
|
|
284
|
-
ticklen: number;
|
|
285
|
-
tickcolor: any;
|
|
286
|
-
tickfont: {
|
|
287
|
-
color: any;
|
|
288
|
-
};
|
|
289
|
-
title: {
|
|
290
|
-
font: {
|
|
291
|
-
color: any;
|
|
292
|
-
};
|
|
293
|
-
};
|
|
294
|
-
};
|
|
295
|
-
yaxis: {
|
|
296
|
-
automargin: boolean;
|
|
297
|
-
gridcolor: any;
|
|
298
|
-
linecolor: any;
|
|
299
|
-
rangeslider: {
|
|
300
|
-
visible: boolean;
|
|
301
|
-
};
|
|
302
|
-
showline: boolean;
|
|
303
|
-
ticklen: number;
|
|
304
|
-
tickcolor: any;
|
|
305
|
-
tickfont: {
|
|
306
|
-
color: any;
|
|
307
|
-
};
|
|
308
|
-
title: {
|
|
309
|
-
font: {
|
|
310
|
-
color: any;
|
|
311
|
-
};
|
|
312
|
-
};
|
|
313
|
-
};
|
|
314
|
-
};
|
|
116
|
+
layout: Partial<import("plotly.js").Layout>;
|
|
315
117
|
filterFields: any[];
|
|
316
118
|
}
|
|
317
119
|
import ChartModel from "./ChartModel";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockChartModel.d.ts","sourceRoot":"","sources":["../src/MockChartModel.js"],"names":[],"mappings":";AAIA,oCAAoC;AACpC;IACE,yBAAuB;IAEvB;;;;;MAqCC;IAED;;;;;;;;;;MAYC;IAED;;;;;;;;;;;;MAeC;IAED;;;;;;;;;;;;MAgBC;IAED;;;;;;;;;;;;;;MA4BC;IAED;;;;;;;;;;;MAaC;IAED;;;;;;;;;;;QAUC;IAED
|
|
1
|
+
{"version":3,"file":"MockChartModel.d.ts","sourceRoot":"","sources":["../src/MockChartModel.js"],"names":[],"mappings":";AAIA,oCAAoC;AACpC;IACE,yBAAuB;IAEvB;;;;;MAqCC;IAED;;;;;;;;;;MAYC;IAED;;;;;;;;;;;;MAeC;IAED;;;;;;;;;;;;MAgBC;IAED;;;;;;;;;;;;;;MA4BC;IAED;;;;;;;;;;;MAaC;IAED;;;;;;;;;;;QAUC;IAED,gEAMC;IAED;;;;;;;;;;;;;;;OAUC;IAHC;;;;;;;;;;;QAAgB;IAChB,4CAAoB;IACpB,oBAAgC;CA8BnC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { default as Chart } from './Chart';
|
|
|
2
2
|
export { default as ChartModelFactory } from './ChartModelFactory';
|
|
3
3
|
export { default as ChartModel } from './ChartModel';
|
|
4
4
|
export { default as ChartUtils } from './ChartUtils';
|
|
5
|
+
export * from './ChartUtils';
|
|
5
6
|
export { default as FigureChartModel } from './FigureChartModel';
|
|
6
7
|
export { default as MockChartModel } from './MockChartModel';
|
|
7
8
|
export { default as Plot } from './plotly/Plot';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export { default as Chart } from "./Chart.js";
|
|
|
2
2
|
export { default as ChartModelFactory } from "./ChartModelFactory.js";
|
|
3
3
|
export { default as ChartModel } from "./ChartModel.js";
|
|
4
4
|
export { default as ChartUtils } from "./ChartUtils.js";
|
|
5
|
+
export * from "./ChartUtils.js";
|
|
5
6
|
export { default as FigureChartModel } from "./FigureChartModel.js";
|
|
6
7
|
export { default as MockChartModel } from "./MockChartModel.js";
|
|
7
8
|
export { default as Plot } from "./plotly/Plot.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["default","Chart","ChartModelFactory","ChartModel","ChartUtils","FigureChartModel","MockChartModel","Plot","isFigureChartModel"],"mappings":"SAASA,OAAO,IAAIC,K;SACXD,OAAO,IAAIE,iB;SACXF,OAAO,IAAIG,U;SACXH,OAAO,IAAII,U
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["default","Chart","ChartModelFactory","ChartModel","ChartUtils","FigureChartModel","MockChartModel","Plot","isFigureChartModel"],"mappings":"SAASA,OAAO,IAAIC,K;SACXD,OAAO,IAAIE,iB;SACXF,OAAO,IAAIG,U;SACXH,OAAO,IAAII,U;;SAEXJ,OAAO,IAAIK,gB;SACXL,OAAO,IAAIM,c;SACXN,OAAO,IAAIO,I;SACXP,OAAO,IAAIQ,kB","sourcesContent":["export { default as Chart } from './Chart';\nexport { default as ChartModelFactory } from './ChartModelFactory';\nexport { default as ChartModel } from './ChartModel';\nexport { default as ChartUtils } from './ChartUtils';\nexport * from './ChartUtils';\nexport { default as FigureChartModel } from './FigureChartModel';\nexport { default as MockChartModel } from './MockChartModel';\nexport { default as Plot } from './plotly/Plot';\nexport { default as isFigureChartModel } from './isFigureChartModel';\n"],"file":"index.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/chart",
|
|
3
|
-
"version": "0.15.5",
|
|
3
|
+
"version": "0.15.6-beta.5+0a9a917",
|
|
4
4
|
"description": "Deephaven Chart",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -30,13 +30,12 @@
|
|
|
30
30
|
"start": "cross-env NODE_ENV=development npm run watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@deephaven/icons": "^0.15.
|
|
34
|
-
"@deephaven/jsapi-shim": "^0.15.5",
|
|
35
|
-
"@deephaven/jsapi-utils": "^0.15.5",
|
|
36
|
-
"@deephaven/log": "^0.15.5",
|
|
37
|
-
"@deephaven/redux": "^0.15.5",
|
|
38
|
-
"@deephaven/utils": "^0.15.
|
|
39
|
-
"@fortawesome/fontawesome-common-types": "^6.1.2",
|
|
33
|
+
"@deephaven/icons": "^0.15.6-beta.5+0a9a917",
|
|
34
|
+
"@deephaven/jsapi-shim": "^0.15.6-beta.5+0a9a917",
|
|
35
|
+
"@deephaven/jsapi-utils": "^0.15.6-beta.5+0a9a917",
|
|
36
|
+
"@deephaven/log": "^0.15.6-beta.5+0a9a917",
|
|
37
|
+
"@deephaven/redux": "^0.15.6-beta.5+0a9a917",
|
|
38
|
+
"@deephaven/utils": "^0.15.6-beta.5+0a9a917",
|
|
40
39
|
"deep-equal": "^2.0.5",
|
|
41
40
|
"lodash.debounce": "^4.0.8",
|
|
42
41
|
"lodash.set": "^4.3.2",
|
|
@@ -50,8 +49,8 @@
|
|
|
50
49
|
"react": "^17.x"
|
|
51
50
|
},
|
|
52
51
|
"devDependencies": {
|
|
53
|
-
"@deephaven/mocks": "^0.15.
|
|
54
|
-
"@deephaven/tsconfig": "^0.15.
|
|
52
|
+
"@deephaven/mocks": "^0.15.6-beta.5+0a9a917",
|
|
53
|
+
"@deephaven/tsconfig": "^0.15.6-beta.5+0a9a917",
|
|
55
54
|
"@types/plotly.js": "^2.12.2"
|
|
56
55
|
},
|
|
57
56
|
"files": [
|
|
@@ -63,5 +62,5 @@
|
|
|
63
62
|
"publishConfig": {
|
|
64
63
|
"access": "public"
|
|
65
64
|
},
|
|
66
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "0a9a917b4eefeb720261af4368f5c6d73cfc268f"
|
|
67
66
|
}
|