@finos/legend-query-builder 4.15.29 → 4.15.31
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/components/QueryBuilder.js +4 -4
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.js +2 -2
- package/lib/components/QueryBuilderPropertyExpressionEditor.js.map +1 -1
- package/lib/components/QueryBuilderSideBar.js +1 -1
- package/lib/components/QueryBuilderSideBar.js.map +1 -1
- package/lib/components/QueryBuilder_LegendApplicationPlugin.d.ts.map +1 -1
- package/lib/components/QueryBuilder_LegendApplicationPlugin.js +0 -2
- package/lib/components/QueryBuilder_LegendApplicationPlugin.js.map +1 -1
- package/lib/components/QueryLoader.js +1 -1
- package/lib/components/QueryLoader.js.map +1 -1
- package/lib/components/data-access/DataAccessOverview.d.ts.map +1 -1
- package/lib/components/data-access/DataAccessOverview.js +56 -30
- package/lib/components/data-access/DataAccessOverview.js.map +1 -1
- package/lib/components/execution-plan/ExecutionPlanViewer.js +1 -1
- package/lib/components/execution-plan/ExecutionPlanViewer.js.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.js +3 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.js +7 -3
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningParameterEditor.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningParameterEditor.js +4 -2
- package/lib/components/explorer/QueryBuilderMilestoningParameterEditor.js.map +1 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.js +4 -2
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderAggParam.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderAggParam.js +5 -2
- package/lib/components/fetch-structure/QueryBuilderAggParam.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js +2 -2
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +11 -9
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +2 -2
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +16 -10
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js +13 -9
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.d.ts.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js +14 -16
- package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSGridResult.d.ts.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSGridResult.js.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSSimpleGridResult.d.ts +2 -1
- package/lib/components/result/tds/QueryBuilderTDSSimpleGridResult.d.ts.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSSimpleGridResult.js +7 -62
- package/lib/components/result/tds/QueryBuilderTDSSimpleGridResult.js.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.d.ts +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.d.ts.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.js +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.js.map +1 -1
- package/lib/components/shared/QueryBuilderPropertyInfoTooltip.d.ts +1 -1
- package/lib/components/shared/QueryBuilderPropertyInfoTooltip.d.ts.map +1 -1
- package/lib/components/shared/QueryBuilderVariableSelector.d.ts.map +1 -1
- package/lib/components/shared/QueryBuilderVariableSelector.js +4 -2
- package/lib/components/shared/QueryBuilderVariableSelector.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/package.json +12 -13
- package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.js +0 -1
- package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
- package/lib/stores/QueryLoaderState.js +1 -1
- package/lib/stores/QueryLoaderState.js.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +1 -3
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js +0 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js.map +1 -1
- package/package.json +22 -23
- package/src/components/QueryBuilder.tsx +4 -4
- package/src/components/QueryBuilderPropertyExpressionEditor.tsx +2 -2
- package/src/components/QueryBuilderSideBar.tsx +1 -1
- package/src/components/QueryBuilder_LegendApplicationPlugin.ts +0 -3
- package/src/components/QueryLoader.tsx +1 -1
- package/src/components/data-access/DataAccessOverview.tsx +62 -36
- package/src/components/execution-plan/ExecutionPlanViewer.tsx +1 -1
- package/src/components/explorer/QueryBuilderExplorerPanel.tsx +3 -3
- package/src/components/explorer/QueryBuilderFunctionsExplorerPanel.tsx +7 -6
- package/src/components/explorer/QueryBuilderMilestoningParameterEditor.tsx +5 -2
- package/src/components/explorer/QueryBuilderPropertySearchPanel.tsx +4 -3
- package/src/components/fetch-structure/QueryBuilderAggParam.tsx +5 -4
- package/src/components/fetch-structure/QueryBuilderGraphFetchTreePanel.tsx +2 -2
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +13 -10
- package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +2 -2
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +18 -13
- package/src/components/fetch-structure/QueryBuilderTDSWindowPanel.tsx +13 -12
- package/src/components/filter/QueryBuilderFilterPanel.tsx +15 -23
- package/src/components/result/tds/QueryBuilderTDSGridResult.tsx +4 -5
- package/src/components/result/tds/QueryBuilderTDSSimpleGridResult.tsx +19 -57
- package/src/components/shared/BasicValueSpecificationEditor.tsx +2 -2
- package/src/components/shared/QueryBuilderPropertyInfoTooltip.tsx +1 -1
- package/src/components/shared/QueryBuilderVariableSelector.tsx +4 -2
- package/src/stores/QueryBuilderStateBuilder.ts +0 -1
- package/src/stores/QueryLoaderState.ts +1 -1
- package/src/stores/explorer/QueryBuilderExplorerState.ts +1 -1
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.ts +1 -1
- package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +13 -15
- package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.ts +0 -1
@@ -27,7 +27,6 @@ import packageJson from '../../package.json' with { type: 'json' };
|
|
27
27
|
import { QUERY_BUILDER_SETTING_CONFIG } from '../__lib__/QueryBuilderSetting.js';
|
28
28
|
import { QUERY_BUILDER_COMMAND_CONFIG } from '../stores/QueryBuilderCommand.js';
|
29
29
|
import type { QueryBuilderState } from '../stores/QueryBuilderState.js';
|
30
|
-
import { configureDataGridComponent } from '@finos/legend-lego/data-grid';
|
31
30
|
import { Chart as ChartJS, ArcElement, Tooltip, LinearScale } from 'chart.js';
|
32
31
|
|
33
32
|
export type CheckEntitlementEditorRender = (
|
@@ -50,8 +49,6 @@ export class QueryBuilder_LegendApplicationPlugin extends LegendApplicationPlugi
|
|
50
49
|
override getExtraApplicationSetups(): LegendApplicationSetup[] {
|
51
50
|
return [
|
52
51
|
async (applicationStore) => {
|
53
|
-
configureDataGridComponent();
|
54
|
-
|
55
52
|
// configure chart component
|
56
53
|
ChartJS.register(
|
57
54
|
ArcElement,
|
@@ -203,7 +203,7 @@ export const QueryLoader = observer(
|
|
203
203
|
debouncedLoadQueries(queryLoaderState.searchText);
|
204
204
|
};
|
205
205
|
const toggleCuratedTemplate = (): void => {
|
206
|
-
Array.from(queryLoaderState.extraFilters).
|
206
|
+
Array.from(queryLoaderState.extraFilters).forEach(([key, value]) =>
|
207
207
|
queryLoaderState.extraFilters.set(key, false),
|
208
208
|
);
|
209
209
|
queryLoaderState.setShowCurrentUserQueriesOnly(false);
|
@@ -14,7 +14,7 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
-
import { useEffect } from 'react';
|
17
|
+
import { useEffect, useRef } from 'react';
|
18
18
|
import { observer } from 'mobx-react-lite';
|
19
19
|
import { useApplicationStore } from '@finos/legend-application';
|
20
20
|
import type {
|
@@ -42,7 +42,6 @@ import {
|
|
42
42
|
DatasetEntitlementUnsupportedReport,
|
43
43
|
} from '@finos/legend-graph';
|
44
44
|
import { Chart as ChartJS, DoughnutController, ArcElement } from 'chart.js';
|
45
|
-
import { Doughnut } from 'react-chartjs-2';
|
46
45
|
import { getNullableFirstEntry } from '@finos/legend-shared';
|
47
46
|
import type { QueryBuilder_LegendApplicationPlugin_Extension } from '../../stores/QueryBuilder_LegendApplicationPlugin_Extension.js';
|
48
47
|
|
@@ -51,6 +50,8 @@ ChartJS.register(DoughnutController, ArcElement);
|
|
51
50
|
const DataAccessOverviewChart = observer(
|
52
51
|
(props: { dataAccessState: DataAccessState }) => {
|
53
52
|
const { dataAccessState } = props;
|
53
|
+
const canvasRef = useRef<HTMLCanvasElement>(null);
|
54
|
+
const chartRef = useRef<ChartJS>(null);
|
54
55
|
const entitlementCheckInfo = dataAccessState.entitlementCheckInfo;
|
55
56
|
const total = entitlementCheckInfo.total;
|
56
57
|
const accessGrantedCount =
|
@@ -58,43 +59,68 @@ const DataAccessOverviewChart = observer(
|
|
58
59
|
const accessGrantedPercentage =
|
59
60
|
getNullableFirstEntry(entitlementCheckInfo.data)?.percentage ?? 0;
|
60
61
|
|
62
|
+
useEffect(() => {
|
63
|
+
if (canvasRef.current && !chartRef.current) {
|
64
|
+
chartRef.current = new ChartJS(canvasRef.current, {
|
65
|
+
type: 'doughnut',
|
66
|
+
data: {
|
67
|
+
labels: [],
|
68
|
+
datasets: [],
|
69
|
+
},
|
70
|
+
options: {
|
71
|
+
responsive: true,
|
72
|
+
resizeDelay: 0,
|
73
|
+
maintainAspectRatio: false,
|
74
|
+
cutout: '75%',
|
75
|
+
},
|
76
|
+
});
|
77
|
+
}
|
78
|
+
|
79
|
+
return () => {
|
80
|
+
chartRef.current?.destroy();
|
81
|
+
chartRef.current = null;
|
82
|
+
};
|
83
|
+
}, []);
|
84
|
+
|
85
|
+
useEffect(() => {
|
86
|
+
if (chartRef.current) {
|
87
|
+
chartRef.current.data = {
|
88
|
+
labels: entitlementCheckInfo.data.map((item) => item.label),
|
89
|
+
datasets: [
|
90
|
+
{
|
91
|
+
data: entitlementCheckInfo.data.map((item) => item.count),
|
92
|
+
backgroundColor: entitlementCheckInfo.data.map(
|
93
|
+
(item) => item.color,
|
94
|
+
),
|
95
|
+
hoverBorderWidth: 0,
|
96
|
+
borderWidth: 0,
|
97
|
+
},
|
98
|
+
],
|
99
|
+
};
|
100
|
+
chartRef.current.options = {
|
101
|
+
...chartRef.current.options,
|
102
|
+
plugins: {
|
103
|
+
tooltip: {
|
104
|
+
enabled: entitlementCheckInfo.total !== 0,
|
105
|
+
usePointStyle: false,
|
106
|
+
boxPadding: 5,
|
107
|
+
callbacks: {
|
108
|
+
labelPointStyle: () => ({
|
109
|
+
pointStyle: 'rectRounded',
|
110
|
+
rotation: 0,
|
111
|
+
}),
|
112
|
+
},
|
113
|
+
},
|
114
|
+
},
|
115
|
+
};
|
116
|
+
chartRef.current.update('resize');
|
117
|
+
}
|
118
|
+
}, [entitlementCheckInfo]);
|
119
|
+
|
61
120
|
return (
|
62
121
|
<div className="data-access-overview__chart">
|
63
122
|
<div className="data-access-overview__chart__container">
|
64
|
-
<
|
65
|
-
data={{
|
66
|
-
labels: entitlementCheckInfo.data.map((item) => item.label),
|
67
|
-
datasets: [
|
68
|
-
{
|
69
|
-
data: entitlementCheckInfo.data.map((item) => item.count),
|
70
|
-
backgroundColor: entitlementCheckInfo.data.map(
|
71
|
-
(item) => item.color,
|
72
|
-
),
|
73
|
-
hoverBorderWidth: 0,
|
74
|
-
borderWidth: 0,
|
75
|
-
},
|
76
|
-
],
|
77
|
-
}}
|
78
|
-
options={{
|
79
|
-
responsive: true,
|
80
|
-
resizeDelay: 0,
|
81
|
-
maintainAspectRatio: false,
|
82
|
-
cutout: '75%',
|
83
|
-
plugins: {
|
84
|
-
tooltip: {
|
85
|
-
enabled: total !== 0,
|
86
|
-
usePointStyle: false,
|
87
|
-
boxPadding: 5,
|
88
|
-
callbacks: {
|
89
|
-
labelPointStyle: () => ({
|
90
|
-
pointStyle: 'rectRounded',
|
91
|
-
rotation: 0,
|
92
|
-
}),
|
93
|
-
},
|
94
|
-
},
|
95
|
-
},
|
96
|
-
}}
|
97
|
-
/>
|
123
|
+
<canvas ref={canvasRef} />
|
98
124
|
<div className="data-access-overview__chart__stats">
|
99
125
|
<div className="data-access-overview__chart__stats__percentage">
|
100
126
|
{total === 0 ? 0 : accessGrantedPercentage}%
|
@@ -288,7 +288,7 @@ export const ExecutionPlanViewerPanelContent: React.FC<{
|
|
288
288
|
<div className="query-builder__template--function--editor__code">
|
289
289
|
<CodeEditor
|
290
290
|
inputValue={templateFunctions.reduce(
|
291
|
-
(total, func) =>
|
291
|
+
(total, func) => `${total}${func}\n`,
|
292
292
|
'',
|
293
293
|
)}
|
294
294
|
isReadOnly={true}
|
@@ -482,6 +482,8 @@ const QueryBuilderExplorerTreeNodeContainer = observer(
|
|
482
482
|
}),
|
483
483
|
[node],
|
484
484
|
);
|
485
|
+
const ref = useRef<HTMLDivElement>(null);
|
486
|
+
dragConnector(ref);
|
485
487
|
useDragPreviewLayer(dragPreviewConnector);
|
486
488
|
|
487
489
|
const isExpandable = Boolean(node.childrenIds.length);
|
@@ -584,9 +586,7 @@ const QueryBuilderExplorerTreeNodeContainer = observer(
|
|
584
586
|
: undefined
|
585
587
|
}
|
586
588
|
onClick={selectNode}
|
587
|
-
ref={
|
588
|
-
node.mappingData.mapped && !isExpandable ? dragConnector : undefined
|
589
|
-
}
|
589
|
+
ref={node.mappingData.mapped && !isExpandable ? ref : undefined}
|
590
590
|
style={{
|
591
591
|
paddingLeft: `${(level - 1) * (stepPaddingInRem ?? 1) + 0.5}rem`,
|
592
592
|
display: 'flex',
|
@@ -14,7 +14,7 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
-
import { useEffect, useState } from 'react';
|
17
|
+
import { useEffect, useRef, useState } from 'react';
|
18
18
|
import { observer } from 'mobx-react-lite';
|
19
19
|
import {
|
20
20
|
type TooltipPlacement,
|
@@ -168,13 +168,12 @@ const QueryBuilderFunctionsExplorerListEntry = observer(
|
|
168
168
|
}),
|
169
169
|
[node],
|
170
170
|
);
|
171
|
+
const ref = useRef<HTMLDivElement>(null);
|
172
|
+
dragConnector(ref);
|
171
173
|
useDragPreviewLayer(dragPreviewConnector);
|
172
174
|
|
173
175
|
return (
|
174
|
-
<div
|
175
|
-
className="query-builder__functions-explorer__function"
|
176
|
-
ref={dragConnector}
|
177
|
-
>
|
176
|
+
<div className="query-builder__functions-explorer__function" ref={ref}>
|
178
177
|
<div className="query-builder__functions-explorer__function__content">
|
179
178
|
<div className="query-builder__functions-explorer__function__icon">
|
180
179
|
<div className="query-builder__functions-explorer__function-icon">
|
@@ -250,6 +249,8 @@ const QueryBuilderFunctionsExplorerTreeNodeContainer = observer(
|
|
250
249
|
}),
|
251
250
|
[node],
|
252
251
|
);
|
252
|
+
const ref = useRef<HTMLDivElement>(null);
|
253
|
+
dragConnector(ref);
|
253
254
|
useDragPreviewLayer(dragPreviewConnector);
|
254
255
|
|
255
256
|
return (
|
@@ -257,7 +258,7 @@ const QueryBuilderFunctionsExplorerTreeNodeContainer = observer(
|
|
257
258
|
<div
|
258
259
|
className="tree-view__node__container query-builder__functions-explorer__tree__node__container"
|
259
260
|
onClick={selectNode}
|
260
|
-
ref={!isExpandable ?
|
261
|
+
ref={!isExpandable ? ref : undefined}
|
261
262
|
style={{
|
262
263
|
paddingLeft: `${(level - 1) * (stepPaddingInRem ?? 1) + 0.5}rem`,
|
263
264
|
display: 'flex',
|
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
import { observer } from 'mobx-react-lite';
|
18
18
|
import type { QueryBuilderState } from '../../stores/QueryBuilderState.js';
|
19
|
-
import { useCallback } from 'react';
|
19
|
+
import { useCallback, useRef } from 'react';
|
20
20
|
import {
|
21
21
|
type ValueSpecification,
|
22
22
|
GenericType,
|
@@ -81,6 +81,9 @@ export const MilestoningParameterEditor = observer(
|
|
81
81
|
}),
|
82
82
|
[handleDrop],
|
83
83
|
);
|
84
|
+
const ref = useRef<HTMLDivElement>(null);
|
85
|
+
dropConnector(ref);
|
86
|
+
|
84
87
|
const resetMilestoningParameter = (): void => {
|
85
88
|
const param = observe_PrimitiveInstanceValue(
|
86
89
|
new PrimitiveInstanceValue(
|
@@ -100,7 +103,7 @@ export const MilestoningParameterEditor = observer(
|
|
100
103
|
|
101
104
|
return (
|
102
105
|
<div
|
103
|
-
ref={
|
106
|
+
ref={ref}
|
104
107
|
className="query-builder__milestoning-panel__variable-editor"
|
105
108
|
>
|
106
109
|
<div className="query-builder__milestoning-panel__variable-editor__variable">
|
@@ -14,7 +14,7 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
-
import { useState } from 'react';
|
17
|
+
import { useRef, useState } from 'react';
|
18
18
|
import {
|
19
19
|
clsx,
|
20
20
|
CheckSquareIcon,
|
@@ -265,7 +265,8 @@ const QueryBuilderTreeNodeViewer = observer(
|
|
265
265
|
}),
|
266
266
|
[node],
|
267
267
|
);
|
268
|
-
|
268
|
+
const ref = useRef<HTMLDivElement>(null);
|
269
|
+
dragConnector(ref);
|
269
270
|
useDragPreviewLayer(dragPreviewConnector);
|
270
271
|
|
271
272
|
const getChildrenNodes = (): QueryBuilderExplorerTreeNodeData[] => {
|
@@ -355,7 +356,7 @@ const QueryBuilderTreeNodeViewer = observer(
|
|
355
356
|
<>
|
356
357
|
<div
|
357
358
|
className="tree-view__node__container query-builder-property-search-panel__node__container"
|
358
|
-
ref={
|
359
|
+
ref={ref}
|
359
360
|
style={{
|
360
361
|
paddingLeft: `${(level - 1) * stepPaddingInRem + 0.5}rem`,
|
361
362
|
display: 'flex',
|
@@ -29,6 +29,7 @@ import { type QueryBuilderTDSPanelDropTarget } from './QueryBuilderTDSPanel.js';
|
|
29
29
|
import { QueryBuilderAggregateOperator_Wavg } from '../../stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_Wavg.js';
|
30
30
|
import type { QueryBuilderTDSState } from '../../stores/fetch-structure/tds/QueryBuilderTDSState.js';
|
31
31
|
import { QUERY_BUILDER_TEST_ID } from '../../__lib__/QueryBuilderTesting.js';
|
32
|
+
import { useRef } from 'react';
|
32
33
|
|
33
34
|
export const WavgParamDNDZone = (props: {
|
34
35
|
column: QueryBuilderAggregateOperator_Wavg;
|
@@ -55,7 +56,7 @@ export const WavgParamDNDZone = (props: {
|
|
55
56
|
}
|
56
57
|
};
|
57
58
|
|
58
|
-
const [{ isDragOver },
|
59
|
+
const [{ isDragOver }, dropConnector] = useDrop<
|
59
60
|
QueryBuilderTDSPanelDropTarget,
|
60
61
|
void,
|
61
62
|
{ isDragOver: boolean }
|
@@ -71,7 +72,8 @@ export const WavgParamDNDZone = (props: {
|
|
71
72
|
}),
|
72
73
|
[handleDrop],
|
73
74
|
);
|
74
|
-
|
75
|
+
const ref = useRef<HTMLDivElement>(null);
|
76
|
+
dropConnector(ref);
|
75
77
|
const { isDroppable } = useDragLayer((monitor) => ({
|
76
78
|
isDroppable:
|
77
79
|
monitor.isDragging() &&
|
@@ -81,7 +83,6 @@ export const WavgParamDNDZone = (props: {
|
|
81
83
|
}));
|
82
84
|
|
83
85
|
const weightIsSet = () => column.weight !== undefined;
|
84
|
-
|
85
86
|
const getWeightName = (): string => {
|
86
87
|
if (column instanceof QueryBuilderAggregateOperator_Wavg) {
|
87
88
|
return column.weight?.func.value.name ?? '';
|
@@ -92,8 +93,8 @@ export const WavgParamDNDZone = (props: {
|
|
92
93
|
|
93
94
|
return (
|
94
95
|
<div
|
96
|
+
ref={ref}
|
95
97
|
data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_WAVG_DROPZONE}
|
96
|
-
ref={dropWavgParam}
|
97
98
|
>
|
98
99
|
<div>
|
99
100
|
<PanelEntryDropZonePlaceholder
|
@@ -772,7 +772,7 @@ const QueryBuilderGraphFetchTreePanel = observer(
|
|
772
772
|
},
|
773
773
|
[graphFetchTreeState, serializationState],
|
774
774
|
);
|
775
|
-
const [{ isDragOver },
|
775
|
+
const [{ isDragOver }, dropConnector] = useDrop<
|
776
776
|
QueryBuilderExplorerTreeDragSource,
|
777
777
|
void,
|
778
778
|
{ isDragOver: boolean }
|
@@ -813,7 +813,7 @@ const QueryBuilderGraphFetchTreePanel = observer(
|
|
813
813
|
>
|
814
814
|
<PanelDropZone
|
815
815
|
isDragOver={isDragOver}
|
816
|
-
dropTargetConnector={
|
816
|
+
dropTargetConnector={dropConnector}
|
817
817
|
contentClassName="query-builder-graph-fetch-panel"
|
818
818
|
>
|
819
819
|
{(!treeData || isGraphFetchTreeDataEmpty(treeData)) && (
|
@@ -369,6 +369,9 @@ const QueryBuilderPostFilterConditionEditor = observer(
|
|
369
369
|
}),
|
370
370
|
[handleDrop],
|
371
371
|
);
|
372
|
+
const ref = useRef<HTMLDivElement>(null);
|
373
|
+
dropConnector(ref);
|
374
|
+
|
372
375
|
const { isFilterValueDroppable } = useDragLayer((monitor) => ({
|
373
376
|
isFilterValueDroppable:
|
374
377
|
monitor.isDragging() &&
|
@@ -424,7 +427,7 @@ const QueryBuilderPostFilterConditionEditor = observer(
|
|
424
427
|
) {
|
425
428
|
return (
|
426
429
|
<div
|
427
|
-
ref={
|
430
|
+
ref={ref}
|
428
431
|
className="query-builder-post-filter-tree__condition-node__value"
|
429
432
|
>
|
430
433
|
<PanelEntryDropZonePlaceholder
|
@@ -458,7 +461,7 @@ const QueryBuilderPostFilterConditionEditor = observer(
|
|
458
461
|
) {
|
459
462
|
return (
|
460
463
|
<div
|
461
|
-
ref={
|
464
|
+
ref={ref}
|
462
465
|
className="query-builder-post-filter-tree__condition-node__value"
|
463
466
|
>
|
464
467
|
<PanelEntryDropZonePlaceholder
|
@@ -565,7 +568,7 @@ const QueryBuilderPostFilterTreeNodeContainer = observer(
|
|
565
568
|
) => {
|
566
569
|
const { node, onNodeSelect, innerProps } = props;
|
567
570
|
const { tdsState } = innerProps;
|
568
|
-
const
|
571
|
+
const ref = useRef<HTMLDivElement>(null);
|
569
572
|
const [isSelectedFromContextMenu, setIsSelectedFromContextMenu] =
|
570
573
|
useState(false);
|
571
574
|
const applicationStore = useApplicationStore();
|
@@ -702,7 +705,7 @@ const QueryBuilderPostFilterTreeNodeContainer = observer(
|
|
702
705
|
}),
|
703
706
|
[node, postFilterState],
|
704
707
|
);
|
705
|
-
dragConnector(dropConnector(
|
708
|
+
dragConnector(dropConnector(ref));
|
706
709
|
useDragPreviewLayer(dragPreviewConnector);
|
707
710
|
|
708
711
|
const { isDroppable } = useDragLayer((monitor) => ({
|
@@ -757,7 +760,7 @@ const QueryBuilderPostFilterTreeNodeContainer = observer(
|
|
757
760
|
QUERY_BUILDER_TEST_ID.QUERY_BUILDER_POST_FILTER_TREE_NODE_CONTENT
|
758
761
|
}
|
759
762
|
className="query-builder-post-filter-tree__node__content"
|
760
|
-
ref={
|
763
|
+
ref={ref}
|
761
764
|
onClick={
|
762
765
|
node instanceof QueryBuilderPostFilterTreeConditionNodeData ||
|
763
766
|
node instanceof QueryBuilderPostFilterTreeBlankConditionNodeData
|
@@ -1031,7 +1034,7 @@ const QueryBuilderPostFilterPanelContent = observer(
|
|
1031
1034
|
},
|
1032
1035
|
[applicationStore, postFilterState, tdsState.aggregationState.columns],
|
1033
1036
|
);
|
1034
|
-
const [{ isDragOver },
|
1037
|
+
const [{ isDragOver }, dropConnector] = useDrop<
|
1035
1038
|
QueryBuilderProjectionColumnDragSource,
|
1036
1039
|
void,
|
1037
1040
|
{ isDragOver: boolean }
|
@@ -1050,8 +1053,8 @@ const QueryBuilderPostFilterPanelContent = observer(
|
|
1050
1053
|
[applicationStore, handleDrop],
|
1051
1054
|
);
|
1052
1055
|
|
1053
|
-
const
|
1054
|
-
|
1056
|
+
const ref = useRef<HTMLDivElement>(null);
|
1057
|
+
dropConnector(ref);
|
1055
1058
|
|
1056
1059
|
return (
|
1057
1060
|
<>
|
@@ -1145,7 +1148,7 @@ const QueryBuilderPostFilterPanelContent = observer(
|
|
1145
1148
|
<PanelDropZone
|
1146
1149
|
isDragOver={isDragOver && postFilterState.isEmpty}
|
1147
1150
|
isDroppable={isDroppable && postFilterState.isEmpty}
|
1148
|
-
dropTargetConnector={
|
1151
|
+
dropTargetConnector={dropConnector}
|
1149
1152
|
>
|
1150
1153
|
{
|
1151
1154
|
<PanelLoadingIndicator
|
@@ -1171,7 +1174,7 @@ const QueryBuilderPostFilterPanelContent = observer(
|
|
1171
1174
|
)}
|
1172
1175
|
{isDroppable && !postFilterState.isEmpty && (
|
1173
1176
|
<div
|
1174
|
-
ref={
|
1177
|
+
ref={ref}
|
1175
1178
|
className="query-builder-post-filter-tree__free-drop-zone__container"
|
1176
1179
|
>
|
1177
1180
|
<PanelEntryDropZonePlaceholder
|
@@ -360,7 +360,7 @@ export const QueryResultModifierModal = observer(
|
|
360
360
|
setWatermarkValue(watermarkState.getDefaultValue());
|
361
361
|
}
|
362
362
|
};
|
363
|
-
const [{ isParameterValueDragOver },
|
363
|
+
const [{ isParameterValueDragOver }, dropConnector] = useDrop<
|
364
364
|
QueryBuilderVariableDragSource,
|
365
365
|
void,
|
366
366
|
{ isParameterValueDragOver: boolean }
|
@@ -1047,7 +1047,7 @@ export const QueryResultModifierModal = observer(
|
|
1047
1047
|
>
|
1048
1048
|
<PanelDropZone
|
1049
1049
|
isDragOver={isParameterValueDragOver}
|
1050
|
-
dropTargetConnector={
|
1050
|
+
dropTargetConnector={dropConnector}
|
1051
1051
|
>
|
1052
1052
|
<BasicValueSpecificationEditor
|
1053
1053
|
valueSpecification={watermarkValue}
|
@@ -275,10 +275,12 @@ const QueryBuilderDerivationProjectionColumnEditor = observer(
|
|
275
275
|
}),
|
276
276
|
[handleDrop],
|
277
277
|
);
|
278
|
+
const ref = useRef<HTMLDivElement>(null);
|
279
|
+
dropConnector(ref);
|
278
280
|
|
279
281
|
return (
|
280
282
|
<div
|
281
|
-
ref={
|
283
|
+
ref={ref}
|
282
284
|
className={clsx(
|
283
285
|
'query-builder__lambda-editor__container query-builder__projection__column__derivation',
|
284
286
|
{ backdrop__element: hasParserError },
|
@@ -391,9 +393,9 @@ const QueryBuilderProjectionColumnEditor = observer(
|
|
391
393
|
currentRearrangeDropGapIndex,
|
392
394
|
setCurrentRearrangeDropGapIndex,
|
393
395
|
} = props;
|
394
|
-
const dragHandleRef = useRef<HTMLDivElement>(null);
|
395
396
|
const applicationStore = useApplicationStore();
|
396
397
|
const ref = useRef<HTMLDivElement>(null);
|
398
|
+
const dragHandleRef = useRef<HTMLDivElement>(null);
|
397
399
|
const [isSelectedFromContextMenu, setIsSelectedFromContextMenu] =
|
398
400
|
useState(false);
|
399
401
|
const onContextMenuOpen = (): void => setIsSelectedFromContextMenu(true);
|
@@ -661,7 +663,6 @@ const QueryBuilderProjectionColumnEditor = observer(
|
|
661
663
|
}),
|
662
664
|
[projectionColumnState],
|
663
665
|
);
|
664
|
-
|
665
666
|
dragConnector(dragHandleRef);
|
666
667
|
dropConnector(ref);
|
667
668
|
|
@@ -703,7 +704,7 @@ const QueryBuilderProjectionColumnEditor = observer(
|
|
703
704
|
tdsState.queryBuilderState.explorerState,
|
704
705
|
],
|
705
706
|
);
|
706
|
-
const [{ isDragOver },
|
707
|
+
const [{ isDragOver }, panelDropConnector] = useDrop<
|
707
708
|
QueryBuilderExplorerTreeDragSource,
|
708
709
|
void,
|
709
710
|
{ isDragOver: boolean }
|
@@ -721,6 +722,9 @@ const QueryBuilderProjectionColumnEditor = observer(
|
|
721
722
|
}),
|
722
723
|
[handleDrop],
|
723
724
|
);
|
725
|
+
const panelRef = useRef<HTMLDivElement>(null);
|
726
|
+
panelDropConnector(panelRef);
|
727
|
+
|
724
728
|
const percentileButtonRef = useRef<HTMLButtonElement>(null);
|
725
729
|
const percentileInputRef = useRef<HTMLInputElement>(null);
|
726
730
|
const [isPercentileOpen, setIsPercentileOpen] = useState(false);
|
@@ -1192,7 +1196,7 @@ const QueryBuilderProjectionColumnEditor = observer(
|
|
1192
1196
|
</div>
|
1193
1197
|
<div
|
1194
1198
|
className="query-builder__projection__calendar__date__column"
|
1195
|
-
ref={
|
1199
|
+
ref={panelRef}
|
1196
1200
|
>
|
1197
1201
|
<PanelEntryDropZonePlaceholder
|
1198
1202
|
isDragOver={isDragOver}
|
@@ -1335,7 +1339,7 @@ export const QueryBuilderTDSPanel = observer(
|
|
1335
1339
|
[tdsState],
|
1336
1340
|
);
|
1337
1341
|
|
1338
|
-
const [{ isDragOver },
|
1342
|
+
const [{ isDragOver }, panelDropConnector] = useDrop<
|
1339
1343
|
QueryBuilderTDSPanelDropTarget,
|
1340
1344
|
void,
|
1341
1345
|
{ isDragOver: boolean }
|
@@ -1353,8 +1357,10 @@ export const QueryBuilderTDSPanel = observer(
|
|
1353
1357
|
}),
|
1354
1358
|
[handleDrop],
|
1355
1359
|
);
|
1360
|
+
const panelRef = useRef<HTMLInputElement>(null);
|
1361
|
+
panelDropConnector(panelRef);
|
1356
1362
|
|
1357
|
-
const [{ isRearrangeActive },
|
1363
|
+
const [{ isRearrangeActive }, dropConnector] = useDrop<
|
1358
1364
|
QueryBuilderProjectionColumnDragSource,
|
1359
1365
|
void,
|
1360
1366
|
{ isRearrangeActive: boolean }
|
@@ -1367,6 +1373,8 @@ export const QueryBuilderTDSPanel = observer(
|
|
1367
1373
|
}),
|
1368
1374
|
[],
|
1369
1375
|
);
|
1376
|
+
const ref = useRef<HTMLDivElement>(null);
|
1377
|
+
dropConnector(ref);
|
1370
1378
|
|
1371
1379
|
const { isDroppable } = useDragLayer((monitor) => ({
|
1372
1380
|
isDroppable:
|
@@ -1382,9 +1390,6 @@ export const QueryBuilderTDSPanel = observer(
|
|
1382
1390
|
);
|
1383
1391
|
}, [applicationStore, tdsState]);
|
1384
1392
|
|
1385
|
-
const addProjectionRef = useRef<HTMLInputElement>(null);
|
1386
|
-
dropTargetConnector(addProjectionRef);
|
1387
|
-
|
1388
1393
|
return (
|
1389
1394
|
<PanelContent>
|
1390
1395
|
<div className="query-builder__projection__toolbar">
|
@@ -1634,7 +1639,7 @@ export const QueryBuilderTDSPanel = observer(
|
|
1634
1639
|
<PanelDropZone
|
1635
1640
|
isDragOver={isDragOver && isEmpty}
|
1636
1641
|
isDroppable={isDroppable && isEmpty}
|
1637
|
-
dropTargetConnector={
|
1642
|
+
dropTargetConnector={panelDropConnector}
|
1638
1643
|
>
|
1639
1644
|
{!projectionColumns.length && (
|
1640
1645
|
<BlankPanelPlaceholder
|
@@ -1647,7 +1652,7 @@ export const QueryBuilderTDSPanel = observer(
|
|
1647
1652
|
data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_TDS}
|
1648
1653
|
className="query-builder__projection__columns"
|
1649
1654
|
>
|
1650
|
-
<div ref={
|
1655
|
+
<div ref={ref}>
|
1651
1656
|
<DragPreviewLayer
|
1652
1657
|
labelGetter={(
|
1653
1658
|
item: QueryBuilderProjectionColumnDragSource,
|
@@ -1683,7 +1688,7 @@ export const QueryBuilderTDSPanel = observer(
|
|
1683
1688
|
)}
|
1684
1689
|
{isDroppable && !isEmpty && (
|
1685
1690
|
<div
|
1686
|
-
ref={
|
1691
|
+
ref={panelRef}
|
1687
1692
|
className="query-builder__projection__free-drop-zone__container"
|
1688
1693
|
>
|
1689
1694
|
<PanelEntryDropZonePlaceholder
|
@@ -691,7 +691,7 @@ const TDSColumnReferenceEditor = observer(
|
|
691
691
|
},
|
692
692
|
[handleChange],
|
693
693
|
);
|
694
|
-
const [{ isDragOver },
|
694
|
+
const [{ isDragOver }, dropConnector] = useDrop<
|
695
695
|
QueryBuilderWindowColumnDragSource,
|
696
696
|
void,
|
697
697
|
{ isDragOver: boolean }
|
@@ -712,6 +712,8 @@ const TDSColumnReferenceEditor = observer(
|
|
712
712
|
}),
|
713
713
|
[handleDrop],
|
714
714
|
);
|
715
|
+
const ref = useRef<HTMLDivElement>(null);
|
716
|
+
dropConnector(ref);
|
715
717
|
|
716
718
|
return (
|
717
719
|
<>
|
@@ -719,10 +721,7 @@ const TDSColumnReferenceEditor = observer(
|
|
719
721
|
onClick={openOpAnchor}
|
720
722
|
className="query-builder__olap__tds__column"
|
721
723
|
>
|
722
|
-
<div
|
723
|
-
ref={dropOpConnector}
|
724
|
-
className="query-builder__olap__tds__column-badge"
|
725
|
-
>
|
724
|
+
<div ref={ref} className="query-builder__olap__tds__column-badge">
|
726
725
|
<PanelEntryDropZonePlaceholder
|
727
726
|
isDragOver={isDragOver}
|
728
727
|
label="Change Column"
|
@@ -945,7 +944,7 @@ const QueryBuilderWindowColumnEditor = observer(
|
|
945
944
|
},
|
946
945
|
[windowColumnState],
|
947
946
|
);
|
948
|
-
const [{ isDragOver },
|
947
|
+
const [{ isDragOver }, operationDropConnector] = useDrop<
|
949
948
|
QueryBuilderWindowColumnDragSource,
|
950
949
|
void,
|
951
950
|
{ isDragOver: boolean }
|
@@ -966,6 +965,8 @@ const QueryBuilderWindowColumnEditor = observer(
|
|
966
965
|
}),
|
967
966
|
[handleWindowDrop],
|
968
967
|
);
|
968
|
+
const opRef = useRef<HTMLButtonElement>(null);
|
969
|
+
operationDropConnector(opRef);
|
969
970
|
|
970
971
|
return (
|
971
972
|
<PanelDnDEntry
|
@@ -1052,7 +1053,7 @@ const QueryBuilderWindowColumnEditor = observer(
|
|
1052
1053
|
</div>
|
1053
1054
|
<div className="query-builder__olap__column__window">
|
1054
1055
|
<button
|
1055
|
-
ref={
|
1056
|
+
ref={opRef}
|
1056
1057
|
title="Click to edit or drag and drop columns"
|
1057
1058
|
onClick={openWindowPopover}
|
1058
1059
|
className="query-builder__olap__column__window__content"
|
@@ -1266,7 +1267,7 @@ export const QueryBuilderTDSWindowPanel = observer(
|
|
1266
1267
|
[applicationStore, tdsWindowState],
|
1267
1268
|
);
|
1268
1269
|
|
1269
|
-
const [{ isDragOver },
|
1270
|
+
const [{ isDragOver }, dropConnector] = useDrop<
|
1270
1271
|
QueryBuilderWindowDropTarget,
|
1271
1272
|
void,
|
1272
1273
|
{ isDragOver: boolean }
|
@@ -1296,8 +1297,8 @@ export const QueryBuilderTDSWindowPanel = observer(
|
|
1296
1297
|
),
|
1297
1298
|
}));
|
1298
1299
|
|
1299
|
-
const
|
1300
|
-
|
1300
|
+
const ref = useRef<HTMLDivElement>(null);
|
1301
|
+
dropConnector(ref);
|
1301
1302
|
|
1302
1303
|
return (
|
1303
1304
|
<Panel>
|
@@ -1328,7 +1329,7 @@ export const QueryBuilderTDSWindowPanel = observer(
|
|
1328
1329
|
<PanelDropZone
|
1329
1330
|
isDragOver={isDragOver && tdsWindowState.isEmpty}
|
1330
1331
|
isDroppable={isDroppable && tdsWindowState.isEmpty}
|
1331
|
-
dropTargetConnector={
|
1332
|
+
dropTargetConnector={dropConnector}
|
1332
1333
|
>
|
1333
1334
|
{tdsWindowState.isEmpty && (
|
1334
1335
|
<BlankPanelPlaceholder
|
@@ -1363,7 +1364,7 @@ export const QueryBuilderTDSWindowPanel = observer(
|
|
1363
1364
|
)}
|
1364
1365
|
{isDroppable && !tdsWindowState.isEmpty && (
|
1365
1366
|
<div
|
1366
|
-
ref={
|
1367
|
+
ref={ref}
|
1367
1368
|
className="query-builder__olap__free-drop-zone__container"
|
1368
1369
|
>
|
1369
1370
|
<PanelEntryDropZonePlaceholder
|