@finos/legend-query-builder 4.18.0 → 4.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/lib/__test__.d.ts +1 -0
  2. package/lib/__test__.d.ts.map +1 -1
  3. package/lib/__test__.js +1 -0
  4. package/lib/__test__.js.map +1 -1
  5. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts +5 -0
  6. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts.map +1 -1
  7. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js +28 -2
  8. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js.map +1 -1
  9. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.d.ts.map +1 -1
  10. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js +8 -2
  11. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js.map +1 -1
  12. package/lib/components/workflows/AccessorQueryBuilder.js +1 -1
  13. package/lib/components/workflows/AccessorQueryBuilder.js.map +1 -1
  14. package/lib/components/workflows/DataProductQueryBuilder.d.ts.map +1 -1
  15. package/lib/components/workflows/DataProductQueryBuilder.js +13 -12
  16. package/lib/components/workflows/DataProductQueryBuilder.js.map +1 -1
  17. package/lib/data-access-overview.css +1 -1
  18. package/lib/graph/QueryBuilderMetaModelConst.d.ts +2 -0
  19. package/lib/graph/QueryBuilderMetaModelConst.d.ts.map +1 -1
  20. package/lib/graph/QueryBuilderMetaModelConst.js +2 -0
  21. package/lib/graph/QueryBuilderMetaModelConst.js.map +1 -1
  22. package/lib/index.css +1 -1
  23. package/lib/index.d.ts +1 -1
  24. package/lib/index.d.ts.map +1 -1
  25. package/lib/index.js +1 -1
  26. package/lib/index.js.map +1 -1
  27. package/lib/package.json +1 -1
  28. package/lib/stores/QueryBuilderStateHashUtils.d.ts +1 -0
  29. package/lib/stores/QueryBuilderStateHashUtils.d.ts.map +1 -1
  30. package/lib/stores/QueryBuilderStateHashUtils.js +1 -0
  31. package/lib/stores/QueryBuilderStateHashUtils.js.map +1 -1
  32. package/lib/stores/QueryBuilderTypeaheadHelper.js +4 -4
  33. package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -1
  34. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +1 -1
  35. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
  36. package/lib/stores/QueryBuilderValueSpecificationHelper.js +2 -2
  37. package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
  38. package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.d.ts +374 -0
  39. package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.d.ts.map +1 -0
  40. package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.js +625 -0
  41. package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.js.map +1 -0
  42. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
  43. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +3 -2
  44. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
  45. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.js +2 -2
  46. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.js.map +1 -1
  47. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js +1 -1
  48. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js.map +1 -1
  49. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
  50. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js +8 -6
  51. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
  52. package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.js +2 -2
  53. package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.js.map +1 -1
  54. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.d.ts.map +1 -1
  55. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.js +2 -0
  56. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.js.map +1 -1
  57. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.d.ts.map +1 -1
  58. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.js +40 -14
  59. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.js.map +1 -1
  60. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.d.ts.map +1 -1
  61. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.js +72 -30
  62. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.js.map +1 -1
  63. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.d.ts +1 -1
  64. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.d.ts.map +1 -1
  65. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.js +1 -1
  66. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.js.map +1 -1
  67. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.js +1 -1
  68. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.js.map +1 -1
  69. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.js +1 -1
  70. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.js.map +1 -1
  71. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.js +1 -1
  72. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.js.map +1 -1
  73. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.d.ts +25 -0
  74. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.d.ts.map +1 -0
  75. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.js +54 -0
  76. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.js.map +1 -0
  77. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.js +1 -1
  78. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.js.map +1 -1
  79. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.js +1 -1
  80. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.js.map +1 -1
  81. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js +3 -3
  82. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js.map +1 -1
  83. package/lib/stores/workflows/accessor/AccessorQueryBuilderState.d.ts +1 -0
  84. package/lib/stores/workflows/accessor/AccessorQueryBuilderState.d.ts.map +1 -1
  85. package/lib/stores/workflows/accessor/AccessorQueryBuilderState.js +4 -0
  86. package/lib/stores/workflows/accessor/AccessorQueryBuilderState.js.map +1 -1
  87. package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.d.ts +31 -6
  88. package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.d.ts.map +1 -1
  89. package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.js +162 -15
  90. package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.js.map +1 -1
  91. package/package.json +5 -5
  92. package/src/__test__.ts +1 -0
  93. package/src/components/__test-utils__/QueryBuilderComponentTestUtils.tsx +73 -1
  94. package/src/components/fetch-structure/QueryBuilderTDSWindowPanel.tsx +10 -4
  95. package/src/components/workflows/AccessorQueryBuilder.tsx +2 -2
  96. package/src/components/workflows/DataProductQueryBuilder.tsx +40 -62
  97. package/src/graph/QueryBuilderMetaModelConst.ts +2 -0
  98. package/src/index.ts +3 -0
  99. package/src/stores/QueryBuilderStateHashUtils.ts +1 -0
  100. package/src/stores/QueryBuilderTypeaheadHelper.ts +4 -4
  101. package/src/stores/QueryBuilderValueSpecificationHelper.ts +5 -3
  102. package/src/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.ts +630 -0
  103. package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +3 -2
  104. package/src/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.ts +2 -2
  105. package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.ts +1 -1
  106. package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +8 -6
  107. package/src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.ts +2 -2
  108. package/src/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.ts +2 -0
  109. package/src/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.ts +85 -25
  110. package/src/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.ts +141 -38
  111. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.ts +1 -1
  112. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.ts +1 -1
  113. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.ts +1 -1
  114. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.ts +1 -1
  115. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.ts +1 -1
  116. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.ts +57 -0
  117. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.ts +1 -1
  118. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.ts +1 -1
  119. package/src/stores/filter/QueryBuilderFilterValueSpecificationBuilder.ts +3 -3
  120. package/src/stores/workflows/accessor/AccessorQueryBuilderState.ts +5 -0
  121. package/src/stores/workflows/dataProduct/DataProductQueryBuilderState.ts +275 -24
  122. package/tsconfig.json +2 -0
@@ -233,6 +233,9 @@ const QueryBuilderWindowColumnModalEditor = observer(
233
233
 
234
234
  // Window operator
235
235
  const operators = windowState.operators;
236
+ const supportedOperators = tdsState.queryBuilderState.useRelation
237
+ ? operators.filter((op) => op.relationFunc !== undefined)
238
+ : operators.filter((op) => op.pureFunc !== undefined);
236
239
  const operatorState = windowColumnState.operatorState;
237
240
  const [selectedOperatorState, setSelectedOperatorState] = useState(() => {
238
241
  if (
@@ -449,10 +452,10 @@ const QueryBuilderWindowColumnModalEditor = observer(
449
452
  <ControlledDropdownMenu
450
453
  className="query-builder__olap__column__operation__operator__dropdown"
451
454
  title="Choose Window Function Operator..."
452
- disabled={!operators.length}
455
+ disabled={!supportedOperators.length}
453
456
  content={
454
457
  <MenuContent>
455
- {operators.map((op) => (
458
+ {supportedOperators.map((op) => (
456
459
  <MenuContentItem
457
460
  key={op.uuid}
458
461
  className="query-builder__olap__column__operation__operator__dropdown__option"
@@ -779,6 +782,9 @@ const QueryBuilderWindowColumnEditor = observer(
779
782
  const windowState = windowColumnState.windowState;
780
783
  const tdsState = windowState.tdsState;
781
784
  const operators = windowState.operators;
785
+ const supportedOperators = tdsState.queryBuilderState.useRelation
786
+ ? operators.filter((op) => op.relationFunc !== undefined)
787
+ : operators.filter((op) => op.pureFunc !== undefined);
782
788
  // state
783
789
  const ref = useRef<HTMLDivElement>(null);
784
790
  const handleRef = useRef<HTMLDivElement>(null);
@@ -1021,11 +1027,11 @@ const QueryBuilderWindowColumnEditor = observer(
1021
1027
  </div>
1022
1028
  <ControlledDropdownMenu
1023
1029
  className="query-builder__olap__column__operation__operator__dropdown"
1024
- disabled={!operators.length}
1030
+ disabled={!supportedOperators.length}
1025
1031
  title="Choose Window Function Operator..."
1026
1032
  content={
1027
1033
  <MenuContent>
1028
- {operators.map((op) => (
1034
+ {supportedOperators.map((op) => (
1029
1035
  <MenuContentItem
1030
1036
  key={op.uuid}
1031
1037
  className="query-builder__olap__column__operation__operator__dropdown__option"
@@ -151,12 +151,12 @@ const AccessorQueryBuilderSetupPanelContent = observer(
151
151
  title="accessor"
152
152
  htmlFor="query-builder__setup__accessor-selector"
153
153
  >
154
- Accessor
154
+ {queryBuilderState.accessorLabel}
155
155
  </label>
156
156
  <CustomSelectorInput
157
157
  inputId="query-builder__setup__accessor-selector"
158
158
  className="panel__content__form__section__dropdown query-builder__setup__config-group__item__selector"
159
- placeholder="Choose an accessor..."
159
+ placeholder={`Choose a ${queryBuilderState.accessorLabel.toLocaleLowerCase()}...`}
160
160
  options={accessorOptions}
161
161
  onChange={changeAccessor}
162
162
  value={selectedAccessorOption}
@@ -18,6 +18,8 @@ import { useApplicationStore } from '@finos/legend-application';
18
18
  import {
19
19
  type DataProductOption,
20
20
  type DataProductQueryBuilderState,
21
+ type ExecutionIdOption,
22
+ LakehouseDataProductExecutionState,
21
23
  ModelAccessPointDataProductExecutionState,
22
24
  } from '../../stores/workflows/dataProduct/DataProductQueryBuilderState.js';
23
25
  import {
@@ -27,11 +29,7 @@ import {
27
29
  import { CustomSelectorInput } from '@finos/legend-art';
28
30
  import { QueryBuilderClassSelector } from '../QueryBuilderSideBar.js';
29
31
  import { observer } from 'mobx-react-lite';
30
- import type {
31
- PackageableRuntime,
32
- NativeModelExecutionContext,
33
- ModelAccessPointGroup,
34
- } from '@finos/legend-graph';
32
+ import type { PackageableRuntime } from '@finos/legend-graph';
35
33
  import { useEffect } from 'react';
36
34
  import { flowResult } from 'mobx';
37
35
 
@@ -95,29 +93,35 @@ export const DataProductQueryBuilderSetupFormContent = observer(
95
93
  {...(formatOptionLabel ? { formatOptionLabel } : {})}
96
94
  />
97
95
  </div>
98
- {Boolean(queryBuilderState.showExecutionContextOptions) && (
96
+ {Boolean(queryBuilderState.showExecutionIdSelector) && (
99
97
  <div className="query-builder__setup__config-group__item">
100
98
  <label
101
99
  className="btn--sm query-builder__setup__config-group__item__label"
102
- title="execution context"
103
- htmlFor="query-builder__setup__context-selector"
100
+ title="execution id"
101
+ htmlFor="query-builder__setup__execution-id-selector"
104
102
  >
105
- Context
103
+ Execution ID
106
104
  </label>
107
105
  <CustomSelectorInput
108
- inputId="query-builder__setup__context-selector"
106
+ inputId="query-builder__setup__execution-id-selector"
109
107
  className="panel__content__form__section__dropdown query-builder__setup__config-group__item__selector"
110
- placeholder="Choose an execution context..."
111
- options={queryBuilderState.execOptions}
112
- disabled={
113
- queryBuilderState.execOptions.length < 1 ||
114
- (queryBuilderState.execOptions.length === 1 &&
115
- Boolean(queryBuilderState.selectedExecOption))
116
- }
117
- onChange={(option: { value: NativeModelExecutionContext }) =>
118
- queryBuilderState.changeNativeExecutionContext(option.value)
119
- }
120
- value={queryBuilderState.selectedExecOption}
108
+ placeholder="Choose an execution id..."
109
+ options={queryBuilderState.executionIdOptions}
110
+ disabled={queryBuilderState.executionIdOptions.length < 2}
111
+ onChange={(option: ExecutionIdOption) => {
112
+ queryBuilderState
113
+ .changeExecutionId(option)
114
+ .catch(applicationStore.alertUnhandledError);
115
+ }}
116
+ value={queryBuilderState.selectedExecutionIdOption}
117
+ formatOptionLabel={(option: ExecutionIdOption) => (
118
+ <div className="query-builder__setup__config-group__item__selector__option">
119
+ <span>{option.label}</span>
120
+ <span className="query-builder__setup__config-group__item__selector__option__tag">
121
+ {option.tag}
122
+ </span>
123
+ </div>
124
+ )}
121
125
  darkMode={
122
126
  !applicationStore.layoutService
123
127
  .TEMPORARY__isLightColorThemeEnabled
@@ -125,42 +129,16 @@ export const DataProductQueryBuilderSetupFormContent = observer(
125
129
  />
126
130
  </div>
127
131
  )}
128
- {Boolean(queryBuilderState.showModelAccessPointGroupSelector) && (
132
+ {!queryBuilderState.isLakehouseMode && (
129
133
  <div className="query-builder__setup__config-group__item">
130
- <label
131
- className="btn--sm query-builder__setup__config-group__item__label"
132
- title="access point group"
133
- htmlFor="query-builder__setup__access-point-group-selector"
134
- >
135
- Access Point Group
136
- </label>
137
- <CustomSelectorInput
138
- inputId="query-builder__setup__access-point-group-selector"
139
- className="panel__content__form__section__dropdown query-builder__setup__config-group__item__selector"
140
- placeholder="Choose an access point group..."
141
- options={queryBuilderState.modelAccessPointGroupOptions}
142
- disabled={
143
- queryBuilderState.modelAccessPointGroupOptions.length < 1
144
- }
145
- onChange={(option: { value: ModelAccessPointGroup }) =>
146
- queryBuilderState.changeModelAccessPointGroupValue(option.value)
147
- }
148
- value={queryBuilderState.selectedModelAccessPointGroupOption}
149
- darkMode={
150
- !applicationStore.layoutService
151
- .TEMPORARY__isLightColorThemeEnabled
152
- }
134
+ <QueryBuilderClassSelector
135
+ queryBuilderState={queryBuilderState}
136
+ classes={queryBuilderState.usableClasses}
137
+ onClassChange={queryBuilderState.onClassChange}
138
+ noMatchMessage="No compatible entity found for specified execution context"
153
139
  />
154
140
  </div>
155
141
  )}
156
- <div className="query-builder__setup__config-group__item">
157
- <QueryBuilderClassSelector
158
- queryBuilderState={queryBuilderState}
159
- classes={queryBuilderState.usableClasses}
160
- onClassChange={queryBuilderState.onClassChange}
161
- noMatchMessage="No compatible entity found for specified execution context"
162
- />
163
- </div>
164
142
  </>
165
143
  );
166
144
  },
@@ -173,23 +151,23 @@ const DataProductQueryBuilderSetupPanelContent = observer(
173
151
  const executionState = queryBuilderState.executionState;
174
152
 
175
153
  // runtime options (only for model access point group)
154
+ const runtimeRequired =
155
+ executionState instanceof ModelAccessPointDataProductExecutionState ||
156
+ executionState instanceof LakehouseDataProductExecutionState;
176
157
  const showRuntimeSelector =
177
- executionState instanceof ModelAccessPointDataProductExecutionState &&
178
- executionState.showRuntimeOptions;
179
- const runtimeOptions =
180
- executionState instanceof ModelAccessPointDataProductExecutionState
181
- ? executionState.compatibleRuntimes.map(buildElementOption)
182
- : [];
158
+ runtimeRequired && executionState.showRuntimeOptions;
159
+ const runtimeOptions = runtimeRequired
160
+ ? executionState.compatibleRuntimes.map(buildElementOption)
161
+ : [];
183
162
  const selectedRuntimeOption =
184
- executionState instanceof ModelAccessPointDataProductExecutionState &&
185
- executionState.selectedRuntime
163
+ runtimeRequired && executionState.selectedRuntime
186
164
  ? buildElementOption(executionState.selectedRuntime)
187
165
  : null;
188
166
 
189
167
  const onRuntimeOptionChange = (
190
168
  option: PackageableElementOption<PackageableRuntime>,
191
169
  ): void => {
192
- if (executionState instanceof ModelAccessPointDataProductExecutionState) {
170
+ if (runtimeRequired) {
193
171
  if (option.value === executionState.selectedRuntime) {
194
172
  return;
195
173
  }
@@ -131,6 +131,8 @@ export enum QUERY_BUILDER_SUPPORTED_FUNCTIONS {
131
131
  RELATION_OVER = 'meta::pure::functions::relation::over',
132
132
  RELATION_RANK = 'meta::pure::functions::relation::rank',
133
133
  RELATION_DENSE_RANK = 'meta::pure::functions::relation::denseRank',
134
+ RELATION_ROW_NUMBER = 'meta::pure::functions::relation::rowNumber',
135
+ RELATION_PERCENT_RANK = 'meta::pure::functions::relation::percentRank',
134
136
 
135
137
  // filter
136
138
  CONTAINS = 'meta::pure::functions::string::contains',
package/src/index.ts CHANGED
@@ -66,8 +66,11 @@ export {
66
66
  buildExecOptions,
67
67
  type ModelAccessPointGroupOption,
68
68
  buildModelAccessPointGroupOption,
69
+ type ExecutionIdOption,
70
+ buildDataProductAccessor,
69
71
  NativeModelDataProductExecutionState,
70
72
  ModelAccessPointDataProductExecutionState,
73
+ LakehouseDataProductExecutionState,
71
74
  } from './stores/workflows/dataProduct/DataProductQueryBuilderState.js';
72
75
  export { DataProductQueryBuilderSetupFormContent } from './components/workflows/DataProductQueryBuilder.js';
73
76
  export { AccessorQueryBuilderState } from './stores/workflows/accessor/AccessorQueryBuilderState.js';
@@ -86,6 +86,7 @@ export enum QUERY_BUILDER_STATE_HASH_STRUCTURE {
86
86
  TDS_WINDOW_OPERATOR_MIN = 'TDS_WINDOW_OPERATOR_MIN',
87
87
  TDS_WINDOW_OPERATOR_COUNT = 'TDS_WINDOW_OPERATOR_COUNT',
88
88
  TDS_WINDOW_OPERATOR_AVERAGE = 'TDS_WINDOW_OPERATOR_AVERAGE',
89
+ TDS_WINDOW_OPERATOR_PERCENT_RANK = 'TDS_WINDOW_OPERATOR_PERCENT_RANK',
89
90
 
90
91
  // filter state
91
92
  FILTER_TREE_GROUP_NODE_DATA = 'FILTER_TREE_GROUP_NODE_DATA',
@@ -220,7 +220,7 @@ const buildRawLambda = (
220
220
  colAliases.values.push(colAlias);
221
221
  const columnLambda = propertyExpression
222
222
  ? buildGenericLambdaFunctionInstanceValue(
223
- DEFAULT_LAMBDA_VARIABLE_NAME,
223
+ [DEFAULT_LAMBDA_VARIABLE_NAME],
224
224
  [propertyExpression],
225
225
  queryBuilderState.graphManagerState.graph,
226
226
  )
@@ -229,7 +229,7 @@ const buildRawLambda = (
229
229
  extractElementNameFromPath(QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_AGG),
230
230
  );
231
231
  const aggregateLambda = buildGenericLambdaFunctionInstanceValue(
232
- DEFAULT_LAMBDA_VARIABLE_NAME,
232
+ [DEFAULT_LAMBDA_VARIABLE_NAME],
233
233
  [
234
234
  aggregationOperator.buildAggregateExpression(
235
235
  propertyExpression,
@@ -267,7 +267,7 @@ const buildRawLambda = (
267
267
  colAliases.values.push(colAlias);
268
268
  const columnLambda = propertyExpression
269
269
  ? buildGenericLambdaFunctionInstanceValue(
270
- DEFAULT_LAMBDA_VARIABLE_NAME,
270
+ [DEFAULT_LAMBDA_VARIABLE_NAME],
271
271
  [propertyExpression],
272
272
  queryBuilderState.graphManagerState.graph,
273
273
  )
@@ -322,7 +322,7 @@ const buildRawLambda = (
322
322
  postFilterExpression.parametersValues.push(value);
323
323
  }
324
324
  const filterLambda = buildGenericLambdaFunctionInstanceValue(
325
- DEFAULT_POST_FILTER_LAMBDA_VARIABLE_NAME,
325
+ [DEFAULT_POST_FILTER_LAMBDA_VARIABLE_NAME],
326
326
  [postFilterExpression],
327
327
  queryBuilderState.graphManagerState.graph,
328
328
  );
@@ -299,7 +299,7 @@ export const generateDefaultValueForPrimitiveType = (
299
299
  };
300
300
 
301
301
  export const buildGenericLambdaFunctionInstanceValue = (
302
- lambdaParameterName: string,
302
+ lambdaParameterNames: string[],
303
303
  lambdaBodyExpressions: ValueSpecification[],
304
304
  graph: PureModel,
305
305
  ): LambdaFunctionInstanceValue => {
@@ -310,9 +310,11 @@ export const buildGenericLambdaFunctionInstanceValue = (
310
310
  ),
311
311
  Multiplicity.ONE,
312
312
  );
313
- functionType.parameters.push(
314
- new VariableExpression(lambdaParameterName, Multiplicity.ONE),
313
+
314
+ functionType.parameters = lambdaParameterNames.map(
315
+ (parameterName) => new VariableExpression(parameterName, Multiplicity.ONE),
315
316
  );
317
+
316
318
  const lambdaFunction = new LambdaFunction(functionType);
317
319
  lambdaFunction.expressionSequence = lambdaBodyExpressions;
318
320
  functionInstanceValue.values.push(lambdaFunction);