@deephaven/chart 0.38.1-beta.5 → 0.38.1-beta.9

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/README.md CHANGED
@@ -14,5 +14,5 @@ Then, import and use the component from the package:
14
14
  import { Chart } from '@deephaven/chart';
15
15
 
16
16
  // In your render function
17
- <Chart model={model} />
17
+ <Chart dh={dh} model={model} />
18
18
  ```
package/dist/Chart.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Component, ReactElement, RefObject } from 'react';
2
2
  import { IconDefinition } from '@deephaven/icons';
3
+ import type { dh as DhType } from '@deephaven/jsapi-types';
3
4
  import { DateTimeColumnFormatterOptions, DecimalColumnFormatterOptions, IntegerColumnFormatterOptions, FormattingRule, ColumnFormatSettings, DateTimeFormatSettings } from '@deephaven/jsapi-utils';
4
5
  import { Layout, Icon, PlotData } from 'plotly.js';
5
6
  import Plot from './plotly/Plot';
@@ -11,6 +12,7 @@ type FormatterSettings = ColumnFormatSettings & DateTimeFormatSettings & {
11
12
  integerFormatOptions?: IntegerColumnFormatterOptions;
12
13
  };
13
14
  interface ChartProps {
15
+ dh: DhType;
14
16
  model: ChartModel;
15
17
  settings: FormatterSettings;
16
18
  isActive: boolean;
@@ -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
@@ -417,7 +417,10 @@ export class Chart extends Component {
417
417
  }
418
418
  }
419
419
  updateFormatter() {
420
- var formatter = new Formatter(this.columnFormats, this.dateTimeFormatterOptions, this.decimalFormatOptions, this.integerFormatOptions);
420
+ var {
421
+ dh
422
+ } = this.props;
423
+ var formatter = new Formatter(dh, this.columnFormats, this.dateTimeFormatterOptions, this.decimalFormatOptions, this.integerFormatOptions);
421
424
  var {
422
425
  model
423
426
  } = this.props;
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","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 {\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 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 formatter = new Formatter(\n this.columnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions\n );\n\n const { model } = this.props;\n model.setFormatter(formatter);\n }\n\n updateDimensions(): 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":";;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAiC,OAAO;AACjE,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,OAAO,MAAM,aAAa;AACjC,SACEC,SAAS,EACTC,eAAe,EACfC,eAAe,QAEV,kBAAkB;AACzB,SACEC,SAAS,EACTC,cAAc,EACdC,SAAS,QAOJ,wBAAwB;AAC/B,OAAOC,GAAG,MAAM,gBAAgB;AAAC,OAE1BC,MAAM;AAAA,OACNC,IAAI;AAAA,OACJC,UAAU;AAAA,OACVC,UAAU;AAAA;AAGjB,IAAMC,GAAG,GAAGL,GAAG,CAACM,MAAM,CAAC,OAAO,CAAC;AA6B/B,OAAO,MAAMC,KAAK,SAAShB,SAAS,CAAyB;EAiB3D;AACF;AACA;AACA;EACE,OAAOiB,WAAW,CAACC,MAAsB,EAAQ;IAC/C,IAAM,CAACC,KAAK,KAAQC,IAAI,CAAC,GAAGF,MAAM,CAACG,IAAI;IACvC;IACA;IACA,IAAMC,UAAU,aAAMF,IAAI,CAAE;IAC5B,OAAO;MACLD,KAAK;MACLC,IAAI,EAAEE,UAAU;MAChBC,MAAM,EAAEJ,KAAK;MACbK,OAAO,EAAE,CAAC;MACVC,SAAS;IACX,CAAC;EACH;EAEA,OAAOC,qBAAqB,CAC1BC,sBAA+B,EAC/BC,sBAA+B,EACvB;IACR,IAAID,sBAAsB,EAAE;MAC1B,OAAO,6BAA6B;IACtC;IAEA,OAAOC,sBAAsB,GACzB,wCAAwC,GACxC,wCAAwC;EAC9C;EAEA,OAAOC,oBAAoB,CACzBF,sBAA+B,EAC/BC,sBAA+B,EACX;IACpB,IAAID,sBAAsB,EAAE;MAC1B,OAAO,gBAAgB;IACzB;IAEA,OAAOC,sBAAsB,GAAGE,SAAS,GAAG,aAAa;EAC3D;EAEAC,WAAW,CAACC,KAAiB,EAAE;IAC7B,KAAK,CAACA,KAAK,CAAC;IAAC;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA,yCAqFG9B,OAAO,CACvB,CACE+B,iBAA0B,EAC1BC,oBAA6B,EAC7BP,sBAA+B,EAC/BC,sBAA+B,KAC5B;MACH,IAAMO,aAAa,GAAG,EAAE;MACxB,IAAMC,kBAAkB,GAAGC,OAAO,CAACJ,iBAAiB,CAAC;MACrD,IAAIG,kBAAkB,EAAE;QACtBD,aAAa,CAACG,IAAI,CAAC;UACjBC,IAAI,iCAA0BN,iBAAiB,CAAE;UACjDO,KAAK,EAAE,MAAMV,SAAS;UACtBT,IAAI,EAAEL,KAAK,CAACC,WAAW,CAACZ,eAAe,CAAC;UACxCoC,IAAI,EAAE;QACR,CAAC,CAAC;MACJ;MAEA,IACEP,oBAAoB,IACpBP,sBAAsB,IACtBC,sBAAsB,IACtBQ,kBAAkB,EAClB;QACA,IAAMG,IAAI,GAAGvB,KAAK,CAACU,qBAAqB,CACtCC,sBAAsB,EACtBC,sBAAsB,CACvB;QACD,IAAMa,IAAI,GAAGzB,KAAK,CAACa,oBAAoB,CACrCF,sBAAsB,EACtBC,sBAAsB,CACvB;QAED,IAAMP,IAAI,GAAGM,sBAAsB,GAAGxB,SAAS,GAAGC,eAAe;QACjE+B,aAAa,CAACG,IAAI,CAAC;UACjBC,IAAI;UACJlB,IAAI,EAAEL,KAAK,CAACC,WAAW,CAACI,IAAI,CAAC;UAC7BmB,KAAK,EAAE,IAAI,CAACE,qBAAqB;UACjCD;QACF,CAAC,CAAC;MACJ;MAEA,OAAO;QACLE,WAAW,EAAE,KAAK;QAElB;QACA;QACAC,cAAc;QACZ;QACAjB,sBAAsB,IAAIS,kBAAkB,GAAG,IAAI,GAAG,OAAO;QAE/D;QACAS,cAAc,EAAE,CACdV,aAAa,EACb,CAAC,SAAS,CAAC,EACX,CAAC,QAAQ,EAAE,OAAO,CAAC,EACnB,CAAC,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC;MAE5D,CAAC;IACH,CAAC,CACF;IA/IC,IAAI,CAACW,eAAe,GAAG,IAAI,CAACA,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACL,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACK,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACC,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACD,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACE,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACF,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACG,cAAc,GAAG,IAAI,CAACA,cAAc,CAACH,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACI,aAAa,GAAG,IAAI,CAACA,aAAa,CAACJ,IAAI,CAAC,IAAI,CAAC;IAElD,IAAI,CAACK,IAAI,gBAAGrD,KAAK,CAACsD,SAAS,EAAE;IAC7B,IAAI,CAACC,WAAW,gBAAGvD,KAAK,CAACsD,SAAS,EAAE;IACpC,IAAI,CAACE,aAAa,GAAG,EAAE;IACvB,IAAI,CAACC,wBAAwB,GAAG,CAAC,CAAC;IAClC,IAAI,CAACC,oBAAoB,GAAG,CAAC,CAAC;IAC9B,IAAI,CAACC,oBAAoB,GAAG,CAAC,CAAC;IAC9B,IAAI,CAACC,YAAY,GAAG,KAAK;IACzB,IAAI,CAACC,aAAa,GAAG,KAAK;IAC1B,IAAI,CAACC,aAAa,GAAG,CAAC;IAEtB,IAAI,CAACC,KAAK,GAAG;MACXC,IAAI,EAAE,IAAI;MACV9B,iBAAiB,EAAE,IAAI;MACvBC,oBAAoB,EAAE,KAAK;MAC3BP,sBAAsB,EAAE,KAAK;MAC7BC,sBAAsB,EAAE,KAAK;MAC7BoC,MAAM,EAAE;QACNC,YAAY,EAAE;MAChB,CAAC;MACDC,QAAQ,EAAE;IACZ,CAAC;EACH;EAEAC,iBAAiB,GAAS;IACxB;IACA,IAAI,CAACC,gBAAgB,EAAE;IACvB,IAAI,CAACC,qBAAqB,EAAE;IAE5B,IAAI,CAACC,QAAQ,EAAE;IACf,IAAI,CAACC,aAAa,EAAE;IAEpB,IAAM;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACxC,KAAK;IAC/B,IAAIwC,QAAQ,EAAE;MACZ,IAAI,CAACC,SAAS,EAAE;IAClB;EACF;EAEAC,kBAAkB,CAACC,SAAqB,EAAQ;IAC9C,IAAM;MAAEH,QAAQ;MAAEI;IAAS,CAAC,GAAG,IAAI,CAAC5C,KAAK;IACzC,IAAI,CAAC6C,uBAAuB,CAACD,QAAQ,CAAsB;IAE3D,IAAIJ,QAAQ,KAAKG,SAAS,CAACH,QAAQ,EAAE;MACnC,IAAIA,QAAQ,EAAE;QACZ,IAAI,CAACC,SAAS,EAAE;MAClB,CAAC,MAAM;QACL,IAAI,CAACK,WAAW,EAAE;MACpB;IACF;EACF;EAEAC,oBAAoB,GAAS;IAC3B,IAAI,CAACD,WAAW,EAAE;EACpB;EAsFAE,WAAW,GAAmB;IAAA;IAC5B,0DAAO,IAAI,CAAC1B,WAAW,CAAC2B,OAAO,2DAAxB,uBAA0BC,qBAAqB,EAAE,yEAAI,IAAI;EAClE;EAEAZ,QAAQ,GAAS;IACf,IAAM;MAAEa;IAAM,CAAC,GAAG,IAAI,CAACnD,KAAK;IAC5B,IAAM;MAAEgC;IAAO,CAAC,GAAG,IAAI,CAACF,KAAK;IAC7B,IAAI,CAACsB,QAAQ,CAAC;MACZrB,IAAI,EAAEoB,KAAK,CAACE,OAAO,EAAE;MACrBrB,MAAM,kCACDA,MAAM,GACNmB,KAAK,CAACG,SAAS,EAAE;IAExB,CAAC,CAAC;EACJ;EAEAb,SAAS,GAAS;IAChB,IAAI,IAAI,CAACd,YAAY,EAAE;MACrB;IACF;IAEA,IAAM;MAAEwB;IAAM,CAAC,GAAG,IAAI,CAACnD,KAAK;IAC5B,IAAI,CAAC,IAAI,CAACuD,IAAI,IAAI,IAAI,CAACA,IAAI,CAACpE,KAAK,KAAK,CAAC,IAAI,IAAI,CAACoE,IAAI,CAACC,MAAM,KAAK,CAAC,EAAE;MACjE1E,GAAG,CAAC2E,MAAM,CAAC,sDAAsD,CAAC;MAClE;IACF;IACAN,KAAK,CAACV,SAAS,CAAC,IAAI,CAACzB,gBAAgB,CAAC;IACtC,IAAI,CAACW,YAAY,GAAG,IAAI;EAC1B;EAEAmB,WAAW,GAAS;IAClB,IAAI,CAAC,IAAI,CAACnB,YAAY,EAAE;MACtB;IACF;IAEA,IAAM;MAAEwB;IAAM,CAAC,GAAG,IAAI,CAACnD,KAAK;IAC5BmD,KAAK,CAACL,WAAW,CAAC,IAAI,CAAC9B,gBAAgB,CAAC;IACxC,IAAI,CAACW,YAAY,GAAG,KAAK;EAC3B;EAEAb,eAAe,GAAS;IACtB,IAAI,IAAI,CAACM,IAAI,CAAC6B,OAAO,IAAI,IAAI,EAAE;MAC7B;IAAA;EAEJ;EAEAvC,qBAAqB,GAAS;IAC5B,IAAI,CAAC0C,QAAQ,CACX;MAAA,IAAC;QAAExD;MAAuB,CAAC;MAAA,OAAM;QAC/BK,iBAAiB,EAAE,IAAI;QACvBN,sBAAsB,EAAE,KAAK;QAC7BO,oBAAoB,EAAE,KAAK;QAC3BN,sBAAsB,EAAE,CAACA;MAC3B,CAAC;IAAA,CAAC,EACF,MAAM;MACJ,IAAM;QAAEuD;MAAM,CAAC,GAAG,IAAI,CAACnD,KAAK;MAC5B,IAAM;QAAEJ;MAAuB,CAAC,GAAG,IAAI,CAACkC,KAAK;MAC7CqB,KAAK,CAACO,uBAAuB,CAAC9D,sBAAsB,CAAC;IACvD,CAAC,CACF;EACH;EAEAoB,gBAAgB,CAAC2C,KAAkB,EAAQ;IACzC,IAAM;MAAEC,IAAI;MAAEC;IAAO,CAAC,GAAGF,KAAK;IAC9B7E,GAAG,CAAC2E,MAAM,CAAC,sBAAsB,EAAEG,IAAI,EAAEC,MAAM,CAAC;IAEhD,QAAQD,IAAI;MACV,KAAKhF,UAAU,CAACkF,aAAa;QAAE;UAC7B,IAAI,CAACjC,aAAa,IAAI,CAAC;UACvB,IAAI,CAACuB,QAAQ,CAACtB,KAAK,IAAI;YACrB,IAAM;cAAEE,MAAM;cAAEE;YAAS,CAAC,GAAGJ,KAAK;YAClC,IAAI,OAAOE,MAAM,CAACC,YAAY,KAAK,QAAQ,EAAE;cAC3CD,MAAM,CAACC,YAAY,IAAI,CAAC;YAC1B;YACA,OAAO;cACLF,IAAI,EAAE8B,MAAM;cACZ7B,MAAM;cACNE,QAAQ,EAAEA,QAAQ,GAAG;YACvB,CAAC;UACH,CAAC,CAAC;UAEF,IAAM;YAAE6B;UAAS,CAAC,GAAG,IAAI,CAAC/D,KAAK;UAC/B+D,QAAQ,CAAC;YAAEC,SAAS,EAAE,CAAC,IAAI,CAACpC;UAAc,CAAC,CAAC;UAC5C;QACF;MACA,KAAKhD,UAAU,CAACqF,kBAAkB;QAAE;UAClC,IAAM;YAAEF,QAAQ,EAARA;UAAS,CAAC,GAAG,IAAI,CAAC/D,KAAK;UAC/B,IAAI,CAAC4B,aAAa,GAAG,IAAI;UACzBmC,SAAQ,CAAC;YAAEC,SAAS,EAAE;UAAM,CAAC,CAAC;UAC9B;QACF;MACA,KAAKpF,UAAU,CAACsF,gBAAgB;QAAE;UAChC,IAAM;YAAEC;UAAa,CAAC,GAAG,IAAI,CAACnE,KAAK;UACnCmE,YAAY,EAAE;UACd;QACF;MACA,KAAKvF,UAAU,CAACwF,eAAe;QAAE;UAC/B,IAAM;YAAEC;UAAY,CAAC,GAAG,IAAI,CAACrE,KAAK;UAClCqE,WAAW,EAAE;UACb;QACF;MACA,KAAKzF,UAAU,CAAC0F,uBAAuB;QAAE;UACvC,IAAI,CAAClB,QAAQ,CAAC;YACZlD,oBAAoB,EAAE,KAAK;YAC3BP,sBAAsB,EAAE,IAAI;YAC5BM,iBAAiB,EAAE;UACrB,CAAC,CAAC;UACF;QACF;MACA,KAAKrB,UAAU,CAAC2F,wBAAwB;QAAE;UACxC,IAAI,CAACnB,QAAQ,CAAC;YACZlD,oBAAoB,EAAE,IAAI;YAC1BP,sBAAsB,EAAE,KAAK;YAC7BM,iBAAiB,EAAE;UACrB,CAAC,CAAC;UACF;QACF;MACA,KAAKrB,UAAU,CAAC4F,sBAAsB;MACtC,KAAK5F,UAAU,CAAC6F,sBAAsB;QAAE;UAAA;UACtC,IAAMxE,iBAAiB,sBAAG4D,MAAM,CAACa,OAAO,6DAAIb,MAAM;UAClD,IAAI,CAACT,QAAQ,CAAC;YACZlD,oBAAoB,EAAE,KAAK;YAC3BP,sBAAsB,EAAE,KAAK;YAC7BC,sBAAsB,EAAE,KAAK;YAC7BK;UACF,CAAC,CAAC;UAEF,IAAM;YAAE0E;UAAQ,CAAC,GAAG,IAAI,CAAC3E,KAAK;UAC9B2E,OAAO,CAAC,IAAIC,KAAK,CAAC3E,iBAAiB,CAAC,CAAC;UACrC;QACF;MACA;QACEnB,GAAG,CAAC+F,KAAK,CAAC,oBAAoB,EAAEjB,IAAI,EAAED,KAAK,CAAC;IAAC;EAEnD;EAEA1C,gBAAgB,CAAC6D,MAA0B,EAAQ;IACjD;IACA;IACA;IACA,IAAM;MAAE9C;IAAO,CAAC,GAAG8C,MAAM;IACzB,IAAMC,MAAM,GAAGlG,UAAU,CAACmG,eAAe,CAAChD,MAAM,CAAC;IAEjD,IAAMiD,eAAe,GAAG,CAAChH,SAAS,CAAC8G,MAAM,EAAE,IAAI,CAACA,MAAM,CAAC;IAEvD,IAAIE,eAAe,EAAE;MACnB,IAAI,CAACF,MAAM,GAAGA,MAAM;MAEpB,IAAI,CAAC1C,qBAAqB,CAAC,IAAI,CAAC;IAClC;EACF;EAEAnB,cAAc,CAACgE,OAAoC,EAAQ;IACzDpG,GAAG,CAAC+F,KAAK,CAAC,gBAAgB,EAAEK,OAAO,CAAC;IACpC,IAAIA,OAAO,CAACC,YAAY,IAAI,IAAI,EAAE;MAChC,IAAM;QAAEC;MAAkB,CAAC,GAAG,IAAI,CAACpF,KAAK;MACxC;MACA;MACA,IAAMqF,YAAY,GAAG,CAAC,GAAGH,OAAO,CAACC,YAAY,CAAC;MAC9CC,iBAAiB,CAAC;QAAEC;MAAa,CAAC,CAAC;IACrC;IAEA,IAAI,CAAChD,qBAAqB,EAAE;EAC9B;EAEAlB,aAAa,QAGJ;IAAA,IAHK,CAAC+D,OAAO,EAAEI,aAAa,CAGpC;IACCxG,GAAG,CAAC+F,KAAK,CAAC,eAAe,EAAEK,OAAO,EAAEI,aAAa,CAAC;IAClD,IAAIC,MAAM,CAACC,IAAI,CAACN,OAAO,CAAC,CAACO,QAAQ,CAAC,SAAS,CAAC,EAAE;MAC5C,IAAM;QAAE1D;MAAK,CAAC,GAAG,IAAI,CAACD,KAAK;MAC3B,IAAM;QAAEsD;MAAkB,CAAC,GAAG,IAAI,CAACpF,KAAK;MACxC,IAAI+B,IAAI,IAAI,IAAI,EAAE;QAChB,IAAMsD,YAAY,GAAGtD,IAAI,CAAC2D,MAAM,CAC9B,CAACC,GAAa;UAAA,IAAE;YAAEpF,IAAI;YAAEqF;UAAQ,CAAC;UAAA,OAC/BrF,IAAI,IAAI,IAAI,IAAIqF,OAAO,KAAK,YAAY,GAAG,CAAC,GAAGD,GAAG,EAAEpF,IAAI,CAAC,GAAGoF,GAAG;QAAA,GACjE,EAAE,CACH;QACDP,iBAAiB,CAAC;UAAEC;QAAa,CAAC,CAAC;MACrC;IACF;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEhD,qBAAqB,GAAsB;IAAA,IAArBwD,KAAK,uEAAG,KAAK;IACjC,IAAMtC,IAAI,GAAG,IAAI,CAACP,WAAW,EAAE;IAC/B,IAAI,CAACO,IAAI,EAAE;MACTzE,GAAG,CAACgH,IAAI,CAAC,6BAA6B,CAAC;MACvC;IACF;IAEA,IAAMC,aAAa,GACjB,CAAC,IAAI,CAACxC,IAAI,IACV,IAAI,CAACA,IAAI,CAACpE,KAAK,KAAKoE,IAAI,CAACpE,KAAK,IAC9B,IAAI,CAACoE,IAAI,CAACC,MAAM,KAAKD,IAAI,CAACC,MAAM;IAElC,IAAIuC,aAAa,IAAIF,KAAK,EAAE;MAC1B,IAAI,CAACtC,IAAI,GAAGA,IAAI;MAEhB,IAAM;QAAEf,QAAQ;QAAEW;MAAM,CAAC,GAAG,IAAI,CAACnD,KAAK;MACtCmD,KAAK,CAAC6C,aAAa,CAACzC,IAAI,CAAC;MACzB;MACA,IAAIf,QAAQ,EAAE;QACZ,IAAI,CAACC,SAAS,EAAE;MAClB;IACF;EACF;EAEAF,aAAa,GAAS;IACpB,IAAM;MAAEK;IAAS,CAAC,GAAG,IAAI,CAAC5C,KAAK;IAC/B,IAAI,CAAC6C,uBAAuB,CAACD,QAAQ,CAAsB;EAC7D;EAEAC,uBAAuB,CAACD,QAA2B,EAAQ;IACzD,IAAMrB,aAAa,GAAGhD,cAAc,CAAC0H,gBAAgB,CAACrD,QAAQ,CAAC;IAC/D,IAAMpB,wBAAwB,GAAGjD,cAAc,CAAC2H,2BAA2B,CACzEtD,QAAQ,CACT;IACD,IAAM;MAAEnB,oBAAoB,GAAG,CAAC,CAAC;MAAEC,oBAAoB,GAAG,CAAC;IAAE,CAAC,GAAGkB,QAAQ;IAEzE,IACE,CAAC3E,SAAS,CAAC,IAAI,CAACsD,aAAa,EAAEA,aAAa,CAAC,IAC7C,CAACtD,SAAS,CAAC,IAAI,CAACuD,wBAAwB,EAAEA,wBAAwB,CAAC,IACnE,CAACvD,SAAS,CAAC,IAAI,CAACwD,oBAAoB,EAAEA,oBAAoB,CAAC,IAC3D,CAACxD,SAAS,CAAC,IAAI,CAACyD,oBAAoB,EAAEA,oBAAoB,CAAC,EAC3D;MACA,IAAI,CAACH,aAAa,GAAGhD,cAAc,CAAC0H,gBAAgB,CAACrD,QAAQ,CAAC;MAC9D,IAAI,CAACpB,wBAAwB,GAAGA,wBAAwB;MACxD,IAAI,CAACC,oBAAoB,GAAGA,oBAAoB;MAChD,IAAI,CAACC,oBAAoB,GAAGA,oBAAoB;MAChD,IAAI,CAACyE,eAAe,EAAE;IACxB;EACF;EAEAA,eAAe,GAAS;IACtB,IAAMC,SAAS,GAAG,IAAI9H,SAAS,CAC7B,IAAI,CAACiD,aAAa,EAClB,IAAI,CAACC,wBAAwB,EAC7B,IAAI,CAACC,oBAAoB,EACzB,IAAI,CAACC,oBAAoB,CAC1B;IAED,IAAM;MAAEyB;IAAM,CAAC,GAAG,IAAI,CAACnD,KAAK;IAC5BmD,KAAK,CAACkD,YAAY,CAACD,SAAS,CAAC;EAC/B;EAEAhE,gBAAgB,GAAS;IACvB,IAAMmB,IAAI,GAAG,IAAI,CAACP,WAAW,EAAE;IAC/B,IACE,IAAI,CAAC5B,IAAI,CAAC6B,OAAO,IAAI,IAAI,IACzBM,IAAI,IAAI,IAAI,IACZA,IAAI,CAACpE,KAAK,GAAG,CAAC,IACdoE,IAAI,CAACC,MAAM,GAAG,CAAC,EACf;MACA;MACA;MACA9E,MAAM,CAAC4H,QAAQ,CAAC,IAAI,CAAClF,IAAI,CAAC6B,OAAO,CAACsD,EAAE,EAAE;QAAEC,QAAQ,EAAE;MAAK,CAAC,CAAC,CAACC,KAAK,CAC5DC,CAAU,IAAK;QACd5H,GAAG,CAAC+F,KAAK,CAAC,oCAAoC,EAAE6B,CAAC,CAAC;MACpD,CAAC,CACF;IACH;EACF;EAEAC,MAAM,GAAiB;IACrB,IAAM;MACJ5E,IAAI;MACJ9B,iBAAiB;MACjBC,oBAAoB;MACpBP,sBAAsB;MACtBC,sBAAsB;MACtBoC,MAAM;MACNE;IACF,CAAC,GAAG,IAAI,CAACJ,KAAK;IACd,IAAM8E,MAAM,GAAG,IAAI,CAACC,eAAe,CACjC5G,iBAAiB,EACjBC,oBAAoB,EACpBP,sBAAsB,EACtBC,sBAAsB,CACvB;IACD,IAAMkH,WAAW,GAAG/E,IAAI,IAAI,IAAI;IAChC,oBACE;MAAK,SAAS,EAAC,2BAA2B;MAAC,GAAG,EAAE,IAAI,CAACT;IAAY,GAC9DwF,WAAW,iBACV,oBAAC,IAAI;MACH,GAAG,EAAE,IAAI,CAAC1F,IAAK;MACf,IAAI,EAAEW,IAAK;MACX,MAAM,EAAEC,MAAO;MACf,QAAQ,EAAEE,QAAS;MACnB,MAAM,EAAE0E,MAAO;MACf,WAAW,EAAE,IAAI,CAAC9F,eAAgB;MAClC,OAAO,EAAEhC,GAAG,CAACiI,KAAM;MACnB,UAAU,EAAE,IAAI,CAAC7F,cAAe;MAChC,QAAQ,EAAE,IAAI,CAACD,gBAAiB;MAChC,SAAS,EAAE,IAAI,CAACE,aAAc;MAC9B,gBAAgB;MAChB,KAAK,EAAE;QAAEqC,MAAM,EAAE,MAAM;QAAErE,KAAK,EAAE;MAAO;IAAE,EAE5C,CACG;EAEV;AACF;AAAC,gBArgBYH,KAAK,kBACM;EACpBwD,QAAQ,EAAE,IAAI;EACdI,QAAQ,EAAE;IACRoE,QAAQ,EAAE,kBAAkB;IAC5BC,qBAAqB,EAAEzI,SAAS,CAAC0I,gBAAgB;IACjDC,YAAY,EAAE,KAAK;IACnBC,cAAc,EAAE,IAAI;IACpBhB,SAAS,EAAE;EACb,CAAC;EACDjC,YAAY,EAAE,MAAYrE,SAAS;EACnCuE,WAAW,EAAE,MAAYvE,SAAS;EAClCiE,QAAQ,EAAE,MAAYjE,SAAS;EAC/B6E,OAAO,EAAE,MAAY7E,SAAS;EAC9BsF,iBAAiB,EAAE,MAAYtF;AACjC,CAAC;AAwfH,eAAed,KAAK"}
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/chart",
3
- "version": "0.38.1-beta.5+588cb8fd",
3
+ "version": "0.38.1-beta.9+4b40e4b8",
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.38.1-beta.5+588cb8fd",
26
- "@deephaven/jsapi-types": "^0.38.1-beta.5+588cb8fd",
27
- "@deephaven/jsapi-utils": "^0.38.1-beta.5+588cb8fd",
28
- "@deephaven/log": "^0.38.1-beta.5+588cb8fd",
29
- "@deephaven/utils": "^0.38.1-beta.5+588cb8fd",
25
+ "@deephaven/icons": "^0.38.1-beta.9+4b40e4b8",
26
+ "@deephaven/jsapi-types": "^0.38.1-beta.9+4b40e4b8",
27
+ "@deephaven/jsapi-utils": "^0.38.1-beta.9+4b40e4b8",
28
+ "@deephaven/log": "^0.38.1-beta.9+4b40e4b8",
29
+ "@deephaven/utils": "^0.38.1-beta.9+4b40e4b8",
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.38.1-beta.5+588cb8fd",
44
- "@deephaven/mocks": "^0.38.1-beta.5+588cb8fd",
45
- "@deephaven/tsconfig": "^0.38.1-beta.5+588cb8fd",
43
+ "@deephaven/jsapi-shim": "^0.38.1-beta.9+4b40e4b8",
44
+ "@deephaven/mocks": "^0.38.1-beta.9+4b40e4b8",
45
+ "@deephaven/tsconfig": "^0.38.1-beta.9+4b40e4b8",
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": "588cb8fd080ac992da40e9b732d82e206032c9eb"
57
+ "gitHead": "4b40e4b831c3dae4f7b869b71c7f6185560f929e"
58
58
  }