@finos/legend-query-builder 4.15.28 → 4.15.30
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/QueryBuilderState.d.ts +2 -1
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +4 -1
- package/lib/stores/QueryBuilderState.js.map +1 -1
- 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/entitlements/QueryBuilderCheckEntitlementsState.d.ts.map +1 -1
- package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.js +2 -2
- package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.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/QueryBuilderState.ts +6 -0
- package/src/stores/QueryBuilderStateBuilder.ts +0 -1
- package/src/stores/QueryLoaderState.ts +1 -1
- package/src/stores/entitlements/QueryBuilderCheckEntitlementsState.ts +1 -4
- 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
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@finos/legend-query-builder",
|
3
|
-
"version": "4.15.
|
3
|
+
"version": "4.15.30",
|
4
4
|
"description": "Legend query builder core",
|
5
5
|
"keywords": [
|
6
6
|
"legend",
|
@@ -42,44 +42,43 @@
|
|
42
42
|
"test:watch": "jest --watch"
|
43
43
|
},
|
44
44
|
"dependencies": {
|
45
|
-
"@finos/legend-application": "16.0.
|
46
|
-
"@finos/legend-art": "7.1.
|
47
|
-
"@finos/legend-code-editor": "2.0.
|
48
|
-
"@finos/legend-data-cube": "0.0.
|
49
|
-
"@finos/legend-graph": "31.10.
|
50
|
-
"@finos/legend-lego": "2.0.
|
51
|
-
"@finos/legend-server-depot": "6.0.
|
52
|
-
"@finos/legend-shared": "10.0.
|
53
|
-
"@finos/legend-storage": "3.0.
|
45
|
+
"@finos/legend-application": "16.0.13",
|
46
|
+
"@finos/legend-art": "7.1.70",
|
47
|
+
"@finos/legend-code-editor": "2.0.27",
|
48
|
+
"@finos/legend-data-cube": "0.0.32",
|
49
|
+
"@finos/legend-graph": "31.10.61",
|
50
|
+
"@finos/legend-lego": "2.0.29",
|
51
|
+
"@finos/legend-server-depot": "6.0.72",
|
52
|
+
"@finos/legend-shared": "10.0.63",
|
53
|
+
"@finos/legend-storage": "3.0.114",
|
54
54
|
"@testing-library/dom": "10.4.0",
|
55
|
-
"@testing-library/react": "16.0
|
56
|
-
"@types/react": "
|
57
|
-
"@types/react-dom": "
|
55
|
+
"@testing-library/react": "16.1.0",
|
56
|
+
"@types/react": "19.0.2",
|
57
|
+
"@types/react-dom": "19.0.2",
|
58
58
|
"chart.js": "4.4.7",
|
59
|
-
"mathjs": "14.0.
|
59
|
+
"mathjs": "14.0.1",
|
60
60
|
"mobx": "6.13.5",
|
61
|
-
"mobx-react-lite": "4.0
|
62
|
-
"monaco-editor": "0.52.
|
63
|
-
"react": "
|
64
|
-
"react-chartjs-2": "5.2.0",
|
61
|
+
"mobx-react-lite": "4.1.0",
|
62
|
+
"monaco-editor": "0.52.2",
|
63
|
+
"react": "19.0.0",
|
65
64
|
"react-dnd": "16.0.1",
|
66
|
-
"react-dom": "
|
65
|
+
"react-dom": "19.0.0",
|
67
66
|
"serializr": "3.0.3",
|
68
67
|
"sql-formatter": "15.4.6"
|
69
68
|
},
|
70
69
|
"devDependencies": {
|
71
|
-
"@finos/legend-dev-utils": "2.1.
|
70
|
+
"@finos/legend-dev-utils": "2.1.32",
|
72
71
|
"@jest/globals": "29.7.0",
|
73
72
|
"cross-env": "7.0.3",
|
74
|
-
"eslint": "9.
|
73
|
+
"eslint": "9.17.0",
|
75
74
|
"jest": "29.7.0",
|
76
75
|
"npm-run-all": "4.1.5",
|
77
76
|
"rimraf": "6.0.1",
|
78
|
-
"sass": "1.
|
77
|
+
"sass": "1.83.0",
|
79
78
|
"typescript": "5.7.2"
|
80
79
|
},
|
81
80
|
"peerDependencies": {
|
82
|
-
"react": "^
|
81
|
+
"react": "^19.0.0"
|
83
82
|
},
|
84
83
|
"publishConfig": {
|
85
84
|
"directory": "build/publishContent"
|
@@ -263,7 +263,7 @@ export const QueryBuilder = observer(
|
|
263
263
|
(props: { queryBuilderState: QueryBuilderState }) => {
|
264
264
|
const { queryBuilderState } = props;
|
265
265
|
const applicationStore = queryBuilderState.applicationStore;
|
266
|
-
const
|
266
|
+
const ref = useRef<HTMLDivElement>(null);
|
267
267
|
const isQuerySupported = queryBuilderState.isQuerySupported;
|
268
268
|
const fetchStructureState = queryBuilderState.fetchStructureState;
|
269
269
|
const isTDSState =
|
@@ -536,7 +536,7 @@ export const QueryBuilder = observer(
|
|
536
536
|
<div
|
537
537
|
data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER}
|
538
538
|
className="query-builder"
|
539
|
-
ref={
|
539
|
+
ref={ref}
|
540
540
|
>
|
541
541
|
<BackdropContainer
|
542
542
|
elementId={QUERY_BUILDER_COMPONENT_ELEMENT_ID.BACKDROP_CONTAINER}
|
@@ -581,7 +581,7 @@ export const QueryBuilder = observer(
|
|
581
581
|
<div className="query-builder__header__actions">
|
582
582
|
<div className="query-builder__header__actions__undo-redo">
|
583
583
|
<UndoButton
|
584
|
-
parent={
|
584
|
+
parent={ref}
|
585
585
|
canUndo={
|
586
586
|
queryBuilderState.changeHistoryState.canUndo &&
|
587
587
|
queryBuilderState.isQuerySupported
|
@@ -589,7 +589,7 @@ export const QueryBuilder = observer(
|
|
589
589
|
undo={undo}
|
590
590
|
/>
|
591
591
|
<RedoButton
|
592
|
-
parent={
|
592
|
+
parent={ref}
|
593
593
|
canRedo={
|
594
594
|
queryBuilderState.changeHistoryState.canRedo &&
|
595
595
|
queryBuilderState.isQuerySupported
|
@@ -93,7 +93,7 @@ const DerivedPropertyParameterValueEditor = observer(
|
|
93
93
|
},
|
94
94
|
[derivedPropertyExpressionState, idx],
|
95
95
|
);
|
96
|
-
const [{ isParameterValueDragOver },
|
96
|
+
const [{ isParameterValueDragOver }, dropConnector] = useDrop<
|
97
97
|
QueryBuilderVariableDragSource,
|
98
98
|
void,
|
99
99
|
{ isParameterValueDragOver: boolean }
|
@@ -237,7 +237,7 @@ const DerivedPropertyParameterValueEditor = observer(
|
|
237
237
|
<div className="query-builder__variable-editor">
|
238
238
|
<PanelDropZone
|
239
239
|
isDragOver={isParameterValueDragOver}
|
240
|
-
dropTargetConnector={
|
240
|
+
dropTargetConnector={dropConnector}
|
241
241
|
>
|
242
242
|
<BasicValueSpecificationEditor
|
243
243
|
valueSpecification={valueSpec}
|
@@ -110,7 +110,7 @@ export const QueryBuilderClassSelector = observer(
|
|
110
110
|
});
|
111
111
|
|
112
112
|
const classOptions = classes
|
113
|
-
.
|
113
|
+
.toSorted((a, b) => a.name.localeCompare(b.name))
|
114
114
|
.map((_class) => ({
|
115
115
|
value: _class,
|
116
116
|
label: generateClassLabel(_class, queryBuilderState),
|
@@ -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}
|