@gridsuite/commons-ui 0.63.0 → 0.63.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ElementSearchDialog/element-search-input.d.ts +2 -2
- package/dist/components/ElementSearchDialog/element-search-input.js +4 -2
- package/dist/components/ElementSearchDialog/index.d.ts +1 -0
- package/dist/components/ElementSearchDialog/use-element-search.d.ts +18 -1
- package/dist/components/ElementSearchDialog/use-element-search.js +18 -3
- package/dist/components/FlatParameters/FlatParameters.js +1 -1
- package/dist/components/filter/criteria-based/filter-free-properties.js +1 -1
- package/dist/components/filter/expert/expert-filter-constants.d.ts +60 -0
- package/dist/components/filter/expert/expert-filter-constants.js +88 -0
- package/dist/components/filter/expert/expert-filter-form.d.ts +1 -0
- package/dist/components/filter/expert/expert-filter-form.js +13 -39
- package/dist/components/filter/expert/expert-filter-utils.js +14 -1
- package/dist/components/filter/expert/expert-filter.type.d.ts +12 -1
- package/dist/components/filter/expert/expert-filter.type.js +7 -0
- package/dist/components/inputs/react-query-builder/value-editor.js +1 -1
- package/dist/components/translations/filter-expert-en.d.ts +9 -0
- package/dist/components/translations/filter-expert-en.js +10 -1
- package/dist/components/translations/filter-expert-fr.d.ts +9 -0
- package/dist/components/translations/filter-expert-fr.js +13 -4
- package/dist/hooks/usePrevious.d.ts +2 -0
- package/dist/hooks/usePrevious.js +12 -0
- package/dist/hooks/useSnackMessage.js +2 -2
- package/dist/index.d.ts +9 -0
- package/dist/index.js +155 -137
- package/package.json +1 -1
|
@@ -5,7 +5,7 @@ export type RenderElementProps<T> = HTMLAttributes<HTMLLIElement> & {
|
|
|
5
5
|
element: T;
|
|
6
6
|
inputValue: string;
|
|
7
7
|
};
|
|
8
|
-
export interface ElementSearchInputProps<T> extends Pick<AutocompleteProps<T, false, boolean, true>, 'sx' | 'size' | 'loadingText' | 'loading' | 'disableClearable'> {
|
|
8
|
+
export interface ElementSearchInputProps<T> extends Pick<AutocompleteProps<T, false, boolean, true>, 'sx' | 'size' | 'loadingText' | 'loading' | 'disableClearable' | 'getOptionDisabled' | 'PaperComponent'> {
|
|
9
9
|
searchTerm: string;
|
|
10
10
|
onSearchTermChange: (searchTerm: string) => void;
|
|
11
11
|
onSelectionChange: (selection: T) => void;
|
|
@@ -18,4 +18,4 @@ export interface ElementSearchInputProps<T> extends Pick<AutocompleteProps<T, fa
|
|
|
18
18
|
searchTermDisableReason?: string;
|
|
19
19
|
showResults?: boolean;
|
|
20
20
|
}
|
|
21
|
-
export declare function ElementSearchInput<T>(props: ElementSearchInputProps<T
|
|
21
|
+
export declare function ElementSearchInput<T>(props: Readonly<ElementSearchInputProps<T>>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -19,7 +19,8 @@ function ElementSearchInput(props) {
|
|
|
19
19
|
searchTermDisabled,
|
|
20
20
|
size,
|
|
21
21
|
sx,
|
|
22
|
-
disableClearable
|
|
22
|
+
disableClearable,
|
|
23
|
+
PaperComponent
|
|
23
24
|
} = props;
|
|
24
25
|
const intl = useIntl();
|
|
25
26
|
const displayedValue = useMemo(() => {
|
|
@@ -76,7 +77,8 @@ function ElementSearchInput(props) {
|
|
|
76
77
|
}
|
|
77
78
|
return option === value;
|
|
78
79
|
},
|
|
79
|
-
disabled: searchTermDisabled
|
|
80
|
+
disabled: searchTermDisabled,
|
|
81
|
+
PaperComponent
|
|
80
82
|
}
|
|
81
83
|
);
|
|
82
84
|
}
|
|
@@ -9,3 +9,4 @@ export { default as TagRenderer } from './tag-renderer';
|
|
|
9
9
|
export type { TagRendererProps } from './tag-renderer';
|
|
10
10
|
export { ElementSearchInput } from './element-search-input';
|
|
11
11
|
export { default as useElementSearch } from './use-element-search';
|
|
12
|
+
export type { Paginated } from './use-element-search';
|
|
@@ -4,13 +4,30 @@
|
|
|
4
4
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
5
5
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
6
6
|
*/
|
|
7
|
+
export type Paginated<T> = {
|
|
8
|
+
content: T[];
|
|
9
|
+
totalPages: number;
|
|
10
|
+
totalElements: number;
|
|
11
|
+
last: boolean;
|
|
12
|
+
size: number;
|
|
13
|
+
number: number;
|
|
14
|
+
sort: {
|
|
15
|
+
sorted: boolean;
|
|
16
|
+
unsorted: boolean;
|
|
17
|
+
empty: boolean;
|
|
18
|
+
};
|
|
19
|
+
first: boolean;
|
|
20
|
+
numberOfElements: number;
|
|
21
|
+
empty: boolean;
|
|
22
|
+
};
|
|
7
23
|
interface UseElementSearch<T> {
|
|
8
|
-
fetchElements: (newSearchTerm: string) => Promise<T[]>;
|
|
24
|
+
fetchElements: (newSearchTerm: string) => Promise<Paginated<T> | T[]>;
|
|
9
25
|
}
|
|
10
26
|
declare const useElementSearch: <T>(props: UseElementSearch<T>) => {
|
|
11
27
|
searchTerm: string;
|
|
12
28
|
updateSearchTerm: (newSearchTerm: string) => void;
|
|
13
29
|
elementsFound: T[];
|
|
14
30
|
isLoading: boolean;
|
|
31
|
+
totalElements: number;
|
|
15
32
|
};
|
|
16
33
|
export default useElementSearch;
|
|
@@ -8,6 +8,7 @@ const useElementSearch = (props) => {
|
|
|
8
8
|
const [isLoading, setIsLoading] = useState(false);
|
|
9
9
|
const [searchTerm, setSearchTerm] = useState("");
|
|
10
10
|
const [elementsFound, setElementsFound] = useState([]);
|
|
11
|
+
const [totalElements, setTotalElements] = useState(0);
|
|
11
12
|
const lastSearchTermRef = useRef("");
|
|
12
13
|
const searchMatchingElements = useCallback(
|
|
13
14
|
(newSearchTerm) => {
|
|
@@ -17,12 +18,19 @@ const useElementSearch = (props) => {
|
|
|
17
18
|
lastSearchTermRef.current = newSearchTerm;
|
|
18
19
|
fetchElements(newSearchTerm).then((infos) => {
|
|
19
20
|
if (newSearchTerm === lastSearchTermRef.current) {
|
|
20
|
-
|
|
21
|
+
if (Array.isArray(infos)) {
|
|
22
|
+
setElementsFound(infos);
|
|
23
|
+
setTotalElements(infos.length);
|
|
24
|
+
} else {
|
|
25
|
+
setElementsFound(infos.content);
|
|
26
|
+
setTotalElements(infos.totalElements);
|
|
27
|
+
}
|
|
21
28
|
setIsLoading(false);
|
|
22
29
|
}
|
|
23
30
|
}).catch((error) => {
|
|
24
31
|
if (newSearchTerm === lastSearchTermRef.current) {
|
|
25
32
|
setElementsFound([]);
|
|
33
|
+
setTotalElements(0);
|
|
26
34
|
setIsLoading(false);
|
|
27
35
|
snackError({
|
|
28
36
|
messageTxt: error.message,
|
|
@@ -31,7 +39,7 @@ const useElementSearch = (props) => {
|
|
|
31
39
|
}
|
|
32
40
|
});
|
|
33
41
|
},
|
|
34
|
-
[
|
|
42
|
+
[fetchElements, snackError]
|
|
35
43
|
);
|
|
36
44
|
const debouncedSearchMatchingElements = useDebounce(
|
|
37
45
|
searchMatchingElements,
|
|
@@ -42,6 +50,7 @@ const useElementSearch = (props) => {
|
|
|
42
50
|
setSearchTerm(newSearchTerm);
|
|
43
51
|
if (newSearchTerm.length === 0) {
|
|
44
52
|
setElementsFound([]);
|
|
53
|
+
setTotalElements(0);
|
|
45
54
|
setIsLoading(false);
|
|
46
55
|
} else {
|
|
47
56
|
setIsLoading(true);
|
|
@@ -50,7 +59,13 @@ const useElementSearch = (props) => {
|
|
|
50
59
|
},
|
|
51
60
|
[debouncedSearchMatchingElements]
|
|
52
61
|
);
|
|
53
|
-
return {
|
|
62
|
+
return {
|
|
63
|
+
searchTerm,
|
|
64
|
+
updateSearchTerm,
|
|
65
|
+
elementsFound,
|
|
66
|
+
isLoading,
|
|
67
|
+
totalElements
|
|
68
|
+
};
|
|
54
69
|
};
|
|
55
70
|
export {
|
|
56
71
|
useElementSearch as default
|
|
@@ -159,7 +159,7 @@ function FlatParameters({
|
|
|
159
159
|
if (param.name === inEditionParam && uncommitted !== null) {
|
|
160
160
|
return uncommitted;
|
|
161
161
|
}
|
|
162
|
-
if (Object.hasOwn(initValues, param.name)) {
|
|
162
|
+
if (initValues && Object.hasOwn(initValues, param.name)) {
|
|
163
163
|
if (param.type === "BOOLEAN") {
|
|
164
164
|
return initValues[param.name] === "false" ? false : initValues[param.name];
|
|
165
165
|
}
|
|
@@ -61,7 +61,7 @@ function FilterFreeProperties({
|
|
|
61
61
|
propertyType: freePropertiesType
|
|
62
62
|
}
|
|
63
63
|
) }, prop.id)),
|
|
64
|
-
/* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(Button, { startIcon: /* @__PURE__ */ jsx(AddIcon, {}), onClick: () => addNewProp, children: /* @__PURE__ */ jsx(FormattedMessage, { id: "AddFreePropCrit" }) }) }),
|
|
64
|
+
/* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(Button, { startIcon: /* @__PURE__ */ jsx(AddIcon, {}), onClick: () => addNewProp(), children: /* @__PURE__ */ jsx(FormattedMessage, { id: "AddFreePropCrit" }) }) }),
|
|
65
65
|
/* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(ErrorInput, { name: fieldName, InputField: FieldErrorAlert }) })
|
|
66
66
|
] });
|
|
67
67
|
}
|
|
@@ -44,6 +44,10 @@ export declare const EXPERT_FILTER_EQUIPMENTS: {
|
|
|
44
44
|
id: string;
|
|
45
45
|
label: string;
|
|
46
46
|
};
|
|
47
|
+
HVDC_LINE: {
|
|
48
|
+
id: string;
|
|
49
|
+
label: string;
|
|
50
|
+
};
|
|
47
51
|
};
|
|
48
52
|
export declare const ENERGY_SOURCE_OPTIONS: {
|
|
49
53
|
name: string;
|
|
@@ -73,6 +77,10 @@ export declare const REGULATION_TYPE_OPTIONS: {
|
|
|
73
77
|
name: string;
|
|
74
78
|
label: string;
|
|
75
79
|
}[];
|
|
80
|
+
export declare const CONVERTERS_MODE_OPTIONS: {
|
|
81
|
+
name: string;
|
|
82
|
+
label: string;
|
|
83
|
+
}[];
|
|
76
84
|
export declare const OPERATOR_OPTIONS: {
|
|
77
85
|
EQUALS: {
|
|
78
86
|
name: string;
|
|
@@ -234,6 +242,7 @@ export declare const FIELDS_OPTIONS: {
|
|
|
234
242
|
name: FieldType;
|
|
235
243
|
label: string;
|
|
236
244
|
dataType: DataType;
|
|
245
|
+
defaultValue: boolean;
|
|
237
246
|
valueEditorType: string;
|
|
238
247
|
};
|
|
239
248
|
PLANNED_ACTIVE_POWER_SET_POINT: {
|
|
@@ -246,6 +255,7 @@ export declare const FIELDS_OPTIONS: {
|
|
|
246
255
|
name: FieldType;
|
|
247
256
|
label: string;
|
|
248
257
|
dataType: DataType;
|
|
258
|
+
defaultValue: boolean;
|
|
249
259
|
valueEditorType: string;
|
|
250
260
|
};
|
|
251
261
|
RATED_S: {
|
|
@@ -370,12 +380,14 @@ export declare const FIELDS_OPTIONS: {
|
|
|
370
380
|
name: FieldType;
|
|
371
381
|
label: string;
|
|
372
382
|
dataType: DataType;
|
|
383
|
+
defaultValue: boolean;
|
|
373
384
|
valueEditorType: string;
|
|
374
385
|
};
|
|
375
386
|
CONNECTED_2: {
|
|
376
387
|
name: FieldType;
|
|
377
388
|
label: string;
|
|
378
389
|
dataType: DataType;
|
|
390
|
+
defaultValue: boolean;
|
|
379
391
|
valueEditorType: string;
|
|
380
392
|
};
|
|
381
393
|
VOLTAGE_LEVEL_ID_1: {
|
|
@@ -489,12 +501,14 @@ export declare const FIELDS_OPTIONS: {
|
|
|
489
501
|
name: FieldType;
|
|
490
502
|
label: string;
|
|
491
503
|
dataType: DataType;
|
|
504
|
+
defaultValue: boolean;
|
|
492
505
|
valueEditorType: string;
|
|
493
506
|
};
|
|
494
507
|
LOAD_TAP_CHANGING_CAPABILITIES: {
|
|
495
508
|
name: FieldType;
|
|
496
509
|
label: string;
|
|
497
510
|
dataType: DataType;
|
|
511
|
+
defaultValue: boolean;
|
|
498
512
|
valueEditorType: string;
|
|
499
513
|
};
|
|
500
514
|
RATIO_REGULATION_MODE: {
|
|
@@ -518,6 +532,7 @@ export declare const FIELDS_OPTIONS: {
|
|
|
518
532
|
name: FieldType;
|
|
519
533
|
label: string;
|
|
520
534
|
dataType: DataType;
|
|
535
|
+
defaultValue: boolean;
|
|
521
536
|
valueEditorType: string;
|
|
522
537
|
};
|
|
523
538
|
PHASE_REGULATION_MODE: {
|
|
@@ -603,6 +618,12 @@ export declare const FIELDS_OPTIONS: {
|
|
|
603
618
|
dataType: DataType;
|
|
604
619
|
inputType: string;
|
|
605
620
|
};
|
|
621
|
+
ACTIVE_POWER_SET_POINT: {
|
|
622
|
+
name: FieldType;
|
|
623
|
+
label: string;
|
|
624
|
+
dataType: DataType;
|
|
625
|
+
inputType: string;
|
|
626
|
+
};
|
|
606
627
|
REACTIVE_POWER_SET_POINT: {
|
|
607
628
|
name: FieldType;
|
|
608
629
|
label: string;
|
|
@@ -683,5 +704,44 @@ export declare const FIELDS_OPTIONS: {
|
|
|
683
704
|
dataType: DataType;
|
|
684
705
|
inputType: string;
|
|
685
706
|
};
|
|
707
|
+
CONVERTER_STATION_ID_1: {
|
|
708
|
+
name: FieldType;
|
|
709
|
+
label: string;
|
|
710
|
+
dataType: DataType;
|
|
711
|
+
};
|
|
712
|
+
CONVERTER_STATION_ID_2: {
|
|
713
|
+
name: FieldType;
|
|
714
|
+
label: string;
|
|
715
|
+
dataType: DataType;
|
|
716
|
+
};
|
|
717
|
+
CONVERTERS_MODE: {
|
|
718
|
+
name: FieldType;
|
|
719
|
+
label: string;
|
|
720
|
+
dataType: DataType;
|
|
721
|
+
values: {
|
|
722
|
+
name: string;
|
|
723
|
+
label: string;
|
|
724
|
+
}[];
|
|
725
|
+
valueEditorType: string;
|
|
726
|
+
defaultValue: string;
|
|
727
|
+
};
|
|
728
|
+
CONVERTER_STATION_NOMINAL_VOLTAGE_1: {
|
|
729
|
+
name: FieldType;
|
|
730
|
+
label: string;
|
|
731
|
+
dataType: DataType;
|
|
732
|
+
inputType: string;
|
|
733
|
+
};
|
|
734
|
+
CONVERTER_STATION_NOMINAL_VOLTAGE_2: {
|
|
735
|
+
name: FieldType;
|
|
736
|
+
label: string;
|
|
737
|
+
dataType: DataType;
|
|
738
|
+
inputType: string;
|
|
739
|
+
};
|
|
740
|
+
DC_NOMINAL_VOLTAGE: {
|
|
741
|
+
name: FieldType;
|
|
742
|
+
label: string;
|
|
743
|
+
dataType: DataType;
|
|
744
|
+
inputType: string;
|
|
745
|
+
};
|
|
686
746
|
};
|
|
687
747
|
export declare const fields: Record<string, Field[]>;
|
|
@@ -42,6 +42,10 @@ const EXPERT_FILTER_EQUIPMENTS = {
|
|
|
42
42
|
STATIC_VAR_COMPENSATOR: {
|
|
43
43
|
id: "STATIC_VAR_COMPENSATOR",
|
|
44
44
|
label: "StaticVarCompensators"
|
|
45
|
+
},
|
|
46
|
+
HVDC_LINE: {
|
|
47
|
+
id: "HVDC_LINE",
|
|
48
|
+
label: "Hvdc"
|
|
45
49
|
}
|
|
46
50
|
};
|
|
47
51
|
const ENERGY_SOURCE_OPTIONS = [
|
|
@@ -79,6 +83,16 @@ const REGULATION_TYPE_OPTIONS = [
|
|
|
79
83
|
{ name: "LOCAL", label: "regulationType.local" },
|
|
80
84
|
{ name: "DISTANT", label: "regulationType.distant" }
|
|
81
85
|
];
|
|
86
|
+
const CONVERTERS_MODE_OPTIONS = [
|
|
87
|
+
{
|
|
88
|
+
name: "SIDE_1_RECTIFIER_SIDE_2_INVERTER",
|
|
89
|
+
label: "side1RectifierSide2Inverter"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: "SIDE_1_INVERTER_SIDE_2_RECTIFIER",
|
|
93
|
+
label: "side1InverterSide2Rectifier"
|
|
94
|
+
}
|
|
95
|
+
];
|
|
82
96
|
const OPERATOR_OPTIONS = {
|
|
83
97
|
EQUALS: { name: "=", customName: OperatorType.EQUALS, label: "equality" },
|
|
84
98
|
NOT_EQUALS: {
|
|
@@ -218,6 +232,7 @@ const FIELDS_OPTIONS = {
|
|
|
218
232
|
name: FieldType.VOLTAGE_REGULATOR_ON,
|
|
219
233
|
label: "voltageRegulatorOn",
|
|
220
234
|
dataType: DataType.BOOLEAN,
|
|
235
|
+
defaultValue: false,
|
|
221
236
|
valueEditorType: "switch"
|
|
222
237
|
},
|
|
223
238
|
PLANNED_ACTIVE_POWER_SET_POINT: {
|
|
@@ -230,6 +245,7 @@ const FIELDS_OPTIONS = {
|
|
|
230
245
|
name: FieldType.CONNECTED,
|
|
231
246
|
label: "connected",
|
|
232
247
|
dataType: DataType.BOOLEAN,
|
|
248
|
+
defaultValue: false,
|
|
233
249
|
valueEditorType: "switch"
|
|
234
250
|
},
|
|
235
251
|
RATED_S: {
|
|
@@ -351,12 +367,14 @@ const FIELDS_OPTIONS = {
|
|
|
351
367
|
name: FieldType.CONNECTED_1,
|
|
352
368
|
label: "terminal1Connected",
|
|
353
369
|
dataType: DataType.BOOLEAN,
|
|
370
|
+
defaultValue: false,
|
|
354
371
|
valueEditorType: "switch"
|
|
355
372
|
},
|
|
356
373
|
CONNECTED_2: {
|
|
357
374
|
name: FieldType.CONNECTED_2,
|
|
358
375
|
label: "terminal2Connected",
|
|
359
376
|
dataType: DataType.BOOLEAN,
|
|
377
|
+
defaultValue: false,
|
|
360
378
|
valueEditorType: "switch"
|
|
361
379
|
},
|
|
362
380
|
VOLTAGE_LEVEL_ID_1: {
|
|
@@ -467,12 +485,14 @@ const FIELDS_OPTIONS = {
|
|
|
467
485
|
name: FieldType.HAS_RATIO_TAP_CHANGER,
|
|
468
486
|
label: "hasRatioTapChanger",
|
|
469
487
|
dataType: DataType.BOOLEAN,
|
|
488
|
+
defaultValue: false,
|
|
470
489
|
valueEditorType: "switch"
|
|
471
490
|
},
|
|
472
491
|
LOAD_TAP_CHANGING_CAPABILITIES: {
|
|
473
492
|
name: FieldType.LOAD_TAP_CHANGING_CAPABILITIES,
|
|
474
493
|
label: "loadTapChangingCapabilities",
|
|
475
494
|
dataType: DataType.BOOLEAN,
|
|
495
|
+
defaultValue: false,
|
|
476
496
|
valueEditorType: "switch"
|
|
477
497
|
},
|
|
478
498
|
RATIO_REGULATION_MODE: {
|
|
@@ -493,6 +513,7 @@ const FIELDS_OPTIONS = {
|
|
|
493
513
|
name: FieldType.HAS_PHASE_TAP_CHANGER,
|
|
494
514
|
label: "hasPhaseTapChanger",
|
|
495
515
|
dataType: DataType.BOOLEAN,
|
|
516
|
+
defaultValue: false,
|
|
496
517
|
valueEditorType: "switch"
|
|
497
518
|
},
|
|
498
519
|
PHASE_REGULATION_MODE: {
|
|
@@ -572,6 +593,12 @@ const FIELDS_OPTIONS = {
|
|
|
572
593
|
dataType: DataType.NUMBER,
|
|
573
594
|
inputType: "number"
|
|
574
595
|
},
|
|
596
|
+
ACTIVE_POWER_SET_POINT: {
|
|
597
|
+
name: FieldType.ACTIVE_POWER_SET_POINT,
|
|
598
|
+
label: "activePowerSetPoint",
|
|
599
|
+
dataType: DataType.NUMBER,
|
|
600
|
+
inputType: "number"
|
|
601
|
+
},
|
|
575
602
|
REACTIVE_POWER_SET_POINT: {
|
|
576
603
|
name: FieldType.REACTIVE_POWER_SET_POINT,
|
|
577
604
|
label: "reactivePowerSetPoint",
|
|
@@ -641,6 +668,42 @@ const FIELDS_OPTIONS = {
|
|
|
641
668
|
label: "susceptanceFix",
|
|
642
669
|
dataType: DataType.NUMBER,
|
|
643
670
|
inputType: "number"
|
|
671
|
+
},
|
|
672
|
+
CONVERTER_STATION_ID_1: {
|
|
673
|
+
name: FieldType.CONVERTER_STATION_ID_1,
|
|
674
|
+
label: "converterStationId1",
|
|
675
|
+
dataType: DataType.STRING
|
|
676
|
+
},
|
|
677
|
+
CONVERTER_STATION_ID_2: {
|
|
678
|
+
name: FieldType.CONVERTER_STATION_ID_2,
|
|
679
|
+
label: "converterStationId2",
|
|
680
|
+
dataType: DataType.STRING
|
|
681
|
+
},
|
|
682
|
+
CONVERTERS_MODE: {
|
|
683
|
+
name: FieldType.CONVERTERS_MODE,
|
|
684
|
+
label: "convertersMode",
|
|
685
|
+
dataType: DataType.ENUM,
|
|
686
|
+
values: CONVERTERS_MODE_OPTIONS,
|
|
687
|
+
valueEditorType: "select",
|
|
688
|
+
defaultValue: "SIDE_1_RECTIFIER_SIDE_2_INVERTER"
|
|
689
|
+
},
|
|
690
|
+
CONVERTER_STATION_NOMINAL_VOLTAGE_1: {
|
|
691
|
+
name: FieldType.CONVERTER_STATION_NOMINAL_VOLTAGE_1,
|
|
692
|
+
label: "converterStationNominalVoltage1",
|
|
693
|
+
dataType: DataType.NUMBER,
|
|
694
|
+
inputType: "number"
|
|
695
|
+
},
|
|
696
|
+
CONVERTER_STATION_NOMINAL_VOLTAGE_2: {
|
|
697
|
+
name: FieldType.CONVERTER_STATION_NOMINAL_VOLTAGE_2,
|
|
698
|
+
label: "converterStationNominalVoltage2",
|
|
699
|
+
dataType: DataType.NUMBER,
|
|
700
|
+
inputType: "number"
|
|
701
|
+
},
|
|
702
|
+
DC_NOMINAL_VOLTAGE: {
|
|
703
|
+
name: FieldType.DC_NOMINAL_VOLTAGE,
|
|
704
|
+
label: "dcNominalVoltage",
|
|
705
|
+
dataType: DataType.NUMBER,
|
|
706
|
+
inputType: "number"
|
|
644
707
|
}
|
|
645
708
|
};
|
|
646
709
|
const fields = {
|
|
@@ -826,10 +889,35 @@ const fields = {
|
|
|
826
889
|
FIELDS_OPTIONS.PROPERTY,
|
|
827
890
|
FIELDS_OPTIONS.SUBSTATION_PROPERTY,
|
|
828
891
|
FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY
|
|
892
|
+
],
|
|
893
|
+
HVDC_LINE: [
|
|
894
|
+
FIELDS_OPTIONS.ID,
|
|
895
|
+
FIELDS_OPTIONS.NAME,
|
|
896
|
+
FIELDS_OPTIONS.COUNTRY_1,
|
|
897
|
+
FIELDS_OPTIONS.COUNTRY_2,
|
|
898
|
+
FIELDS_OPTIONS.VOLTAGE_LEVEL_ID_1,
|
|
899
|
+
FIELDS_OPTIONS.VOLTAGE_LEVEL_ID_2,
|
|
900
|
+
FIELDS_OPTIONS.CONVERTER_STATION_ID_1,
|
|
901
|
+
FIELDS_OPTIONS.CONVERTER_STATION_ID_2,
|
|
902
|
+
FIELDS_OPTIONS.CONNECTED_1,
|
|
903
|
+
FIELDS_OPTIONS.CONNECTED_2,
|
|
904
|
+
FIELDS_OPTIONS.CONVERTER_STATION_NOMINAL_VOLTAGE_1,
|
|
905
|
+
FIELDS_OPTIONS.CONVERTER_STATION_NOMINAL_VOLTAGE_2,
|
|
906
|
+
FIELDS_OPTIONS.DC_NOMINAL_VOLTAGE,
|
|
907
|
+
FIELDS_OPTIONS.SERIE_RESISTANCE,
|
|
908
|
+
FIELDS_OPTIONS.MAX_P,
|
|
909
|
+
FIELDS_OPTIONS.ACTIVE_POWER_SET_POINT,
|
|
910
|
+
FIELDS_OPTIONS.CONVERTERS_MODE,
|
|
911
|
+
FIELDS_OPTIONS.PROPERTY,
|
|
912
|
+
FIELDS_OPTIONS.SUBSTATION_PROPERTY_1,
|
|
913
|
+
FIELDS_OPTIONS.SUBSTATION_PROPERTY_2,
|
|
914
|
+
FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY_1,
|
|
915
|
+
FIELDS_OPTIONS.VOLTAGE_LEVEL_PROPERTY_2
|
|
829
916
|
]
|
|
830
917
|
};
|
|
831
918
|
export {
|
|
832
919
|
COMBINATOR_OPTIONS,
|
|
920
|
+
CONVERTERS_MODE_OPTIONS,
|
|
833
921
|
ENERGY_SOURCE_OPTIONS,
|
|
834
922
|
EXPERT_FILTER_EQUIPMENTS,
|
|
835
923
|
FIELDS_OPTIONS,
|
|
@@ -2,6 +2,7 @@ import { FieldType } from './expert-filter.type';
|
|
|
2
2
|
|
|
3
3
|
import * as yup from 'yup';
|
|
4
4
|
export declare const EXPERT_FILTER_QUERY = "rules";
|
|
5
|
+
export declare const rqbQuerySchemaValidator: (schema: yup.Schema) => yup.Schema<any, any, any, "">;
|
|
5
6
|
export declare const expertFilterSchema: {
|
|
6
7
|
rules: yup.ObjectSchema<{}, yup.AnyObject, {}, "">;
|
|
7
8
|
};
|
|
@@ -8,7 +8,7 @@ import * as yup from "yup";
|
|
|
8
8
|
import { v4 } from "uuid";
|
|
9
9
|
import { useIntl } from "react-intl";
|
|
10
10
|
import { testQuery } from "./expert-filter-utils.js";
|
|
11
|
-
import {
|
|
11
|
+
import { COMBINATOR_OPTIONS, OPERATOR_OPTIONS, EXPERT_FILTER_EQUIPMENTS, RULES, fields } from "./expert-filter-constants.js";
|
|
12
12
|
import { FieldType } from "./expert-filter.type.js";
|
|
13
13
|
import FieldConstants from "../../../utils/field-constants.js";
|
|
14
14
|
import InputWithPopupConfirmation from "../../inputs/react-hook-form/select-inputs/input-with-popup-confirmation.js";
|
|
@@ -30,48 +30,21 @@ const EXPERT_FILTER_QUERY = "rules";
|
|
|
30
30
|
function isSupportedEquipmentType(equipmentType) {
|
|
31
31
|
return Object.values(EXPERT_FILTER_EQUIPMENTS).map((equipments) => equipments.id).includes(equipmentType);
|
|
32
32
|
}
|
|
33
|
+
const rqbQuerySchemaValidator = (schema) => schema.test(RULES.EMPTY_GROUP, RULES.EMPTY_GROUP, (query) => {
|
|
34
|
+
return testQuery(RULES.EMPTY_GROUP, query);
|
|
35
|
+
}).test(RULES.EMPTY_RULE, RULES.EMPTY_RULE, (query) => {
|
|
36
|
+
return testQuery(RULES.EMPTY_RULE, query);
|
|
37
|
+
}).test(RULES.INCORRECT_RULE, RULES.INCORRECT_RULE, (query) => {
|
|
38
|
+
return testQuery(RULES.INCORRECT_RULE, query);
|
|
39
|
+
}).test(RULES.BETWEEN_RULE, RULES.BETWEEN_RULE, (query) => {
|
|
40
|
+
return testQuery(RULES.BETWEEN_RULE, query);
|
|
41
|
+
});
|
|
33
42
|
const expertFilterSchema = {
|
|
34
43
|
[EXPERT_FILTER_QUERY]: yup.object().when([FieldConstants.FILTER_TYPE], {
|
|
35
44
|
is: FilterType.EXPERT.id,
|
|
36
45
|
then: (schema) => schema.when([FieldConstants.EQUIPMENT_TYPE], {
|
|
37
46
|
is: (equipmentType) => isSupportedEquipmentType(equipmentType),
|
|
38
|
-
then:
|
|
39
|
-
RULES.EMPTY_GROUP,
|
|
40
|
-
RULES.EMPTY_GROUP,
|
|
41
|
-
(query) => {
|
|
42
|
-
return testQuery(
|
|
43
|
-
RULES.EMPTY_GROUP,
|
|
44
|
-
query
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
).test(
|
|
48
|
-
RULES.EMPTY_RULE,
|
|
49
|
-
RULES.EMPTY_RULE,
|
|
50
|
-
(query) => {
|
|
51
|
-
return testQuery(
|
|
52
|
-
RULES.EMPTY_RULE,
|
|
53
|
-
query
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
).test(
|
|
57
|
-
RULES.INCORRECT_RULE,
|
|
58
|
-
RULES.INCORRECT_RULE,
|
|
59
|
-
(query) => {
|
|
60
|
-
return testQuery(
|
|
61
|
-
RULES.INCORRECT_RULE,
|
|
62
|
-
query
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
).test(
|
|
66
|
-
RULES.BETWEEN_RULE,
|
|
67
|
-
RULES.BETWEEN_RULE,
|
|
68
|
-
(query) => {
|
|
69
|
-
return testQuery(
|
|
70
|
-
RULES.BETWEEN_RULE,
|
|
71
|
-
query
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
)
|
|
47
|
+
then: rqbQuerySchemaValidator
|
|
75
48
|
})
|
|
76
49
|
})
|
|
77
50
|
};
|
|
@@ -139,5 +112,6 @@ export {
|
|
|
139
112
|
EXPERT_FILTER_QUERY,
|
|
140
113
|
ExpertFilterForm as default,
|
|
141
114
|
expertFilterSchema,
|
|
142
|
-
getExpertFilterEmptyFormData
|
|
115
|
+
getExpertFilterEmptyFormData,
|
|
116
|
+
rqbQuerySchemaValidator
|
|
143
117
|
};
|
|
@@ -149,6 +149,7 @@ function exportExpertRules(query) {
|
|
|
149
149
|
return transformCompositeRule(rule);
|
|
150
150
|
}
|
|
151
151
|
return {
|
|
152
|
+
id: rule.id,
|
|
152
153
|
field: rule.field,
|
|
153
154
|
operator: dataType !== DataType.PROPERTY ? (_a = Object.values(OPERATOR_OPTIONS).find(
|
|
154
155
|
(operator) => operator.name === rule.operator
|
|
@@ -172,6 +173,7 @@ function exportExpertRules(query) {
|
|
|
172
173
|
})
|
|
173
174
|
);
|
|
174
175
|
return {
|
|
176
|
+
id: compositeGroup.id,
|
|
175
177
|
combinator: compositeGroup.combinator,
|
|
176
178
|
dataType: DataType.COMBINATOR,
|
|
177
179
|
rules: transformedRules,
|
|
@@ -190,6 +192,7 @@ function exportExpertRules(query) {
|
|
|
190
192
|
return transformRule(ruleOrGroup);
|
|
191
193
|
});
|
|
192
194
|
return {
|
|
195
|
+
id: group.id,
|
|
193
196
|
combinator: group.combinator,
|
|
194
197
|
dataType: DataType.COMBINATOR,
|
|
195
198
|
rules: transformedRules
|
|
@@ -219,6 +222,7 @@ function importExpertRules(query) {
|
|
|
219
222
|
function transformRule(rule) {
|
|
220
223
|
var _a;
|
|
221
224
|
return {
|
|
225
|
+
id: rule.id,
|
|
222
226
|
field: rule.field,
|
|
223
227
|
operator: rule.dataType !== DataType.PROPERTY ? (_a = Object.values(OPERATOR_OPTIONS).find(
|
|
224
228
|
(operator) => operator.customName === rule.operator
|
|
@@ -239,6 +243,7 @@ function importExpertRules(query) {
|
|
|
239
243
|
{}
|
|
240
244
|
);
|
|
241
245
|
return {
|
|
246
|
+
id: group.id,
|
|
242
247
|
field: group.field,
|
|
243
248
|
operator: (_a = Object.values(OPERATOR_OPTIONS).find(
|
|
244
249
|
(operator) => operator.customName === group.operator
|
|
@@ -260,6 +265,7 @@ function importExpertRules(query) {
|
|
|
260
265
|
return transformRule(ruleOrGroup);
|
|
261
266
|
});
|
|
262
267
|
return {
|
|
268
|
+
id: group.id,
|
|
263
269
|
combinator: group.combinator,
|
|
264
270
|
rules: transformedRules
|
|
265
271
|
};
|
|
@@ -267,6 +273,9 @@ function importExpertRules(query) {
|
|
|
267
273
|
return transformGroup(query);
|
|
268
274
|
}
|
|
269
275
|
function countRules(query) {
|
|
276
|
+
if (!query) {
|
|
277
|
+
return 0;
|
|
278
|
+
}
|
|
270
279
|
if ("rules" in query) {
|
|
271
280
|
const group = query;
|
|
272
281
|
return group.rules.reduce(
|
|
@@ -278,6 +287,9 @@ function countRules(query) {
|
|
|
278
287
|
}
|
|
279
288
|
const queryValidator = (query) => {
|
|
280
289
|
const result = {};
|
|
290
|
+
if (!query) {
|
|
291
|
+
return result;
|
|
292
|
+
}
|
|
281
293
|
const validateRule = (rule) => {
|
|
282
294
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
283
295
|
const isValueAnArray = Array.isArray(rule.value);
|
|
@@ -382,9 +394,10 @@ const testQuery = (check, query) => {
|
|
|
382
394
|
});
|
|
383
395
|
};
|
|
384
396
|
function getNumberOfSiblings(path, query) {
|
|
397
|
+
var _a;
|
|
385
398
|
const parentPath = getParentPath(path);
|
|
386
399
|
const parentGroup = findPath(parentPath, query);
|
|
387
|
-
return parentGroup.rules.length;
|
|
400
|
+
return (_a = parentGroup == null ? void 0 : parentGroup.rules) == null ? void 0 : _a.length;
|
|
388
401
|
}
|
|
389
402
|
function recursiveRemove(query, path) {
|
|
390
403
|
if (getNumberOfSiblings(path, query) === 1 && path.toString() !== [0].toString()) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UUID } from 'crypto';
|
|
1
2
|
import { FullField } from 'react-querybuilder';
|
|
2
3
|
|
|
3
4
|
export declare enum OperatorType {
|
|
@@ -90,6 +91,7 @@ export declare enum FieldType {
|
|
|
90
91
|
VOLTAGE_LEVEL_PROPERTY_2 = "VOLTAGE_LEVEL_PROPERTIES_2",
|
|
91
92
|
SVAR_REGULATION_MODE = "SVAR_REGULATION_MODE",
|
|
92
93
|
VOLTAGE_SET_POINT = "VOLTAGE_SET_POINT",
|
|
94
|
+
ACTIVE_POWER_SET_POINT = "ACTIVE_POWER_SET_POINT",
|
|
93
95
|
REACTIVE_POWER_SET_POINT = "REACTIVE_POWER_SET_POINT",
|
|
94
96
|
REMOTE_REGULATED_TERMINAL = "REMOTE_REGULATED_TERMINAL",
|
|
95
97
|
REGULATING_TERMINAL_VL_ID = "REGULATING_TERMINAL_VL_ID",
|
|
@@ -100,7 +102,13 @@ export declare enum FieldType {
|
|
|
100
102
|
HIGH_VOLTAGE_SET_POINT = "HIGH_VOLTAGE_SET_POINT",
|
|
101
103
|
LOW_VOLTAGE_THRESHOLD = "LOW_VOLTAGE_THRESHOLD",
|
|
102
104
|
HIGH_VOLTAGE_THRESHOLD = "HIGH_VOLTAGE_THRESHOLD",
|
|
103
|
-
SUSCEPTANCE_FIX = "SUSCEPTANCE_FIX"
|
|
105
|
+
SUSCEPTANCE_FIX = "SUSCEPTANCE_FIX",
|
|
106
|
+
CONVERTERS_MODE = "CONVERTERS_MODE",
|
|
107
|
+
CONVERTER_STATION_ID_1 = "CONVERTER_STATION_ID_1",
|
|
108
|
+
CONVERTER_STATION_ID_2 = "CONVERTER_STATION_ID_2",
|
|
109
|
+
CONVERTER_STATION_NOMINAL_VOLTAGE_1 = "CONVERTER_STATION_NOMINAL_VOLTAGE_1",
|
|
110
|
+
CONVERTER_STATION_NOMINAL_VOLTAGE_2 = "CONVERTER_STATION_NOMINAL_VOLTAGE_2",
|
|
111
|
+
DC_NOMINAL_VOLTAGE = "DC_NOMINAL_VOLTAGE"
|
|
104
112
|
}
|
|
105
113
|
export declare enum DataType {
|
|
106
114
|
STRING = "STRING",
|
|
@@ -117,6 +125,7 @@ export type OperatorOption = {
|
|
|
117
125
|
label: string;
|
|
118
126
|
};
|
|
119
127
|
export interface RuleTypeExport {
|
|
128
|
+
id?: UUID;
|
|
120
129
|
field: FieldType;
|
|
121
130
|
operator: OperatorType;
|
|
122
131
|
value: string | number | undefined;
|
|
@@ -126,6 +135,7 @@ export interface RuleTypeExport {
|
|
|
126
135
|
propertyValues?: string[];
|
|
127
136
|
}
|
|
128
137
|
export interface RuleGroupTypeExport {
|
|
138
|
+
id?: UUID;
|
|
129
139
|
combinator: CombinatorType;
|
|
130
140
|
dataType: DataType;
|
|
131
141
|
field?: FieldType;
|
|
@@ -139,6 +149,7 @@ export interface CompositeField extends FullField {
|
|
|
139
149
|
};
|
|
140
150
|
}
|
|
141
151
|
export interface CompositeGroup {
|
|
152
|
+
id?: string;
|
|
142
153
|
combinator: string;
|
|
143
154
|
rules: {
|
|
144
155
|
[field: string]: CompositeRule;
|
|
@@ -90,6 +90,7 @@ var FieldType = /* @__PURE__ */ ((FieldType2) => {
|
|
|
90
90
|
FieldType2["VOLTAGE_LEVEL_PROPERTY_2"] = "VOLTAGE_LEVEL_PROPERTIES_2";
|
|
91
91
|
FieldType2["SVAR_REGULATION_MODE"] = "SVAR_REGULATION_MODE";
|
|
92
92
|
FieldType2["VOLTAGE_SET_POINT"] = "VOLTAGE_SET_POINT";
|
|
93
|
+
FieldType2["ACTIVE_POWER_SET_POINT"] = "ACTIVE_POWER_SET_POINT";
|
|
93
94
|
FieldType2["REACTIVE_POWER_SET_POINT"] = "REACTIVE_POWER_SET_POINT";
|
|
94
95
|
FieldType2["REMOTE_REGULATED_TERMINAL"] = "REMOTE_REGULATED_TERMINAL";
|
|
95
96
|
FieldType2["REGULATING_TERMINAL_VL_ID"] = "REGULATING_TERMINAL_VL_ID";
|
|
@@ -101,6 +102,12 @@ var FieldType = /* @__PURE__ */ ((FieldType2) => {
|
|
|
101
102
|
FieldType2["LOW_VOLTAGE_THRESHOLD"] = "LOW_VOLTAGE_THRESHOLD";
|
|
102
103
|
FieldType2["HIGH_VOLTAGE_THRESHOLD"] = "HIGH_VOLTAGE_THRESHOLD";
|
|
103
104
|
FieldType2["SUSCEPTANCE_FIX"] = "SUSCEPTANCE_FIX";
|
|
105
|
+
FieldType2["CONVERTERS_MODE"] = "CONVERTERS_MODE";
|
|
106
|
+
FieldType2["CONVERTER_STATION_ID_1"] = "CONVERTER_STATION_ID_1";
|
|
107
|
+
FieldType2["CONVERTER_STATION_ID_2"] = "CONVERTER_STATION_ID_2";
|
|
108
|
+
FieldType2["CONVERTER_STATION_NOMINAL_VOLTAGE_1"] = "CONVERTER_STATION_NOMINAL_VOLTAGE_1";
|
|
109
|
+
FieldType2["CONVERTER_STATION_NOMINAL_VOLTAGE_2"] = "CONVERTER_STATION_NOMINAL_VOLTAGE_2";
|
|
110
|
+
FieldType2["DC_NOMINAL_VOLTAGE"] = "DC_NOMINAL_VOLTAGE";
|
|
104
111
|
return FieldType2;
|
|
105
112
|
})(FieldType || {});
|
|
106
113
|
var DataType = /* @__PURE__ */ ((DataType2) => {
|