@deephaven/js-plugin-plotly-express 0.15.0 → 0.16.1
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/DashboardPlugin.d.ts +4 -0
- package/dist/DashboardPlugin.d.ts.map +1 -0
- package/dist/DashboardPlugin.js +39 -0
- package/dist/DashboardPlugin.js.map +1 -0
- package/dist/PlotlyExpressChart.d.ts +5 -0
- package/dist/PlotlyExpressChart.d.ts.map +1 -0
- package/dist/PlotlyExpressChart.js +38 -0
- package/dist/PlotlyExpressChart.js.map +1 -0
- package/dist/PlotlyExpressChartModel.d.ts +163 -0
- package/dist/PlotlyExpressChartModel.d.ts.map +1 -0
- package/dist/PlotlyExpressChartModel.js +609 -0
- package/dist/PlotlyExpressChartModel.js.map +1 -0
- package/dist/PlotlyExpressChartPanel.d.ts +5 -0
- package/dist/PlotlyExpressChartPanel.d.ts.map +1 -0
- package/dist/PlotlyExpressChartPanel.js +36 -0
- package/dist/PlotlyExpressChartPanel.js.map +1 -0
- package/dist/PlotlyExpressChartUtils.d.ts +222 -0
- package/dist/PlotlyExpressChartUtils.d.ts.map +1 -0
- package/dist/PlotlyExpressChartUtils.js +432 -0
- package/dist/PlotlyExpressChartUtils.js.map +1 -0
- package/dist/PlotlyExpressPlugin.d.ts +5 -0
- package/dist/PlotlyExpressPlugin.d.ts.map +1 -0
- package/dist/PlotlyExpressPlugin.js +14 -0
- package/dist/PlotlyExpressPlugin.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/useHandleSceneTicks.d.ts +4 -0
- package/dist/useHandleSceneTicks.d.ts.map +1 -0
- package/dist/useHandleSceneTicks.js +36 -0
- package/dist/useHandleSceneTicks.js.map +1 -0
- package/package.json +5 -3
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { useCallback, useState } from 'react';
|
|
14
|
+
import Plotly from 'plotly.js-dist-min';
|
|
15
|
+
import { ChartPanel } from '@deephaven/dashboard-core-plugins';
|
|
16
|
+
import { useApi } from '@deephaven/jsapi-bootstrap';
|
|
17
|
+
import PlotlyExpressChartModel from './PlotlyExpressChartModel.js';
|
|
18
|
+
import { useHandleSceneTicks } from './useHandleSceneTicks.js';
|
|
19
|
+
export function PlotlyExpressChartPanel(props) {
|
|
20
|
+
const dh = useApi();
|
|
21
|
+
const { fetch, metadata = {} } = props, rest = __rest(props, ["fetch", "metadata"]);
|
|
22
|
+
const [container, setContainer] = useState(null);
|
|
23
|
+
const [model, setModel] = useState();
|
|
24
|
+
const makeModel = useCallback(async () => {
|
|
25
|
+
const widgetData = await fetch();
|
|
26
|
+
const m = new PlotlyExpressChartModel(dh, widgetData, fetch);
|
|
27
|
+
setModel(m);
|
|
28
|
+
return m;
|
|
29
|
+
}, [dh, fetch]);
|
|
30
|
+
useHandleSceneTicks(model, container);
|
|
31
|
+
return (_jsx(ChartPanel
|
|
32
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
33
|
+
, Object.assign({}, rest, { containerRef: setContainer, makeModel: makeModel, Plotly: Plotly, metadata: metadata })));
|
|
34
|
+
}
|
|
35
|
+
export default PlotlyExpressChartPanel;
|
|
36
|
+
//# sourceMappingURL=PlotlyExpressChartPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlotlyExpressChartPanel.js","sourceRoot":"","sources":["../src/PlotlyExpressChartPanel.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,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,CACrC,KAAkC;IAElC,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,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAC;IACxE,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,SAAS,CAAC,CAAC;IAEtC,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"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { type Data, type Delta, type LayoutAxis, type PlotlyDataLayoutConfig, type PlotNumber, type Layout } from 'plotly.js';
|
|
2
|
+
import type { dh as DhType } from '@deephaven/jsapi-types';
|
|
3
|
+
import { ChartUtils } from '@deephaven/chart';
|
|
4
|
+
import { Formatter } from '@deephaven/jsapi-utils';
|
|
5
|
+
/**
|
|
6
|
+
* A prefix for the number format to indicate it is in Java format and should be
|
|
7
|
+
* transformed to a d3 format
|
|
8
|
+
*/
|
|
9
|
+
export declare const FORMAT_PREFIX = "DEEPHAVEN_JAVA_FORMAT=";
|
|
10
|
+
export interface PlotlyChartWidget {
|
|
11
|
+
getDataAsBase64: () => string;
|
|
12
|
+
exportedObjects: {
|
|
13
|
+
fetch: () => Promise<DhType.Table>;
|
|
14
|
+
}[];
|
|
15
|
+
addEventListener: (type: string, fn: (event: CustomEvent<PlotlyChartWidget>) => () => void) => void;
|
|
16
|
+
}
|
|
17
|
+
interface DeephavenCalendarBusinessPeriod {
|
|
18
|
+
open: string;
|
|
19
|
+
close: string;
|
|
20
|
+
}
|
|
21
|
+
export interface PlotlyChartDeephavenData {
|
|
22
|
+
calendar?: {
|
|
23
|
+
timeZone: string;
|
|
24
|
+
businessDays: Array<string>;
|
|
25
|
+
holidays: Array<{
|
|
26
|
+
date: string;
|
|
27
|
+
businessPeriods: Array<DeephavenCalendarBusinessPeriod>;
|
|
28
|
+
}>;
|
|
29
|
+
businessPeriods: Array<DeephavenCalendarBusinessPeriod>;
|
|
30
|
+
name: string;
|
|
31
|
+
};
|
|
32
|
+
mappings: Array<{
|
|
33
|
+
table: number;
|
|
34
|
+
data_columns: Record<string, string[]>;
|
|
35
|
+
}>;
|
|
36
|
+
is_user_set_template: boolean;
|
|
37
|
+
is_user_set_color: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface PlotlyChartWidgetData {
|
|
40
|
+
type: string;
|
|
41
|
+
figure: {
|
|
42
|
+
deephaven: PlotlyChartDeephavenData;
|
|
43
|
+
plotly: PlotlyDataLayoutConfig;
|
|
44
|
+
};
|
|
45
|
+
revision: number;
|
|
46
|
+
new_references: number[];
|
|
47
|
+
removed_references: number[];
|
|
48
|
+
}
|
|
49
|
+
/** Information that is needed to update the default value format in the data
|
|
50
|
+
* The index is relative to the plotly/data/ array
|
|
51
|
+
* The path within the trace has the valueformat to update
|
|
52
|
+
* The typeFrom is a path to a variable that is mapped to a column type
|
|
53
|
+
* The options indicate if the prefix and suffix should be set
|
|
54
|
+
*/
|
|
55
|
+
export interface FormatUpdate {
|
|
56
|
+
index: number;
|
|
57
|
+
path: string;
|
|
58
|
+
typeFrom: string[];
|
|
59
|
+
options: Record<string, boolean>;
|
|
60
|
+
}
|
|
61
|
+
export declare function getWidgetData(widgetInfo: DhType.Widget): PlotlyChartWidgetData;
|
|
62
|
+
export declare function getDataMappings(widgetData: PlotlyChartWidgetData): Map<number, Map<string, string[]>>;
|
|
63
|
+
/**
|
|
64
|
+
* Removes the default colors from the data
|
|
65
|
+
* Data color is not removed if the user set the color specifically or the plot type sets it
|
|
66
|
+
*
|
|
67
|
+
* This only checks if the marker or line color is set to a color in the colorway.
|
|
68
|
+
* This means it is not possible to change the order of the colorway and use the same colors.
|
|
69
|
+
*
|
|
70
|
+
* @param colorway The colorway from plotly
|
|
71
|
+
* @param data The data to remove the colorway from. This will be mutated
|
|
72
|
+
*/
|
|
73
|
+
export declare function removeColorsFromData(colorway: string[], data: Data[]): void;
|
|
74
|
+
/**
|
|
75
|
+
* Gets the path parts from a path replacement string from the widget data.
|
|
76
|
+
* The parts start with the plotly data array as the root.
|
|
77
|
+
* E.g. /plotly/data/0/x -> ['0', 'x']
|
|
78
|
+
* @param path The path from the widget data
|
|
79
|
+
* @returns The path parts within the plotly data array
|
|
80
|
+
*/
|
|
81
|
+
export declare function getPathParts(path: string): string[];
|
|
82
|
+
/**
|
|
83
|
+
* Checks if a plotly series is a line series without markers
|
|
84
|
+
* @param data The plotly data to check
|
|
85
|
+
* @returns True if the data is a line series without markers
|
|
86
|
+
*/
|
|
87
|
+
export declare function isLineSeries(data: Data): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Checks if a plotly axis type is automatically determined based on the data
|
|
90
|
+
* @param axis The plotly axis to check
|
|
91
|
+
* @returns True if the axis type is determined based on the data
|
|
92
|
+
*/
|
|
93
|
+
export declare function isAutoAxis(axis: Partial<LayoutAxis>): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Checks if a plotly axis type is linear
|
|
96
|
+
* @param axis The plotly axis to check
|
|
97
|
+
* @returns True if the axis is a linear axis
|
|
98
|
+
*/
|
|
99
|
+
export declare function isLinearAxis(axis: Partial<LayoutAxis>): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Check if 2 axis ranges are the same
|
|
102
|
+
* A null range indicates an auto range
|
|
103
|
+
* @param range1 The first axis range options
|
|
104
|
+
* @param range2 The second axis range options
|
|
105
|
+
* @returns True if the range options describe the same range
|
|
106
|
+
*/
|
|
107
|
+
export declare function areSameAxisRange(range1: unknown[] | null, range2: unknown[] | null): boolean;
|
|
108
|
+
export interface DownsampleInfo {
|
|
109
|
+
type: 'linear';
|
|
110
|
+
/**
|
|
111
|
+
* The original table before downsampling.
|
|
112
|
+
*/
|
|
113
|
+
originalTable: DhType.Table;
|
|
114
|
+
/**
|
|
115
|
+
* The x column to downsample.
|
|
116
|
+
*/
|
|
117
|
+
xCol: string;
|
|
118
|
+
/**
|
|
119
|
+
* The y columns to downsample.
|
|
120
|
+
*/
|
|
121
|
+
yCols: string[];
|
|
122
|
+
/**
|
|
123
|
+
* The width of the x-axis in pixels.
|
|
124
|
+
*/
|
|
125
|
+
width: number;
|
|
126
|
+
/**
|
|
127
|
+
* The range of the x-axis. Null if set to autorange.
|
|
128
|
+
*/
|
|
129
|
+
range: string[] | null;
|
|
130
|
+
/**
|
|
131
|
+
* If the range is a datae or number
|
|
132
|
+
*/
|
|
133
|
+
rangeType: 'date' | 'number';
|
|
134
|
+
}
|
|
135
|
+
export declare function downsample(dh: typeof DhType, info: DownsampleInfo): Promise<DhType.Table>;
|
|
136
|
+
/**
|
|
137
|
+
* Get the indexes of the replaceable WebGL traces in the data
|
|
138
|
+
* A replaceable WebGL has a type that ends with 'gl' which indicates it has a SVG equivalent
|
|
139
|
+
* @param data The data to check
|
|
140
|
+
* @returns The indexes of the WebGL traces
|
|
141
|
+
*/
|
|
142
|
+
export declare function getReplaceableWebGlTraceIndices(data: Data[]): Set<number>;
|
|
143
|
+
/**
|
|
144
|
+
* Check if the data contains any traces that are at least partially powered by WebGL and have no SVG equivalent.
|
|
145
|
+
* @param data The data to check for WebGL traces
|
|
146
|
+
* @returns True if the data contains any unreplaceable WebGL traces
|
|
147
|
+
*/
|
|
148
|
+
export declare function hasUnreplaceableWebGlTraces(data: Data[]): boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Set traces to use WebGL if WebGL is enabled and the trace was originally WebGL
|
|
151
|
+
* or swap out WebGL for SVG if WebGL is disabled and the trace was originally WebGL
|
|
152
|
+
* @param data The plotly figure data to update
|
|
153
|
+
* @param webgl True if WebGL is enabled
|
|
154
|
+
* @param webGlTraceIndices The indexes of the traces that are originally WebGL traces
|
|
155
|
+
*/
|
|
156
|
+
export declare function setWebGlTraceType(data: Data[], webgl: boolean, webGlTraceIndices: Set<number>): void;
|
|
157
|
+
/**
|
|
158
|
+
* Create rangebreaks from a business calendar
|
|
159
|
+
* @param formatter The formatter to use for the rangebreak calculations
|
|
160
|
+
* @param calendar The business calendar to create the rangebreaks from
|
|
161
|
+
* @param layout The layout to update with the rangebreaks
|
|
162
|
+
* @param chartUtils The chart utils to use for the rangebreaks
|
|
163
|
+
* @returns The updated layout with the rangebreaks added
|
|
164
|
+
*/
|
|
165
|
+
export declare function setRangebreaksFromCalendar(formatter: Formatter | null, calendar: DhType.calendar.BusinessCalendar | null, layout: Partial<Layout>, chartUtils: ChartUtils): Partial<Layout> | null;
|
|
166
|
+
/**
|
|
167
|
+
* Check if the data at the selector should be replaced with a single value instead of an array
|
|
168
|
+
* @param data The data to check
|
|
169
|
+
* @param selector The selector to check
|
|
170
|
+
* @returns True if the data at the selector should be replaced with a single value
|
|
171
|
+
*/
|
|
172
|
+
export declare function isSingleValue(data: Data[], selector: string[]): boolean;
|
|
173
|
+
/**
|
|
174
|
+
* Set the default value formats for all traces that require it
|
|
175
|
+
* @param plotlyData The plotly data to update
|
|
176
|
+
* @param defaultValueFormatSet The set of updates to make
|
|
177
|
+
* @param dataTypeMap The map of path to column type to pull the correct default format from
|
|
178
|
+
* @param formatter The formatter to use to get the default format
|
|
179
|
+
*/
|
|
180
|
+
export declare function setDefaultValueFormat(plotlyData: Data[], defaultValueFormatSet: Set<FormatUpdate>, dataTypeMap: Map<string, string>, formatter?: Formatter | null): void;
|
|
181
|
+
/**
|
|
182
|
+
* Convert the number format to a d3 number format
|
|
183
|
+
* @param data The data to update
|
|
184
|
+
* @param valueFormat The number format to convert to a d3 format
|
|
185
|
+
* @param options Options of what to update
|
|
186
|
+
*/
|
|
187
|
+
export declare function convertToPlotlyNumberFormat(data: Partial<PlotNumber> | Partial<Delta>, valueFormat: string, options?: Record<string, boolean>): void;
|
|
188
|
+
/**
|
|
189
|
+
* Transform the number format to a d3 number format, which is used by Plotly
|
|
190
|
+
* @param numberFormat The number format to transform
|
|
191
|
+
* @returns The d3 number format
|
|
192
|
+
*/
|
|
193
|
+
export declare function transformValueFormat(data: Partial<PlotNumber> | Partial<Delta>): Record<string, boolean>;
|
|
194
|
+
/**
|
|
195
|
+
* Replace the number formats in the data with a d3 number format
|
|
196
|
+
* @param data The data to update
|
|
197
|
+
*/
|
|
198
|
+
export declare function replaceValueFormat(plotlyData: Data[]): Set<FormatUpdate>;
|
|
199
|
+
/**
|
|
200
|
+
* Get the types of variables assocated with columns in the data
|
|
201
|
+
* For example, if the path /plotly/data/0/value is associated with a column of type int,
|
|
202
|
+
* the map will have the entry '0/value' -> 'int'
|
|
203
|
+
* @param deephavenData The deephaven data from the widget to get path and column name from
|
|
204
|
+
* @param tableReferenceMap The map of table index to table reference.
|
|
205
|
+
* Types are pulled from the table reference
|
|
206
|
+
* @returns A map of path to column type
|
|
207
|
+
*/
|
|
208
|
+
export declare function getDataTypeMap(deephavenData: PlotlyChartDeephavenData, tableReferenceMap: Map<number, DhType.Table>): Map<string, string>;
|
|
209
|
+
/**
|
|
210
|
+
* Check if WebGL is supported in the current environment.
|
|
211
|
+
* Most modern browsers do support WebGL, but it's possible to disable it and it is also not available
|
|
212
|
+
* in some headless environments, which can affect e2e tests.
|
|
213
|
+
*
|
|
214
|
+
* https://github.com/microsoft/playwright/issues/13146
|
|
215
|
+
* https://bugzilla.mozilla.org/show_bug.cgi?id=1375585
|
|
216
|
+
*
|
|
217
|
+
* @returns True if WebGL is supported, false otherwise
|
|
218
|
+
*/
|
|
219
|
+
export declare function isWebGLSupported(): boolean;
|
|
220
|
+
export declare const IS_WEBGL_SUPPORTED: boolean;
|
|
221
|
+
export {};
|
|
222
|
+
//# sourceMappingURL=PlotlyExpressChartUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlotlyExpressChartUtils.d.ts","sourceRoot":"","sources":["../src/PlotlyExpressChartUtils.ts"],"names":[],"mappings":"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"}
|