@deephaven/chart 0.38.1-beta.9 → 0.38.1-chart-refactor.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Chart.d.ts CHANGED
@@ -2,7 +2,7 @@ import { Component, ReactElement, RefObject } from 'react';
2
2
  import { IconDefinition } from '@deephaven/icons';
3
3
  import type { dh as DhType } from '@deephaven/jsapi-types';
4
4
  import { DateTimeColumnFormatterOptions, DecimalColumnFormatterOptions, IntegerColumnFormatterOptions, FormattingRule, ColumnFormatSettings, DateTimeFormatSettings } from '@deephaven/jsapi-utils';
5
- import { Layout, Icon, PlotData } from 'plotly.js';
5
+ import { Layout, Icon, Data } from 'plotly.js';
6
6
  import Plot from './plotly/Plot';
7
7
  import ChartModel from './ChartModel';
8
8
  import { ChartModelSettings } from './ChartUtils';
@@ -16,6 +16,7 @@ interface ChartProps {
16
16
  model: ChartModel;
17
17
  settings: FormatterSettings;
18
18
  isActive: boolean;
19
+ PlotComponent?: typeof Plot;
19
20
  onDisconnect: () => void;
20
21
  onReconnect: () => void;
21
22
  onUpdate: (obj: {
@@ -25,7 +26,7 @@ interface ChartProps {
25
26
  onSettingsChanged: (settings: Partial<ChartModelSettings>) => void;
26
27
  }
27
28
  interface ChartState {
28
- data: Partial<PlotData>[] | null;
29
+ data: Partial<Data>[] | null;
29
30
  downsamplingError: unknown;
30
31
  isDownsampleFinished: boolean;
31
32
  isDownsampleInProgress: boolean;
@@ -43,6 +44,7 @@ export declare class Chart extends Component<ChartProps, ChartState> {
43
44
  showTSeparator: boolean;
44
45
  formatter: never[];
45
46
  };
47
+ PlotComponent: any;
46
48
  onDisconnect: () => void;
47
49
  onReconnect: () => void;
48
50
  onUpdate: () => void;
@@ -71,7 +73,7 @@ export declare class Chart extends Component<ChartProps, ChartState> {
71
73
  ranges?: unknown;
72
74
  isSubscribed: boolean;
73
75
  isLoadedFired: boolean;
74
- getCachedConfig: (downsamplingError: unknown, isDownsampleFinished: boolean, isDownsampleInProgress: boolean, isDownsamplingDisabled: boolean) => {
76
+ getCachedConfig: (downsamplingError: unknown, isDownsampleFinished: boolean, isDownsampleInProgress: boolean, isDownsamplingDisabled: boolean, is3d: boolean) => {
75
77
  displaylogo: boolean;
76
78
  displayModeBar: string | boolean;
77
79
  modeBarButtons: (string[] | {
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../src/Chart.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../src/Chart.tsx"],"names":[],"mappings":"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"}
package/dist/Chart.js CHANGED
@@ -58,7 +58,7 @@ export class Chart extends Component {
58
58
  _defineProperty(this, "ranges", void 0);
59
59
  _defineProperty(this, "isSubscribed", void 0);
60
60
  _defineProperty(this, "isLoadedFired", void 0);
61
- _defineProperty(this, "getCachedConfig", memoize((downsamplingError, isDownsampleFinished, isDownsampleInProgress, isDownsamplingDisabled) => {
61
+ _defineProperty(this, "getCachedConfig", memoize((downsamplingError, isDownsampleFinished, isDownsampleInProgress, isDownsamplingDisabled, is3d) => {
62
62
  var customButtons = [];
63
63
  var hasDownsampleError = Boolean(downsamplingError);
64
64
  if (hasDownsampleError) {
@@ -88,7 +88,7 @@ export class Chart extends Component {
88
88
  // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
89
89
  isDownsampleInProgress || hasDownsampleError ? true : 'hover',
90
90
  // Each array gets grouped together in the mode bar
91
- modeBarButtons: [customButtons, ['toImage'], ['zoom2d', 'pan2d'], ['zoomIn2d', 'zoomOut2d', 'autoScale2d', 'resetScale2d']]
91
+ modeBarButtons: [customButtons, ['toImage'], is3d ? ['zoom3d', 'pan3d'] : ['zoom2d', 'pan2d'], is3d ? ['orbitRotation', 'tableRotation', 'resetCameraDefault3d'] : ['zoomIn2d', 'zoomOut2d', 'autoScale2d', 'resetScale2d']]
92
92
  };
93
93
  }));
94
94
  this.handleAfterPlot = this.handleAfterPlot.bind(this);
@@ -439,6 +439,10 @@ export class Chart extends Component {
439
439
  }
440
440
  }
441
441
  render() {
442
+ var _data$0$type$includes, _data$0$type;
443
+ var {
444
+ PlotComponent
445
+ } = this.props;
442
446
  var {
443
447
  data,
444
448
  downsamplingError,
@@ -448,12 +452,12 @@ export class Chart extends Component {
448
452
  layout,
449
453
  revision
450
454
  } = this.state;
451
- var config = this.getCachedConfig(downsamplingError, isDownsampleFinished, isDownsampleInProgress, isDownsamplingDisabled);
455
+ var config = this.getCachedConfig(downsamplingError, isDownsampleFinished, isDownsampleInProgress, isDownsamplingDisabled, (_data$0$type$includes = data === null || data === void 0 ? void 0 : (_data$0$type = data[0].type) === null || _data$0$type === void 0 ? void 0 : _data$0$type.includes('3d')) !== null && _data$0$type$includes !== void 0 ? _data$0$type$includes : false);
452
456
  var isPlotShown = data != null;
453
457
  return /*#__PURE__*/React.createElement("div", {
454
458
  className: "h-100 w-100 chart-wrapper",
455
459
  ref: this.plotWrapper
456
- }, isPlotShown && /*#__PURE__*/React.createElement(Plot, {
460
+ }, isPlotShown && /*#__PURE__*/React.createElement(PlotComponent, {
457
461
  ref: this.plot,
458
462
  data: data,
459
463
  layout: layout,
@@ -481,6 +485,7 @@ _defineProperty(Chart, "defaultProps", {
481
485
  showTSeparator: true,
482
486
  formatter: []
483
487
  },
488
+ PlotComponent: Plot,
484
489
  onDisconnect: () => undefined,
485
490
  onReconnect: () => undefined,
486
491
  onUpdate: () => undefined,
package/dist/Chart.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.js","names":["React","Component","deepEqual","memoize","vsLoading","dhGraphLineDown","dhWarningFilled","Formatter","FormatterUtils","DateUtils","Log","Plotly","Plot","ChartModel","ChartUtils","log","module","Chart","convertIcon","faIcon","width","path","icon","stringPath","ascent","descent","transform","downsampleButtonTitle","isDownsampleInProgress","isDownsamplingDisabled","downsampleButtonAttr","undefined","constructor","props","downsamplingError","isDownsampleFinished","customButtons","hasDownsampleError","Boolean","push","name","click","attr","handleDownsampleClick","displaylogo","displayModeBar","modeBarButtons","handleAfterPlot","bind","handleModelEvent","handlePlotUpdate","handleRelayout","handleRestyle","plot","createRef","plotWrapper","columnFormats","dateTimeFormatterOptions","decimalFormatOptions","integerFormatOptions","isSubscribed","isLoadedFired","currentSeries","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","rect","height","debug2","setDownsamplingDisabled","event","type","detail","EVENT_UPDATED","onUpdate","isLoading","EVENT_LOADFINISHED","EVENT_DISCONNECT","onDisconnect","EVENT_RECONNECT","onReconnect","EVENT_DOWNSAMPLESTARTED","EVENT_DOWNSAMPLEFINISHED","EVENT_DOWNSAMPLENEEDED","EVENT_DOWNSAMPLEFAILED","message","onError","Error","debug","figure","ranges","getLayoutRanges","isRangesChanged","changes","hiddenlabels","onSettingsChanged","hiddenSeries","seriesIndexes","Object","keys","includes","reduce","acc","visible","force","warn","isRectChanged","setDimensions","getColumnFormats","getDateTimeFormatterOptions","updateFormatter","dh","formatter","setFormatter","relayout","el","autosize","catch","e","render","config","getCachedConfig","isPlotShown","error","timeZone","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator"],"sources":["../src/Chart.tsx"],"sourcesContent":["import React, { Component, ReactElement, RefObject } from 'react';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoize-one';\nimport {\n vsLoading,\n dhGraphLineDown,\n dhWarningFilled,\n IconDefinition,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n Formatter,\n FormatterUtils,\n DateUtils,\n DateTimeColumnFormatterOptions,\n DecimalColumnFormatterOptions,\n IntegerColumnFormatterOptions,\n FormattingRule,\n ColumnFormatSettings,\n DateTimeFormatSettings,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { Layout, Icon, PlotData } from 'plotly.js';\nimport Plotly from './plotly/Plotly';\nimport Plot from './plotly/Plot';\nimport ChartModel from './ChartModel';\nimport ChartUtils, { ChartModelSettings } from './ChartUtils';\nimport './Chart.scss';\n\nconst log = Log.module('Chart');\n\ntype FormatterSettings = ColumnFormatSettings &\n DateTimeFormatSettings & {\n decimalFormatOptions?: DecimalColumnFormatterOptions;\n integerFormatOptions?: IntegerColumnFormatterOptions;\n };\n\ninterface ChartProps {\n dh: DhType;\n model: ChartModel;\n settings: FormatterSettings;\n isActive: boolean;\n onDisconnect: () => void;\n onReconnect: () => void;\n onUpdate: (obj: { isLoading: boolean }) => void;\n onError: (error: Error) => void;\n onSettingsChanged: (settings: Partial<ChartModelSettings>) => void;\n}\n\ninterface ChartState {\n data: Partial<PlotData>[] | null;\n downsamplingError: unknown;\n isDownsampleFinished: boolean;\n isDownsampleInProgress: boolean;\n isDownsamplingDisabled: boolean;\n layout: Partial<Layout>;\n revision: number;\n}\n\nexport class Chart extends Component<ChartProps, ChartState> {\n static 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: (): void => undefined,\n onReconnect: (): void => undefined,\n onUpdate: (): void => undefined,\n onError: (): void => undefined,\n onSettingsChanged: (): void => undefined,\n };\n\n /**\n * Convert a font awesome icon definition to a plotly icon definition\n * @param faIcon The icon to convert\n */\n static convertIcon(faIcon: IconDefinition): Icon {\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 const stringPath = `${path}`;\n return {\n width,\n path: stringPath,\n ascent: width,\n descent: 0,\n transform: `matrix(1, 0, 0, 1, 0, 0)`,\n };\n }\n\n static downsampleButtonTitle(\n isDownsampleInProgress: boolean,\n isDownsamplingDisabled: boolean\n ): string {\n if (isDownsampleInProgress) {\n return 'Downsampling in progress...';\n }\n\n return isDownsamplingDisabled\n ? 'Downsampling disabled, click to enable'\n : 'Downsampling enabled, click to disable';\n }\n\n static downsampleButtonAttr(\n isDownsampleInProgress: boolean,\n isDownsamplingDisabled: boolean\n ): string | undefined {\n if (isDownsampleInProgress) {\n return 'animation-spin';\n }\n\n return isDownsamplingDisabled ? undefined : 'fill-active';\n }\n\n constructor(props: ChartProps) {\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.isSubscribed = false;\n this.isLoadedFired = false;\n this.currentSeries = 0;\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(): void {\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: ChartProps): void {\n const { isActive, settings } = this.props;\n this.updateFormatterSettings(settings as FormatterSettings);\n\n if (isActive !== prevProps.isActive) {\n if (isActive) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.unsubscribe();\n }\n\n currentSeries: number;\n\n plot: RefObject<typeof Plot>;\n\n plotWrapper: RefObject<HTMLDivElement>;\n\n columnFormats?: FormattingRule[];\n\n dateTimeFormatterOptions?: DateTimeColumnFormatterOptions;\n\n decimalFormatOptions: DecimalColumnFormatterOptions;\n\n integerFormatOptions: IntegerColumnFormatterOptions;\n\n rect?: DOMRect;\n\n ranges?: unknown;\n\n isSubscribed: boolean;\n\n isLoadedFired: boolean;\n\n getCachedConfig = memoize(\n (\n downsamplingError: unknown,\n isDownsampleFinished: boolean,\n isDownsampleInProgress: boolean,\n isDownsamplingDisabled: boolean\n ) => {\n const customButtons = [];\n const hasDownsampleError = Boolean(downsamplingError);\n if (hasDownsampleError) {\n customButtons.push({\n name: `Downsampling failed: ${downsamplingError}`,\n click: () => undefined,\n icon: Chart.convertIcon(dhWarningFilled),\n attr: 'fill-warning',\n });\n }\n\n if (\n isDownsampleFinished ||\n isDownsampleInProgress ||\n isDownsamplingDisabled ||\n hasDownsampleError\n ) {\n const name = Chart.downsampleButtonTitle(\n isDownsampleInProgress,\n isDownsamplingDisabled\n );\n const attr = Chart.downsampleButtonAttr(\n isDownsampleInProgress,\n isDownsamplingDisabled\n );\n\n const icon = isDownsampleInProgress ? vsLoading : dhGraphLineDown;\n customButtons.push({\n name,\n icon: Chart.convertIcon(icon),\n click: this.handleDownsampleClick,\n attr,\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 // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n isDownsampleInProgress || hasDownsampleError ? 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(): DOMRect | null {\n return this.plotWrapper.current?.getBoundingClientRect() ?? null;\n }\n\n initData(): void {\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(): void {\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(): void {\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(): void {\n if (this.plot.current != null) {\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(): void {\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: CustomEvent): void {\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 if (typeof layout.datarevision === 'number') {\n layout.datarevision += 1;\n }\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;\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: { layout: Layout }): void {\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: { hiddenlabels?: string[] }): void {\n log.debug('handleRelayout', changes);\n if (changes.hiddenlabels != null) {\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 Record<string, unknown>,\n number[]\n ]): void {\n log.debug('handleRestyle', changes, seriesIndexes);\n if (Object.keys(changes).includes('visible')) {\n const { data } = this.state;\n const { onSettingsChanged } = this.props;\n if (data != null) {\n const hiddenSeries = data.reduce(\n (acc: string[], { name, visible }) =>\n name != null && visible === 'legendonly' ? [...acc, name] : acc,\n []\n );\n onSettingsChanged({ hiddenSeries });\n }\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 force Force a change even if the chart dimensions haven't changed (eg. after pan/zoom)\n */\n updateModelDimensions(force = false): void {\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(): void {\n const { settings } = this.props;\n this.updateFormatterSettings(settings as FormatterSettings);\n }\n\n updateFormatterSettings(settings: FormatterSettings): void {\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(): void {\n const { dh } = this.props;\n const formatter = new Formatter(\n dh,\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(): void {\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(\n (e: unknown) => {\n log.debug('Unable to resize, promise rejected', e);\n }\n );\n }\n }\n\n render(): ReactElement {\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 onError={log.error}\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\nexport default Chart;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Chart.js","names":["React","Component","deepEqual","memoize","vsLoading","dhGraphLineDown","dhWarningFilled","Formatter","FormatterUtils","DateUtils","Log","Plotly","Plot","ChartModel","ChartUtils","log","module","Chart","convertIcon","faIcon","width","path","icon","stringPath","ascent","descent","transform","downsampleButtonTitle","isDownsampleInProgress","isDownsamplingDisabled","downsampleButtonAttr","undefined","constructor","props","downsamplingError","isDownsampleFinished","is3d","customButtons","hasDownsampleError","Boolean","push","name","click","attr","handleDownsampleClick","displaylogo","displayModeBar","modeBarButtons","handleAfterPlot","bind","handleModelEvent","handlePlotUpdate","handleRelayout","handleRestyle","plot","createRef","plotWrapper","columnFormats","dateTimeFormatterOptions","decimalFormatOptions","integerFormatOptions","isSubscribed","isLoadedFired","currentSeries","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","rect","height","debug2","setDownsamplingDisabled","event","type","detail","EVENT_UPDATED","onUpdate","isLoading","EVENT_LOADFINISHED","EVENT_DISCONNECT","onDisconnect","EVENT_RECONNECT","onReconnect","EVENT_DOWNSAMPLESTARTED","EVENT_DOWNSAMPLEFINISHED","EVENT_DOWNSAMPLENEEDED","EVENT_DOWNSAMPLEFAILED","message","onError","Error","debug","figure","ranges","getLayoutRanges","isRangesChanged","changes","hiddenlabels","onSettingsChanged","hiddenSeries","seriesIndexes","Object","keys","includes","reduce","acc","visible","force","warn","isRectChanged","setDimensions","getColumnFormats","getDateTimeFormatterOptions","updateFormatter","dh","formatter","setFormatter","relayout","el","autosize","catch","e","render","PlotComponent","config","getCachedConfig","isPlotShown","error","timeZone","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator"],"sources":["../src/Chart.tsx"],"sourcesContent":["import React, { Component, ReactElement, RefObject } from 'react';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoize-one';\nimport {\n vsLoading,\n dhGraphLineDown,\n dhWarningFilled,\n IconDefinition,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n Formatter,\n FormatterUtils,\n DateUtils,\n DateTimeColumnFormatterOptions,\n DecimalColumnFormatterOptions,\n IntegerColumnFormatterOptions,\n FormattingRule,\n ColumnFormatSettings,\n DateTimeFormatSettings,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { Layout, Icon, Data, PlotData } from 'plotly.js';\nimport Plotly from './plotly/Plotly';\nimport Plot from './plotly/Plot';\nimport ChartModel from './ChartModel';\nimport ChartUtils, { ChartModelSettings } from './ChartUtils';\nimport './Chart.scss';\n\nconst log = Log.module('Chart');\n\ntype FormatterSettings = ColumnFormatSettings &\n DateTimeFormatSettings & {\n decimalFormatOptions?: DecimalColumnFormatterOptions;\n integerFormatOptions?: IntegerColumnFormatterOptions;\n };\n\ninterface ChartProps {\n dh: DhType;\n model: ChartModel;\n settings: FormatterSettings;\n isActive: boolean;\n PlotComponent?: typeof Plot;\n onDisconnect: () => void;\n onReconnect: () => void;\n onUpdate: (obj: { isLoading: boolean }) => void;\n onError: (error: Error) => void;\n onSettingsChanged: (settings: Partial<ChartModelSettings>) => void;\n}\n\ninterface ChartState {\n data: Partial<Data>[] | null;\n downsamplingError: unknown;\n isDownsampleFinished: boolean;\n isDownsampleInProgress: boolean;\n isDownsamplingDisabled: boolean;\n layout: Partial<Layout>;\n revision: number;\n}\n\nexport class Chart extends Component<ChartProps, ChartState> {\n static 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 PlotComponent: Plot,\n onDisconnect: (): void => undefined,\n onReconnect: (): void => undefined,\n onUpdate: (): void => undefined,\n onError: (): void => undefined,\n onSettingsChanged: (): void => undefined,\n };\n\n /**\n * Convert a font awesome icon definition to a plotly icon definition\n * @param faIcon The icon to convert\n */\n static convertIcon(faIcon: IconDefinition): Icon {\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 const stringPath = `${path}`;\n return {\n width,\n path: stringPath,\n ascent: width,\n descent: 0,\n transform: `matrix(1, 0, 0, 1, 0, 0)`,\n };\n }\n\n static downsampleButtonTitle(\n isDownsampleInProgress: boolean,\n isDownsamplingDisabled: boolean\n ): string {\n if (isDownsampleInProgress) {\n return 'Downsampling in progress...';\n }\n\n return isDownsamplingDisabled\n ? 'Downsampling disabled, click to enable'\n : 'Downsampling enabled, click to disable';\n }\n\n static downsampleButtonAttr(\n isDownsampleInProgress: boolean,\n isDownsamplingDisabled: boolean\n ): string | undefined {\n if (isDownsampleInProgress) {\n return 'animation-spin';\n }\n\n return isDownsamplingDisabled ? undefined : 'fill-active';\n }\n\n constructor(props: ChartProps) {\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.isSubscribed = false;\n this.isLoadedFired = false;\n this.currentSeries = 0;\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(): void {\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: ChartProps): void {\n const { isActive, settings } = this.props;\n this.updateFormatterSettings(settings as FormatterSettings);\n\n if (isActive !== prevProps.isActive) {\n if (isActive) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.unsubscribe();\n }\n\n currentSeries: number;\n\n plot: RefObject<typeof Plot>;\n\n plotWrapper: RefObject<HTMLDivElement>;\n\n columnFormats?: FormattingRule[];\n\n dateTimeFormatterOptions?: DateTimeColumnFormatterOptions;\n\n decimalFormatOptions: DecimalColumnFormatterOptions;\n\n integerFormatOptions: IntegerColumnFormatterOptions;\n\n rect?: DOMRect;\n\n ranges?: unknown;\n\n isSubscribed: boolean;\n\n isLoadedFired: boolean;\n\n getCachedConfig = memoize(\n (\n downsamplingError: unknown,\n isDownsampleFinished: boolean,\n isDownsampleInProgress: boolean,\n isDownsamplingDisabled: boolean,\n is3d: boolean\n ) => {\n const customButtons = [];\n const hasDownsampleError = Boolean(downsamplingError);\n if (hasDownsampleError) {\n customButtons.push({\n name: `Downsampling failed: ${downsamplingError}`,\n click: () => undefined,\n icon: Chart.convertIcon(dhWarningFilled),\n attr: 'fill-warning',\n });\n }\n\n if (\n isDownsampleFinished ||\n isDownsampleInProgress ||\n isDownsamplingDisabled ||\n hasDownsampleError\n ) {\n const name = Chart.downsampleButtonTitle(\n isDownsampleInProgress,\n isDownsamplingDisabled\n );\n const attr = Chart.downsampleButtonAttr(\n isDownsampleInProgress,\n isDownsamplingDisabled\n );\n\n const icon = isDownsampleInProgress ? vsLoading : dhGraphLineDown;\n customButtons.push({\n name,\n icon: Chart.convertIcon(icon),\n click: this.handleDownsampleClick,\n attr,\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 // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n isDownsampleInProgress || hasDownsampleError ? true : 'hover',\n\n // Each array gets grouped together in the mode bar\n modeBarButtons: [\n customButtons,\n ['toImage'],\n is3d ? ['zoom3d', 'pan3d'] : ['zoom2d', 'pan2d'],\n is3d\n ? ['orbitRotation', 'tableRotation', 'resetCameraDefault3d']\n : ['zoomIn2d', 'zoomOut2d', 'autoScale2d', 'resetScale2d'],\n ],\n };\n }\n );\n\n getPlotRect(): DOMRect | null {\n return this.plotWrapper.current?.getBoundingClientRect() ?? null;\n }\n\n initData(): void {\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(): void {\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(): void {\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(): void {\n if (this.plot.current != null) {\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(): void {\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: CustomEvent): void {\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 if (typeof layout.datarevision === 'number') {\n layout.datarevision += 1;\n }\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;\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: { layout: Layout }): void {\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: { hiddenlabels?: string[] }): void {\n log.debug('handleRelayout', changes);\n if (changes.hiddenlabels != null) {\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 Record<string, unknown>,\n number[]\n ]): void {\n log.debug('handleRestyle', changes, seriesIndexes);\n if (Object.keys(changes).includes('visible')) {\n const { data } = this.state;\n const { onSettingsChanged } = this.props;\n if (data != null) {\n const hiddenSeries = (data as Partial<PlotData>[]).reduce(\n (acc: string[], { name, visible }) =>\n name != null && visible === 'legendonly' ? [...acc, name] : acc,\n []\n );\n onSettingsChanged({ hiddenSeries });\n }\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 force Force a change even if the chart dimensions haven't changed (eg. after pan/zoom)\n */\n updateModelDimensions(force = false): void {\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(): void {\n const { settings } = this.props;\n this.updateFormatterSettings(settings as FormatterSettings);\n }\n\n updateFormatterSettings(settings: FormatterSettings): void {\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(): void {\n const { dh } = this.props;\n const formatter = new Formatter(\n dh,\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(): void {\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(\n (e: unknown) => {\n log.debug('Unable to resize, promise rejected', e);\n }\n );\n }\n }\n\n render(): ReactElement {\n const { PlotComponent } = this.props;\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 data?.[0].type?.includes('3d') ?? false\n );\n const isPlotShown = data != null;\n return (\n <div className=\"h-100 w-100 chart-wrapper\" ref={this.plotWrapper}>\n {isPlotShown && (\n <PlotComponent\n ref={this.plot}\n data={data}\n layout={layout}\n revision={revision}\n config={config}\n onAfterPlot={this.handleAfterPlot}\n onError={log.error}\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\nexport default Chart;\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Formatter } from '@deephaven/jsapi-utils';
2
- import { Layout, PlotData } from 'plotly.js';
2
+ import { Layout, Data } from 'plotly.js';
3
3
  import { FilterColumnMap, FilterMap } from './ChartUtils';
4
4
  export type ChartEvent = CustomEvent;
5
5
  /**
@@ -22,7 +22,7 @@ declare class ChartModel {
22
22
  rect?: DOMRect;
23
23
  isDownsamplingDisabled: boolean;
24
24
  title?: string;
25
- getData(): Partial<PlotData>[];
25
+ getData(): Partial<Data>[];
26
26
  getDefaultTitle(): string;
27
27
  getLayout(): Partial<Layout>;
28
28
  getFilterColumnMap(): FilterColumnMap;
@@ -1 +1 @@
1
- {"version":3,"file":"ChartModel.d.ts","sourceRoot":"","sources":["../src/ChartModel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC;AACrC;;;;GAIG;AACH,cAAM,UAAU;IACd,MAAM,CAAC,aAAa,SAA8B;IAElD,MAAM,CAAC,gBAAgB,SAAiC;IAExD,MAAM,CAAC,eAAe,SAAgC;IAEtD,MAAM,CAAC,uBAAuB,SAAwC;IAEtE,MAAM,CAAC,wBAAwB,SAAyC;IAExE,MAAM,CAAC,sBAAsB,SAAuC;IAEpE,MAAM,CAAC,sBAAsB,SAAuC;IAEpE,MAAM,CAAC,kBAAkB,SAAmC;;IAO5D,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,EAAE,CAAC;IAE3C,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,sBAAsB,EAAE,OAAO,CAAC;IAEhC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;IAI9B,eAAe,IAAI,MAAM;IAIzB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,kBAAkB,IAAI,eAAe;IAIrC,gBAAgB,IAAI,OAAO;IAK3B,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAElC;;OAEG;IAEH,KAAK,IAAI,IAAI;IAEb;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAIxC;;;OAGG;IACH,uBAAuB,CAAC,sBAAsB,EAAE,OAAO,GAAG,IAAI;IAI9D;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIlC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAItD,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAIxD,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMlC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAI/B,cAAc,IAAI,IAAI;IAItB,aAAa,IAAI,IAAI;IAIrB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAM1C,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAM3C,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAMzC,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAM3C,gBAAgB,IAAI,IAAI;CAGzB;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ChartModel.d.ts","sourceRoot":"","sources":["../src/ChartModel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC;AACrC;;;;GAIG;AACH,cAAM,UAAU;IACd,MAAM,CAAC,aAAa,SAA8B;IAElD,MAAM,CAAC,gBAAgB,SAAiC;IAExD,MAAM,CAAC,eAAe,SAAgC;IAEtD,MAAM,CAAC,uBAAuB,SAAwC;IAEtE,MAAM,CAAC,wBAAwB,SAAyC;IAExE,MAAM,CAAC,sBAAsB,SAAuC;IAEpE,MAAM,CAAC,sBAAsB,SAAuC;IAEpE,MAAM,CAAC,kBAAkB,SAAmC;;IAO5D,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,EAAE,CAAC;IAE3C,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,sBAAsB,EAAE,OAAO,CAAC;IAEhC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;IAI1B,eAAe,IAAI,MAAM;IAIzB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,kBAAkB,IAAI,eAAe;IAIrC,gBAAgB,IAAI,OAAO;IAK3B,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAElC;;OAEG;IAEH,KAAK,IAAI,IAAI;IAEb;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAIxC;;;OAGG;IACH,uBAAuB,CAAC,sBAAsB,EAAE,OAAO,GAAG,IAAI;IAI9D;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIlC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAItD,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAIxD,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMlC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAI/B,cAAc,IAAI,IAAI;IAItB,aAAa,IAAI,IAAI;IAIrB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAM1C,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAM3C,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAMzC,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAM3C,gBAAgB,IAAI,IAAI;CAGzB;AAED,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartModel.js","names":["ChartModel","constructor","listeners","isDownsamplingDisabled","getData","getDefaultTitle","getLayout","getFilterColumnMap","Map","isFilterRequired","setFilter","filter","close","setFormatter","formatter","setDownsamplingDisabled","setDimensions","rect","setTitle","title","subscribe","callback","push","unsubscribe","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"],"sources":["../src/ChartModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport { Layout, PlotData } from 'plotly.js';\nimport { FilterColumnMap, FilterMap } from './ChartUtils';\n\nexport type ChartEvent = CustomEvent;\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.isDownsamplingDisabled = false;\n }\n\n listeners: ((event: ChartEvent) => void)[];\n\n formatter?: Formatter;\n\n rect?: DOMRect;\n\n isDownsamplingDisabled: boolean;\n\n title?: string;\n\n getData(): Partial<PlotData>[] {\n return [];\n }\n\n getDefaultTitle(): string {\n return '';\n }\n\n getLayout(): Partial<Layout> {\n return {};\n }\n\n getFilterColumnMap(): FilterColumnMap {\n return new Map();\n }\n\n isFilterRequired(): boolean {\n return false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setFilter(filter: FilterMap): void {}\n\n /**\n * Close this model, clean up any underlying subscriptions\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n close(): void {}\n\n /**\n * Set the formatter to use when charting the data.\n * @param formatter The formatter to use to format the charting data\n */\n setFormatter(formatter: Formatter): void {\n this.formatter = formatter;\n }\n\n /**\n * Disable downsampling\n * @param isDownsamplingDisabled True if downsampling should be disabled\n */\n setDownsamplingDisabled(isDownsamplingDisabled: boolean): void {\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 rect The bounding rectangle of the plot\n */\n setDimensions(rect: DOMRect): void {\n this.rect = rect;\n }\n\n setTitle(title: string): void {\n this.title = title;\n }\n\n /**\n * Subscribe to this ChartModel and start listening for all events.\n * @param callback Callback when an event occurs\n */\n subscribe(callback: (event: ChartEvent) => void): void {\n this.listeners.push(callback);\n }\n\n unsubscribe(callback: (event: ChartEvent) => void): void {\n this.listeners = this.listeners.filter(listener => listener !== callback);\n }\n\n fireEvent(event: ChartEvent): void {\n for (let i = 0; i < this.listeners.length; i += 1) {\n this.listeners[i](event);\n }\n }\n\n fireUpdate(data: unknown): void {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_UPDATED, { detail: data }));\n }\n\n fireDisconnect(): void {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_DISCONNECT));\n }\n\n fireReconnect(): void {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_RECONNECT));\n }\n\n fireDownsampleStart(detail: unknown): void {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLESTARTED, { detail })\n );\n }\n\n fireDownsampleFinish(detail: unknown): void {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLEFINISHED, { detail })\n );\n }\n\n fireDownsampleFail(detail: unknown): void {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLEFAILED, { detail })\n );\n }\n\n fireDownsampleNeeded(detail: unknown): void {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLENEEDED, { detail })\n );\n }\n\n fireLoadFinished(): void {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_LOADFINISHED));\n }\n}\n\nexport default ChartModel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ChartModel.js","names":["ChartModel","constructor","listeners","isDownsamplingDisabled","getData","getDefaultTitle","getLayout","getFilterColumnMap","Map","isFilterRequired","setFilter","filter","close","setFormatter","formatter","setDownsamplingDisabled","setDimensions","rect","setTitle","title","subscribe","callback","push","unsubscribe","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"],"sources":["../src/ChartModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport { Layout, Data } from 'plotly.js';\nimport { FilterColumnMap, FilterMap } from './ChartUtils';\n\nexport type ChartEvent = CustomEvent;\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.isDownsamplingDisabled = false;\n }\n\n listeners: ((event: ChartEvent) => void)[];\n\n formatter?: Formatter;\n\n rect?: DOMRect;\n\n isDownsamplingDisabled: boolean;\n\n title?: string;\n\n getData(): Partial<Data>[] {\n return [];\n }\n\n getDefaultTitle(): string {\n return '';\n }\n\n getLayout(): Partial<Layout> {\n return {};\n }\n\n getFilterColumnMap(): FilterColumnMap {\n return new Map();\n }\n\n isFilterRequired(): boolean {\n return false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setFilter(filter: FilterMap): void {}\n\n /**\n * Close this model, clean up any underlying subscriptions\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n close(): void {}\n\n /**\n * Set the formatter to use when charting the data.\n * @param formatter The formatter to use to format the charting data\n */\n setFormatter(formatter: Formatter): void {\n this.formatter = formatter;\n }\n\n /**\n * Disable downsampling\n * @param isDownsamplingDisabled True if downsampling should be disabled\n */\n setDownsamplingDisabled(isDownsamplingDisabled: boolean): void {\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 rect The bounding rectangle of the plot\n */\n setDimensions(rect: DOMRect): void {\n this.rect = rect;\n }\n\n setTitle(title: string): void {\n this.title = title;\n }\n\n /**\n * Subscribe to this ChartModel and start listening for all events.\n * @param callback Callback when an event occurs\n */\n subscribe(callback: (event: ChartEvent) => void): void {\n this.listeners.push(callback);\n }\n\n unsubscribe(callback: (event: ChartEvent) => void): void {\n this.listeners = this.listeners.filter(listener => listener !== callback);\n }\n\n fireEvent(event: ChartEvent): void {\n for (let i = 0; i < this.listeners.length; i += 1) {\n this.listeners[i](event);\n }\n }\n\n fireUpdate(data: unknown): void {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_UPDATED, { detail: data }));\n }\n\n fireDisconnect(): void {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_DISCONNECT));\n }\n\n fireReconnect(): void {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_RECONNECT));\n }\n\n fireDownsampleStart(detail: unknown): void {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLESTARTED, { detail })\n );\n }\n\n fireDownsampleFinish(detail: unknown): void {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLEFINISHED, { detail })\n );\n }\n\n fireDownsampleFail(detail: unknown): void {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLEFAILED, { detail })\n );\n }\n\n fireDownsampleNeeded(detail: unknown): void {\n this.fireEvent(\n new CustomEvent(ChartModel.EVENT_DOWNSAMPLENEEDED, { detail })\n );\n }\n\n fireLoadFinished(): void {\n this.fireEvent(new CustomEvent(ChartModel.EVENT_LOADFINISHED));\n }\n}\n\nexport default ChartModel;\n"],"mappings":"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"}
@@ -1,30 +1,32 @@
1
- import { Axis, Chart, Figure, Series, SeriesDataSource } from '@deephaven/jsapi-shim';
1
+ import type { Axis, AxisFormatType, AxisPosition, AxisType, Chart, dh as DhType, Figure, Series, SeriesDataSource } from '@deephaven/jsapi-types';
2
2
  declare class ChartTestUtils {
3
3
  static DEFAULT_CHART_TITLE: string;
4
4
  static DEFAULT_X_TITLE: string;
5
5
  static DEFAULT_Y_TITLE: string;
6
6
  static DEFAULT_SERIES_NAME: string;
7
- static makeAxis({ label, type, position, formatType, formatPattern, log, }?: {
8
- label?: string | undefined;
9
- type?: import("@deephaven/jsapi-shim").AxisType | undefined;
10
- position?: import("@deephaven/jsapi-shim").AxisPosition | undefined;
11
- formatType?: unknown;
12
- formatPattern?: string | undefined;
13
- log?: boolean | undefined;
7
+ private dh;
8
+ constructor(dh: DhType);
9
+ makeAxis({ label, type, position, formatType, formatPattern, log, }?: {
10
+ label?: string;
11
+ type?: AxisType;
12
+ position?: AxisPosition;
13
+ formatType?: AxisFormatType;
14
+ formatPattern?: string;
15
+ log?: boolean;
14
16
  }): Axis;
15
- static makeDefaultAxes(): Axis[];
16
- static makeSource({ axis, }: {
17
+ makeDefaultAxes(): Axis[];
18
+ makeSource({ axis }: {
17
19
  axis: Axis;
18
20
  }): SeriesDataSource;
19
- static makeDefaultSources(): SeriesDataSource[];
20
- static makeSeries({ name, plotStyle, sources, lineColor, shapeColor, }?: {
21
+ makeDefaultSources(): SeriesDataSource[];
22
+ makeSeries({ name, plotStyle, sources, lineColor, shapeColor, }?: {
21
23
  name?: string | undefined;
22
- plotStyle?: import("@deephaven/jsapi-shim").SeriesPlotStyle | undefined;
24
+ plotStyle?: null | undefined;
23
25
  sources?: SeriesDataSource[] | undefined;
24
26
  lineColor?: null | undefined;
25
27
  shapeColor?: null | undefined;
26
28
  }): Series;
27
- static makeChart({ title, series, axes, showLegend, rowspan, colspan, row, column, }?: {
29
+ makeChart({ title, series, axes, showLegend, rowspan, colspan, row, column, }?: {
28
30
  title?: string;
29
31
  series?: Series[];
30
32
  axes?: Axis[];
@@ -34,7 +36,7 @@ declare class ChartTestUtils {
34
36
  row?: number;
35
37
  column?: number;
36
38
  }): Chart;
37
- static makeFigure({ title, charts, rows, cols, }?: {
39
+ makeFigure({ title, charts, rows, cols, }?: {
38
40
  title?: string | undefined;
39
41
  charts?: Chart[] | undefined;
40
42
  rows?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTestUtils.d.ts","sourceRoot":"","sources":["../src/ChartTestUtils.ts"],"names":[],"mappings":"AAAA,OAAW,EACT,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAE/B,cAAM,cAAc;IAClB,MAAM,CAAC,mBAAmB,SAAiB;IAE3C,MAAM,CAAC,eAAe,SAAY;IAElC,MAAM,CAAC,eAAe,SAAY;IAElC,MAAM,CAAC,mBAAmB,SAAc;IAExC,MAAM,CAAC,QAAQ,CAAC,EACd,KAAc,EACd,IAAyB,EACzB,QAAsC,EACtC,UAAuC,EACvC,aAA6B,EAC7B,GAAW,GACZ;;;;;;;KAAK,GAAG,IAAI;IAYb,MAAM,CAAC,eAAe,IAAI,IAAI,EAAE;IAahC,MAAM,CAAC,UAAU,CAAC,EAChB,IAAgC,GACjC,EAAE;QACD,IAAI,EAAE,IAAI,CAAC;KACZ,GAAG,gBAAgB;IAKpB,MAAM,CAAC,kBAAkB,IAAI,gBAAgB,EAAE;IAK/C,MAAM,CAAC,UAAU,CAAC,EAChB,IAAyC,EACzC,SAA2C,EAC3C,OAA6C,EAC7C,SAAgB,EAChB,UAAiB,GAClB;;;;;;KAAK,GAAG,MAAM;IAWf,MAAM,CAAC,SAAS,CAAC,EACf,KAA0C,EAC1C,MAAsC,EACtC,IAAuC,EACvC,UAAiB,EACjB,OAAW,EACX,OAAW,EACX,GAAO,EACP,MAAU,GACX,GAAE;QACD,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;QACd,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;KACZ,GAAG,KAAK;IAcd,MAAM,CAAC,UAAU,CAAC,EAChB,KAAgB,EAChB,MAAqC,EACrC,IAAQ,EACR,IAAQ,GACT;;;;;KAAK,GAAG,MAAM;CAIhB;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"ChartTestUtils.d.ts","sourceRoot":"","sources":["../src/ChartTestUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,EAAE,IAAI,MAAM,EACZ,MAAM,EACN,MAAM,EACN,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,cAAM,cAAc;IAClB,MAAM,CAAC,mBAAmB,SAAiB;IAE3C,MAAM,CAAC,eAAe,SAAY;IAElC,MAAM,CAAC,eAAe,SAAY;IAElC,MAAM,CAAC,mBAAmB,SAAc;IAExC,OAAO,CAAC,EAAE,CAAS;gBAEP,EAAE,EAAE,MAAM;IAItB,QAAQ,CAAC,EACP,KAAc,EACd,IAAgB,EAChB,QAAoB,EACpB,UAAsB,EACtB,aAA6B,EAC7B,GAAW,GACZ,GAAE;QACD,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,QAAQ,CAAC,EAAE,YAAY,CAAC;QACxB,UAAU,CAAC,EAAE,cAAc,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,GAAG,CAAC,EAAE,OAAO,CAAC;KACV,GAAG,IAAI;IAab,eAAe,IAAI,IAAI,EAAE;IAczB,UAAU,CAAC,EAAE,IAAsB,EAAE,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,gBAAgB;IAKxE,kBAAkB,IAAI,gBAAgB,EAAE;IAKxC,UAAU,CAAC,EACT,IAAyC,EACzC,SAAgB,EAChB,OAAmC,EACnC,SAAgB,EAChB,UAAiB,GAClB;;;;;;KAAK,GAAG,MAAM;IAYf,SAAS,CAAC,EACR,KAA0C,EAC1C,MAA4B,EAC5B,IAA6B,EAC7B,UAAiB,EACjB,OAAW,EACX,OAAW,EACX,GAAO,EACP,MAAU,GACX,GAAE;QACD,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;QACd,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;KACZ,GAAG,KAAK;IAcd,UAAU,CAAC,EACT,KAAgB,EAChB,MAA2B,EAC3B,IAAQ,EACR,IAAQ,GACT;;;;;KAAK,GAAG,MAAM;CAIhB;AAED,eAAe,cAAc,CAAC"}
@@ -1,68 +1,80 @@
1
1
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
3
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
- import dh from '@deephaven/jsapi-shim';
5
4
  class ChartTestUtils {
6
- static makeAxis() {
5
+ constructor(dh) {
6
+ _defineProperty(this, "dh", void 0);
7
+ this.dh = dh;
8
+ }
9
+ makeAxis() {
7
10
  var {
8
11
  label = 'Axis',
9
- type = dh.plot.AxisType.X,
10
- position = dh.plot.AxisPosition.BOTTOM,
11
- formatType = dh.Axis.FORMAT_TYPE_NUMBER,
12
+ type = undefined,
13
+ position = undefined,
14
+ formatType = undefined,
12
15
  formatPattern = '###,###0.00',
13
16
  log = false
14
17
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
18
+ var {
19
+ dh
20
+ } = this;
15
21
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
22
  return new dh.Axis({
17
23
  label,
18
- type,
19
- position,
20
- formatType,
24
+ type: type !== null && type !== void 0 ? type : dh.plot.AxisType.X,
25
+ position: position !== null && position !== void 0 ? position : dh.plot.AxisPosition.BOTTOM,
26
+ formatType: formatType !== null && formatType !== void 0 ? formatType : dh.Axis.FORMAT_TYPE_NUMBER,
21
27
  formatPattern,
22
28
  log
23
29
  });
24
30
  }
25
- static makeDefaultAxes() {
26
- return [ChartTestUtils.makeAxis({
31
+ makeDefaultAxes() {
32
+ var {
33
+ dh
34
+ } = this;
35
+ return [this.makeAxis({
27
36
  label: ChartTestUtils.DEFAULT_X_TITLE,
28
37
  type: dh.plot.AxisType.X
29
- }), ChartTestUtils.makeAxis({
38
+ }), this.makeAxis({
30
39
  label: ChartTestUtils.DEFAULT_Y_TITLE,
31
40
  type: dh.plot.AxisType.Y
32
41
  })];
33
42
  }
34
- static makeSource(_ref) {
43
+ makeSource(_ref) {
35
44
  var {
36
- axis = ChartTestUtils.makeAxis()
45
+ axis = this.makeAxis()
37
46
  } = _ref;
38
47
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
- return new dh.SeriesDataSource({
48
+ return new this.dh.SeriesDataSource({
40
49
  axis,
41
50
  type: axis.type
42
51
  });
43
52
  }
44
- static makeDefaultSources() {
45
- var axes = ChartTestUtils.makeDefaultAxes();
46
- return axes.map(axis => ChartTestUtils.makeSource({
53
+ makeDefaultSources() {
54
+ var axes = this.makeDefaultAxes();
55
+ return axes.map(axis => this.makeSource({
47
56
  axis
48
57
  }));
49
58
  }
50
- static makeSeries() {
59
+ makeSeries() {
51
60
  var {
52
61
  name = ChartTestUtils.DEFAULT_SERIES_NAME,
53
- plotStyle = dh.plot.SeriesPlotStyle.SCATTER,
54
- sources = ChartTestUtils.makeDefaultSources(),
62
+ plotStyle = null,
63
+ sources = this.makeDefaultSources(),
55
64
  lineColor = null,
56
65
  shapeColor = null
57
66
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
67
+ var {
68
+ dh
69
+ } = this;
58
70
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
- return new dh.Series(name, plotStyle, sources, lineColor, shapeColor);
71
+ return new dh.Series(name, plotStyle !== null && plotStyle !== void 0 ? plotStyle : dh.plot.SeriesPlotStyle.SCATTER, sources, lineColor, shapeColor);
60
72
  }
61
- static makeChart() {
73
+ makeChart() {
62
74
  var {
63
75
  title = ChartTestUtils.DEFAULT_CHART_TITLE,
64
- series = [ChartTestUtils.makeSeries()],
65
- axes = ChartTestUtils.makeDefaultAxes(),
76
+ series = [this.makeSeries()],
77
+ axes = this.makeDefaultAxes(),
66
78
  showLegend = null,
67
79
  rowspan = 1,
68
80
  colspan = 1,
@@ -70,7 +82,7 @@ class ChartTestUtils {
70
82
  column = 0
71
83
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
72
84
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
73
- return new dh.Chart({
85
+ return new this.dh.Chart({
74
86
  title,
75
87
  series,
76
88
  axes,
@@ -81,15 +93,15 @@ class ChartTestUtils {
81
93
  colspan
82
94
  });
83
95
  }
84
- static makeFigure() {
96
+ makeFigure() {
85
97
  var {
86
98
  title = 'Figure',
87
- charts = [ChartTestUtils.makeChart()],
99
+ charts = [this.makeChart()],
88
100
  rows = 1,
89
101
  cols = 1
90
102
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
91
103
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
92
- return new dh.plot.Figure({
104
+ return new this.dh.plot.Figure({
93
105
  title,
94
106
  charts,
95
107
  rows,
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTestUtils.js","names":["dh","ChartTestUtils","makeAxis","label","type","plot","AxisType","X","position","AxisPosition","BOTTOM","formatType","Axis","FORMAT_TYPE_NUMBER","formatPattern","log","makeDefaultAxes","DEFAULT_X_TITLE","DEFAULT_Y_TITLE","Y","makeSource","axis","SeriesDataSource","makeDefaultSources","axes","map","makeSeries","name","DEFAULT_SERIES_NAME","plotStyle","SeriesPlotStyle","SCATTER","sources","lineColor","shapeColor","Series","makeChart","title","DEFAULT_CHART_TITLE","series","showLegend","rowspan","colspan","row","column","Chart","makeFigure","charts","rows","cols","Figure"],"sources":["../src/ChartTestUtils.ts"],"sourcesContent":["import dh, {\n Axis,\n Chart,\n Figure,\n Series,\n SeriesDataSource,\n} from '@deephaven/jsapi-shim';\n\nclass ChartTestUtils {\n static DEFAULT_CHART_TITLE = 'Chart Title';\n\n static DEFAULT_X_TITLE = 'X Axis';\n\n static DEFAULT_Y_TITLE = 'Y Axis';\n\n static DEFAULT_SERIES_NAME = 'MySeries';\n\n static makeAxis({\n label = 'Axis',\n type = dh.plot.AxisType.X,\n position = dh.plot.AxisPosition.BOTTOM,\n formatType = dh.Axis.FORMAT_TYPE_NUMBER,\n formatPattern = '###,###0.00',\n log = false,\n } = {}): Axis {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).Axis({\n label,\n type,\n position,\n formatType,\n formatPattern,\n log,\n });\n }\n\n static makeDefaultAxes(): Axis[] {\n return [\n ChartTestUtils.makeAxis({\n label: ChartTestUtils.DEFAULT_X_TITLE,\n type: dh.plot.AxisType.X,\n }),\n ChartTestUtils.makeAxis({\n label: ChartTestUtils.DEFAULT_Y_TITLE,\n type: dh.plot.AxisType.Y,\n }),\n ];\n }\n\n static makeSource({\n axis = ChartTestUtils.makeAxis(),\n }: {\n axis: Axis;\n }): SeriesDataSource {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).SeriesDataSource({ axis, type: axis.type });\n }\n\n static makeDefaultSources(): SeriesDataSource[] {\n const axes = ChartTestUtils.makeDefaultAxes();\n return axes.map(axis => ChartTestUtils.makeSource({ axis }));\n }\n\n static makeSeries({\n name = ChartTestUtils.DEFAULT_SERIES_NAME,\n plotStyle = dh.plot.SeriesPlotStyle.SCATTER,\n sources = ChartTestUtils.makeDefaultSources(),\n lineColor = null,\n shapeColor = null,\n } = {}): Series {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).Series(\n name,\n plotStyle,\n sources,\n lineColor,\n shapeColor\n );\n }\n\n static makeChart({\n title = ChartTestUtils.DEFAULT_CHART_TITLE,\n series = [ChartTestUtils.makeSeries()],\n axes = ChartTestUtils.makeDefaultAxes(),\n showLegend = null,\n rowspan = 1,\n colspan = 1,\n row = 0,\n column = 0,\n }: {\n title?: string;\n series?: Series[];\n axes?: Axis[];\n showLegend?: boolean | null;\n rowspan?: number;\n colspan?: number;\n row?: number;\n column?: number;\n } = {}): Chart {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).Chart({\n title,\n series,\n axes,\n showLegend,\n row,\n column,\n rowspan,\n colspan,\n });\n }\n\n static makeFigure({\n title = 'Figure',\n charts = [ChartTestUtils.makeChart()],\n rows = 1,\n cols = 1,\n } = {}): Figure {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).plot.Figure({ title, charts, rows, cols });\n }\n}\n\nexport default ChartTestUtils;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ChartTestUtils.js","names":["ChartTestUtils","constructor","dh","makeAxis","label","type","undefined","position","formatType","formatPattern","log","Axis","plot","AxisType","X","AxisPosition","BOTTOM","FORMAT_TYPE_NUMBER","makeDefaultAxes","DEFAULT_X_TITLE","DEFAULT_Y_TITLE","Y","makeSource","axis","SeriesDataSource","makeDefaultSources","axes","map","makeSeries","name","DEFAULT_SERIES_NAME","plotStyle","sources","lineColor","shapeColor","Series","SeriesPlotStyle","SCATTER","makeChart","title","DEFAULT_CHART_TITLE","series","showLegend","rowspan","colspan","row","column","Chart","makeFigure","charts","rows","cols","Figure"],"sources":["../src/ChartTestUtils.ts"],"sourcesContent":["import type {\n Axis,\n AxisFormatType,\n AxisPosition,\n AxisType,\n Chart,\n dh as DhType,\n Figure,\n Series,\n SeriesDataSource,\n} from '@deephaven/jsapi-types';\n\nclass ChartTestUtils {\n static DEFAULT_CHART_TITLE = 'Chart Title';\n\n static DEFAULT_X_TITLE = 'X Axis';\n\n static DEFAULT_Y_TITLE = 'Y Axis';\n\n static DEFAULT_SERIES_NAME = 'MySeries';\n\n private dh: DhType;\n\n constructor(dh: DhType) {\n this.dh = dh;\n }\n\n makeAxis({\n label = 'Axis',\n type = undefined,\n position = undefined,\n formatType = undefined,\n formatPattern = '###,###0.00',\n log = false,\n }: {\n label?: string;\n type?: AxisType;\n position?: AxisPosition;\n formatType?: AxisFormatType;\n formatPattern?: string;\n log?: boolean;\n } = {}): Axis {\n const { dh } = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).Axis({\n label,\n type: type ?? dh.plot.AxisType.X,\n position: position ?? dh.plot.AxisPosition.BOTTOM,\n formatType: formatType ?? dh.Axis.FORMAT_TYPE_NUMBER,\n formatPattern,\n log,\n });\n }\n\n makeDefaultAxes(): Axis[] {\n const { dh } = this;\n return [\n this.makeAxis({\n label: ChartTestUtils.DEFAULT_X_TITLE,\n type: dh.plot.AxisType.X,\n }),\n this.makeAxis({\n label: ChartTestUtils.DEFAULT_Y_TITLE,\n type: dh.plot.AxisType.Y,\n }),\n ];\n }\n\n makeSource({ axis = this.makeAxis() }: { axis: Axis }): SeriesDataSource {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (this.dh as any).SeriesDataSource({ axis, type: axis.type });\n }\n\n makeDefaultSources(): SeriesDataSource[] {\n const axes = this.makeDefaultAxes();\n return axes.map(axis => this.makeSource({ axis }));\n }\n\n makeSeries({\n name = ChartTestUtils.DEFAULT_SERIES_NAME,\n plotStyle = null,\n sources = this.makeDefaultSources(),\n lineColor = null,\n shapeColor = null,\n } = {}): Series {\n const { dh } = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).Series(\n name,\n plotStyle ?? dh.plot.SeriesPlotStyle.SCATTER,\n sources,\n lineColor,\n shapeColor\n );\n }\n\n makeChart({\n title = ChartTestUtils.DEFAULT_CHART_TITLE,\n series = [this.makeSeries()],\n axes = this.makeDefaultAxes(),\n showLegend = null,\n rowspan = 1,\n colspan = 1,\n row = 0,\n column = 0,\n }: {\n title?: string;\n series?: Series[];\n axes?: Axis[];\n showLegend?: boolean | null;\n rowspan?: number;\n colspan?: number;\n row?: number;\n column?: number;\n } = {}): Chart {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (this.dh as any).Chart({\n title,\n series,\n axes,\n showLegend,\n row,\n column,\n rowspan,\n colspan,\n });\n }\n\n makeFigure({\n title = 'Figure',\n charts = [this.makeChart()],\n rows = 1,\n cols = 1,\n } = {}): Figure {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (this.dh as any).plot.Figure({ title, charts, rows, cols });\n }\n}\n\nexport default ChartTestUtils;\n"],"mappings":"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"}