@deephaven/chart 0.5.2-beta.0 → 0.6.1-fixed-deps.2

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Chart.jsx"],"names":["React","Component","PropTypes","deepEqual","connect","memoize","vsLoading","dhGraphLineDown","dhWarningFilled","Formatter","FormatterUtils","Log","getSettings","Plotly","Plot","ChartModel","ChartUtils","ChartConstants","log","module","Chart","props","downsamplingError","isDownsampleFinished","isDownsampleInProgress","isDownsamplingDisabled","customButtons","push","name","click","icon","convertIcon","downsampleButtonTitle","handleDownsampleClick","displaylogo","displayModeBar","modeBarButtons","handleAfterPlot","bind","handleModelEvent","handlePlotUpdate","handleRelayout","handleRestyle","plot","createRef","plotWrapper","columnFormats","dateTimeFormatterOptions","rect","ranges","isSubscribed","isLoadedFired","state","data","layout","datarevision","revision","updateDimensions","updateModelDimensions","initData","initFormatter","isActive","subscribe","prevProps","settings","updateFormatterSettings","unsubscribe","current","getBoundingClientRect","model","setState","getData","getLayout","width","height","debug2","setDownsamplingDisabled","event","type","detail","EVENT_UPDATED","currentSeries","onUpdate","isLoading","EVENT_LOADFINISHED","EVENT_DISCONNECT","onDisconnect","EVENT_RECONNECT","onReconnect","EVENT_DOWNSAMPLESTARTED","EVENT_DOWNSAMPLEFINISHED","EVENT_DOWNSAMPLENEEDED","EVENT_DOWNSAMPLEFAILED","message","onError","Error","debug","figure","getLayoutRanges","isRangesChanged","changes","Object","keys","includes","onSettingsChanged","hiddenSeries","hiddenlabels","seriesIndexes","reduce","acc","visible","force","getPlotRect","warn","isRectChanged","setDimensions","getColumnFormats","getDateTimeFormatterOptions","updateFormatter","formatter","setFormatter","relayout","el","autosize","e","config","getCachedConfig","isPlotShown","faIcon","path","ascent","descent","transform","propTypes","instanceOf","isRequired","shape","bool","func","defaultProps","mapStateToProps","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport { connect } from 'react-redux';\nimport memoize from 'memoize-one';\nimport { vsLoading, dhGraphLineDown, dhWarningFilled } from '@deephaven/icons';\nimport { Formatter, FormatterUtils } from '@deephaven/iris-grid';\nimport Log from '@deephaven/log';\nimport { getSettings } from '@deephaven/redux';\nimport Plotly from './plotly/Plotly';\nimport Plot from './plotly/Plot';\n\nimport ChartModel from './ChartModel';\nimport ChartUtils from './ChartUtils';\nimport ChartConstants from './Chart.module.scss';\nimport './Chart.scss';\n\nconst log = Log.module('Chart');\n\nexport class Chart extends Component {\n /**\n * Convert a font awesome icon definition to a plotly icon definition\n * @param {FontAwesome.IconDefinition} faIcon The icon to convert\n */\n static convertIcon(faIcon) {\n const [width, , , , path] = faIcon.icon;\n // By default the icons are flipped upside down, so we need to add our own transform\n // https://github.com/plotly/plotly.js/issues/1335\n return {\n width,\n path,\n ascent: width,\n descent: 0,\n transform: `matrix(1, 0, 0, 1, 0, 0)`,\n };\n }\n\n static downsampleButtonTitle(isDownsampleInProgress, isDownsamplingDisabled) {\n if (isDownsampleInProgress) {\n return ChartConstants['title-downsampling-in-progress'];\n }\n\n return isDownsamplingDisabled\n ? ChartConstants['title-downsampling-disabled']\n : ChartConstants['title-downsampling-enabled'];\n }\n\n constructor(props) {\n super(props);\n\n this.handleAfterPlot = this.handleAfterPlot.bind(this);\n this.handleDownsampleClick = this.handleDownsampleClick.bind(this);\n this.handleModelEvent = this.handleModelEvent.bind(this);\n this.handlePlotUpdate = this.handlePlotUpdate.bind(this);\n this.handleRelayout = this.handleRelayout.bind(this);\n this.handleRestyle = this.handleRestyle.bind(this);\n\n this.plot = React.createRef();\n this.plotWrapper = React.createRef();\n this.columnFormats = [];\n this.dateTimeFormatterOptions = {};\n this.rect = null;\n this.ranges = null;\n this.isSubscribed = false;\n this.isLoadedFired = false;\n\n this.state = {\n data: null,\n downsamplingError: null,\n isDownsampleFinished: false,\n isDownsampleInProgress: false,\n isDownsamplingDisabled: false,\n layout: {\n datarevision: 0,\n },\n revision: 0,\n };\n }\n\n componentDidMount() {\n // Need to make sure the model dimensions are up to date before initializing the data\n this.updateDimensions();\n this.updateModelDimensions();\n\n this.initData();\n this.initFormatter();\n\n const { isActive } = this.props;\n if (isActive) {\n this.subscribe();\n }\n }\n\n componentDidUpdate(prevProps) {\n const { isActive, settings } = this.props;\n this.updateFormatterSettings(settings);\n\n if (isActive !== prevProps.isActive) {\n if (isActive) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n }\n\n componentWillUnmount() {\n this.unsubscribe();\n }\n\n getCachedConfig = memoize(\n (\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled\n ) => {\n const customButtons = [];\n if (downsamplingError) {\n customButtons.push({\n name: `${ChartConstants['title-downsampling-failed']}: ${downsamplingError}`,\n click: () => {},\n icon: Chart.convertIcon(dhWarningFilled),\n });\n }\n\n if (\n isDownsampleFinished ||\n isDownsampleInProgress ||\n isDownsamplingDisabled ||\n downsamplingError\n ) {\n const name = Chart.downsampleButtonTitle(\n isDownsampleInProgress,\n isDownsamplingDisabled\n );\n const icon = isDownsampleInProgress ? vsLoading : dhGraphLineDown;\n customButtons.push({\n name,\n icon: Chart.convertIcon(icon),\n click: this.handleDownsampleClick,\n });\n }\n\n return {\n displaylogo: false,\n\n // Display the mode bar if there's an error or downsampling so user can see progress\n // Yes, the value is a boolean or the string 'hover': https://github.com/plotly/plotly.js/blob/master/src/plot_api/plot_config.js#L249\n displayModeBar:\n isDownsampleInProgress || downsamplingError ? true : 'hover',\n\n // Each array gets grouped together in the mode bar\n modeBarButtons: [\n customButtons,\n ['toImage'],\n ['zoom2d', 'pan2d'],\n ['zoomIn2d', 'zoomOut2d', 'autoScale2d', 'resetScale2d'],\n ],\n };\n }\n );\n\n getPlotRect() {\n return this.plotWrapper.current?.getBoundingClientRect() ?? null;\n }\n\n initData() {\n const { model } = this.props;\n const { layout } = this.state;\n this.setState({\n data: model.getData(),\n layout: {\n ...layout,\n ...model.getLayout(),\n },\n });\n }\n\n subscribe() {\n if (this.isSubscribed) {\n return;\n }\n\n const { model } = this.props;\n if (!this.rect || this.rect.width === 0 || this.rect.height === 0) {\n log.debug2('Delaying subscription until model dimensions are set');\n return;\n }\n model.subscribe(this.handleModelEvent);\n this.isSubscribed = true;\n }\n\n unsubscribe() {\n if (!this.isSubscribed) {\n return;\n }\n\n const { model } = this.props;\n model.unsubscribe(this.handleModelEvent);\n this.isSubscribed = false;\n }\n\n handleAfterPlot() {\n if (this.plot.current) {\n // TODO: Translate whatever Don was doing in plotting.js in the afterplot here so that area graphs show up properly\n }\n }\n\n handleDownsampleClick() {\n this.setState(\n ({ isDownsamplingDisabled }) => ({\n downsamplingError: null,\n isDownsampleInProgress: false,\n isDownsampleFinished: false,\n isDownsamplingDisabled: !isDownsamplingDisabled,\n }),\n () => {\n const { model } = this.props;\n const { isDownsamplingDisabled } = this.state;\n model.setDownsamplingDisabled(isDownsamplingDisabled);\n }\n );\n }\n\n handleModelEvent(event) {\n const { type, detail } = event;\n log.debug2('Received data update', type, detail);\n\n switch (type) {\n case ChartModel.EVENT_UPDATED: {\n this.currentSeries += 1;\n this.setState(state => {\n const { layout, revision } = state;\n layout.datarevision += 1;\n return {\n data: detail,\n layout,\n revision: revision + 1,\n };\n });\n\n const { onUpdate } = this.props;\n onUpdate({ isLoading: !this.isLoadedFired });\n break;\n }\n case ChartModel.EVENT_LOADFINISHED: {\n const { onUpdate } = this.props;\n this.isLoadedFired = true;\n onUpdate({ isLoading: false });\n break;\n }\n case ChartModel.EVENT_DISCONNECT: {\n const { onDisconnect } = this.props;\n onDisconnect();\n break;\n }\n case ChartModel.EVENT_RECONNECT: {\n const { onReconnect } = this.props;\n onReconnect();\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLESTARTED: {\n this.setState({\n isDownsampleFinished: false,\n isDownsampleInProgress: true,\n downsamplingError: null,\n });\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLEFINISHED: {\n this.setState({\n isDownsampleFinished: true,\n isDownsampleInProgress: false,\n downsamplingError: null,\n });\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLENEEDED:\n case ChartModel.EVENT_DOWNSAMPLEFAILED: {\n const downsamplingError = detail.message ? detail.message : detail;\n this.setState({\n isDownsampleFinished: false,\n isDownsampleInProgress: false,\n isDownsamplingDisabled: false,\n downsamplingError,\n });\n\n const { onError } = this.props;\n onError(new Error(downsamplingError));\n break;\n }\n default:\n log.debug('Unknown event type', type, event);\n }\n }\n\n handlePlotUpdate(figure) {\n // User could have modified zoom/pan here, update the model dimensions\n // We don't need to update the datarevision, as we don't have any data changes\n // until an update comes back from the server anyway\n const { layout } = figure;\n const ranges = ChartUtils.getLayoutRanges(layout);\n\n const isRangesChanged = !deepEqual(ranges, this.ranges);\n\n if (isRangesChanged) {\n this.ranges = ranges;\n\n this.updateModelDimensions(true);\n }\n }\n\n handleRelayout(changes) {\n log.debug('handleRelayout', changes);\n if (Object.keys(changes).includes('hiddenlabels')) {\n const { onSettingsChanged } = this.props;\n // Pie charts store series visibility in layout.hiddenlabels and trigger relayout on changes\n // Series visibility for other types of charts is handled in handleRestyle\n const hiddenSeries = [...changes.hiddenlabels];\n onSettingsChanged({ hiddenSeries });\n }\n\n this.updateModelDimensions();\n }\n\n handleRestyle([changes, seriesIndexes]) {\n log.debug('handleRestyle', changes, seriesIndexes);\n if (Object.keys(changes).includes('visible')) {\n const { data } = this.state;\n const { onSettingsChanged } = this.props;\n const hiddenSeries = data.reduce(\n (acc, { name, visible }) =>\n visible === 'legendonly' ? [...acc, name] : acc,\n []\n );\n onSettingsChanged({ hiddenSeries });\n }\n }\n\n /**\n * Update the models dimensions and ranges.\n * Note that this will update it all whether the plot size changes OR the range\n * the user is looking at has changed (eg. panning/zooming).\n * Could update each independently, but doing them at the same time keeps the\n * ChartModel API a bit cleaner.\n * @param {boolean} force Force a change even if the chart dimensions haven't changed (eg. after pan/zoom)\n */\n updateModelDimensions(force = false) {\n const rect = this.getPlotRect();\n if (!rect) {\n log.warn('Unable to get plotting rect');\n return;\n }\n\n const isRectChanged =\n !this.rect ||\n this.rect.width !== rect.width ||\n this.rect.height !== rect.height;\n\n if (isRectChanged || force) {\n this.rect = rect;\n\n const { isActive, model } = this.props;\n model.setDimensions(rect);\n // We may need to resubscribe if dimensions were too small before\n if (isActive) {\n this.subscribe();\n }\n }\n }\n\n initFormatter() {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n updateFormatterSettings(settings) {\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n\n if (\n !deepEqual(this.columnFormats, columnFormats) ||\n !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions)\n ) {\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n this.dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n this.updateFormatter();\n }\n }\n\n updateFormatter() {\n const formatter = new Formatter(\n this.columnFormats,\n this.dateTimeFormatterOptions\n );\n\n const { model } = this.props;\n model.setFormatter(formatter);\n }\n\n updateDimensions() {\n const rect = this.getPlotRect();\n if (\n this.plot.current != null &&\n rect != null &&\n rect.width > 0 &&\n rect.height > 0\n ) {\n // Call relayout to resize avoiding the debouncing plotly does\n // https://github.com/plotly/plotly.js/issues/2769#issuecomment-402099552\n Plotly.relayout(this.plot.current.el, { autosize: true }).catch(e => {\n log.debug('Unable to resize, promise rejected', e);\n });\n }\n }\n\n render() {\n const {\n data,\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled,\n layout,\n revision,\n } = this.state;\n const config = this.getCachedConfig(\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled\n );\n const isPlotShown = data != null;\n return (\n <div className=\"h-100 w-100 chart-wrapper\" ref={this.plotWrapper}>\n {isPlotShown && (\n <Plot\n ref={this.plot}\n data={data}\n layout={layout}\n revision={revision}\n config={config}\n onAfterPlot={this.handleAfterPlot}\n onRelayout={this.handleRelayout}\n onUpdate={this.handlePlotUpdate}\n onRestyle={this.handleRestyle}\n useResizeHandler\n style={{ height: '100%', width: '100%' }}\n />\n )}\n </div>\n );\n }\n}\n\nChart.propTypes = {\n model: PropTypes.instanceOf(ChartModel).isRequired,\n settings: PropTypes.shape({}).isRequired,\n isActive: PropTypes.bool,\n onDisconnect: PropTypes.func,\n onReconnect: PropTypes.func,\n onUpdate: PropTypes.func,\n onError: PropTypes.func,\n onSettingsChanged: PropTypes.func,\n};\n\nChart.defaultProps = {\n isActive: true,\n onDisconnect: () => {},\n onReconnect: () => {},\n onUpdate: () => {},\n onError: () => {},\n onSettingsChanged: () => {},\n};\n\nconst mapStateToProps = state => ({\n settings: getSettings(state),\n});\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n Chart\n);\n"],"file":"Chart.js"}
1
+ {"version":3,"sources":["../src/Chart.jsx"],"names":["React","Component","PropTypes","deepEqual","memoize","vsLoading","dhGraphLineDown","dhWarningFilled","Formatter","FormatterUtils","DateUtils","Log","Plotly","Plot","ChartModel","ChartUtils","ChartConstants","log","module","Chart","convertIcon","faIcon","width","path","icon","ascent","descent","transform","downsampleButtonTitle","isDownsampleInProgress","isDownsamplingDisabled","constructor","props","downsamplingError","isDownsampleFinished","customButtons","push","name","click","handleDownsampleClick","displaylogo","displayModeBar","modeBarButtons","handleAfterPlot","bind","handleModelEvent","handlePlotUpdate","handleRelayout","handleRestyle","plot","createRef","plotWrapper","columnFormats","dateTimeFormatterOptions","rect","ranges","isSubscribed","isLoadedFired","state","data","layout","datarevision","revision","componentDidMount","updateDimensions","updateModelDimensions","initData","initFormatter","isActive","subscribe","componentDidUpdate","prevProps","settings","updateFormatterSettings","unsubscribe","componentWillUnmount","getPlotRect","current","getBoundingClientRect","model","setState","getData","getLayout","height","debug2","setDownsamplingDisabled","event","type","detail","EVENT_UPDATED","currentSeries","onUpdate","isLoading","EVENT_LOADFINISHED","EVENT_DISCONNECT","onDisconnect","EVENT_RECONNECT","onReconnect","EVENT_DOWNSAMPLESTARTED","EVENT_DOWNSAMPLEFINISHED","EVENT_DOWNSAMPLENEEDED","EVENT_DOWNSAMPLEFAILED","message","onError","Error","debug","figure","getLayoutRanges","isRangesChanged","changes","Object","keys","includes","onSettingsChanged","hiddenSeries","hiddenlabels","seriesIndexes","reduce","acc","visible","force","warn","isRectChanged","setDimensions","getColumnFormats","getDateTimeFormatterOptions","updateFormatter","formatter","setFormatter","relayout","el","autosize","catch","e","render","config","getCachedConfig","isPlotShown","propTypes","instanceOf","isRequired","shape","timeZone","string","defaultDateTimeFormat","showTimeZone","bool","showTSeparator","arrayOf","func","defaultProps","FULL_DATE_FORMAT"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoize-one';\nimport { vsLoading, dhGraphLineDown, dhWarningFilled } from '@deephaven/icons';\nimport { Formatter, FormatterUtils, DateUtils } from '@deephaven/iris-grid';\nimport Log from '@deephaven/log';\nimport Plotly from './plotly/Plotly';\nimport Plot from './plotly/Plot';\n\nimport ChartModel from './ChartModel';\nimport ChartUtils from './ChartUtils';\nimport ChartConstants from './Chart.module.scss';\nimport './Chart.scss';\n\nconst log = Log.module('Chart');\n\nexport class Chart extends Component {\n /**\n * Convert a font awesome icon definition to a plotly icon definition\n * @param {FontAwesome.IconDefinition} faIcon The icon to convert\n */\n static convertIcon(faIcon) {\n const [width, , , , path] = faIcon.icon;\n // By default the icons are flipped upside down, so we need to add our own transform\n // https://github.com/plotly/plotly.js/issues/1335\n return {\n width,\n path,\n ascent: width,\n descent: 0,\n transform: `matrix(1, 0, 0, 1, 0, 0)`,\n };\n }\n\n static downsampleButtonTitle(isDownsampleInProgress, isDownsamplingDisabled) {\n if (isDownsampleInProgress) {\n return ChartConstants['title-downsampling-in-progress'];\n }\n\n return isDownsamplingDisabled\n ? ChartConstants['title-downsampling-disabled']\n : ChartConstants['title-downsampling-enabled'];\n }\n\n constructor(props) {\n super(props);\n\n this.handleAfterPlot = this.handleAfterPlot.bind(this);\n this.handleDownsampleClick = this.handleDownsampleClick.bind(this);\n this.handleModelEvent = this.handleModelEvent.bind(this);\n this.handlePlotUpdate = this.handlePlotUpdate.bind(this);\n this.handleRelayout = this.handleRelayout.bind(this);\n this.handleRestyle = this.handleRestyle.bind(this);\n\n this.plot = React.createRef();\n this.plotWrapper = React.createRef();\n this.columnFormats = [];\n this.dateTimeFormatterOptions = {};\n this.rect = null;\n this.ranges = null;\n this.isSubscribed = false;\n this.isLoadedFired = false;\n\n this.state = {\n data: null,\n downsamplingError: null,\n isDownsampleFinished: false,\n isDownsampleInProgress: false,\n isDownsamplingDisabled: false,\n layout: {\n datarevision: 0,\n },\n revision: 0,\n };\n }\n\n componentDidMount() {\n // Need to make sure the model dimensions are up to date before initializing the data\n this.updateDimensions();\n this.updateModelDimensions();\n\n this.initData();\n this.initFormatter();\n\n const { isActive } = this.props;\n if (isActive) {\n this.subscribe();\n }\n }\n\n componentDidUpdate(prevProps) {\n const { isActive, settings } = this.props;\n this.updateFormatterSettings(settings);\n\n if (isActive !== prevProps.isActive) {\n if (isActive) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n }\n\n componentWillUnmount() {\n this.unsubscribe();\n }\n\n getCachedConfig = memoize(\n (\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled\n ) => {\n const customButtons = [];\n if (downsamplingError) {\n customButtons.push({\n name: `${ChartConstants['title-downsampling-failed']}: ${downsamplingError}`,\n click: () => {},\n icon: Chart.convertIcon(dhWarningFilled),\n });\n }\n\n if (\n isDownsampleFinished ||\n isDownsampleInProgress ||\n isDownsamplingDisabled ||\n downsamplingError\n ) {\n const name = Chart.downsampleButtonTitle(\n isDownsampleInProgress,\n isDownsamplingDisabled\n );\n const icon = isDownsampleInProgress ? vsLoading : dhGraphLineDown;\n customButtons.push({\n name,\n icon: Chart.convertIcon(icon),\n click: this.handleDownsampleClick,\n });\n }\n\n return {\n displaylogo: false,\n\n // Display the mode bar if there's an error or downsampling so user can see progress\n // Yes, the value is a boolean or the string 'hover': https://github.com/plotly/plotly.js/blob/master/src/plot_api/plot_config.js#L249\n displayModeBar:\n isDownsampleInProgress || downsamplingError ? true : 'hover',\n\n // Each array gets grouped together in the mode bar\n modeBarButtons: [\n customButtons,\n ['toImage'],\n ['zoom2d', 'pan2d'],\n ['zoomIn2d', 'zoomOut2d', 'autoScale2d', 'resetScale2d'],\n ],\n };\n }\n );\n\n getPlotRect() {\n return this.plotWrapper.current?.getBoundingClientRect() ?? null;\n }\n\n initData() {\n const { model } = this.props;\n const { layout } = this.state;\n this.setState({\n data: model.getData(),\n layout: {\n ...layout,\n ...model.getLayout(),\n },\n });\n }\n\n subscribe() {\n if (this.isSubscribed) {\n return;\n }\n\n const { model } = this.props;\n if (!this.rect || this.rect.width === 0 || this.rect.height === 0) {\n log.debug2('Delaying subscription until model dimensions are set');\n return;\n }\n model.subscribe(this.handleModelEvent);\n this.isSubscribed = true;\n }\n\n unsubscribe() {\n if (!this.isSubscribed) {\n return;\n }\n\n const { model } = this.props;\n model.unsubscribe(this.handleModelEvent);\n this.isSubscribed = false;\n }\n\n handleAfterPlot() {\n if (this.plot.current) {\n // TODO: Translate whatever Don was doing in plotting.js in the afterplot here so that area graphs show up properly\n }\n }\n\n handleDownsampleClick() {\n this.setState(\n ({ isDownsamplingDisabled }) => ({\n downsamplingError: null,\n isDownsampleInProgress: false,\n isDownsampleFinished: false,\n isDownsamplingDisabled: !isDownsamplingDisabled,\n }),\n () => {\n const { model } = this.props;\n const { isDownsamplingDisabled } = this.state;\n model.setDownsamplingDisabled(isDownsamplingDisabled);\n }\n );\n }\n\n handleModelEvent(event) {\n const { type, detail } = event;\n log.debug2('Received data update', type, detail);\n\n switch (type) {\n case ChartModel.EVENT_UPDATED: {\n this.currentSeries += 1;\n this.setState(state => {\n const { layout, revision } = state;\n layout.datarevision += 1;\n return {\n data: detail,\n layout,\n revision: revision + 1,\n };\n });\n\n const { onUpdate } = this.props;\n onUpdate({ isLoading: !this.isLoadedFired });\n break;\n }\n case ChartModel.EVENT_LOADFINISHED: {\n const { onUpdate } = this.props;\n this.isLoadedFired = true;\n onUpdate({ isLoading: false });\n break;\n }\n case ChartModel.EVENT_DISCONNECT: {\n const { onDisconnect } = this.props;\n onDisconnect();\n break;\n }\n case ChartModel.EVENT_RECONNECT: {\n const { onReconnect } = this.props;\n onReconnect();\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLESTARTED: {\n this.setState({\n isDownsampleFinished: false,\n isDownsampleInProgress: true,\n downsamplingError: null,\n });\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLEFINISHED: {\n this.setState({\n isDownsampleFinished: true,\n isDownsampleInProgress: false,\n downsamplingError: null,\n });\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLENEEDED:\n case ChartModel.EVENT_DOWNSAMPLEFAILED: {\n const downsamplingError = detail.message ? detail.message : detail;\n this.setState({\n isDownsampleFinished: false,\n isDownsampleInProgress: false,\n isDownsamplingDisabled: false,\n downsamplingError,\n });\n\n const { onError } = this.props;\n onError(new Error(downsamplingError));\n break;\n }\n default:\n log.debug('Unknown event type', type, event);\n }\n }\n\n handlePlotUpdate(figure) {\n // User could have modified zoom/pan here, update the model dimensions\n // We don't need to update the datarevision, as we don't have any data changes\n // until an update comes back from the server anyway\n const { layout } = figure;\n const ranges = ChartUtils.getLayoutRanges(layout);\n\n const isRangesChanged = !deepEqual(ranges, this.ranges);\n\n if (isRangesChanged) {\n this.ranges = ranges;\n\n this.updateModelDimensions(true);\n }\n }\n\n handleRelayout(changes) {\n log.debug('handleRelayout', changes);\n if (Object.keys(changes).includes('hiddenlabels')) {\n const { onSettingsChanged } = this.props;\n // Pie charts store series visibility in layout.hiddenlabels and trigger relayout on changes\n // Series visibility for other types of charts is handled in handleRestyle\n const hiddenSeries = [...changes.hiddenlabels];\n onSettingsChanged({ hiddenSeries });\n }\n\n this.updateModelDimensions();\n }\n\n handleRestyle([changes, seriesIndexes]) {\n log.debug('handleRestyle', changes, seriesIndexes);\n if (Object.keys(changes).includes('visible')) {\n const { data } = this.state;\n const { onSettingsChanged } = this.props;\n const hiddenSeries = data.reduce(\n (acc, { name, visible }) =>\n visible === 'legendonly' ? [...acc, name] : acc,\n []\n );\n onSettingsChanged({ hiddenSeries });\n }\n }\n\n /**\n * Update the models dimensions and ranges.\n * Note that this will update it all whether the plot size changes OR the range\n * the user is looking at has changed (eg. panning/zooming).\n * Could update each independently, but doing them at the same time keeps the\n * ChartModel API a bit cleaner.\n * @param {boolean} force Force a change even if the chart dimensions haven't changed (eg. after pan/zoom)\n */\n updateModelDimensions(force = false) {\n const rect = this.getPlotRect();\n if (!rect) {\n log.warn('Unable to get plotting rect');\n return;\n }\n\n const isRectChanged =\n !this.rect ||\n this.rect.width !== rect.width ||\n this.rect.height !== rect.height;\n\n if (isRectChanged || force) {\n this.rect = rect;\n\n const { isActive, model } = this.props;\n model.setDimensions(rect);\n // We may need to resubscribe if dimensions were too small before\n if (isActive) {\n this.subscribe();\n }\n }\n }\n\n initFormatter() {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n updateFormatterSettings(settings) {\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n\n if (\n !deepEqual(this.columnFormats, columnFormats) ||\n !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions)\n ) {\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n this.dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n this.updateFormatter();\n }\n }\n\n updateFormatter() {\n const formatter = new Formatter(\n this.columnFormats,\n this.dateTimeFormatterOptions\n );\n\n const { model } = this.props;\n model.setFormatter(formatter);\n }\n\n updateDimensions() {\n const rect = this.getPlotRect();\n if (\n this.plot.current != null &&\n rect != null &&\n rect.width > 0 &&\n rect.height > 0\n ) {\n // Call relayout to resize avoiding the debouncing plotly does\n // https://github.com/plotly/plotly.js/issues/2769#issuecomment-402099552\n Plotly.relayout(this.plot.current.el, { autosize: true }).catch(e => {\n log.debug('Unable to resize, promise rejected', e);\n });\n }\n }\n\n render() {\n const {\n data,\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled,\n layout,\n revision,\n } = this.state;\n const config = this.getCachedConfig(\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled\n );\n const isPlotShown = data != null;\n return (\n <div className=\"h-100 w-100 chart-wrapper\" ref={this.plotWrapper}>\n {isPlotShown && (\n <Plot\n ref={this.plot}\n data={data}\n layout={layout}\n revision={revision}\n config={config}\n onAfterPlot={this.handleAfterPlot}\n onRelayout={this.handleRelayout}\n onUpdate={this.handlePlotUpdate}\n onRestyle={this.handleRestyle}\n useResizeHandler\n style={{ height: '100%', width: '100%' }}\n />\n )}\n </div>\n );\n }\n}\n\nChart.propTypes = {\n model: PropTypes.instanceOf(ChartModel).isRequired,\n // These settings come from the redux store\n settings: PropTypes.shape({\n timeZone: PropTypes.string.isRequired,\n defaultDateTimeFormat: PropTypes.string.isRequired,\n showTimeZone: PropTypes.bool.isRequired,\n showTSeparator: PropTypes.bool.isRequired,\n formatter: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n }),\n isActive: PropTypes.bool,\n onDisconnect: PropTypes.func,\n onReconnect: PropTypes.func,\n onUpdate: PropTypes.func,\n onError: PropTypes.func,\n onSettingsChanged: PropTypes.func,\n};\n\nChart.defaultProps = {\n isActive: true,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n formatter: [],\n },\n onDisconnect: () => {},\n onReconnect: () => {},\n onUpdate: () => {},\n onError: () => {},\n onSettingsChanged: () => {},\n};\n\nexport default Chart;\n"],"file":"Chart.js"}
@@ -1,9 +1,3 @@
1
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2
-
3
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
4
-
5
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
6
-
7
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
2
 
9
3
  /* eslint class-methods-use-this: "off" */
@@ -15,10 +9,8 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
15
9
  * All of these methods should return very quickly.
16
10
  * If data needs to be loaded asynchronously, return something immediately, then trigger an event for the chart to refresh.
17
11
  */
18
- var ChartModel = /*#__PURE__*/function () {
19
- function ChartModel() {
20
- _classCallCheck(this, ChartModel);
21
-
12
+ class ChartModel {
13
+ constructor() {
22
14
  this.listeners = [];
23
15
  this.formatter = null;
24
16
  this.rect = null;
@@ -26,154 +18,127 @@ var ChartModel = /*#__PURE__*/function () {
26
18
  this.title = null;
27
19
  }
28
20
 
29
- _createClass(ChartModel, [{
30
- key: "getData",
31
- value: function getData() {
32
- return [];
33
- }
34
- }, {
35
- key: "getDefaultTitle",
36
- value: function getDefaultTitle() {
37
- return '';
38
- }
39
- }, {
40
- key: "getLayout",
41
- value: function getLayout() {
42
- return {};
43
- }
44
- }, {
45
- key: "getFilterColumnMap",
46
- value: function getFilterColumnMap() {
47
- return new Map();
48
- }
49
- }, {
50
- key: "isFilterRequired",
51
- value: function isFilterRequired() {
52
- return false;
53
- }
54
- }, {
55
- key: "setFilter",
56
- value: function setFilter() {}
57
- /**
58
- * Close this model, clean up any underlying subscriptions
59
- */
60
-
61
- }, {
62
- key: "close",
63
- value: function close() {}
64
- /**
65
- * Set the formatter to use when charting the data.
66
- * @param {Formatter} formatter The formatter to use to format the charting data
67
- */
68
-
69
- }, {
70
- key: "setFormatter",
71
- value: function setFormatter(formatter) {
72
- this.formatter = formatter;
73
- }
74
- /**
75
- * Disable downsampling
76
- * @param {boolean} isDownsamplingDisabled True if downsampling should be disabled
77
- */
78
-
79
- }, {
80
- key: "setDownsamplingDisabled",
81
- value: function setDownsamplingDisabled(isDownsamplingDisabled) {
82
- this.isDownsamplingDisabled = isDownsamplingDisabled;
83
- }
84
- /**
85
- * Set the dimensions of the plot. May be needed to evaluate some of the percents
86
- * @param {DOMRect} rect The bounding rectangle of the plot
87
- */
88
-
89
- }, {
90
- key: "setDimensions",
91
- value: function setDimensions(rect) {
92
- this.rect = rect;
93
- }
94
- }, {
95
- key: "setTitle",
96
- value: function setTitle(title) {
97
- this.title = title;
98
- }
99
- /**
100
- * Subscribe to this ChartModel and start listening for all events.
101
- * @param {Function<Event>} callback Callback when an event occurs
102
- */
103
-
104
- }, {
105
- key: "subscribe",
106
- value: function subscribe(callback) {
107
- this.listeners.push(callback);
108
- }
109
- }, {
110
- key: "unsubscribe",
111
- value: function unsubscribe(callback) {
112
- this.listeners = this.listeners.filter(function (listener) {
113
- return listener !== callback;
114
- });
115
- }
116
- }, {
117
- key: "fireEvent",
118
- value: function fireEvent(event) {
119
- for (var i = 0; i < this.listeners.length; i += 1) {
120
- this.listeners[i](event);
121
- }
122
- }
123
- }, {
124
- key: "fireUpdate",
125
- value: function fireUpdate(data) {
126
- this.fireEvent(new CustomEvent(ChartModel.EVENT_UPDATED, {
127
- detail: data
128
- }));
129
- }
130
- }, {
131
- key: "fireDisconnect",
132
- value: function fireDisconnect() {
133
- this.fireEvent(new CustomEvent(ChartModel.EVENT_DISCONNECT));
134
- }
135
- }, {
136
- key: "fireReconnect",
137
- value: function fireReconnect() {
138
- this.fireEvent(new CustomEvent(ChartModel.EVENT_RECONNECT));
139
- }
140
- }, {
141
- key: "fireDownsampleStart",
142
- value: function fireDownsampleStart(detail) {
143
- this.fireEvent(new CustomEvent(ChartModel.EVENT_DOWNSAMPLESTARTED, {
144
- detail: detail
145
- }));
146
- }
147
- }, {
148
- key: "fireDownsampleFinish",
149
- value: function fireDownsampleFinish(detail) {
150
- this.fireEvent(new CustomEvent(ChartModel.EVENT_DOWNSAMPLEFINISHED, {
151
- detail: detail
152
- }));
153
- }
154
- }, {
155
- key: "fireDownsampleFail",
156
- value: function fireDownsampleFail(detail) {
157
- this.fireEvent(new CustomEvent(ChartModel.EVENT_DOWNSAMPLEFAILED, {
158
- detail: detail
159
- }));
160
- }
161
- }, {
162
- key: "fireDownsampleNeeded",
163
- value: function fireDownsampleNeeded(detail) {
164
- this.fireEvent(new CustomEvent(ChartModel.EVENT_DOWNSAMPLENEEDED, {
165
- detail: detail
166
- }));
167
- }
168
- }, {
169
- key: "fireLoadFinished",
170
- value: function fireLoadFinished() {
171
- this.fireEvent(new CustomEvent(ChartModel.EVENT_LOADFINISHED));
21
+ getData() {
22
+ return [];
23
+ }
24
+
25
+ getDefaultTitle() {
26
+ return '';
27
+ }
28
+
29
+ getLayout() {
30
+ return {};
31
+ }
32
+
33
+ getFilterColumnMap() {
34
+ return new Map();
35
+ }
36
+
37
+ isFilterRequired() {
38
+ return false;
39
+ }
40
+
41
+ setFilter() {}
42
+ /**
43
+ * Close this model, clean up any underlying subscriptions
44
+ */
45
+
46
+
47
+ close() {}
48
+ /**
49
+ * Set the formatter to use when charting the data.
50
+ * @param {Formatter} formatter The formatter to use to format the charting data
51
+ */
52
+
53
+
54
+ setFormatter(formatter) {
55
+ this.formatter = formatter;
56
+ }
57
+ /**
58
+ * Disable downsampling
59
+ * @param {boolean} isDownsamplingDisabled True if downsampling should be disabled
60
+ */
61
+
62
+
63
+ setDownsamplingDisabled(isDownsamplingDisabled) {
64
+ this.isDownsamplingDisabled = isDownsamplingDisabled;
65
+ }
66
+ /**
67
+ * Set the dimensions of the plot. May be needed to evaluate some of the percents
68
+ * @param {DOMRect} rect The bounding rectangle of the plot
69
+ */
70
+
71
+
72
+ setDimensions(rect) {
73
+ this.rect = rect;
74
+ }
75
+
76
+ setTitle(title) {
77
+ this.title = title;
78
+ }
79
+ /**
80
+ * Subscribe to this ChartModel and start listening for all events.
81
+ * @param {Function<Event>} callback Callback when an event occurs
82
+ */
83
+
84
+
85
+ subscribe(callback) {
86
+ this.listeners.push(callback);
87
+ }
88
+
89
+ unsubscribe(callback) {
90
+ this.listeners = this.listeners.filter(listener => listener !== callback);
91
+ }
92
+
93
+ fireEvent(event) {
94
+ for (var i = 0; i < this.listeners.length; i += 1) {
95
+ this.listeners[i](event);
172
96
  }
173
- }]);
97
+ }
98
+
99
+ fireUpdate(data) {
100
+ this.fireEvent(new CustomEvent(ChartModel.EVENT_UPDATED, {
101
+ detail: data
102
+ }));
103
+ }
104
+
105
+ fireDisconnect() {
106
+ this.fireEvent(new CustomEvent(ChartModel.EVENT_DISCONNECT));
107
+ }
108
+
109
+ fireReconnect() {
110
+ this.fireEvent(new CustomEvent(ChartModel.EVENT_RECONNECT));
111
+ }
112
+
113
+ fireDownsampleStart(detail) {
114
+ this.fireEvent(new CustomEvent(ChartModel.EVENT_DOWNSAMPLESTARTED, {
115
+ detail
116
+ }));
117
+ }
118
+
119
+ fireDownsampleFinish(detail) {
120
+ this.fireEvent(new CustomEvent(ChartModel.EVENT_DOWNSAMPLEFINISHED, {
121
+ detail
122
+ }));
123
+ }
124
+
125
+ fireDownsampleFail(detail) {
126
+ this.fireEvent(new CustomEvent(ChartModel.EVENT_DOWNSAMPLEFAILED, {
127
+ detail
128
+ }));
129
+ }
130
+
131
+ fireDownsampleNeeded(detail) {
132
+ this.fireEvent(new CustomEvent(ChartModel.EVENT_DOWNSAMPLENEEDED, {
133
+ detail
134
+ }));
135
+ }
136
+
137
+ fireLoadFinished() {
138
+ this.fireEvent(new CustomEvent(ChartModel.EVENT_LOADFINISHED));
139
+ }
174
140
 
175
- return ChartModel;
176
- }();
141
+ }
177
142
 
178
143
  _defineProperty(ChartModel, "EVENT_UPDATED", 'ChartModel.EVENT_UPDATED');
179
144
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ChartModel.js"],"names":["ChartModel","listeners","formatter","rect","isDownsamplingDisabled","title","Map","callback","push","filter","listener","event","i","length","data","fireEvent","CustomEvent","EVENT_UPDATED","detail","EVENT_DISCONNECT","EVENT_RECONNECT","EVENT_DOWNSAMPLESTARTED","EVENT_DOWNSAMPLEFINISHED","EVENT_DOWNSAMPLEFAILED","EVENT_DOWNSAMPLENEEDED","EVENT_LOADFINISHED"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/**\n * Model for a Chart\n * All of these methods should return very quickly.\n * If data needs to be loaded asynchronously, return something immediately, then trigger an event for the chart to refresh.\n */\nclass ChartModel {\n static EVENT_UPDATED = 'ChartModel.EVENT_UPDATED';\n\n static EVENT_DISCONNECT = 'ChartModel.EVENT_DISCONNECT';\n\n static EVENT_RECONNECT = 'ChartModel.EVENT_RECONNECT';\n\n static EVENT_DOWNSAMPLESTARTED = 'ChartModel.EVENT_DOWNSAMPLESTARTED';\n\n static EVENT_DOWNSAMPLEFINISHED = 'ChartModel.EVENT_DOWNSAMPLEFINISHED';\n\n static EVENT_DOWNSAMPLEFAILED = 'ChartModel.EVENT_DOWNSAMPLEFAILED';\n\n static EVENT_DOWNSAMPLENEEDED = 'ChartModel.EVENT_DOWNSAMPLENEEDED';\n\n static EVENT_LOADFINISHED = 'ChartModel.EVENT_LOADFINISHED';\n\n constructor() {\n this.listeners = [];\n this.formatter = null;\n this.rect = null;\n this.isDownsamplingDisabled = false;\n this.title = null;\n }\n\n getData() {\n return [];\n }\n\n getDefaultTitle() {\n return '';\n }\n\n getLayout() {\n return {};\n }\n\n getFilterColumnMap() {\n return new Map();\n }\n\n isFilterRequired() {\n return false;\n }\n\n setFilter() {}\n\n /**\n * Close this model, clean up any underlying subscriptions\n */\n close() {}\n\n /**\n * Set the formatter to use when charting the data.\n * @param {Formatter} formatter The formatter to use to format the charting data\n */\n setFormatter(formatter) {\n this.formatter = formatter;\n }\n\n /**\n * Disable downsampling\n * @param {boolean} isDownsamplingDisabled True if downsampling should be disabled\n */\n setDownsamplingDisabled(isDownsamplingDisabled) {\n this.isDownsamplingDisabled = isDownsamplingDisabled;\n }\n\n /**\n * Set the dimensions of the plot. May be needed to evaluate some of the percents\n * @param {DOMRect} rect The bounding rectangle of the plot\n */\n setDimensions(rect) {\n this.rect = rect;\n }\n\n setTitle(title) {\n this.title = title;\n }\n\n /**\n * Subscribe to this ChartModel and start listening for all events.\n * @param {Function<Event>} callback Callback when an event occurs\n */\n subscribe(callback) {\n this.listeners.push(callback);\n }\n\n unsubscribe(callback) {\n this.listeners = this.listeners.filter(listener => listener !== callback);\n }\n\n fireEvent(event) {\n for (let i = 0; i < this.listeners.length; i += 1) {\n this.listeners[i](event);\n }\n }\n\n fireUpdate(data) {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_UPDATED, { detail: data }));\n }\n\n fireDisconnect() {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_DISCONNECT));\n }\n\n fireReconnect() {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_RECONNECT));\n }\n\n fireDownsampleStart(detail) {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLESTARTED, { detail })\n );\n }\n\n fireDownsampleFinish(detail) {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLEFINISHED, { detail })\n );\n }\n\n fireDownsampleFail(detail) {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLEFAILED, { detail })\n );\n }\n\n fireDownsampleNeeded(detail) {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLENEEDED, { detail })\n );\n }\n\n fireLoadFinished() {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_LOADFINISHED));\n }\n}\n\nexport default ChartModel;\n"],"file":"ChartModel.js"}
1
+ {"version":3,"sources":["../src/ChartModel.js"],"names":["ChartModel","constructor","listeners","formatter","rect","isDownsamplingDisabled","title","getData","getDefaultTitle","getLayout","getFilterColumnMap","Map","isFilterRequired","setFilter","close","setFormatter","setDownsamplingDisabled","setDimensions","setTitle","subscribe","callback","push","unsubscribe","filter","listener","fireEvent","event","i","length","fireUpdate","data","CustomEvent","EVENT_UPDATED","detail","fireDisconnect","EVENT_DISCONNECT","fireReconnect","EVENT_RECONNECT","fireDownsampleStart","EVENT_DOWNSAMPLESTARTED","fireDownsampleFinish","EVENT_DOWNSAMPLEFINISHED","fireDownsampleFail","EVENT_DOWNSAMPLEFAILED","fireDownsampleNeeded","EVENT_DOWNSAMPLENEEDED","fireLoadFinished","EVENT_LOADFINISHED"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/**\n * Model for a Chart\n * All of these methods should return very quickly.\n * If data needs to be loaded asynchronously, return something immediately, then trigger an event for the chart to refresh.\n */\nclass ChartModel {\n static EVENT_UPDATED = 'ChartModel.EVENT_UPDATED';\n\n static EVENT_DISCONNECT = 'ChartModel.EVENT_DISCONNECT';\n\n static EVENT_RECONNECT = 'ChartModel.EVENT_RECONNECT';\n\n static EVENT_DOWNSAMPLESTARTED = 'ChartModel.EVENT_DOWNSAMPLESTARTED';\n\n static EVENT_DOWNSAMPLEFINISHED = 'ChartModel.EVENT_DOWNSAMPLEFINISHED';\n\n static EVENT_DOWNSAMPLEFAILED = 'ChartModel.EVENT_DOWNSAMPLEFAILED';\n\n static EVENT_DOWNSAMPLENEEDED = 'ChartModel.EVENT_DOWNSAMPLENEEDED';\n\n static EVENT_LOADFINISHED = 'ChartModel.EVENT_LOADFINISHED';\n\n constructor() {\n this.listeners = [];\n this.formatter = null;\n this.rect = null;\n this.isDownsamplingDisabled = false;\n this.title = null;\n }\n\n getData() {\n return [];\n }\n\n getDefaultTitle() {\n return '';\n }\n\n getLayout() {\n return {};\n }\n\n getFilterColumnMap() {\n return new Map();\n }\n\n isFilterRequired() {\n return false;\n }\n\n setFilter() {}\n\n /**\n * Close this model, clean up any underlying subscriptions\n */\n close() {}\n\n /**\n * Set the formatter to use when charting the data.\n * @param {Formatter} formatter The formatter to use to format the charting data\n */\n setFormatter(formatter) {\n this.formatter = formatter;\n }\n\n /**\n * Disable downsampling\n * @param {boolean} isDownsamplingDisabled True if downsampling should be disabled\n */\n setDownsamplingDisabled(isDownsamplingDisabled) {\n this.isDownsamplingDisabled = isDownsamplingDisabled;\n }\n\n /**\n * Set the dimensions of the plot. May be needed to evaluate some of the percents\n * @param {DOMRect} rect The bounding rectangle of the plot\n */\n setDimensions(rect) {\n this.rect = rect;\n }\n\n setTitle(title) {\n this.title = title;\n }\n\n /**\n * Subscribe to this ChartModel and start listening for all events.\n * @param {Function<Event>} callback Callback when an event occurs\n */\n subscribe(callback) {\n this.listeners.push(callback);\n }\n\n unsubscribe(callback) {\n this.listeners = this.listeners.filter(listener => listener !== callback);\n }\n\n fireEvent(event) {\n for (let i = 0; i < this.listeners.length; i += 1) {\n this.listeners[i](event);\n }\n }\n\n fireUpdate(data) {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_UPDATED, { detail: data }));\n }\n\n fireDisconnect() {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_DISCONNECT));\n }\n\n fireReconnect() {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_RECONNECT));\n }\n\n fireDownsampleStart(detail) {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLESTARTED, { detail })\n );\n }\n\n fireDownsampleFinish(detail) {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLEFINISHED, { detail })\n );\n }\n\n fireDownsampleFail(detail) {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLEFAILED, { detail })\n );\n }\n\n fireDownsampleNeeded(detail) {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLENEEDED, { detail })\n );\n }\n\n fireLoadFinished() {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_LOADFINISHED));\n }\n}\n\nexport default ChartModel;\n"],"file":"ChartModel.js"}
@@ -2,108 +2,60 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
2
2
 
3
3
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
4
4
 
5
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
-
7
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
8
-
9
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
10
-
11
5
  import dh from '@deephaven/jsapi-shim';
12
- import ChartUtils from './ChartUtils';
13
- import FigureChartModel from './FigureChartModel';
14
-
15
- var ChartModelFactory = /*#__PURE__*/function () {
16
- function ChartModelFactory() {
17
- _classCallCheck(this, ChartModelFactory);
6
+ import ChartUtils from "./ChartUtils.js";
7
+ import FigureChartModel from "./FigureChartModel.js";
8
+
9
+ class ChartModelFactory {
10
+ /**
11
+ * Creates a model from the settings provided.
12
+ * Tries to create a Figure in the API with it.
13
+ * @param {Object} settings The chart builder settings
14
+ * @param {boolean} settings.isLinked Whether the newly created chart should stay linked with the original table, update when filters are updated
15
+ * @param {string[]} settings.series The column names to use for creating the series of this chart
16
+ * @param {string} settings.sourcePanelId The panel ID the chart was created from
17
+ * @param {string} settings.type Chart builder type, from ChartBuilder.types
18
+ * @param {string} settings.xAxis The column name to use for the x-axis
19
+ * @param {string[]} settings.hiddenSeries Array of hidden series names
20
+ * @param {dh.Table} table The table to build the model for
21
+ * @returns {Promise<FigureChartModel>} The FigureChartModel representing the figure
22
+ */
23
+ static makeModelFromSettings(settings, table) {
24
+ return _asyncToGenerator(function* () {
25
+ // Copy the table first and then re-apply the filters from the original table
26
+ // When we add table linking we'll want to listen to the original table and update
27
+ // the copied table with any changes that occur.
28
+ // The table gets owned by the Figure that gets created, which closes the table
29
+ return table.copy().then(tableCopy => {
30
+ tableCopy.applyCustomColumns(table.customColumns);
31
+ tableCopy.applyFilter(table.filter);
32
+ tableCopy.applySort(table.sort);
33
+ return dh.plot.Figure.create(ChartUtils.makeFigureSettings(settings, tableCopy)).then(figure => new FigureChartModel(figure, settings));
34
+ });
35
+ })();
36
+ }
37
+ /**
38
+ * Creates a model from the settings provided.
39
+ * Tries to create a Figure in the API with it.
40
+ * @param {Object} settings The chart builder settings
41
+ * @param {boolean} settings.isLinked Whether the newly created chart should stay linked with the original table, update when filters are updated
42
+ * @param {string[]} settings.series The column names to use for creating the series of this chart
43
+ * @param {string} settings.sourcePanelId The panel ID the chart was created from
44
+ * @param {string} settings.type Chart builder type, from ChartBuilder.types
45
+ * @param {string} settings.xAxis The column name to use for the x-axis
46
+ * @param {string[]} settings.hiddenSeries Array of hidden series names
47
+ * @param {dh.Figure} figure The figure to build the model for
48
+ * @returns {Promise<FigureChartModel>} The FigureChartModel representing the figure
49
+ */
50
+
51
+
52
+ static makeModel(settings, figure) {
53
+ return _asyncToGenerator(function* () {
54
+ return new FigureChartModel(figure, settings);
55
+ })();
18
56
  }
19
57
 
20
- _createClass(ChartModelFactory, null, [{
21
- key: "makeModelFromSettings",
22
- value:
23
- /**
24
- * Creates a model from the settings provided.
25
- * Tries to create a Figure in the API with it.
26
- * @param {Object} settings The chart builder settings
27
- * @param {boolean} settings.isLinked Whether the newly created chart should stay linked with the original table, update when filters are updated
28
- * @param {string[]} settings.series The column names to use for creating the series of this chart
29
- * @param {string} settings.sourcePanelId The panel ID the chart was created from
30
- * @param {string} settings.type Chart builder type, from ChartBuilder.types
31
- * @param {string} settings.xAxis The column name to use for the x-axis
32
- * @param {string[]} settings.hiddenSeries Array of hidden series names
33
- * @param {dh.Table} table The table to build the model for
34
- * @returns {Promise<FigureChartModel>} The FigureChartModel representing the figure
35
- */
36
- function () {
37
- var _makeModelFromSettings = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(settings, table) {
38
- return regeneratorRuntime.wrap(function _callee$(_context) {
39
- while (1) {
40
- switch (_context.prev = _context.next) {
41
- case 0:
42
- return _context.abrupt("return", table.copy().then(function (tableCopy) {
43
- tableCopy.applyCustomColumns(table.customColumns);
44
- tableCopy.applyFilter(table.filter);
45
- tableCopy.applySort(table.sort);
46
- return dh.plot.Figure.create(ChartUtils.makeFigureSettings(settings, tableCopy)).then(function (figure) {
47
- return new FigureChartModel(figure, settings);
48
- });
49
- }));
50
-
51
- case 1:
52
- case "end":
53
- return _context.stop();
54
- }
55
- }
56
- }, _callee);
57
- }));
58
-
59
- function makeModelFromSettings(_x, _x2) {
60
- return _makeModelFromSettings.apply(this, arguments);
61
- }
62
-
63
- return makeModelFromSettings;
64
- }()
65
- /**
66
- * Creates a model from the settings provided.
67
- * Tries to create a Figure in the API with it.
68
- * @param {Object} settings The chart builder settings
69
- * @param {boolean} settings.isLinked Whether the newly created chart should stay linked with the original table, update when filters are updated
70
- * @param {string[]} settings.series The column names to use for creating the series of this chart
71
- * @param {string} settings.sourcePanelId The panel ID the chart was created from
72
- * @param {string} settings.type Chart builder type, from ChartBuilder.types
73
- * @param {string} settings.xAxis The column name to use for the x-axis
74
- * @param {string[]} settings.hiddenSeries Array of hidden series names
75
- * @param {dh.Figure} figure The figure to build the model for
76
- * @returns {Promise<FigureChartModel>} The FigureChartModel representing the figure
77
- */
78
-
79
- }, {
80
- key: "makeModel",
81
- value: function () {
82
- var _makeModel = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(settings, figure) {
83
- return regeneratorRuntime.wrap(function _callee2$(_context2) {
84
- while (1) {
85
- switch (_context2.prev = _context2.next) {
86
- case 0:
87
- return _context2.abrupt("return", new FigureChartModel(figure, settings));
88
-
89
- case 1:
90
- case "end":
91
- return _context2.stop();
92
- }
93
- }
94
- }, _callee2);
95
- }));
96
-
97
- function makeModel(_x3, _x4) {
98
- return _makeModel.apply(this, arguments);
99
- }
100
-
101
- return makeModel;
102
- }()
103
- }]);
104
-
105
- return ChartModelFactory;
106
- }();
58
+ }
107
59
 
108
60
  export default ChartModelFactory;
109
61
  //# sourceMappingURL=ChartModelFactory.js.map