@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.
Files changed (25) hide show
  1. package/dist/components/ElementSearchDialog/element-search-input.d.ts +2 -2
  2. package/dist/components/ElementSearchDialog/element-search-input.js +4 -2
  3. package/dist/components/ElementSearchDialog/index.d.ts +1 -0
  4. package/dist/components/ElementSearchDialog/use-element-search.d.ts +18 -1
  5. package/dist/components/ElementSearchDialog/use-element-search.js +18 -3
  6. package/dist/components/FlatParameters/FlatParameters.js +1 -1
  7. package/dist/components/filter/criteria-based/filter-free-properties.js +1 -1
  8. package/dist/components/filter/expert/expert-filter-constants.d.ts +60 -0
  9. package/dist/components/filter/expert/expert-filter-constants.js +88 -0
  10. package/dist/components/filter/expert/expert-filter-form.d.ts +1 -0
  11. package/dist/components/filter/expert/expert-filter-form.js +13 -39
  12. package/dist/components/filter/expert/expert-filter-utils.js +14 -1
  13. package/dist/components/filter/expert/expert-filter.type.d.ts +12 -1
  14. package/dist/components/filter/expert/expert-filter.type.js +7 -0
  15. package/dist/components/inputs/react-query-builder/value-editor.js +1 -1
  16. package/dist/components/translations/filter-expert-en.d.ts +9 -0
  17. package/dist/components/translations/filter-expert-en.js +10 -1
  18. package/dist/components/translations/filter-expert-fr.d.ts +9 -0
  19. package/dist/components/translations/filter-expert-fr.js +13 -4
  20. package/dist/hooks/usePrevious.d.ts +2 -0
  21. package/dist/hooks/usePrevious.js +12 -0
  22. package/dist/hooks/useSnackMessage.js +2 -2
  23. package/dist/index.d.ts +9 -0
  24. package/dist/index.js +155 -137
  25. 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>): import("react/jsx-runtime").JSX.Element;
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
- setElementsFound(infos);
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
- [snackError, fetchElements]
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 { searchTerm, updateSearchTerm, elementsFound, isLoading };
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 { RULES, COMBINATOR_OPTIONS, OPERATOR_OPTIONS, EXPERT_FILTER_EQUIPMENTS, fields } from "./expert-filter-constants.js";
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: (innerSchema) => innerSchema.test(
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) => {