@deephaven/js-plugin-plotly-express 0.3.2-deephaven-ui.216 → 0.4.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.
Files changed (35) hide show
  1. package/dist/PlotlyExpressChart.d.ts +6 -0
  2. package/dist/PlotlyExpressChart.d.ts.map +1 -0
  3. package/dist/PlotlyExpressChart.js +36 -0
  4. package/dist/PlotlyExpressChart.js.map +1 -0
  5. package/dist/PlotlyExpressChartModel.d.ts +50 -13
  6. package/dist/PlotlyExpressChartModel.d.ts.map +1 -1
  7. package/dist/PlotlyExpressChartModel.js +202 -63
  8. package/dist/PlotlyExpressChartModel.js.map +1 -1
  9. package/dist/PlotlyExpressChartPanel.d.ts +3 -9
  10. package/dist/PlotlyExpressChartPanel.d.ts.map +1 -1
  11. package/dist/PlotlyExpressChartPanel.js +9 -45
  12. package/dist/PlotlyExpressChartPanel.js.map +1 -1
  13. package/dist/PlotlyExpressChartUtils.d.ts +17 -18
  14. package/dist/PlotlyExpressChartUtils.d.ts.map +1 -1
  15. package/dist/PlotlyExpressChartUtils.js +7 -10
  16. package/dist/PlotlyExpressChartUtils.js.map +1 -1
  17. package/dist/PlotlyExpressPlugin.d.ts +5 -0
  18. package/dist/PlotlyExpressPlugin.d.ts.map +1 -0
  19. package/dist/PlotlyExpressPlugin.js +14 -0
  20. package/dist/PlotlyExpressPlugin.js.map +1 -0
  21. package/dist/bundle/index.js +66290 -68973
  22. package/dist/bundle/style.css +654 -1170
  23. package/dist/index.d.ts +2 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +2 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/useHandleSceneTicks.d.ts +4 -0
  28. package/dist/useHandleSceneTicks.d.ts.map +1 -0
  29. package/dist/useHandleSceneTicks.js +36 -0
  30. package/dist/useHandleSceneTicks.js.map +1 -0
  31. package/package.json +13 -11
  32. package/dist/DashboardPlugin.d.ts +0 -5
  33. package/dist/DashboardPlugin.d.ts.map +0 -1
  34. package/dist/DashboardPlugin.js +0 -39
  35. package/dist/DashboardPlugin.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import type { Widget } from '@deephaven/jsapi-types';
3
+ import { type WidgetComponentProps } from '@deephaven/plugin';
4
+ export declare function PlotlyExpressChart(props: WidgetComponentProps<Widget>): JSX.Element | null;
5
+ export default PlotlyExpressChart;
6
+ //# sourceMappingURL=PlotlyExpressChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlotlyExpressChart.d.ts","sourceRoot":"","sources":["../src/PlotlyExpressChart.tsx"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC,GAClC,GAAG,CAAC,OAAO,GAAG,IAAI,CAiCpB;AAED,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import Plotly from 'plotly.js-dist-min';
4
+ import { Chart } from '@deephaven/chart';
5
+ import { useApi } from '@deephaven/jsapi-bootstrap';
6
+ import PlotlyExpressChartModel from './PlotlyExpressChartModel.js';
7
+ import { useHandleSceneTicks } from './useHandleSceneTicks.js';
8
+ export function PlotlyExpressChart(props) {
9
+ const dh = useApi();
10
+ const { fetch } = props;
11
+ const containerRef = useRef(null);
12
+ const [model, setModel] = useState();
13
+ useEffect(() => {
14
+ let cancelled = false;
15
+ async function init() {
16
+ const widgetData = await fetch();
17
+ if (!cancelled) {
18
+ setModel(new PlotlyExpressChartModel(dh, widgetData, fetch));
19
+ }
20
+ }
21
+ init();
22
+ return () => {
23
+ cancelled = true;
24
+ };
25
+ }, [dh, fetch]);
26
+ useHandleSceneTicks(model, containerRef.current);
27
+ return model ? (_jsx(Chart
28
+ // eslint-disable-next-line react/jsx-props-no-spreading, @typescript-eslint/ban-ts-comment
29
+ // @ts-ignore
30
+ , {
31
+ // eslint-disable-next-line react/jsx-props-no-spreading, @typescript-eslint/ban-ts-comment
32
+ // @ts-ignore
33
+ containerRef: containerRef, model: model, Plotly: Plotly })) : null;
34
+ }
35
+ export default PlotlyExpressChart;
36
+ //# sourceMappingURL=PlotlyExpressChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlotlyExpressChart.js","sourceRoot":"","sources":["../src/PlotlyExpressChart.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,kBAAkB,CAChC,KAAmC;IAEnC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxB,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAA2B,CAAC;IAE9D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,UAAU,IAAI;YACjB,MAAM,UAAU,GAAG,MAAM,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,EAAE;gBACd,QAAQ,CAAC,IAAI,uBAAuB,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;aAC9D;QACH,CAAC;QAED,IAAI,EAAE,CAAC;QAEP,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAEhB,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAEjD,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,KAAC,KAAK;IACJ,2FAA2F;IAC3F,aAAa;;QADb,2FAA2F;QAC3F,aAAa;QACb,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GACd,CACH,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,eAAe,kBAAkB,CAAC"}
@@ -1,30 +1,67 @@
1
1
  import type { Layout, Data } from 'plotly.js';
2
- import type { dh as DhType, ChartData, Table, TableSubscription } from '@deephaven/jsapi-types';
2
+ import type { dh as DhType, ChartData, Widget, Table, TableSubscription, TableData } from '@deephaven/jsapi-types';
3
3
  import { ChartModel, ChartUtils, ChartTheme } from '@deephaven/chart';
4
+ import { PlotlyChartWidgetData } from './PlotlyExpressChartUtils.js';
4
5
  export declare class PlotlyExpressChartModel extends ChartModel {
5
- constructor(dh: DhType, tableColumnReplacementMap: ReadonlyMap<Table, Map<string, string[]>>, data: Data[], plotlyLayout: Partial<Layout>, isDefaultTemplate?: boolean, theme?: typeof ChartTheme);
6
+ constructor(dh: DhType, widget: Widget, refetch: () => Promise<Widget>, theme?: ChartTheme);
7
+ isSubscribed: boolean;
6
8
  chartUtils: ChartUtils;
7
- tableSubscriptionMap: Map<Table, TableSubscription>;
8
- tableSubscriptionCleanups: (() => void)[];
9
- tableColumnReplacementMap: Map<Table, Map<string, string[]>>;
10
- chartDataMap: Map<Table, ChartData>;
11
- theme: typeof ChartTheme;
12
- data: Data[];
9
+ refetch: () => Promise<Widget>;
10
+ widget?: Widget;
11
+ widgetUnsubscribe?: () => void;
12
+ /**
13
+ * Map of table index to Table object.
14
+ */
15
+ tableReferenceMap: Map<number, Table>;
16
+ /**
17
+ * Map of table index to TableSubscription object.
18
+ */
19
+ tableSubscriptionMap: Map<number, TableSubscription>;
20
+ /**
21
+ * Map of table index to cleanup function for the subscription.
22
+ */
23
+ subscriptionCleanupMap: Map<number, () => void>;
24
+ /**
25
+ * Map of table index to map of column names to array of paths where the data should be replaced.
26
+ */
27
+ tableColumnReplacementMap: Map<number, Map<string, string[]>>;
28
+ /**
29
+ * Map of table index to ChartData object. Used to handle data delta updates.
30
+ */
31
+ chartDataMap: Map<number, ChartData>;
32
+ /**
33
+ * Map of table index to object where the keys are column names and the values are arrays of data.
34
+ * This data is the full array of data for the column since ChartData doesn't have a clean way to get it at any time.
35
+ */
36
+ tableDataMap: Map<number, {
37
+ [key: string]: unknown[];
38
+ }>;
39
+ theme: ChartTheme;
40
+ plotlyData: Data[];
13
41
  layout: Partial<Layout>;
14
42
  plotlyLayout: Partial<Layout>;
15
43
  isPaused: boolean;
16
44
  hasPendingUpdate: boolean;
45
+ hasInitialLoadCompleted: boolean;
17
46
  getData(): Partial<Data>[];
18
47
  getLayout(): Partial<Layout>;
19
- subscribe(callback: (event: CustomEvent) => void): void;
48
+ close(): void;
49
+ subscribe(callback: (event: CustomEvent) => void): Promise<void>;
20
50
  unsubscribe(callback: (event: CustomEvent) => void): void;
21
- handleFigureUpdated(event: CustomEvent, chartData: ChartData | undefined, columnReplacements: Map<string, string[]> | undefined): void;
22
- startListening(): void;
23
- stopListening(): void;
51
+ updateLayout(data: PlotlyChartWidgetData): void;
52
+ handleWidgetUpdated(data: PlotlyChartWidgetData, references: Widget['exportedObjects']): void;
53
+ handleFigureUpdated(event: CustomEvent<TableData>, tableId: number): void;
54
+ addTable(id: number, table: Table): void;
55
+ subscribeTable(id: number): void;
56
+ removeTable(id: number): void;
24
57
  fireUpdate(data: unknown): void;
25
58
  pauseUpdates(): void;
26
59
  resumeUpdates(): void;
27
- has3D(): boolean;
60
+ shouldPauseOnUserInteraction(): boolean;
61
+ hasScene(): boolean;
62
+ hasGeo(): boolean;
63
+ hasMapbox(): boolean;
64
+ hasPolar(): boolean;
28
65
  getPlotWidth(): number;
29
66
  getPlotHeight(): number;
30
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlotlyExpressChartModel.d.ts","sourceRoot":"","sources":["../src/PlotlyExpressChartModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EACV,EAAE,IAAI,MAAM,EACZ,SAAS,EACT,KAAK,EACL,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMtE,qBAAa,uBAAwB,SAAQ,UAAU;gBAEnD,EAAE,EAAE,MAAM,EACV,yBAAyB,EAAE,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACpE,IAAI,EAAE,IAAI,EAAE,EACZ,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,EAC7B,iBAAiB,UAAO,EACxB,KAAK,GAAE,OAAO,UAAuB;IAqCvC,UAAU,EAAE,UAAU,CAAC;IAEvB,oBAAoB,EAAE,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAEpD,yBAAyB,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAM;IAE/C,yBAAyB,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAE7D,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAEpC,KAAK,EAAE,OAAO,UAAU,CAAC;IAEzB,IAAI,EAAE,IAAI,EAAE,CAAC;IAEb,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAExB,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9B,QAAQ,UAAS;IAEjB,gBAAgB,UAAS;IAEhB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;IAInC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAkBvD,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IASzD,mBAAmB,CACjB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,GACpD,IAAI;IA2CP,cAAc,IAAI,IAAI;IActB,aAAa,IAAI,IAAI;IAIZ,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAKxC,YAAY,IAAI,IAAI;IAIpB,aAAa,IAAI,IAAI;IAOrB,KAAK,IAAI,OAAO;IAIhB,YAAY,IAAI,MAAM;IAatB,aAAa,IAAI,MAAM;CAYxB;AAED,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"PlotlyExpressChartModel.d.ts","sourceRoot":"","sources":["../src/PlotlyExpressChartModel.ts"],"names":[],"mappings":"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"}
@@ -1,99 +1,226 @@
1
- import { ChartModel, ChartUtils, ChartTheme } from '@deephaven/chart';
1
+ import { ChartModel, ChartUtils, defaultChartTheme, } from '@deephaven/chart';
2
2
  import Log from '@deephaven/log';
3
- import { applyColorwayToData } from './PlotlyExpressChartUtils.js';
3
+ import { applyColorwayToData, getDataMappings, getWidgetData, } from './PlotlyExpressChartUtils.js';
4
4
  const log = Log.module('@deephaven/js-plugin-plotly-express.ChartModel');
5
5
  export class PlotlyExpressChartModel extends ChartModel {
6
- constructor(dh, tableColumnReplacementMap, data, plotlyLayout, isDefaultTemplate = true, theme = ChartTheme) {
7
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
6
+ constructor(dh, widget, refetch, theme = defaultChartTheme()) {
8
7
  super(dh);
9
- this.tableSubscriptionCleanups = [];
8
+ this.isSubscribed = false;
9
+ /**
10
+ * Map of table index to Table object.
11
+ */
12
+ this.tableReferenceMap = new Map();
13
+ /**
14
+ * Map of table index to TableSubscription object.
15
+ */
16
+ this.tableSubscriptionMap = new Map();
17
+ /**
18
+ * Map of table index to cleanup function for the subscription.
19
+ */
20
+ this.subscriptionCleanupMap = new Map();
21
+ /**
22
+ * Map of table index to map of column names to array of paths where the data should be replaced.
23
+ */
24
+ this.tableColumnReplacementMap = new Map();
25
+ /**
26
+ * Map of table index to ChartData object. Used to handle data delta updates.
27
+ */
28
+ this.chartDataMap = new Map();
29
+ /**
30
+ * Map of table index to object where the keys are column names and the values are arrays of data.
31
+ * This data is the full array of data for the column since ChartData doesn't have a clean way to get it at any time.
32
+ */
33
+ this.tableDataMap = new Map();
34
+ this.plotlyData = [];
35
+ this.layout = {};
36
+ this.plotlyLayout = {};
10
37
  this.isPaused = false;
11
38
  this.hasPendingUpdate = false;
12
- this.handleFigureUpdated = this.handleFigureUpdated.bind(this);
39
+ this.hasInitialLoadCompleted = false;
40
+ this.widget = widget;
41
+ this.refetch = refetch;
13
42
  this.chartUtils = new ChartUtils(dh);
14
- this.tableColumnReplacementMap = new Map(tableColumnReplacementMap);
15
- this.chartDataMap = new Map();
16
- this.tableSubscriptionMap = new Map();
17
43
  this.theme = theme;
18
- this.data = data;
19
- const template = { layout: this.chartUtils.makeDefaultLayout(theme) };
20
- // For now we will only use the plotly theme colorway since most plotly themes are light mode
21
- if (!isDefaultTemplate) {
22
- template.layout.colorway =
23
- (_c = (_b = (_a = plotlyLayout.template) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.colorway) !== null && _c !== void 0 ? _c : template.layout.colorway;
24
- }
25
- this.plotlyLayout = plotlyLayout;
26
- this.layout = Object.assign(Object.assign({}, plotlyLayout), { template });
27
- applyColorwayToData((_g = (_f = (_e = (_d = this.layout) === null || _d === void 0 ? void 0 : _d.template) === null || _e === void 0 ? void 0 : _e.layout) === null || _f === void 0 ? void 0 : _f.colorway) !== null && _g !== void 0 ? _g : [], (_l = (_k = (_j = (_h = this.plotlyLayout) === null || _h === void 0 ? void 0 : _h.template) === null || _j === void 0 ? void 0 : _j.layout) === null || _k === void 0 ? void 0 : _k.colorway) !== null && _l !== void 0 ? _l : [], this.data);
44
+ this.handleFigureUpdated = this.handleFigureUpdated.bind(this);
45
+ this.handleWidgetUpdated = this.handleWidgetUpdated.bind(this);
46
+ // This is mostly used for setting the initial layout.
47
+ // Chart only fetches the model layout once on init, so it needs to be set
48
+ // before the widget is subscribed to.
49
+ this.handleWidgetUpdated(getWidgetData(widget), widget.exportedObjects);
28
50
  this.setTitle(this.getDefaultTitle());
29
51
  }
30
52
  getData() {
31
- return this.data;
53
+ const hydratedData = [...this.plotlyData];
54
+ this.tableColumnReplacementMap.forEach((columnReplacements, tableId) => {
55
+ const tableData = this.tableDataMap.get(tableId);
56
+ if (tableData == null) {
57
+ throw new Error(`No tableData for table ID ${tableId}`);
58
+ }
59
+ // Replace placeholder arrays with actual data
60
+ columnReplacements.forEach((paths, columnName) => {
61
+ paths.forEach(destination => {
62
+ var _a;
63
+ // The JSON pointer starts w/ /plotly/data and we don't need that part
64
+ const parts = destination
65
+ .split('/')
66
+ .filter(part => part !== '' && part !== 'plotly' && part !== 'data');
67
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
68
+ let selector = hydratedData;
69
+ for (let i = 0; i < parts.length; i += 1) {
70
+ if (i !== parts.length - 1) {
71
+ selector = selector[parts[i]];
72
+ }
73
+ else {
74
+ selector[parts[i]] = (_a = tableData[columnName]) !== null && _a !== void 0 ? _a : [];
75
+ }
76
+ }
77
+ });
78
+ });
79
+ });
80
+ return hydratedData;
32
81
  }
33
82
  getLayout() {
34
83
  return this.layout;
35
84
  }
36
- subscribe(callback) {
85
+ close() {
86
+ var _a;
87
+ super.close();
88
+ (_a = this.widget) === null || _a === void 0 ? void 0 : _a.close();
89
+ this.widget = undefined;
90
+ }
91
+ async subscribe(callback) {
92
+ if (this.isSubscribed) {
93
+ return;
94
+ }
37
95
  super.subscribe(callback);
38
- const { dh } = this;
39
- this.tableColumnReplacementMap.forEach((_, table) => this.chartDataMap.set(table, new dh.plot.ChartData(table)));
40
- this.tableColumnReplacementMap.forEach((columnReplacements, table) => {
41
- const columnNames = new Set(columnReplacements.keys());
42
- const columns = table.columns.filter(({ name }) => columnNames.has(name));
43
- this.tableSubscriptionMap.set(table, table.subscribe(columns));
96
+ if (this.widget == null) {
97
+ this.widget = await this.refetch();
98
+ const widgetData = getWidgetData(this.widget);
99
+ this.handleWidgetUpdated(widgetData, this.widget.exportedObjects);
100
+ }
101
+ this.isSubscribed = true;
102
+ this.widgetUnsubscribe = this.widget.addEventListener(this.dh.Widget.EVENT_MESSAGE, ({ detail }) => {
103
+ this.handleWidgetUpdated(JSON.parse(detail.getDataAsString()), detail.exportedObjects);
44
104
  });
45
- this.startListening();
105
+ this.tableReferenceMap.forEach((_, id) => this.subscribeTable(id));
106
+ // If there are no tables to fetch data from, the chart is ready to render
107
+ // Normally this event only fires once at least 1 table has fetched data
108
+ // Without this, the chart shows an infinite loader if there are no tables
109
+ if (this.tableColumnReplacementMap.size === 0) {
110
+ this.fireUpdate(this.getData());
111
+ }
46
112
  }
47
113
  unsubscribe(callback) {
114
+ var _a, _b;
115
+ if (!this.isSubscribed) {
116
+ return;
117
+ }
48
118
  super.unsubscribe(callback);
49
- this.stopListening();
50
- this.tableSubscriptionMap.forEach(sub => sub.close());
51
- this.chartDataMap.clear();
119
+ (_a = this.widgetUnsubscribe) === null || _a === void 0 ? void 0 : _a.call(this);
120
+ this.isSubscribed = false;
121
+ this.tableReferenceMap.forEach((_, id) => this.removeTable(id));
122
+ (_b = this.widget) === null || _b === void 0 ? void 0 : _b.close();
123
+ this.widget = undefined;
52
124
  }
53
- handleFigureUpdated(event, chartData, columnReplacements) {
54
- if (chartData == null || columnReplacements == null) {
55
- log.warn('Unknown chartData or columnReplacements for this event. Skipping update');
125
+ updateLayout(data) {
126
+ var _a, _b, _c;
127
+ const { figure } = data;
128
+ const { plotly, deephaven } = figure;
129
+ const { layout: plotlyLayout = {} } = plotly;
130
+ const template = { layout: this.chartUtils.makeDefaultLayout(this.theme) };
131
+ // For now we will only use the plotly theme colorway since most plotly themes are light mode
132
+ if (deephaven.is_user_set_template) {
133
+ template.layout.colorway =
134
+ (_c = (_b = (_a = plotlyLayout.template) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.colorway) !== null && _c !== void 0 ? _c : template.layout.colorway;
135
+ }
136
+ this.plotlyLayout = plotlyLayout;
137
+ this.layout = Object.assign(Object.assign({}, plotlyLayout), { template });
138
+ }
139
+ handleWidgetUpdated(data, references) {
140
+ var _a, _b, _c, _d, _e, _f, _g, _h;
141
+ const { figure, new_references: newReferences, removed_references: removedReferences, } = data;
142
+ const { plotly } = figure;
143
+ this.tableColumnReplacementMap = getDataMappings(data);
144
+ this.plotlyData = plotly.data;
145
+ this.updateLayout(data);
146
+ applyColorwayToData((_d = (_c = (_b = (_a = this.layout) === null || _a === void 0 ? void 0 : _a.template) === null || _b === void 0 ? void 0 : _b.layout) === null || _c === void 0 ? void 0 : _c.colorway) !== null && _d !== void 0 ? _d : [], (_h = (_g = (_f = (_e = this.plotlyLayout) === null || _e === void 0 ? void 0 : _e.template) === null || _f === void 0 ? void 0 : _f.layout) === null || _g === void 0 ? void 0 : _g.colorway) !== null && _h !== void 0 ? _h : [], this.plotlyData);
147
+ newReferences.forEach(async (id, i) => {
148
+ this.tableDataMap.set(id, {}); // Plot may render while tables are being fetched. Set this to avoid a render error
149
+ const table = (await references[i].fetch());
150
+ this.addTable(id, table);
151
+ });
152
+ removedReferences.forEach(id => this.removeTable(id));
153
+ }
154
+ handleFigureUpdated(event, tableId) {
155
+ const chartData = this.chartDataMap.get(tableId);
156
+ const tableData = this.tableDataMap.get(tableId);
157
+ if (chartData == null) {
158
+ log.warn('Unknown chartData for this event. Skipping update');
159
+ return;
160
+ }
161
+ if (tableData == null) {
162
+ log.warn('No tableData for this event. Skipping update');
56
163
  return;
57
164
  }
58
165
  const { detail: figureUpdateEvent } = event;
59
166
  chartData.update(figureUpdateEvent);
60
- columnReplacements.forEach((destinations, column) => {
61
- const columnData = chartData.getColumn(column, val => this.chartUtils.unwrapValue(val), figureUpdateEvent);
62
- destinations.forEach(destination => {
63
- // The JSON pointer starts w/ /plotly and we don't need that part
64
- const parts = destination
65
- .split('/')
66
- .filter(part => part !== '' && part !== 'plotly');
67
- // eslint-disable-next-line @typescript-eslint/no-this-alias, @typescript-eslint/no-explicit-any
68
- let selector = this;
69
- for (let i = 0; i < parts.length; i += 1) {
70
- if (i !== parts.length - 1) {
71
- selector = selector[parts[i]];
72
- }
73
- else {
74
- selector[parts[i]] = columnData;
75
- }
76
- }
77
- });
167
+ figureUpdateEvent.columns.forEach(column => {
168
+ const columnData = chartData.getColumn(column.name, val => this.chartUtils.unwrapValue(val), figureUpdateEvent);
169
+ tableData[column.name] = columnData;
78
170
  });
79
- const { data } = this;
80
171
  if (this.isPaused) {
81
172
  this.hasPendingUpdate = true;
82
173
  return;
83
174
  }
84
- this.fireUpdate(data);
175
+ this.fireUpdate(this.getData());
85
176
  }
86
- startListening() {
87
- this.tableSubscriptionMap.forEach((sub, table) => {
88
- this.tableSubscriptionCleanups.push(sub.addEventListener(this.dh.Table.EVENT_UPDATED, e => this.handleFigureUpdated(e, this.chartDataMap.get(table), this.tableColumnReplacementMap.get(table))));
89
- });
177
+ addTable(id, table) {
178
+ if (this.tableReferenceMap.has(id)) {
179
+ return;
180
+ }
181
+ this.tableReferenceMap.set(id, table);
182
+ this.tableDataMap.set(id, {});
183
+ if (this.isSubscribed) {
184
+ this.subscribeTable(id);
185
+ }
186
+ }
187
+ subscribeTable(id) {
188
+ const table = this.tableReferenceMap.get(id);
189
+ const columnReplacements = this.tableColumnReplacementMap.get(id);
190
+ if (table != null &&
191
+ columnReplacements != null &&
192
+ columnReplacements.size > 0 &&
193
+ !this.tableSubscriptionMap.has(id)) {
194
+ this.chartDataMap.set(id, new this.dh.plot.ChartData(table));
195
+ const columnNames = new Set(columnReplacements.keys());
196
+ const columns = table.columns.filter(({ name }) => columnNames.has(name));
197
+ const subscription = table.subscribe(columns);
198
+ this.tableSubscriptionMap.set(id, subscription);
199
+ this.subscriptionCleanupMap.set(id, subscription.addEventListener(this.dh.Table.EVENT_UPDATED, e => this.handleFigureUpdated(e, id)));
200
+ }
90
201
  }
91
- stopListening() {
92
- this.tableSubscriptionCleanups.forEach(cleanup => cleanup());
202
+ removeTable(id) {
203
+ var _a, _b;
204
+ (_a = this.subscriptionCleanupMap.get(id)) === null || _a === void 0 ? void 0 : _a();
205
+ (_b = this.tableSubscriptionMap.get(id)) === null || _b === void 0 ? void 0 : _b.close();
206
+ this.tableReferenceMap.delete(id);
207
+ this.subscriptionCleanupMap.delete(id);
208
+ this.tableSubscriptionMap.delete(id);
209
+ this.chartDataMap.delete(id);
210
+ this.tableDataMap.delete(id);
211
+ this.tableColumnReplacementMap.delete(id);
93
212
  }
94
213
  fireUpdate(data) {
95
214
  super.fireUpdate(data);
96
215
  this.hasPendingUpdate = false;
216
+ // TODO: This will fire on first call to `fireUpdate` even though other data
217
+ // may still be loading. We should consider making this smarter to fire after
218
+ // all initial data has loaded.
219
+ // https://github.com/deephaven/deephaven-plugins/issues/267
220
+ if (!this.hasInitialLoadCompleted) {
221
+ this.fireLoadFinished();
222
+ this.hasInitialLoadCompleted = true;
223
+ }
97
224
  }
98
225
  pauseUpdates() {
99
226
  this.isPaused = true;
@@ -101,11 +228,23 @@ export class PlotlyExpressChartModel extends ChartModel {
101
228
  resumeUpdates() {
102
229
  this.isPaused = false;
103
230
  if (this.hasPendingUpdate) {
104
- this.fireUpdate(this.data);
231
+ this.fireUpdate(this.getData());
105
232
  }
106
233
  }
107
- has3D() {
108
- return this.data.some(({ type }) => type != null && type.includes('3d'));
234
+ shouldPauseOnUserInteraction() {
235
+ return (this.hasScene() || this.hasGeo() || this.hasMapbox() || this.hasPolar());
236
+ }
237
+ hasScene() {
238
+ return this.plotlyData.some(d => 'scene' in d && d.scene != null);
239
+ }
240
+ hasGeo() {
241
+ return this.plotlyData.some(d => 'geo' in d && d.geo != null);
242
+ }
243
+ hasMapbox() {
244
+ return this.plotlyData.some(({ type }) => type === null || type === void 0 ? void 0 : type.includes('mapbox'));
245
+ }
246
+ hasPolar() {
247
+ return this.plotlyData.some(({ type }) => type === null || type === void 0 ? void 0 : type.includes('polar'));
109
248
  }
110
249
  getPlotWidth() {
111
250
  var _a, _b, _c, _d;
@@ -1 +1 @@
1
- {"version":3,"file":"PlotlyExpressChartModel.js","sourceRoot":"","sources":["../src/PlotlyExpressChartModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlotlyExpressChartModel.js","sourceRoot":"","sources":["../src/PlotlyExpressChartModel.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { type ChartPanelProps } from '@deephaven/dashboard-core-plugins';
3
- import { type PlotlyChartWidget } from './PlotlyExpressChartUtils.js';
4
- export interface PlotlyExpressChartPanelProps extends ChartPanelProps {
5
- fetch(): Promise<PlotlyChartWidget>;
6
- }
7
- declare function PlotlyExpressChartPanel(props: PlotlyExpressChartPanelProps): JSX.Element;
8
- declare namespace PlotlyExpressChartPanel {
9
- var displayName: string;
10
- }
2
+ import type { Widget } from '@deephaven/jsapi-types';
3
+ import { type WidgetPanelProps } from '@deephaven/plugin';
4
+ export declare function PlotlyExpressChartPanel(props: WidgetPanelProps<Widget>): JSX.Element;
11
5
  export default PlotlyExpressChartPanel;
12
6
  //# sourceMappingURL=PlotlyExpressChartPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlotlyExpressChartPanel.d.ts","sourceRoot":"","sources":["../src/PlotlyExpressChartPanel.tsx"],"names":[],"mappings":";AAEA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,mCAAmC,CAAC;AAI3C,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,4BAA6B,SAAQ,eAAe;IACnE,KAAK,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACrC;AAED,iBAAS,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,eA0EnE;kBA1EQ,uBAAuB;;;AA8EhC,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"PlotlyExpressChartPanel.d.ts","sourceRoot":"","sources":["../src/PlotlyExpressChartPanel.tsx"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK1D,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,eAyBtE;AAED,eAAe,uBAAuB,CAAC"}
@@ -10,63 +10,27 @@ var __rest = (this && this.__rest) || function (s, e) {
10
10
  return t;
11
11
  };
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
- import { useCallback, useEffect, useRef, useState } from 'react';
13
+ import { useCallback, useRef, useState } from 'react';
14
14
  import Plotly from 'plotly.js-dist-min';
15
- import { ChartPanel, } from '@deephaven/dashboard-core-plugins';
16
- import { ChartTheme } from '@deephaven/chart';
15
+ import { ChartPanel } from '@deephaven/dashboard-core-plugins';
17
16
  import { useApi } from '@deephaven/jsapi-bootstrap';
18
17
  import PlotlyExpressChartModel from './PlotlyExpressChartModel.js';
19
- import { getWidgetData, getDataMappings, } from './PlotlyExpressChartUtils.js';
20
- function PlotlyExpressChartPanel(props) {
18
+ import { useHandleSceneTicks } from './useHandleSceneTicks.js';
19
+ export function PlotlyExpressChartPanel(props) {
21
20
  const dh = useApi();
22
- const { fetch } = props, rest = __rest(props, ["fetch"]);
21
+ const { fetch, metadata = {} } = props, rest = __rest(props, ["fetch", "metadata"]);
23
22
  const containerRef = useRef(null);
24
23
  const [model, setModel] = useState();
25
24
  const makeModel = useCallback(async () => {
26
- var _a;
27
- const widgetInfo = await fetch();
28
- const data = getWidgetData(widgetInfo);
29
- const { plotly, deephaven } = data;
30
- const isDefaultTemplate = !deephaven.is_user_set_template;
31
- const tableColumnReplacementMap = await getDataMappings(widgetInfo);
32
- const m = new PlotlyExpressChartModel(dh, tableColumnReplacementMap, plotly.data, (_a = plotly.layout) !== null && _a !== void 0 ? _a : {}, isDefaultTemplate, ChartTheme);
25
+ const widgetData = await fetch();
26
+ const m = new PlotlyExpressChartModel(dh, widgetData, fetch);
33
27
  setModel(m);
34
28
  return m;
35
29
  }, [dh, fetch]);
36
- useEffect(function handle3DTicks() {
37
- if (!model || !containerRef.current || !model.has3D()) {
38
- return;
39
- }
40
- const container = containerRef.current;
41
- function handleMouseDown() {
42
- model === null || model === void 0 ? void 0 : model.pauseUpdates();
43
- // The once option removes the listener after it is called
44
- window.addEventListener('mouseup', handleMouseUp, { once: true });
45
- }
46
- function handleMouseUp() {
47
- model === null || model === void 0 ? void 0 : model.resumeUpdates();
48
- }
49
- let wheelTimeout = 0;
50
- function handleWheel() {
51
- model === null || model === void 0 ? void 0 : model.pauseUpdates();
52
- window.clearTimeout(wheelTimeout);
53
- wheelTimeout = window.setTimeout(() => {
54
- model === null || model === void 0 ? void 0 : model.resumeUpdates();
55
- }, 300);
56
- }
57
- container.addEventListener('mousedown', handleMouseDown);
58
- container.addEventListener('wheel', handleWheel);
59
- return () => {
60
- window.clearTimeout(wheelTimeout);
61
- window.removeEventListener('mouseup', handleMouseUp);
62
- container.removeEventListener('mousedown', handleMouseDown);
63
- container.removeEventListener('wheel', handleWheel);
64
- };
65
- }, [model]);
30
+ useHandleSceneTicks(model, containerRef.current);
66
31
  return (_jsx(ChartPanel
67
32
  // eslint-disable-next-line react/jsx-props-no-spreading
68
- , Object.assign({}, rest, { containerRef: containerRef, makeModel: makeModel, Plotly: Plotly })));
33
+ , Object.assign({}, rest, { containerRef: containerRef, makeModel: makeModel, Plotly: Plotly, metadata: metadata })));
69
34
  }
70
- PlotlyExpressChartPanel.displayName = 'PlotlyExpressChartPanel';
71
35
  export default PlotlyExpressChartPanel;
72
36
  //# sourceMappingURL=PlotlyExpressChartPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlotlyExpressChartPanel.js","sourceRoot":"","sources":["../src/PlotlyExpressChartPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlotlyExpressChartPanel.js","sourceRoot":"","sources":["../src/PlotlyExpressChartPanel.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAc,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAmB,MAAM,mCAAmC,CAAC;AAGhF,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,uBAAuB,CAAC,KAA+B;IACrE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,EAAE,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAAzC,qBAAiC,CAAQ,CAAC;IAChD,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAA2B,CAAC;IAE9D,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACvC,MAAM,UAAU,GAAG,MAAM,KAAK,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,IAAI,uBAAuB,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAC7D,QAAQ,CAAC,CAAC,CAAC,CAAC;QACZ,OAAO,CAAC,CAAC;IACX,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAEhB,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAEjD,OAAO,CACL,KAAC,UAAU;IACT,wDAAwD;wBACnD,IAAwB,IAC7B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAuC,IACjD,CACH,CAAC;AACJ,CAAC;AAED,eAAe,uBAAuB,CAAC"}