@finos/legend-query-builder 4.1.1 → 4.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts.map +1 -1
  2. package/lib/components/QueryBuilderPropertyExpressionEditor.js +1 -1
  3. package/lib/components/QueryBuilderPropertyExpressionEditor.js.map +1 -1
  4. package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -1
  5. package/lib/components/QueryBuilderResultPanel.js +91 -24
  6. package/lib/components/QueryBuilderResultPanel.js.map +1 -1
  7. package/lib/components/execution-plan/AllocationExecutionNodeViewer.d.ts +23 -0
  8. package/lib/components/execution-plan/AllocationExecutionNodeViewer.d.ts.map +1 -0
  9. package/lib/components/execution-plan/AllocationExecutionNodeViewer.js +32 -0
  10. package/lib/components/execution-plan/AllocationExecutionNodeViewer.js.map +1 -0
  11. package/lib/components/execution-plan/ConstantExecutionNodeViewer.d.ts +23 -0
  12. package/lib/components/execution-plan/ConstantExecutionNodeViewer.d.ts.map +1 -0
  13. package/lib/components/execution-plan/ConstantExecutionNodeViewer.js +35 -0
  14. package/lib/components/execution-plan/ConstantExecutionNodeViewer.js.map +1 -0
  15. package/lib/components/execution-plan/DataTypeResultTypeViewer.d.ts +21 -0
  16. package/lib/components/execution-plan/DataTypeResultTypeViewer.d.ts.map +1 -0
  17. package/lib/components/execution-plan/DataTypeResultTypeViewer.js +31 -0
  18. package/lib/components/execution-plan/DataTypeResultTypeViewer.js.map +1 -0
  19. package/lib/components/execution-plan/ExecutionPlanViewer.d.ts +10 -4
  20. package/lib/components/execution-plan/ExecutionPlanViewer.d.ts.map +1 -1
  21. package/lib/components/execution-plan/ExecutionPlanViewer.js +74 -62
  22. package/lib/components/execution-plan/ExecutionPlanViewer.js.map +1 -1
  23. package/lib/components/execution-plan/FunctionParametersValidationNodeViewer.d.ts +25 -0
  24. package/lib/components/execution-plan/FunctionParametersValidationNodeViewer.d.ts.map +1 -0
  25. package/lib/components/execution-plan/FunctionParametersValidationNodeViewer.js +47 -0
  26. package/lib/components/execution-plan/FunctionParametersValidationNodeViewer.js.map +1 -0
  27. package/lib/components/execution-plan/RelationalTDSInstantiationExecutionNodeViewer.d.ts +23 -0
  28. package/lib/components/execution-plan/RelationalTDSInstantiationExecutionNodeViewer.d.ts.map +1 -0
  29. package/lib/components/execution-plan/RelationalTDSInstantiationExecutionNodeViewer.js +31 -0
  30. package/lib/components/execution-plan/RelationalTDSInstantiationExecutionNodeViewer.js.map +1 -0
  31. package/lib/components/execution-plan/ResultTypeViewer.d.ts +21 -0
  32. package/lib/components/execution-plan/ResultTypeViewer.d.ts.map +1 -0
  33. package/lib/components/execution-plan/ResultTypeViewer.js +33 -0
  34. package/lib/components/execution-plan/ResultTypeViewer.js.map +1 -0
  35. package/lib/components/execution-plan/SQLExecutionNodeViewer.d.ts +9 -1
  36. package/lib/components/execution-plan/SQLExecutionNodeViewer.d.ts.map +1 -1
  37. package/lib/components/execution-plan/SQLExecutionNodeViewer.js +12 -6
  38. package/lib/components/execution-plan/SQLExecutionNodeViewer.js.map +1 -1
  39. package/lib/components/execution-plan/SequenceExecutionNodeViewer.d.ts +23 -0
  40. package/lib/components/execution-plan/SequenceExecutionNodeViewer.d.ts.map +1 -0
  41. package/lib/components/execution-plan/SequenceExecutionNodeViewer.js +38 -0
  42. package/lib/components/execution-plan/SequenceExecutionNodeViewer.js.map +1 -0
  43. package/lib/components/execution-plan/TDSResultTypeViewer.d.ts +21 -0
  44. package/lib/components/execution-plan/TDSResultTypeViewer.d.ts.map +1 -0
  45. package/lib/components/execution-plan/TDSResultTypeViewer.js +25 -0
  46. package/lib/components/execution-plan/TDSResultTypeViewer.js.map +1 -0
  47. package/lib/components/explorer/QueryBuilderMilestoningEditor.d.ts.map +1 -1
  48. package/lib/components/explorer/QueryBuilderMilestoningEditor.js +3 -3
  49. package/lib/components/explorer/QueryBuilderMilestoningEditor.js.map +1 -1
  50. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
  51. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +24 -34
  52. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
  53. package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
  54. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +44 -11
  55. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
  56. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.d.ts.map +1 -1
  57. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js +4 -4
  58. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js.map +1 -1
  59. package/lib/components/filter/QueryBuilderFilterPanel.d.ts.map +1 -1
  60. package/lib/components/filter/QueryBuilderFilterPanel.js +20 -32
  61. package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
  62. package/lib/index.css +2 -2
  63. package/lib/index.css.map +1 -1
  64. package/lib/package.json +2 -2
  65. package/lib/stores/QueryBuilderResultState.d.ts +0 -3
  66. package/lib/stores/QueryBuilderResultState.d.ts.map +1 -1
  67. package/lib/stores/QueryBuilderResultState.js +2 -25
  68. package/lib/stores/QueryBuilderResultState.js.map +1 -1
  69. package/lib/stores/execution-plan/ExecutionPlanState.d.ts +14 -1
  70. package/lib/stores/execution-plan/ExecutionPlanState.d.ts.map +1 -1
  71. package/lib/stores/execution-plan/ExecutionPlanState.js +86 -3
  72. package/lib/stores/execution-plan/ExecutionPlanState.js.map +1 -1
  73. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts +3 -0
  74. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
  75. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +11 -0
  76. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
  77. package/package.json +7 -7
  78. package/src/components/QueryBuilderPropertyExpressionEditor.tsx +1 -2
  79. package/src/components/QueryBuilderResultPanel.tsx +146 -30
  80. package/src/components/execution-plan/AllocationExecutionNodeViewer.tsx +77 -0
  81. package/src/components/execution-plan/ConstantExecutionNodeViewer.tsx +82 -0
  82. package/src/components/execution-plan/DataTypeResultTypeViewer.tsx +52 -0
  83. package/src/components/execution-plan/ExecutionPlanViewer.tsx +205 -195
  84. package/src/components/execution-plan/FunctionParametersValidationNodeViewer.tsx +118 -0
  85. package/src/components/execution-plan/RelationalTDSInstantiationExecutionNodeViewer.tsx +68 -0
  86. package/src/components/execution-plan/ResultTypeViewer.tsx +37 -0
  87. package/src/components/execution-plan/SQLExecutionNodeViewer.tsx +50 -19
  88. package/src/components/execution-plan/SequenceExecutionNodeViewer.tsx +95 -0
  89. package/src/components/execution-plan/TDSResultTypeViewer.tsx +59 -0
  90. package/src/components/explorer/QueryBuilderMilestoningEditor.tsx +5 -8
  91. package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +32 -61
  92. package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +77 -14
  93. package/src/components/fetch-structure/QueryBuilderTDSWindowPanel.tsx +6 -8
  94. package/src/components/filter/QueryBuilderFilterPanel.tsx +45 -73
  95. package/src/stores/QueryBuilderResultState.ts +1 -42
  96. package/src/stores/execution-plan/ExecutionPlanState.ts +142 -4
  97. package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +16 -0
  98. package/tsconfig.json +8 -0
@@ -35,7 +35,7 @@ import {
35
35
  PanelContent,
36
36
  TrashIcon,
37
37
  PanelDnDEntry,
38
- PanelDnDEntryDragHandle,
38
+ PanelEntryDragHandle,
39
39
  CalendarIcon,
40
40
  CalendarClockIcon,
41
41
  CustomSelectorInput,
@@ -325,16 +325,18 @@ const buildCalendarTypeOption = (
325
325
 
326
326
  const QueryBuilderProjectionColumnEditor = observer(
327
327
  (props: { projectionColumnState: QueryBuilderProjectionColumnState }) => {
328
+ const { projectionColumnState } = props;
329
+ const columnIdx = projectionColumnState.tdsState.tdsColumns.indexOf(
330
+ projectionColumnState,
331
+ );
328
332
  const handleRef = useRef<HTMLDivElement>(null);
329
333
  const applicationStore = useApplicationStore();
330
-
331
334
  const ref = useRef<HTMLDivElement>(null);
332
335
  const [isSelectedFromContextMenu, setIsSelectedFromContextMenu] =
333
336
  useState(false);
334
337
  const onContextMenuOpen = (): void => setIsSelectedFromContextMenu(true);
335
338
  const onContextMenuClose = (): void => setIsSelectedFromContextMenu(false);
336
339
 
337
- const { projectionColumnState } = props;
338
340
  const tdsState = projectionColumnState.tdsState;
339
341
  const isCalendarEnabled = tdsState.queryBuilderState.isCalendarEnabled;
340
342
  const isRemovalDisabled = tdsState.isColumnInUse(projectionColumnState);
@@ -478,6 +480,23 @@ const QueryBuilderProjectionColumnEditor = observer(
478
480
  }
479
481
  };
480
482
 
483
+ const handleDroppingColumn = useCallback(
484
+ (type: string): void => {
485
+ if (
486
+ type === QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE &&
487
+ tdsState.draggedColumnIndex !== undefined &&
488
+ tdsState.hoveredColumnIndex !== undefined
489
+ ) {
490
+ tdsState.moveColumn(
491
+ tdsState.draggedColumnIndex,
492
+ tdsState.hoveredColumnIndex,
493
+ );
494
+ }
495
+ tdsState.setRearrangeColumnsIndex(undefined, undefined);
496
+ },
497
+ [tdsState],
498
+ );
499
+
481
500
  // Drag and Drop
482
501
  const handleHover = useCallback(
483
502
  (
@@ -490,6 +509,11 @@ const QueryBuilderProjectionColumnEditor = observer(
490
509
  const hoverIndex = tdsState.projectionColumns.findIndex(
491
510
  (e) => e === projectionColumnState,
492
511
  );
512
+
513
+ if (dragIndex === hoverIndex) {
514
+ tdsState.setRearrangeColumnsIndex(undefined, hoverIndex);
515
+ }
516
+
493
517
  if (dragIndex === -1 || hoverIndex === -1 || dragIndex === hoverIndex) {
494
518
  return;
495
519
  }
@@ -507,7 +531,8 @@ const QueryBuilderProjectionColumnEditor = observer(
507
531
  if (dragIndex > hoverIndex && dragDistance > distanceThreshold) {
508
532
  return;
509
533
  }
510
- tdsState.moveColumn(dragIndex, hoverIndex);
534
+
535
+ tdsState.setRearrangeColumnsIndex(dragIndex, hoverIndex);
511
536
  },
512
537
  [projectionColumnState, tdsState],
513
538
  );
@@ -515,9 +540,15 @@ const QueryBuilderProjectionColumnEditor = observer(
515
540
  () => ({
516
541
  accept: [QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE],
517
542
  hover: (item, monitor): void => handleHover(item, monitor),
543
+ drop: (item, monitor): void => {
544
+ if (!monitor.didDrop()) {
545
+ handleDroppingColumn(monitor.getItemType() as string);
546
+ }
547
+ },
518
548
  }),
519
- [handleHover],
549
+ [handleHover, handleDroppingColumn],
520
550
  );
551
+
521
552
  const [
522
553
  { projectionColumnBeingDragged },
523
554
  dragConnector,
@@ -548,8 +579,11 @@ const QueryBuilderProjectionColumnEditor = observer(
548
579
  }),
549
580
  [projectionColumnState],
550
581
  );
582
+
551
583
  const isBeingDragged =
552
- projectionColumnState === projectionColumnBeingDragged;
584
+ columnIdx === tdsState.hoveredColumnIndex &&
585
+ projectionColumnBeingDragged !== undefined;
586
+
553
587
  dragConnector(handleRef);
554
588
  dropConnector(ref);
555
589
 
@@ -613,6 +647,21 @@ const QueryBuilderProjectionColumnEditor = observer(
613
647
  return (
614
648
  <PanelDnDEntry
615
649
  ref={ref}
650
+ // TODO: this is the more appropriate solution than what we did
651
+ // before and in other places for rearrange because it does no
652
+ // rearrange while on hovering, but on drop, there's some work to
653
+ // do about the drop location indicator though
654
+ // See https://github.com/finos/legend-studio/pull/2330
655
+ placeholder={
656
+ <div
657
+ className={
658
+ (tdsState.hoveredColumnIndex ?? 0) >
659
+ (tdsState.draggedColumnIndex ?? 0)
660
+ ? 'query-builder__projection__column__placeholder--bottom'
661
+ : 'query-builder__projection__column__placeholder--top'
662
+ }
663
+ />
664
+ }
616
665
  showPlaceholder={isBeingDragged}
617
666
  className="query-builder__projection__column"
618
667
  >
@@ -637,9 +686,9 @@ const QueryBuilderProjectionColumnEditor = observer(
637
686
  onClose={onContextMenuClose}
638
687
  >
639
688
  <div className="query-builder__projection__column__container">
640
- <PanelDnDEntryDragHandle
641
- isBeingDragged={isBeingDragged}
642
- dropTargetConnector={handleRef}
689
+ <PanelEntryDragHandle
690
+ isDragging={isBeingDragged}
691
+ dragSourceConnector={handleRef}
643
692
  className="query-builder__projection__column__drag-handle__container"
644
693
  />
645
694
  <div className="query-builder__projection__column__name">
@@ -806,7 +855,7 @@ const QueryBuilderProjectionColumnEditor = observer(
806
855
  ref={dropTargetConnector}
807
856
  >
808
857
  <PanelEntryDropZonePlaceholder
809
- showPlaceholder={isDragOver}
858
+ isDragOver={isDragOver}
810
859
  label="Change Date Column"
811
860
  className="query-builder__projection__calendar__date__column__dnd__placeholder"
812
861
  >
@@ -937,8 +986,22 @@ export const QueryBuilderTDSPanel = observer(
937
986
  [handleDrop],
938
987
  );
939
988
 
940
- const { showDroppableSuggestion } = useDragLayer((monitor) => ({
941
- showDroppableSuggestion:
989
+ const [, projectionColumnDropConnector] = useDrop<
990
+ QueryBuilderProjectionColumnDragSource,
991
+ void,
992
+ { isOverProjectionColumns: boolean }
993
+ >(
994
+ () => ({
995
+ accept: [QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE],
996
+ collect: (monitor) => ({
997
+ isOverProjectionColumns: monitor.isOver({ shallow: false }),
998
+ }),
999
+ }),
1000
+ [],
1001
+ );
1002
+
1003
+ const { isDroppable } = useDragLayer((monitor) => ({
1004
+ isDroppable:
942
1005
  monitor.isDragging() &&
943
1006
  [
944
1007
  QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ENUM_PROPERTY,
@@ -989,8 +1052,7 @@ export const QueryBuilderTDSPanel = observer(
989
1052
  <div className="query-builder__projection__content">
990
1053
  <PanelDropZone
991
1054
  isDragOver={isDragOver}
992
- showDroppableSuggestion={showDroppableSuggestion}
993
- className="query-builder__panel--droppable"
1055
+ isDroppable={isDroppable}
994
1056
  dropTargetConnector={dropTargetConnector}
995
1057
  >
996
1058
  {!projectionColumns.length && (
@@ -1003,6 +1065,7 @@ export const QueryBuilderTDSPanel = observer(
1003
1065
  <div
1004
1066
  data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_TDS}
1005
1067
  className="query-builder__projection__columns"
1068
+ ref={projectionColumnDropConnector}
1006
1069
  >
1007
1070
  <DragPreviewLayer
1008
1071
  labelGetter={(
@@ -42,7 +42,7 @@ import {
42
42
  ModalFooter,
43
43
  PanelFormSection,
44
44
  ModalFooterButton,
45
- PanelDnDEntryDragHandle,
45
+ PanelEntryDragHandle,
46
46
  PanelDnDEntry,
47
47
  PanelHeaderActionItem,
48
48
  PanelHeader,
@@ -611,9 +611,8 @@ const TDSColumnReferenceEditor = observer(
611
611
  className="query-builder__olap__tds__column-badge"
612
612
  >
613
613
  <PanelEntryDropZonePlaceholder
614
- showPlaceholder={isDragOver}
614
+ isDragOver={isDragOver}
615
615
  label="Change Column"
616
- className="query-builder__dnd__placeholder"
617
616
  >
618
617
  <div className="query-builder__olap__tds__column-badge__content">
619
618
  <div
@@ -875,10 +874,10 @@ const QueryBuilderWindowColumnEditor = observer(
875
874
  onOpen={onContextMenuOpen}
876
875
  onClose={onContextMenuClose}
877
876
  >
878
- <PanelDnDEntryDragHandle
879
- isBeingDragged={isBeingDragged}
877
+ <PanelEntryDragHandle
878
+ isDragging={isBeingDragged}
880
879
  className="query-builder__olap__column__drag-handle__container"
881
- dropTargetConnector={handleRef}
880
+ dragSourceConnector={handleRef}
882
881
  />
883
882
  <div className="query-builder__olap__column__operation">
884
883
  <div className="query-builder__olap__column__operation__operator">
@@ -947,9 +946,8 @@ const QueryBuilderWindowColumnEditor = observer(
947
946
  className="query-builder__olap__column__window__content"
948
947
  >
949
948
  <PanelEntryDropZonePlaceholder
950
- showPlaceholder={isDragOver}
949
+ isDragOver={isDragOver}
951
950
  label="Add"
952
- className="query-builder__dnd__placeholder"
953
951
  >
954
952
  <div
955
953
  title={`${windowColumnState.windowColumns.length} columns partitioned`}
@@ -105,9 +105,9 @@ const QueryBuilderFilterGroupConditionEditor = observer(
105
105
  (props: {
106
106
  node: QueryBuilderFilterTreeGroupNodeData;
107
107
  isDragOver: boolean;
108
- showDroppableSuggestion: boolean;
108
+ isDroppable: boolean;
109
109
  }) => {
110
- const { node, isDragOver, showDroppableSuggestion } = props;
110
+ const { node, isDragOver, isDroppable } = props;
111
111
  const switchOperation: React.MouseEventHandler<HTMLDivElement> = (
112
112
  event,
113
113
  ): void => {
@@ -120,30 +120,29 @@ const QueryBuilderFilterGroupConditionEditor = observer(
120
120
  };
121
121
  return (
122
122
  <div className="query-builder-filter-tree__node__label__content dnd__entry__container">
123
- {showDroppableSuggestion && (
123
+ <PanelEntryDropZonePlaceholder
124
+ isDragOver={isDragOver}
125
+ isDroppable={isDroppable}
126
+ label="Add to Logical Group"
127
+ >
124
128
  <div
125
- className={clsx('dnd__entry--droppable__indicator ', {
126
- 'dnd__entry--droppable__indicator--dragover': isDragOver,
129
+ className={clsx('query-builder-filter-tree__group-node', {
130
+ 'query-builder-filter-tree__group-node--and':
131
+ node.groupOperation === QUERY_BUILDER_GROUP_OPERATION.AND,
132
+ 'query-builder-filter-tree__group-node--or':
133
+ node.groupOperation === QUERY_BUILDER_GROUP_OPERATION.OR,
127
134
  })}
128
- ></div>
129
- )}
130
- <div
131
- className={clsx('query-builder-filter-tree__group-node', {
132
- 'query-builder-filter-tree__group-node--and':
133
- node.groupOperation === QUERY_BUILDER_GROUP_OPERATION.AND,
134
- 'query-builder-filter-tree__group-node--or':
135
- node.groupOperation === QUERY_BUILDER_GROUP_OPERATION.OR,
136
- })}
137
- title="Switch Operation"
138
- onClick={switchOperation}
139
- >
140
- <div className="query-builder-filter-tree__group-node__label">
141
- {node.groupOperation}
135
+ title="Switch Operation"
136
+ onClick={switchOperation}
137
+ >
138
+ <div className="query-builder-filter-tree__group-node__label">
139
+ {node.groupOperation}
140
+ </div>
141
+ <button className="query-builder-filter-tree__group-node__action">
142
+ <FilledTriangleIcon />
143
+ </button>
142
144
  </div>
143
- <button className="query-builder-filter-tree__group-node__action">
144
- <FilledTriangleIcon />
145
- </button>
146
- </div>
145
+ </PanelEntryDropZonePlaceholder>
147
146
  </div>
148
147
  );
149
148
  },
@@ -232,32 +231,11 @@ const QueryBuilderFilterConditionEditor = observer(
232
231
  cleanUpReloadValues,
233
232
  };
234
233
 
235
- const { showDroppableSuggestion } = useDragLayer((monitor) => ({
236
- showDroppableSuggestion:
237
- monitor.isDragging() &&
238
- (queryBuilderState.TEMPORARY__isDnDFetchStructureToFilterSupported
239
- ? IS_DRAGGABLE_FILTER_DND_TYPES_FETCH_SUPPORTED
240
- : IS_DRAGGABLE_FILTER_DND_TYPES
241
- ).includes(monitor.getItemType()?.toString() ?? ''),
242
- }));
243
-
244
234
  return (
245
235
  <div className="query-builder-filter-tree__node__label__content dnd__entry__container">
246
- {showDroppableSuggestion && (
247
- <div
248
- className={clsx(
249
- 'dnd__entry--droppable__indicator dnd__entry-potential__oiodropzone__indicator--full',
250
- {
251
- 'dnd__entry--droppable__indicator--dragover': isDragOver,
252
- },
253
- )}
254
- ></div>
255
- )}
256
-
257
236
  <PanelEntryDropZonePlaceholder
258
- showPlaceholder={isDragOver}
237
+ isDragOver={isDragOver}
259
238
  label="Add New Logical Group"
260
- className="query-builder__dnd__placeholder"
261
239
  >
262
240
  <div className="query-builder-filter-tree__condition-node">
263
241
  <div className="query-builder-filter-tree__condition-node__property">
@@ -301,9 +279,8 @@ const QueryBuilderFilterConditionEditor = observer(
301
279
  className="query-builder-filter-tree__condition-node__value"
302
280
  >
303
281
  <PanelEntryDropZonePlaceholder
304
- showPlaceholder={isFilterValueDragOver}
282
+ isDragOver={isFilterValueDragOver}
305
283
  label="Change Filter Value"
306
- className="query-builder__dnd__placeholder"
307
284
  >
308
285
  <BasicValueSpecificationEditor
309
286
  valueSpecification={node.condition.value}
@@ -336,19 +313,16 @@ const QueryBuilderFilterBlankConditionEditor = observer(
336
313
  (props: {
337
314
  node: QueryBuilderFilterTreeBlankConditionNodeData;
338
315
  isDragOver: boolean;
339
- showDroppableSuggestion: boolean;
316
+ isDroppable: boolean;
340
317
  }) => {
341
- const { isDragOver, showDroppableSuggestion } = props;
318
+ const { isDragOver, isDroppable } = props;
342
319
  return (
343
320
  <div className="query-builder-filter-tree__node__label__content">
344
321
  <PanelEntryDropZonePlaceholder
345
- showPlaceholder={isDragOver}
322
+ isDragOver={isDragOver}
323
+ isDroppable={isDroppable}
346
324
  label="Create Condition"
347
- className="query-builder__dnd__placeholder"
348
325
  >
349
- {showDroppableSuggestion && (
350
- <div className="query-builder-filter-tree__blank-node--droppable"></div>
351
- )}
352
326
  <div className="query-builder-filter-tree__blank-node">blank</div>
353
327
  </PanelEntryDropZonePlaceholder>
354
328
  </div>
@@ -560,8 +534,8 @@ const QueryBuilderFilterTreeNodeContainer = observer(
560
534
  dragConnector(dropConnector(ref));
561
535
  useDragPreviewLayer(dragPreviewConnector);
562
536
 
563
- const { showDroppableSuggestion } = useDragLayer((monitor) => ({
564
- showDroppableSuggestion:
537
+ const { isDroppable } = useDragLayer((monitor) => ({
538
+ isDroppable:
565
539
  monitor.isDragging() &&
566
540
  (queryBuilderState.TEMPORARY__isDnDFetchStructureToFilterSupported
567
541
  ? IS_DRAGGABLE_FILTER_DND_TYPES_FETCH_SUPPORTED
@@ -627,7 +601,7 @@ const QueryBuilderFilterTreeNodeContainer = observer(
627
601
  {node instanceof QueryBuilderFilterTreeGroupNodeData && (
628
602
  <QueryBuilderFilterGroupConditionEditor
629
603
  node={node}
630
- showDroppableSuggestion={showDroppableSuggestion}
604
+ isDroppable={isDroppable}
631
605
  isDragOver={isDragOver}
632
606
  />
633
607
  )}
@@ -641,7 +615,7 @@ const QueryBuilderFilterTreeNodeContainer = observer(
641
615
  <QueryBuilderFilterBlankConditionEditor
642
616
  node={node}
643
617
  isDragOver={isDragOver}
644
- showDroppableSuggestion={showDroppableSuggestion}
618
+ isDroppable={isDroppable}
645
619
  />
646
620
  )}
647
621
  </div>
@@ -811,8 +785,8 @@ export const QueryBuilderFilterPanel = observer(
811
785
  }
812
786
  };
813
787
 
814
- const { showDroppableSuggestion } = useDragLayer((monitor) => ({
815
- showDroppableSuggestion:
788
+ const { isDroppable } = useDragLayer((monitor) => ({
789
+ isDroppable:
816
790
  monitor.isDragging() &&
817
791
  (queryBuilderState.TEMPORARY__isDnDFetchStructureToFilterSupported
818
792
  ? IS_DRAGGABLE_FILTER_DND_TYPES_FETCH_SUPPORTED
@@ -991,10 +965,7 @@ export const QueryBuilderFilterPanel = observer(
991
965
  <PanelContent>
992
966
  <PanelDropZone
993
967
  isDragOver={isDragOver && filterState.isEmpty}
994
- showDroppableSuggestion={
995
- showDroppableSuggestion && filterState.isEmpty
996
- }
997
- className="query-builder__panel--droppable"
968
+ isDroppable={isDroppable && filterState.isEmpty}
998
969
  dropTargetConnector={dropTargetConnector}
999
970
  >
1000
971
  {filterState.isEmpty && (
@@ -1014,18 +985,19 @@ export const QueryBuilderFilterPanel = observer(
1014
985
  <QueryBuilderFilterTree queryBuilderState={queryBuilderState} />
1015
986
  </>
1016
987
  )}
1017
-
1018
- {showDroppableSuggestion && !filterState.isEmpty && (
988
+ {isDroppable && !filterState.isEmpty && (
1019
989
  <div
1020
990
  ref={addFilterRef}
1021
- className={clsx(
1022
- 'query-builder-post-filter-tree__blank-node--droppable--tall',
1023
- {
1024
- 'dnd__entry--droppable__indicator--dragover': isDragOver,
1025
- },
1026
- )}
991
+ className="query-builder-filter-tree__free-drop-zone__container"
1027
992
  >
1028
- Add filter to main group
993
+ <PanelEntryDropZonePlaceholder
994
+ isDragOver={isDragOver}
995
+ isDroppable={isDroppable}
996
+ className="query-builder-filter-tree__free-drop-zone"
997
+ label="Add filter to main group"
998
+ >
999
+ <></>
1000
+ </PanelEntryDropZonePlaceholder>
1029
1001
  </div>
1030
1002
  )}
1031
1003
  </PanelDropZone>
@@ -37,7 +37,6 @@ import {
37
37
  buildRawLambdaFromLambdaFunction,
38
38
  reportGraphAnalytics,
39
39
  extractExecutionResultValues,
40
- TDSExecutionResult,
41
40
  } from '@finos/legend-graph';
42
41
  import { buildLambdaFunction } from './QueryBuilderValueSpecificationBuilder.js';
43
42
  import { DEFAULT_TAB_SIZE } from '@finos/legend-application';
@@ -163,46 +162,6 @@ export class QueryBuilderResultState {
163
162
  this.queryRunPromise = promise;
164
163
  };
165
164
 
166
- findColumnFromCoordinates = (
167
- colIndex: number,
168
- ): string | number | boolean | null | undefined => {
169
- if (
170
- !this.executionResult ||
171
- !(this.executionResult instanceof TDSExecutionResult)
172
- ) {
173
- return undefined;
174
- }
175
- return this.executionResult.result.columns[colIndex];
176
- };
177
-
178
- findRowFromRowIndex = (
179
- rowIndex: number,
180
- ): (string | number | boolean | null)[] => {
181
- if (
182
- !this.executionResult ||
183
- !(this.executionResult instanceof TDSExecutionResult)
184
- ) {
185
- return [''];
186
- }
187
- return this.executionResult.result.rows[rowIndex]?.values ?? [''];
188
- };
189
-
190
- findResultValueFromCoordinates = (
191
- resultCoordinate: [number, number],
192
- ): string | number | boolean | null | undefined => {
193
- const rowIndex = resultCoordinate[0];
194
- const colIndex = resultCoordinate[1];
195
-
196
- if (
197
- !this.executionResult ||
198
- !(this.executionResult instanceof TDSExecutionResult)
199
- ) {
200
- return undefined;
201
- }
202
-
203
- return this.executionResult.result.rows[rowIndex]?.values[colIndex];
204
- };
205
-
206
165
  setIsQueryUsageViewerOpened(val: boolean): void {
207
166
  this.isQueryUsageViewerOpened = val;
208
167
  }
@@ -442,7 +401,7 @@ export class QueryBuilderResultState {
442
401
  rawPlan,
443
402
  this.queryBuilderState.graphManagerState.graph,
444
403
  );
445
- this.executionPlanState.setPlan(plan);
404
+ this.executionPlanState.initialize(plan);
446
405
  } catch {
447
406
  // do nothing
448
407
  }