@deephaven/chart 0.39.1-chart-refactor.14 → 0.40.0
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 +1 -1
- package/dist/Chart.d.ts.map +1 -1
- package/dist/Chart.js +25 -10
- package/dist/Chart.js.map +1 -1
- package/dist/plotly/Plot.d.ts.map +1 -1
- package/dist/plotly/Plot.js +7 -2
- package/dist/plotly/Plot.js.map +1 -1
- package/package.json +10 -10
package/dist/Chart.d.ts
CHANGED
|
@@ -73,7 +73,7 @@ export declare class Chart extends Component<ChartProps, ChartState> {
|
|
|
73
73
|
ranges?: unknown;
|
|
74
74
|
isSubscribed: boolean;
|
|
75
75
|
isLoadedFired: boolean;
|
|
76
|
-
getCachedConfig: (downsamplingError: unknown, isDownsampleFinished: boolean, isDownsampleInProgress: boolean, isDownsamplingDisabled: boolean,
|
|
76
|
+
getCachedConfig: (downsamplingError: unknown, isDownsampleFinished: boolean, isDownsampleInProgress: boolean, isDownsamplingDisabled: boolean, data: Partial<Data>[]) => Partial<PlotlyConfig>;
|
|
77
77
|
getPlotRect(): DOMRect | null;
|
|
78
78
|
initData(): void;
|
|
79
79
|
subscribe(): void;
|
package/dist/Chart.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../src/Chart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlE,OAAO,EAIL,cAAc,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAIL,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,MAAM,IAAI,YAAY,EACtB,MAAM,EACN,IAAI,EACJ,IAAI,EAGL,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,cAAc,CAAC;AAItB,KAAK,iBAAiB,GAAG,oBAAoB,GAC3C,sBAAsB,GAAG;IACvB,oBAAoB,CAAC,EAAE,6BAA6B,CAAC;IACrD,oBAAoB,CAAC,EAAE,6BAA6B,CAAC;CACtD,CAAC;AAEJ,UAAU,UAAU;IAClB,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,GAAG,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;CACpE;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,sBAAsB,EAAE,OAAO,CAAC;IAChC,sBAAsB,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,KAAM,SAAQ,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1D,MAAM,CAAC,YAAY;;;;;;;;;;4BAUC,IAAI;2BACL,IAAI;wBACP,IAAI;uBACL,IAAI;iCACM,IAAI;MAC3B;IAEF;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAchD,MAAM,CAAC,qBAAqB,CAC1B,sBAAsB,EAAE,OAAO,EAC/B,sBAAsB,EAAE,OAAO,GAC9B,MAAM;IAUT,MAAM,CAAC,oBAAoB,CACzB,sBAAsB,EAAE,OAAO,EAC/B,sBAAsB,EAAE,OAAO,GAC9B,MAAM,GAAG,SAAS;gBAQT,KAAK,EAAE,UAAU;IAkC7B,iBAAiB,IAAI,IAAI;IAczB,kBAAkB,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAa/C,oBAAoB,IAAI,IAAI;IAI5B,aAAa,EAAE,MAAM,CAAC;IAEtB,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAE/C,IAAI,EAAE,SAAS,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC;IAE3C,WAAW,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IAEvC,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;IAEjC,wBAAwB,CAAC,EAAE,8BAA8B,CAAC;IAE1D,oBAAoB,EAAE,6BAA6B,CAAC;IAEpD,oBAAoB,EAAE,6BAA6B,CAAC;IAEpD,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IAEtB,aAAa,EAAE,OAAO,CAAC;IAEvB,eAAe,sBAEQ,OAAO,wBACJ,OAAO,0BACL,OAAO,0BACP,OAAO,QACzB,
|
|
1
|
+
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../src/Chart.tsx"],"names":[],"mappings":"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"}
|
package/dist/Chart.js
CHANGED
|
@@ -59,7 +59,7 @@ export class Chart extends Component {
|
|
|
59
59
|
_defineProperty(this, "ranges", void 0);
|
|
60
60
|
_defineProperty(this, "isSubscribed", void 0);
|
|
61
61
|
_defineProperty(this, "isLoadedFired", void 0);
|
|
62
|
-
_defineProperty(this, "getCachedConfig", memoize((downsamplingError, isDownsampleFinished, isDownsampleInProgress, isDownsamplingDisabled,
|
|
62
|
+
_defineProperty(this, "getCachedConfig", memoize((downsamplingError, isDownsampleFinished, isDownsampleInProgress, isDownsamplingDisabled, data) => {
|
|
63
63
|
var customButtons = [];
|
|
64
64
|
var hasDownsampleError = Boolean(downsamplingError);
|
|
65
65
|
if (hasDownsampleError) {
|
|
@@ -83,6 +83,20 @@ export class Chart extends Component {
|
|
|
83
83
|
attr
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
|
+
var has2D = data.some(_ref => {
|
|
87
|
+
var {
|
|
88
|
+
type
|
|
89
|
+
} = _ref;
|
|
90
|
+
return type != null && !type.includes('3d');
|
|
91
|
+
});
|
|
92
|
+
var has3D = data.some(_ref2 => {
|
|
93
|
+
var {
|
|
94
|
+
type
|
|
95
|
+
} = _ref2;
|
|
96
|
+
return type != null && type.includes('3d');
|
|
97
|
+
});
|
|
98
|
+
var buttons2D = ['zoomIn2d', 'zoomOut2d', 'autoScale2d', 'resetScale2d'];
|
|
99
|
+
var buttons3D = ['orbitRotation', 'tableRotation', 'resetCameraDefault3d'];
|
|
86
100
|
return {
|
|
87
101
|
displaylogo: false,
|
|
88
102
|
// Display the mode bar if there's an error or downsampling so user can see progress
|
|
@@ -91,7 +105,9 @@ export class Chart extends Component {
|
|
|
91
105
|
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
|
|
92
106
|
isDownsampleInProgress || hasDownsampleError ? true : 'hover',
|
|
93
107
|
// Each array gets grouped together in the mode bar
|
|
94
|
-
modeBarButtons: [customButtons, ['toImage'],
|
|
108
|
+
modeBarButtons: [customButtons, ['toImage'], ['zoom2d', 'pan2d'],
|
|
109
|
+
// These work the same for both 2d and 3d
|
|
110
|
+
[...(has2D ? buttons2D : []), ...(has3D ? buttons3D : [])]]
|
|
95
111
|
};
|
|
96
112
|
}));
|
|
97
113
|
this.handleAfterPlot = this.handleAfterPlot.bind(this);
|
|
@@ -198,10 +214,10 @@ export class Chart extends Component {
|
|
|
198
214
|
}
|
|
199
215
|
}
|
|
200
216
|
handleDownsampleClick() {
|
|
201
|
-
this.setState(
|
|
217
|
+
this.setState(_ref3 => {
|
|
202
218
|
var {
|
|
203
219
|
isDownsamplingDisabled
|
|
204
|
-
} =
|
|
220
|
+
} = _ref3;
|
|
205
221
|
return {
|
|
206
222
|
downsamplingError: null,
|
|
207
223
|
isDownsampleInProgress: false,
|
|
@@ -345,8 +361,8 @@ export class Chart extends Component {
|
|
|
345
361
|
}
|
|
346
362
|
this.updateModelDimensions();
|
|
347
363
|
}
|
|
348
|
-
handleRestyle(
|
|
349
|
-
var [changes, seriesIndexes] =
|
|
364
|
+
handleRestyle(_ref4) {
|
|
365
|
+
var [changes, seriesIndexes] = _ref4;
|
|
350
366
|
log.debug('handleRestyle', changes, seriesIndexes);
|
|
351
367
|
if (Object.keys(changes).includes('visible')) {
|
|
352
368
|
var {
|
|
@@ -356,11 +372,11 @@ export class Chart extends Component {
|
|
|
356
372
|
onSettingsChanged
|
|
357
373
|
} = this.props;
|
|
358
374
|
if (data != null) {
|
|
359
|
-
var hiddenSeries = data.reduce((acc,
|
|
375
|
+
var hiddenSeries = data.reduce((acc, _ref5) => {
|
|
360
376
|
var {
|
|
361
377
|
name,
|
|
362
378
|
visible
|
|
363
|
-
} =
|
|
379
|
+
} = _ref5;
|
|
364
380
|
return name != null && visible === 'legendonly' ? [...acc, name] : acc;
|
|
365
381
|
}, []);
|
|
366
382
|
onSettingsChanged({
|
|
@@ -443,7 +459,6 @@ export class Chart extends Component {
|
|
|
443
459
|
}
|
|
444
460
|
}
|
|
445
461
|
render() {
|
|
446
|
-
var _data$0$type$includes, _data$0$type;
|
|
447
462
|
var {
|
|
448
463
|
PlotComponent
|
|
449
464
|
} = this;
|
|
@@ -456,7 +471,7 @@ export class Chart extends Component {
|
|
|
456
471
|
layout,
|
|
457
472
|
revision
|
|
458
473
|
} = this.state;
|
|
459
|
-
var config = this.getCachedConfig(downsamplingError, isDownsampleFinished, isDownsampleInProgress, isDownsamplingDisabled,
|
|
474
|
+
var config = this.getCachedConfig(downsamplingError, isDownsampleFinished, isDownsampleInProgress, isDownsamplingDisabled, data !== null && data !== void 0 ? data : []);
|
|
460
475
|
var isPlotShown = data != null;
|
|
461
476
|
return /*#__PURE__*/React.createElement("div", {
|
|
462
477
|
className: "h-100 w-100 chart-wrapper",
|
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","createPlotlyComponent","Plotly","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","title","click","attr","handleDownsampleClick","displaylogo","displayModeBar","modeBarButtons","handleAfterPlot","bind","handleModelEvent","handlePlotUpdate","handleRelayout","handleRestyle","PlotComponent","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","formatter","dh","setFormatter","PlotlyProp","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 {\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 {\n Config as PlotlyConfig,\n Layout,\n Icon,\n Data,\n PlotData,\n ModeBarButtonAny,\n} from 'plotly.js';\nimport type { PlotParams } from 'react-plotly.js';\nimport createPlotlyComponent from 'react-plotly.js/factory.js';\nimport Plotly from './plotly/Plotly';\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 model: ChartModel;\n settings: FormatterSettings;\n isActive: boolean;\n Plotly: typeof Plotly;\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 Plotly,\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.PlotComponent = createPlotlyComponent(props.Plotly);\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 PlotComponent: React.ComponentType<PlotParams>;\n\n plot: RefObject<typeof this.PlotComponent>;\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 ): Partial<PlotlyConfig> => {\n const customButtons: ModeBarButtonAny[] = [];\n const hasDownsampleError = Boolean(downsamplingError);\n if (hasDownsampleError) {\n customButtons.push({\n name: `Downsampling failed: ${downsamplingError}`,\n title: 'Downsampling failed',\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 title: 'Downsampling status',\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\n ? true\n : ('hover' as const),\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: Readonly<{ layout: Partial<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]: readonly [\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 { model } = this.props;\n const formatter = new Formatter(\n model.dh,\n this.columnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions\n );\n model.setFormatter(formatter);\n }\n\n updateDimensions(): void {\n const rect = this.getPlotRect();\n const { Plotly: PlotlyProp } = this.props;\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 PlotlyProp.relayout(\n ((this.plot.current as unknown) as { el: HTMLElement }).el,\n {\n autosize: true,\n }\n ).catch((e: unknown) => {\n log.debug('Unable to resize, promise rejected', e);\n });\n }\n }\n\n render(): ReactElement {\n const { PlotComponent } = this;\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\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","createPlotlyComponent","Plotly","ChartModel","ChartUtils","log","module","Chart","convertIcon","faIcon","width","path","icon","stringPath","ascent","descent","transform","downsampleButtonTitle","isDownsampleInProgress","isDownsamplingDisabled","downsampleButtonAttr","undefined","constructor","props","downsamplingError","isDownsampleFinished","data","customButtons","hasDownsampleError","Boolean","push","name","title","click","attr","handleDownsampleClick","has2D","some","type","includes","has3D","buttons2D","buttons3D","displaylogo","displayModeBar","modeBarButtons","handleAfterPlot","bind","handleModelEvent","handlePlotUpdate","handleRelayout","handleRestyle","PlotComponent","plot","createRef","plotWrapper","columnFormats","dateTimeFormatterOptions","decimalFormatOptions","integerFormatOptions","isSubscribed","isLoadedFired","currentSeries","state","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","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","reduce","acc","visible","force","warn","isRectChanged","setDimensions","getColumnFormats","getDateTimeFormatterOptions","updateFormatter","formatter","dh","setFormatter","PlotlyProp","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 {\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 {\n Config as PlotlyConfig,\n Layout,\n Icon,\n Data,\n PlotData,\n ModeBarButtonAny,\n} from 'plotly.js';\nimport type { PlotParams } from 'react-plotly.js';\nimport createPlotlyComponent from 'react-plotly.js/factory.js';\nimport Plotly from './plotly/Plotly';\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 model: ChartModel;\n settings: FormatterSettings;\n isActive: boolean;\n Plotly: typeof Plotly;\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 Plotly,\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.PlotComponent = createPlotlyComponent(props.Plotly);\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 PlotComponent: React.ComponentType<PlotParams>;\n\n plot: RefObject<typeof this.PlotComponent>;\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 data: Partial<Data>[]\n ): Partial<PlotlyConfig> => {\n const customButtons: ModeBarButtonAny[] = [];\n const hasDownsampleError = Boolean(downsamplingError);\n if (hasDownsampleError) {\n customButtons.push({\n name: `Downsampling failed: ${downsamplingError}`,\n title: 'Downsampling failed',\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 title: 'Downsampling status',\n icon: Chart.convertIcon(icon),\n click: this.handleDownsampleClick,\n attr,\n });\n }\n\n const has2D = data.some(\n ({ type }) => type != null && !type.includes('3d')\n );\n const has3D = data.some(\n ({ type }) => type != null && type.includes('3d')\n );\n\n const buttons2D = [\n 'zoomIn2d',\n 'zoomOut2d',\n 'autoScale2d',\n 'resetScale2d',\n ] as const;\n const buttons3D = [\n 'orbitRotation',\n 'tableRotation',\n 'resetCameraDefault3d',\n ] as const;\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\n ? true\n : ('hover' as const),\n\n // Each array gets grouped together in the mode bar\n modeBarButtons: [\n customButtons,\n ['toImage'],\n ['zoom2d', 'pan2d'], // These work the same for both 2d and 3d\n [...(has2D ? buttons2D : []), ...(has3D ? buttons3D : [])],\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: Readonly<{ layout: Partial<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]: readonly [\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 { model } = this.props;\n const formatter = new Formatter(\n model.dh,\n this.columnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions\n );\n model.setFormatter(formatter);\n }\n\n updateDimensions(): void {\n const rect = this.getPlotRect();\n const { Plotly: PlotlyProp } = this.props;\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 PlotlyProp.relayout(\n ((this.plot.current as unknown) as { el: HTMLElement }).el,\n {\n autosize: true,\n }\n ).catch((e: unknown) => {\n log.debug('Unable to resize, promise rejected', e);\n });\n }\n }\n\n render(): ReactElement {\n const { PlotComponent } = this;\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 ?? []\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plot.d.ts","sourceRoot":"","sources":["../../src/plotly/Plot.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Plot.d.ts","sourceRoot":"","sources":["../../src/plotly/Plot.ts"],"names":[],"mappings":";AASA,wBAMO"}
|
package/dist/plotly/Plot.js
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
// This reduces the build size. Plotly has a lot of modules we don't need/use.
|
|
3
3
|
// https://github.com/plotly/react-plotly.js#customizing-the-plotlyjs-bundle
|
|
4
4
|
import createPlotlyComponent from 'react-plotly.js/factory.js';
|
|
5
|
-
import Plotly from "./Plotly.js";
|
|
6
|
-
|
|
5
|
+
import Plotly from "./Plotly.js"; // Webpack 5 (used in docusaurus) gives an object w/ a default key
|
|
6
|
+
// This is probably something on react-plotly.js's side
|
|
7
|
+
// Or because we lazy load this and Docusaurus ends up w/ some complications between ESM and CJS
|
|
8
|
+
export default typeof createPlotlyComponent === 'function' ? createPlotlyComponent(Plotly) :
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
createPlotlyComponent.default(Plotly);
|
|
7
12
|
//# sourceMappingURL=Plot.js.map
|
package/dist/plotly/Plot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plot.js","names":["createPlotlyComponent","Plotly"],"sources":["../../src/plotly/Plot.ts"],"sourcesContent":["// Import the react customizable bundle for building, only pull in the modules we need\n// This reduces the build size. Plotly has a lot of modules we don't need/use.\n// https://github.com/plotly/react-plotly.js#customizing-the-plotlyjs-bundle\nimport createPlotlyComponent from 'react-plotly.js/factory.js';\nimport Plotly from './Plotly';\n\nexport default createPlotlyComponent(Plotly);\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,qBAAqB,MAAM,4BAA4B;AAAC,OACxDC,MAAM;
|
|
1
|
+
{"version":3,"file":"Plot.js","names":["createPlotlyComponent","Plotly","default"],"sources":["../../src/plotly/Plot.ts"],"sourcesContent":["// Import the react customizable bundle for building, only pull in the modules we need\n// This reduces the build size. Plotly has a lot of modules we don't need/use.\n// https://github.com/plotly/react-plotly.js#customizing-the-plotlyjs-bundle\nimport createPlotlyComponent from 'react-plotly.js/factory.js';\nimport Plotly from './Plotly';\n\n// Webpack 5 (used in docusaurus) gives an object w/ a default key\n// This is probably something on react-plotly.js's side\n// Or because we lazy load this and Docusaurus ends up w/ some complications between ESM and CJS\nexport default typeof createPlotlyComponent === 'function'\n ? createPlotlyComponent(Plotly)\n : // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (createPlotlyComponent.default(Plotly) as ReturnType<\n typeof createPlotlyComponent\n >);\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,qBAAqB,MAAM,4BAA4B;AAAC,OACxDC,MAAM,qBAEb;AACA;AACA;AACA,eAAe,OAAOD,qBAAqB,KAAK,UAAU,GACtDA,qBAAqB,CAACC,MAAM,CAAC;AAC7B;AACA;AACCD,qBAAqB,CAACE,OAAO,CAACD,MAAM,CAEnC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/chart",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.40.0",
|
|
4
4
|
"description": "Deephaven Chart",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@deephaven/icons": "^0.
|
|
26
|
-
"@deephaven/jsapi-types": "^0.
|
|
27
|
-
"@deephaven/jsapi-utils": "^0.
|
|
28
|
-
"@deephaven/log": "^0.
|
|
29
|
-
"@deephaven/utils": "^0.
|
|
25
|
+
"@deephaven/icons": "^0.40.0",
|
|
26
|
+
"@deephaven/jsapi-types": "^0.40.0",
|
|
27
|
+
"@deephaven/jsapi-utils": "^0.40.0",
|
|
28
|
+
"@deephaven/log": "^0.40.0",
|
|
29
|
+
"@deephaven/utils": "^0.40.0",
|
|
30
30
|
"deep-equal": "^2.0.5",
|
|
31
31
|
"lodash.debounce": "^4.0.8",
|
|
32
32
|
"lodash.set": "^4.3.2",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"react": "^17.x"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@deephaven/jsapi-shim": "^0.
|
|
44
|
-
"@deephaven/mocks": "^0.
|
|
45
|
-
"@deephaven/tsconfig": "^0.
|
|
43
|
+
"@deephaven/jsapi-shim": "^0.40.0",
|
|
44
|
+
"@deephaven/mocks": "^0.40.0",
|
|
45
|
+
"@deephaven/tsconfig": "^0.40.0",
|
|
46
46
|
"@types/plotly.js": "^2.12.11"
|
|
47
47
|
},
|
|
48
48
|
"files": [
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"publishConfig": {
|
|
55
55
|
"access": "public"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "8c45b264663ebbd7755729404600c5c480757efa"
|
|
58
58
|
}
|