@deephaven/chart 0.6.3-alpha.5 → 0.6.3-bard.6

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 CHANGED
@@ -22,6 +22,8 @@ export class Chart extends React.Component<any, any, any> {
22
22
  plotWrapper: React.RefObject<any>;
23
23
  columnFormats: any[];
24
24
  dateTimeFormatterOptions: {};
25
+ decimalFormatOptions: {};
26
+ integerFormatOptions: {};
25
27
  rect: any;
26
28
  ranges: object | null;
27
29
  isSubscribed: boolean;
@@ -68,6 +70,12 @@ export namespace Chart {
68
70
  showTimeZone: PropTypes.Validator<boolean>;
69
71
  showTSeparator: PropTypes.Validator<boolean>;
70
72
  formatter: PropTypes.Validator<(PropTypes.InferProps<{}> | null | undefined)[]>;
73
+ decimalFormatOptions: PropTypes.Requireable<PropTypes.InferProps<{
74
+ defaultFormatString: PropTypes.Requireable<string>;
75
+ }>>;
76
+ integerFormatOptions: PropTypes.Requireable<PropTypes.InferProps<{
77
+ defaultFormatString: PropTypes.Requireable<string>;
78
+ }>>;
71
79
  }>>;
72
80
  const isActive: PropTypes.Requireable<boolean>;
73
81
  const onDisconnect: PropTypes.Requireable<(...args: any[]) => any>;
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../src/Chart.jsx"],"names":[],"mappings":"AAiBA;IACE;;;OAGG;IACH;;;;;;MAWC;IAED,4FAQC;IAED,wBA8BC;IA8HD,wBAIC;IAED,8BAcC;IAED,mCAsEC;IAED,oCAcC;IAED,mCAWC;IAED,0DAYC;IAzRC,2BAA6B;IAC7B,kCAAoC;IACpC,qBAAuB;IACvB,6BAAkC;IAClC,UAAgB;IAChB,sBAAkB;IAClB,sBAAyB;IACzB,uBAA0B;IA8C5B;;;;;;;;;;;;;;MAmDE;IAEF,mBAEC;IAED,iBAUC;IAED,kBAYC;IAED,oBAQC;IA2ID;;;;;;;OAOG;IACH,8BAFW,OAAO,QAwBjB;IAED,sBAGC;IAED,6CAgBC;IAED,wBAQC;IAED,yBAcC;CAuCF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6Be,uCAAQ;;QACT,sCAAQ;;QACX,mCAAQ;;QACT,kCAAQ;;QACE,4CAAQ"}
1
+ {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../src/Chart.jsx"],"names":[],"mappings":"AAiBA;IACE;;;OAGG;IACH;;;;;;MAWC;IAED,4FAQC;IAED,wBAgCC;IA8HD,wBAIC;IAED,8BAcC;IAED,mCAsEC;IAED,oCAcC;IAED,mCAWC;IAED,0DAYC;IA3RC,2BAA6B;IAC7B,kCAAoC;IACpC,qBAAuB;IACvB,6BAAkC;IAClC,yBAA8B;IAC9B,yBAA8B;IAC9B,UAAgB;IAChB,sBAAkB;IAClB,sBAAyB;IACzB,uBAA0B;IA8C5B;;;;;;;;;;;;;;MAmDE;IAEF,mBAEC;IAED,iBAUC;IAED,kBAYC;IAED,oBAQC;IA2ID;;;;;;;OAOG;IACH,8BAFW,OAAO,QAwBjB;IAED,sBAGC;IAED,6CAmBC;IAED,wBAUC;IAED,yBAcC;CAuCF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmCe,uCAAQ;;QACT,sCAAQ;;QACX,mCAAQ;;QACT,kCAAQ;;QACE,4CAAQ"}
package/dist/Chart.js CHANGED
@@ -1,4 +1,4 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
4
 
@@ -88,6 +88,8 @@ export class Chart extends Component {
88
88
  this.plotWrapper = /*#__PURE__*/React.createRef();
89
89
  this.columnFormats = [];
90
90
  this.dateTimeFormatterOptions = {};
91
+ this.decimalFormatOptions = {};
92
+ this.integerFormatOptions = {};
91
93
  this.rect = null;
92
94
  this.ranges = null;
93
95
  this.isSubscribed = false;
@@ -195,7 +197,7 @@ export class Chart extends Component {
195
197
  }
196
198
 
197
199
  handleDownsampleClick() {
198
- this.setState(_ref => {
200
+ this.setState((_ref) => {
199
201
  var {
200
202
  isDownsamplingDisabled
201
203
  } = _ref;
@@ -424,16 +426,22 @@ export class Chart extends Component {
424
426
  updateFormatterSettings(settings) {
425
427
  var columnFormats = FormatterUtils.getColumnFormats(settings);
426
428
  var dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(settings);
429
+ var {
430
+ decimalFormatOptions = {},
431
+ integerFormatOptions = {}
432
+ } = settings;
427
433
 
428
- if (!deepEqual(this.columnFormats, columnFormats) || !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions)) {
434
+ if (!deepEqual(this.columnFormats, columnFormats) || !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions) || !deepEqual(this.decimalFormatOptions, decimalFormatOptions) || !deepEqual(this.integerFormatOptions, integerFormatOptions)) {
429
435
  this.columnFormats = FormatterUtils.getColumnFormats(settings);
430
- this.dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(settings);
436
+ this.dateTimeFormatterOptions = dateTimeFormatterOptions;
437
+ this.decimalFormatOptions = decimalFormatOptions;
438
+ this.integerFormatOptions = integerFormatOptions;
431
439
  this.updateFormatter();
432
440
  }
433
441
  }
434
442
 
435
443
  updateFormatter() {
436
- var formatter = new Formatter(this.columnFormats, this.dateTimeFormatterOptions);
444
+ var formatter = new Formatter(this.columnFormats, this.dateTimeFormatterOptions, this.decimalFormatOptions, this.integerFormatOptions);
437
445
  var {
438
446
  model
439
447
  } = this.props;
@@ -496,7 +504,13 @@ Chart.propTypes = {
496
504
  defaultDateTimeFormat: PropTypes.string.isRequired,
497
505
  showTimeZone: PropTypes.bool.isRequired,
498
506
  showTSeparator: PropTypes.bool.isRequired,
499
- formatter: PropTypes.arrayOf(PropTypes.shape({})).isRequired
507
+ formatter: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
508
+ decimalFormatOptions: PropTypes.shape({
509
+ defaultFormatString: PropTypes.string
510
+ }),
511
+ integerFormatOptions: PropTypes.shape({
512
+ defaultFormatString: PropTypes.string
513
+ })
500
514
  }),
501
515
  isActive: PropTypes.bool,
502
516
  onDisconnect: PropTypes.func,
package/dist/Chart.js.map CHANGED
@@ -1 +1 @@
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
+ {"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","decimalFormatOptions","integerFormatOptions","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","defaultFormatString","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.decimalFormatOptions = {};\n this.integerFormatOptions = {};\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 const { decimalFormatOptions = {}, integerFormatOptions = {} } = settings;\n\n if (\n !deepEqual(this.columnFormats, columnFormats) ||\n !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions) ||\n !deepEqual(this.decimalFormatOptions, decimalFormatOptions) ||\n !deepEqual(this.integerFormatOptions, integerFormatOptions)\n ) {\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = decimalFormatOptions;\n this.integerFormatOptions = integerFormatOptions;\n this.updateFormatter();\n }\n }\n\n updateFormatter() {\n const formatter = new Formatter(\n this.columnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions\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 decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\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"}
@@ -11,7 +11,6 @@ declare class ChartModelFactory {
11
11
  * @param {string} settings.xAxis The column name to use for the x-axis
12
12
  * @param {string[]} settings.hiddenSeries Array of hidden series names
13
13
  * @param {dh.Table} table The table to build the model for
14
- * @param {Object} theme The theme for the figure. Defaults to ChartTheme
15
14
  * @returns {Promise<FigureChartModel>} The FigureChartModel representing the figure
16
15
  */
17
16
  static makeModelFromSettings(settings: {
@@ -21,7 +20,7 @@ declare class ChartModelFactory {
21
20
  type: string;
22
21
  xAxis: string;
23
22
  hiddenSeries: string[];
24
- }, table: any, theme?: Object): Promise<FigureChartModel>;
23
+ }, table: any): Promise<FigureChartModel>;
25
24
  /**
26
25
  * Creates a model from the settings provided.
27
26
  * Tries to create a Figure in the API with it.
@@ -33,7 +32,6 @@ declare class ChartModelFactory {
33
32
  * @param {string} settings.xAxis The column name to use for the x-axis
34
33
  * @param {string[]} settings.hiddenSeries Array of hidden series names
35
34
  * @param {dh.Figure} figure The figure to build the model for
36
- * @param {Object} theme The theme for the figure. Defaults to ChartTheme
37
35
  * @returns {Promise<FigureChartModel>} The FigureChartModel representing the figure
38
36
  */
39
37
  static makeModel(settings: {
@@ -43,7 +41,7 @@ declare class ChartModelFactory {
43
41
  type: string;
44
42
  xAxis: string;
45
43
  hiddenSeries: string[];
46
- }, figure: any, theme?: Object): Promise<FigureChartModel>;
44
+ }, figure: any): Promise<FigureChartModel>;
47
45
  }
48
46
  import FigureChartModel from "./FigureChartModel";
49
47
  //# sourceMappingURL=ChartModelFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartModelFactory.d.ts","sourceRoot":"","sources":["../src/ChartModelFactory.js"],"names":[],"mappings":";AAKA;IACE;;;;;;;;;;;;;OAaG;IACH;QAV6B,QAAQ,EAA1B,OAAO;QACY,MAAM,EAAzB,MAAM,EAAE;QACS,aAAa,EAA9B,MAAM;QACW,IAAI,EAArB,MAAM;QACW,KAAK,EAAtB,MAAM;QACa,YAAY,EAA/B,MAAM,EAAE;2BAER,MAAM,GACJ,QAAQ,gBAAgB,CAAC,CAgBrC;IAED;;;;;;;;;;;;;OAaG;IACH;QAV6B,QAAQ,EAA1B,OAAO;QACY,MAAM,EAAzB,MAAM,EAAE;QACS,aAAa,EAA9B,MAAM;QACW,IAAI,EAArB,MAAM;QACW,KAAK,EAAtB,MAAM;QACa,YAAY,EAA/B,MAAM,EAAE;4BAER,MAAM,GACJ,QAAQ,gBAAgB,CAAC,CAIrC;CACF"}
1
+ {"version":3,"file":"ChartModelFactory.d.ts","sourceRoot":"","sources":["../src/ChartModelFactory.js"],"names":[],"mappings":";AAIA;IACE;;;;;;;;;;;;OAYG;IACH;QAT6B,QAAQ,EAA1B,OAAO;QACY,MAAM,EAAzB,MAAM,EAAE;QACS,aAAa,EAA9B,MAAM;QACW,IAAI,EAArB,MAAM;QACW,KAAK,EAAtB,MAAM;QACa,YAAY,EAA/B,MAAM,EAAE;oBAEN,QAAQ,gBAAgB,CAAC,CAgBrC;IAED;;;;;;;;;;;;OAYG;IACH;QAT6B,QAAQ,EAA1B,OAAO;QACY,MAAM,EAAzB,MAAM,EAAE;QACS,aAAa,EAA9B,MAAM;QACW,IAAI,EAArB,MAAM;QACW,KAAK,EAAtB,MAAM;QACa,YAAY,EAA/B,MAAM,EAAE;qBAEN,QAAQ,gBAAgB,CAAC,CAIrC;CACF"}
@@ -5,7 +5,6 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar
5
5
  import dh from '@deephaven/jsapi-shim';
6
6
  import ChartUtils from "./ChartUtils.js";
7
7
  import FigureChartModel from "./FigureChartModel.js";
8
- import ChartTheme from "./ChartTheme.js";
9
8
 
10
9
  class ChartModelFactory {
11
10
  /**
@@ -19,13 +18,10 @@ class ChartModelFactory {
19
18
  * @param {string} settings.xAxis The column name to use for the x-axis
20
19
  * @param {string[]} settings.hiddenSeries Array of hidden series names
21
20
  * @param {dh.Table} table The table to build the model for
22
- * @param {Object} theme The theme for the figure. Defaults to ChartTheme
23
21
  * @returns {Promise<FigureChartModel>} The FigureChartModel representing the figure
24
22
  */
25
23
  static makeModelFromSettings(settings, table) {
26
- var _arguments = arguments;
27
24
  return _asyncToGenerator(function* () {
28
- var theme = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : ChartTheme;
29
25
  // Copy the table first and then re-apply the filters from the original table
30
26
  // When we add table linking we'll want to listen to the original table and update
31
27
  // the copied table with any changes that occur.
@@ -34,7 +30,7 @@ class ChartModelFactory {
34
30
  tableCopy.applyCustomColumns(table.customColumns);
35
31
  tableCopy.applyFilter(table.filter);
36
32
  tableCopy.applySort(table.sort);
37
- return dh.plot.Figure.create(ChartUtils.makeFigureSettings(settings, tableCopy)).then(figure => new FigureChartModel(figure, settings, theme));
33
+ return dh.plot.Figure.create(ChartUtils.makeFigureSettings(settings, tableCopy)).then(figure => new FigureChartModel(figure, settings));
38
34
  });
39
35
  })();
40
36
  }
@@ -49,16 +45,13 @@ class ChartModelFactory {
49
45
  * @param {string} settings.xAxis The column name to use for the x-axis
50
46
  * @param {string[]} settings.hiddenSeries Array of hidden series names
51
47
  * @param {dh.Figure} figure The figure to build the model for
52
- * @param {Object} theme The theme for the figure. Defaults to ChartTheme
53
48
  * @returns {Promise<FigureChartModel>} The FigureChartModel representing the figure
54
49
  */
55
50
 
56
51
 
57
52
  static makeModel(settings, figure) {
58
- var _arguments2 = arguments;
59
53
  return _asyncToGenerator(function* () {
60
- var theme = _arguments2.length > 2 && _arguments2[2] !== undefined ? _arguments2[2] : ChartTheme;
61
- return new FigureChartModel(figure, settings, theme);
54
+ return new FigureChartModel(figure, settings);
62
55
  })();
63
56
  }
64
57
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ChartModelFactory.js"],"names":["dh","ChartUtils","FigureChartModel","ChartTheme","ChartModelFactory","makeModelFromSettings","settings","table","theme","copy","then","tableCopy","applyCustomColumns","customColumns","applyFilter","filter","applySort","sort","plot","Figure","create","makeFigureSettings","figure","makeModel"],"mappings":";;;;AAAA,OAAOA,EAAP,MAAe,uBAAf;OACOC,U;OACAC,gB;OACAC,U;;AAEP,MAAMC,iBAAN,CAAwB;AACtB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACoC,SAArBC,qBAAqB,CAACC,QAAD,EAAWC,KAAX,EAAsC;AAAA;AAAA;AAAA,UAApBC,KAAoB,0EAAZL,UAAY;AACtE;AACA;AACA;AACA;AACA,aAAOI,KAAK,CAACE,IAAN,GAAaC,IAAb,CAAkBC,SAAS,IAAI;AACpCA,QAAAA,SAAS,CAACC,kBAAV,CAA6BL,KAAK,CAACM,aAAnC;AACAF,QAAAA,SAAS,CAACG,WAAV,CAAsBP,KAAK,CAACQ,MAA5B;AACAJ,QAAAA,SAAS,CAACK,SAAV,CAAoBT,KAAK,CAACU,IAA1B;AAEA,eAAOjB,EAAE,CAACkB,IAAH,CAAQC,MAAR,CAAeC,MAAf,CACLnB,UAAU,CAACoB,kBAAX,CAA8Bf,QAA9B,EAAwCK,SAAxC,CADK,EAELD,IAFK,CAEAY,MAAM,IAAI,IAAIpB,gBAAJ,CAAqBoB,MAArB,EAA6BhB,QAA7B,EAAuCE,KAAvC,CAFV,CAAP;AAGD,OARM,CAAP;AALsE;AAcvE;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACwB,SAATe,SAAS,CAACjB,QAAD,EAAWgB,MAAX,EAAuC;AAAA;AAAA;AAAA,UAApBd,KAAoB,6EAAZL,UAAY;AAC3D,aAAO,IAAID,gBAAJ,CAAqBoB,MAArB,EAA6BhB,QAA7B,EAAuCE,KAAvC,CAAP;AAD2D;AAE5D;;AA/CqB;;AAkDxB,eAAeJ,iBAAf","sourcesContent":["import dh from '@deephaven/jsapi-shim';\nimport ChartUtils from './ChartUtils';\nimport FigureChartModel from './FigureChartModel';\nimport ChartTheme from './ChartTheme';\n\nclass ChartModelFactory {\n /**\n * Creates a model from the settings provided.\n * Tries to create a Figure in the API with it.\n * @param {Object} settings The chart builder settings\n * @param {boolean} settings.isLinked Whether the newly created chart should stay linked with the original table, update when filters are updated\n * @param {string[]} settings.series The column names to use for creating the series of this chart\n * @param {string} settings.sourcePanelId The panel ID the chart was created from\n * @param {string} settings.type Chart builder type, from ChartBuilder.types\n * @param {string} settings.xAxis The column name to use for the x-axis\n * @param {string[]} settings.hiddenSeries Array of hidden series names\n * @param {dh.Table} table The table to build the model for\n * @param {Object} theme The theme for the figure. Defaults to ChartTheme\n * @returns {Promise<FigureChartModel>} The FigureChartModel representing the figure\n */\n static async makeModelFromSettings(settings, table, theme = ChartTheme) {\n // Copy the table first and then re-apply the filters from the original table\n // When we add table linking we'll want to listen to the original table and update\n // the copied table with any changes that occur.\n // The table gets owned by the Figure that gets created, which closes the table\n return table.copy().then(tableCopy => {\n tableCopy.applyCustomColumns(table.customColumns);\n tableCopy.applyFilter(table.filter);\n tableCopy.applySort(table.sort);\n\n return dh.plot.Figure.create(\n ChartUtils.makeFigureSettings(settings, tableCopy)\n ).then(figure => new FigureChartModel(figure, settings, theme));\n });\n }\n\n /**\n * Creates a model from the settings provided.\n * Tries to create a Figure in the API with it.\n * @param {Object} settings The chart builder settings\n * @param {boolean} settings.isLinked Whether the newly created chart should stay linked with the original table, update when filters are updated\n * @param {string[]} settings.series The column names to use for creating the series of this chart\n * @param {string} settings.sourcePanelId The panel ID the chart was created from\n * @param {string} settings.type Chart builder type, from ChartBuilder.types\n * @param {string} settings.xAxis The column name to use for the x-axis\n * @param {string[]} settings.hiddenSeries Array of hidden series names\n * @param {dh.Figure} figure The figure to build the model for\n * @param {Object} theme The theme for the figure. Defaults to ChartTheme\n * @returns {Promise<FigureChartModel>} The FigureChartModel representing the figure\n */\n static async makeModel(settings, figure, theme = ChartTheme) {\n return new FigureChartModel(figure, settings, theme);\n }\n}\n\nexport default ChartModelFactory;\n"],"file":"ChartModelFactory.js"}
1
+ {"version":3,"sources":["../src/ChartModelFactory.js"],"names":["dh","ChartUtils","FigureChartModel","ChartModelFactory","makeModelFromSettings","settings","table","copy","then","tableCopy","applyCustomColumns","customColumns","applyFilter","filter","applySort","sort","plot","Figure","create","makeFigureSettings","figure","makeModel"],"mappings":";;;;AAAA,OAAOA,EAAP,MAAe,uBAAf;OACOC,U;OACAC,gB;;AAEP,MAAMC,iBAAN,CAAwB;AACtB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACoC,SAArBC,qBAAqB,CAACC,QAAD,EAAWC,KAAX,EAAkB;AAAA;AAClD;AACA;AACA;AACA;AACA,aAAOA,KAAK,CAACC,IAAN,GAAaC,IAAb,CAAkBC,SAAS,IAAI;AACpCA,QAAAA,SAAS,CAACC,kBAAV,CAA6BJ,KAAK,CAACK,aAAnC;AACAF,QAAAA,SAAS,CAACG,WAAV,CAAsBN,KAAK,CAACO,MAA5B;AACAJ,QAAAA,SAAS,CAACK,SAAV,CAAoBR,KAAK,CAACS,IAA1B;AAEA,eAAOf,EAAE,CAACgB,IAAH,CAAQC,MAAR,CAAeC,MAAf,CACLjB,UAAU,CAACkB,kBAAX,CAA8Bd,QAA9B,EAAwCI,SAAxC,CADK,EAELD,IAFK,CAEAY,MAAM,IAAI,IAAIlB,gBAAJ,CAAqBkB,MAArB,EAA6Bf,QAA7B,CAFV,CAAP;AAGD,OARM,CAAP;AALkD;AAcnD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACwB,SAATgB,SAAS,CAAChB,QAAD,EAAWe,MAAX,EAAmB;AAAA;AACvC,aAAO,IAAIlB,gBAAJ,CAAqBkB,MAArB,EAA6Bf,QAA7B,CAAP;AADuC;AAExC;;AA7CqB;;AAgDxB,eAAeF,iBAAf","sourcesContent":["import dh from '@deephaven/jsapi-shim';\nimport ChartUtils from './ChartUtils';\nimport FigureChartModel from './FigureChartModel';\n\nclass ChartModelFactory {\n /**\n * Creates a model from the settings provided.\n * Tries to create a Figure in the API with it.\n * @param {Object} settings The chart builder settings\n * @param {boolean} settings.isLinked Whether the newly created chart should stay linked with the original table, update when filters are updated\n * @param {string[]} settings.series The column names to use for creating the series of this chart\n * @param {string} settings.sourcePanelId The panel ID the chart was created from\n * @param {string} settings.type Chart builder type, from ChartBuilder.types\n * @param {string} settings.xAxis The column name to use for the x-axis\n * @param {string[]} settings.hiddenSeries Array of hidden series names\n * @param {dh.Table} table The table to build the model for\n * @returns {Promise<FigureChartModel>} The FigureChartModel representing the figure\n */\n static async makeModelFromSettings(settings, table) {\n // Copy the table first and then re-apply the filters from the original table\n // When we add table linking we'll want to listen to the original table and update\n // the copied table with any changes that occur.\n // The table gets owned by the Figure that gets created, which closes the table\n return table.copy().then(tableCopy => {\n tableCopy.applyCustomColumns(table.customColumns);\n tableCopy.applyFilter(table.filter);\n tableCopy.applySort(table.sort);\n\n return dh.plot.Figure.create(\n ChartUtils.makeFigureSettings(settings, tableCopy)\n ).then(figure => new FigureChartModel(figure, settings));\n });\n }\n\n /**\n * Creates a model from the settings provided.\n * Tries to create a Figure in the API with it.\n * @param {Object} settings The chart builder settings\n * @param {boolean} settings.isLinked Whether the newly created chart should stay linked with the original table, update when filters are updated\n * @param {string[]} settings.series The column names to use for creating the series of this chart\n * @param {string} settings.sourcePanelId The panel ID the chart was created from\n * @param {string} settings.type Chart builder type, from ChartBuilder.types\n * @param {string} settings.xAxis The column name to use for the x-axis\n * @param {string[]} settings.hiddenSeries Array of hidden series names\n * @param {dh.Figure} figure The figure to build the model for\n * @returns {Promise<FigureChartModel>} The FigureChartModel representing the figure\n */\n static async makeModel(settings, figure) {\n return new FigureChartModel(figure, settings);\n }\n}\n\nexport default ChartModelFactory;\n"],"file":"ChartModelFactory.js"}
@@ -106,12 +106,11 @@ declare class ChartUtils {
106
106
  * @param {dh.plot.Series} series The series to create the series data with
107
107
  * @param {Map<dh.plot.AxisType, dh.plot.Axis[]>} axisTypeMap The map of axes grouped by type
108
108
  * @param {boolean|string} seriesVisibility Visibility setting for the series
109
- * @param {Object} theme The theme properties for the plot. See ChartTheme.js for an example
110
109
  * @returns {Object} The series data (trace) object for use with plotly.
111
110
  */
112
- static makeSeriesDataFromSeries(series: any, axisTypeMap: Map<any, any[]>, seriesVisibility: boolean | string, theme: Object): Object;
111
+ static makeSeriesDataFromSeries(series: any, axisTypeMap: Map<any, any[]>, seriesVisibility: boolean | string): Object;
113
112
  static addSourcesToSeriesData(seriesDataParam: any, plotStyle: any, sources: any, axisTypeMap: any): void;
114
- static addStylingToSeriesData(seriesDataParam: any, plotStyle: any, theme?: {}, lineColor?: any, shapeColor?: any, seriesVisibility?: any): void;
113
+ static addStylingToSeriesData(seriesDataParam: any, plotStyle: any, lineColor?: any, shapeColor?: any, seriesVisibility?: any): void;
115
114
  /**
116
115
  * Retrieve the axis formats from the provided figure.
117
116
  * Currently defaults to just the x/y axes.
@@ -154,7 +153,7 @@ declare class ChartUtils {
154
153
  * @param {number} plotHeight The height of the plot to calculate the axis sizes for
155
154
  * @param {func} getRangeParser A function to retrieve the range parser for a given axis
156
155
  */
157
- static updateLayoutAxes(layoutParam: object, axes: any[], plotWidth?: number, plotHeight?: number, getRangeParser?: any, theme?: {}): void;
156
+ static updateLayoutAxes(layoutParam: object, axes: any[], plotWidth?: number, plotHeight?: number, getRangeParser?: any): void;
158
157
  static getAxisLayoutProperty(axisProperty: any, axisIndex: any): string;
159
158
  /**
160
159
  * Updates the layout axis object in place
@@ -240,7 +239,7 @@ declare class ChartUtils {
240
239
  * @param {dh.i18n.TimeZone} timeZone The time zone if applicable
241
240
  */
242
241
  static wrapValue(value: any, columnType: string, timeZone?: any): any;
243
- static makeLayoutAxis(type: any, theme?: {}): {
242
+ static makeLayoutAxis(type: any): {
244
243
  automargin: boolean;
245
244
  gridcolor: any;
246
245
  linecolor: any;
@@ -259,16 +258,9 @@ declare class ChartUtils {
259
258
  };
260
259
  };
261
260
  };
262
- /**
263
- * Parses the colorway property of a theme and returns an array of colors
264
- * Theme could have a single string with space separated colors or an array of strings representing the colorway
265
- * @param {ChartTheme} theme The theme to get colorway from
266
- * @returns {string[]} Colorway array for the theme
267
- */
268
- static getColorwayFromTheme(theme: any): string[];
269
- static makeDefaultLayout(theme?: {}): {
261
+ static makeDefaultLayout(): {
270
262
  autosize: boolean;
271
- colorway: string[];
263
+ colorway: any;
272
264
  font: {
273
265
  family: string;
274
266
  };
@@ -281,6 +273,7 @@ declare class ChartUtils {
281
273
  t: number;
282
274
  };
283
275
  y: number;
276
+ text: string;
284
277
  };
285
278
  legend: {
286
279
  font: {
@@ -332,6 +325,21 @@ declare class ChartUtils {
332
325
  };
333
326
  };
334
327
  };
328
+ paper_bgcolor: any;
329
+ plot_bgcolor: any;
330
+ title_color: any;
331
+ gridcolor: any;
332
+ linecolor: any;
333
+ zerolinecolor: any;
334
+ activecolor: any;
335
+ rangebgcolor: any;
336
+ area_color: any;
337
+ trend_color: any;
338
+ line_color: any;
339
+ error_band_line_color: any;
340
+ error_band_fill_color: any;
341
+ ohlc_increasing: any;
342
+ ohlc_decreasing: any;
335
343
  };
336
344
  /**
337
345
  * Dehydrate settings so they can be JSONified
@@ -1 +1 @@
1
- {"version":3,"file":"ChartUtils.d.ts","sourceRoot":"","sources":["../src/ChartUtils.js"],"names":[],"mappings":";AAcA;IACE,iCAAgC;IAEhC,6BAA6B;IAE7B,6BAA2B;IAE3B,4BAAyB;IAEzB,+BAA4B;IAE5B,+BAA8B;IAE9B;;;OAGG;IAEH,2BAAkD;IAElD;;;;;;OAA8E;IAE9E;;OAAuD;IAEvD,oCAAiC;IAEjC;;;;OAIG;IACH,6DAFW,OAAO,yEA4BjB;IAED;;;OAGG;IACH,yEASC;IAED;;;;OAIG;IACH,2NA4DC;IAED,uDAOC;IAED;;;;;;;;OAQG;IACH,6BANW,aAAa,QACb,aAAa,SACb,aAAa,GAEX,MAAM,CAWlB;IAED;;;;MA4CC;IAED,6CAEC;IAED;;;;;aA2CC;IAED;;;;OAIG;IACH,wEA8BC;IAED;;;;;;OAMG;IACH,kCAJW,MAAM,QACN,MAAM,cACN,OAAO,UAqBjB;IAED;;;;;OAKG;IACH,oDAYC;IAED;;;;;OAKG;IACH,iCAJW,MAAM,YACN,MAAM,GACJ,OAAO,GAAC,MAAM,CAO1B;IAED;;;;OAIG;IACH,iCAHW,MAAM,GACJ,MAAM,EAAE,CAOpB;IAED;;;OAGG;IACH,8EAFa,MAAM,CASlB;IAED;;;;;;;OAOG;IACH,0DALW,SAAsB,KAAc,CAAC,oBACrC,OAAO,GAAC,MAAM,SACd,MAAM,GACJ,MAAM,CAkClB;IAED,0GAyBC;IAED,iJA0DC;IAED;;;;;;OAMG;IACH,oDAFa,IAAI,MAAM,EAAE,MAAM,CAAC,CAkG/B;IAED,gIASC;IAED;;;OAGG;IACH,4DASC;IAED;;;OAGG;IACH,kFAaC;IAED;;;;OAIG;IACH,wDAaC;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,MAAM,CAclB;IAED;;;;;;;;;;OAUG;IACH,qCANW,MAAM,QACN,KAAc,cACd,MAAM,eACN,MAAM,0CA6HhB;IAED,wEAGC;IAED;;;;;;;;OAQG;IACH,yCAPW,MAAM,wBAEN,MAAM,mBACN,aAAuC,0CAEvC,MAAM,QAkEhB;IAED;;;;OAIG;IACH,+CAGC;IAED;;;;;;;OAOG;IACH,wDA6BC;IAED;;;;;;OAMG;IACH,iHA2BC;IAED;;;;;;OAMG;IACH,2FAMC;IAED;;;;;;;OAOG;IACH;;;QAoCC;IAED;;;;;;OAMG;IACH,yCAJW,MAAM,sDAuBhB;IAED;;;;;OAKG;IACH,yBAJW,MAAM,EAAE,YACR,MAAM,GACJ,IAAI,MAAM,EAAE,MAAM,CAAC,CAU/B;IAED;;OAEG;IACH,4BAAwB;IAExB;;;OAGG;IACH,oDAgBC;IAED;;;;;OAKG;IACH,wBAJW,GAAG,cACH,MAAM,uBAqChB;IAED;;;;;;;;;;;;;;;;;;MA+BC;IAED;;;;;OAKG;IACH,yCAFa,MAAM,EAAE,CAepB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2BC;IAED;;;OAGG;IACH,mCAFW,MAAM;;MAOhB;IAED;;;OAGG;IACH,iCAFW,MAAM;;MAOhB;IAED,6CAQC;IAED;;;;;;;;;;;OAWG;IACH;QAL4B,KAAK,EAAtB,MAAM;QACW,KAAK,EAAtB,MAAM;QACa,MAAM,EAAzB,MAAM,EAAE;QAC0B,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;MA2ChD;CACF"}
1
+ {"version":3,"file":"ChartUtils.d.ts","sourceRoot":"","sources":["../src/ChartUtils.js"],"names":[],"mappings":";AAeA;IACE,iCAAgC;IAEhC,6BAA6B;IAE7B,6BAA2B;IAE3B,4BAAyB;IAEzB,+BAA4B;IAE5B,+BAA8B;IAE9B;;;OAGG;IAEH,2BAAkD;IAElD;;;;;;OAA8E;IAE9E;;OAAuD;IAEvD,oCAAiC;IAEjC;;;;OAIG;IACH,6DAFW,OAAO,yEA4BjB;IAED;;;OAGG;IACH,yEASC;IAED;;;;OAIG;IACH,2NA4DC;IAED,uDAOC;IAED;;;;;;;;OAQG;IACH,6BANW,aAAa,QACb,aAAa,SACb,aAAa,GAEX,MAAM,CAWlB;IAED;;;;MA4CC;IAED,6CAEC;IAED;;;;;aA2CC;IAED;;;;OAIG;IACH,wEA8BC;IAED;;;;;;OAMG;IACH,kCAJW,MAAM,QACN,MAAM,cACN,OAAO,UAqBjB;IAED;;;;;OAKG;IACH,oDAYC;IAED;;;;;OAKG;IACH,iCAJW,MAAM,YACN,MAAM,GACJ,OAAO,GAAC,MAAM,CAO1B;IAED;;;;OAIG;IACH,iCAHW,MAAM,GACJ,MAAM,EAAE,CAOpB;IAED;;;OAGG;IACH,8EAFa,MAAM,CASlB;IAED;;;;;;OAMG;IACH,0DAJW,SAAsB,KAAc,CAAC,oBACrC,OAAO,GAAC,MAAM,GACZ,MAAM,CA4BlB;IAED,0GAyBC;IAED,qIAyDC;IAED;;;;;;OAMG;IACH,oDAFa,IAAI,MAAM,EAAE,MAAM,CAAC,CAkG/B;IAED,gIASC;IAED;;;OAGG;IACH,4DASC;IAED;;;OAGG;IACH,kFAaC;IAED;;;;OAIG;IACH,wDAaC;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,MAAM,CAclB;IAED;;;;;;;;;;OAUG;IACH,qCANW,MAAM,QACN,KAAc,cACd,MAAM,eACN,MAAM,8BAyHhB;IAED,wEAGC;IAED;;;;;;;;OAQG;IACH,yCAPW,MAAM,wBAEN,MAAM,mBACN,aAAuC,0CAEvC,MAAM,QAkEhB;IAED;;;;OAIG;IACH,+CAGC;IAED;;;;;;;OAOG;IACH,wDA6BC;IAED;;;;;;OAMG;IACH,iHA2BC;IAED;;;;;;OAMG;IACH,2FAMC;IAED;;;;;;;OAOG;IACH;;;QAoCC;IAED;;;;;;OAMG;IACH,yCAJW,MAAM,sDAuBhB;IAED;;;;;OAKG;IACH,yBAJW,MAAM,EAAE,YACR,MAAM,GACJ,IAAI,MAAM,EAAE,MAAM,CAAC,CAU/B;IAED;;OAEG;IACH,4BAAwB;IAExB;;;OAGG;IACH,oDAgBC;IAED;;;;;OAKG;IACH,wBAJW,GAAG,cACH,MAAM,uBAqChB;IAED;;;;;;;;;;;;;;;;;;MA+BC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA4BC;IAED;;;OAGG;IACH,mCAFW,MAAM;;MAOhB;IAED;;;OAGG;IACH,iCAFW,MAAM;;MAOhB;IAED,6CAQC;IAED;;;;;;;;;;;OAWG;IACH;QAL4B,KAAK,EAAtB,MAAM;QACW,KAAK,EAAtB,MAAM;QACa,MAAM,EAAzB,MAAM,EAAE;QAC0B,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;MA2ChD;CACF"}