@centreon/ui 24.4.38 → 24.4.39

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 (108) hide show
  1. package/package.json +19 -14
  2. package/public/mockServiceWorker.js +1 -1
  3. package/src/Button/Icon/index.tsx +1 -1
  4. package/src/Button/Save/StartIcon.tsx +3 -3
  5. package/src/Button/Save/index.tsx +9 -5
  6. package/src/Checkbox/Checkbox.tsx +2 -2
  7. package/src/Checkbox/CheckboxGroup/index.tsx +2 -2
  8. package/src/Dashboard/Item.tsx +1 -1
  9. package/src/Dashboard/Layout.tsx +2 -2
  10. package/src/Dialog/index.tsx +1 -1
  11. package/src/FallbackPage/FallbackPage.tsx +3 -3
  12. package/src/FileDropZone/index.tsx +3 -1
  13. package/src/Form/Form.cypress.spec.tsx +133 -0
  14. package/src/Form/Inputs/CheckboxGroup.tsx +1 -4
  15. package/src/Form/Inputs/List/Content.tsx +62 -0
  16. package/src/Form/Inputs/List/List.styles.ts +29 -0
  17. package/src/Form/Inputs/List/List.tsx +58 -0
  18. package/src/Form/Inputs/List/useList.ts +81 -0
  19. package/src/Form/Inputs/index.tsx +3 -1
  20. package/src/Form/Inputs/models.ts +9 -1
  21. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/Circle.tsx +2 -2
  22. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/index.tsx +5 -4
  23. package/src/Graph/LineChart/BasicComponents/Thresholds.tsx +2 -2
  24. package/src/Graph/LineChart/BasicComponents/useFilterLines.ts +1 -1
  25. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/GuidingLines.tsx +2 -2
  26. package/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/index.tsx +2 -3
  27. package/src/Graph/LineChart/InteractiveComponents/Annotations/EventAnnotations.tsx +1 -1
  28. package/src/Graph/LineChart/Legend/index.tsx +7 -8
  29. package/src/Graph/LineChart/Legend/useLegend.ts +3 -3
  30. package/src/Graph/LineChart/LineChart.tsx +4 -1
  31. package/src/Graph/LineChart/helpers/doc.ts +16 -13
  32. package/src/Graph/LineChart/helpers/index.ts +1 -1
  33. package/src/Graph/LineChart/index.stories.tsx +4 -2
  34. package/src/Graph/LineChart/index.tsx +4 -1
  35. package/src/Graph/SingleBar/Thresholds.tsx +2 -2
  36. package/src/Graph/Text/Text.stories.tsx +60 -4
  37. package/src/Graph/common/timeSeries/index.ts +3 -3
  38. package/src/InputField/Select/Autocomplete/Connected/index.tsx +10 -7
  39. package/src/InputField/Select/Autocomplete/Draggable/SortableList.tsx +1 -1
  40. package/src/InputField/Select/Autocomplete/Draggable/SortableListContent.tsx +1 -1
  41. package/src/InputField/Select/Autocomplete/Draggable/index.tsx +1 -1
  42. package/src/InputField/Select/Autocomplete/index.tsx +121 -115
  43. package/src/InputField/Select/IconPopover/index.tsx +2 -2
  44. package/src/InputField/Select/index.tsx +1 -1
  45. package/src/InputField/Text/index.tsx +2 -2
  46. package/src/Listing/Cell/DataCell.tsx +15 -1
  47. package/src/Listing/Header/ListingHeader.tsx +1 -1
  48. package/src/Listing/Listing.styles.ts +2 -3
  49. package/src/Listing/index.stories.tsx +12 -1
  50. package/src/Listing/index.tsx +1 -2
  51. package/src/Module/Module.cypress.spec.tsx +129 -0
  52. package/src/Module/index.tsx +2 -4
  53. package/src/RichTextEditor/RichTextEditor.tsx +12 -1
  54. package/src/SortableItems/index.tsx +2 -7
  55. package/src/ThemeProvider/index.tsx +24 -0
  56. package/src/TimePeriods/CustomTimePeriod/CompactCustomTimePeriod.styles.ts +6 -7
  57. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/PickersStartEndDate.tsx +8 -3
  58. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/models.ts +0 -2
  59. package/src/TimePeriods/DateTimePickerInput.tsx +56 -19
  60. package/src/TimePeriods/ResolutionTimePeriod.cypress.spec.tsx +12 -9
  61. package/src/TimePeriods/TimePeriods.cypress.spec.tsx +9 -33
  62. package/src/TimePeriods/helpers/index.ts +1 -1
  63. package/src/TimePeriods/index.stories.tsx +12 -4
  64. package/src/TimePeriods/index.tsx +2 -2
  65. package/src/api/QueryProvider.tsx +1 -1
  66. package/src/api/TestQueryProvider.tsx +1 -1
  67. package/src/api/useFetchQuery/index.ts +27 -23
  68. package/src/api/useGraphQuery/index.ts +26 -5
  69. package/src/api/useGraphQuery/models.ts +5 -0
  70. package/src/api/useMutationQuery/index.ts +45 -21
  71. package/src/components/Button/Icon/IconButton.tsx +6 -2
  72. package/src/components/CollapsibleItem/CollapsibleItem.cypress.spec.tsx +76 -0
  73. package/src/components/CollapsibleItem/CollapsibleItem.stories.tsx +26 -0
  74. package/src/components/CollapsibleItem/CollapsibleItem.tsx +43 -14
  75. package/src/components/CollapsibleItem/useCollapsibleItemStyles.ts +24 -1
  76. package/src/components/DataTable/DataListing.tsx +6 -0
  77. package/src/components/DataTable/DataTable.cypress.spec.tsx +193 -0
  78. package/src/components/DataTable/DataTable.stories.tsx +40 -0
  79. package/src/components/DataTable/DataTable.styles.ts +3 -0
  80. package/src/components/DataTable/DataTable.tsx +3 -3
  81. package/src/components/DataTable/Item/DataTableItem.styles.ts +7 -2
  82. package/src/components/DataTable/Item/DataTableItem.tsx +4 -4
  83. package/src/components/DataTable/index.ts +3 -1
  84. package/src/components/Form/Dashboard/DashboardForm.tsx +15 -12
  85. package/src/components/ItemComposition/Item.tsx +1 -1
  86. package/src/components/ItemComposition/ItemComposition.cypress.spec.tsx +116 -0
  87. package/src/components/ItemComposition/ItemComposition.styles.ts +8 -1
  88. package/src/components/ItemComposition/ItemComposition.tsx +26 -16
  89. package/src/components/Layout/PageLayout/PageLayout.tsx +1 -1
  90. package/src/components/Layout/PageLayout/PageLayoutActions.tsx +1 -0
  91. package/src/components/Layout/PageLayout/PageLayoutBody.tsx +1 -0
  92. package/src/components/Layout/PageLayout/PageLayoutHeader.tsx +5 -1
  93. package/src/components/Layout/PageLayout/PageQuickAccess.tsx +76 -0
  94. package/src/components/Layout/PageLayout/index.ts +3 -1
  95. package/src/components/Layout/PageLayout.cypress.spec.tsx +66 -0
  96. package/src/components/Modal/Modal.styles.ts +1 -1
  97. package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.stories.tsx +3 -3
  98. package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.tsx +1 -1
  99. package/src/components/Tooltip/ConfirmationTooltip/models.ts +1 -1
  100. package/src/index.ts +2 -2
  101. package/src/queryParameters/url/index.ts +5 -1
  102. package/src/utils/index.ts +2 -1
  103. package/src/utils/{useLicenseExpirationWarning.cypress.spec.tsx → useLicenseExpirationWarning.test.tsx} +48 -37
  104. package/src/utils/useLicenseExpirationWarning.ts +18 -18
  105. package/src/utils/usePluralizedTranslation.ts +21 -0
  106. package/src/screens/dashboard/DashboardsDetail.stories.tsx +0 -108
  107. package/src/screens/dashboard/DashboardsOverview.stories.tsx +0 -281
  108. package/src/utils/useDateTimePickerAdapter.ts +0 -309
@@ -18,7 +18,8 @@ export enum InputType {
18
18
  Grid,
19
19
  Custom,
20
20
  Checkbox,
21
- CheckboxGroup
21
+ CheckboxGroup,
22
+ List
22
23
  }
23
24
 
24
25
  interface FieldsTableGetRequiredProps {
@@ -76,6 +77,13 @@ export interface InputProps {
76
77
  hideInput?: (values: FormikValues) => boolean;
77
78
  inputClassName?: string;
78
79
  label: string;
80
+ list?: {
81
+ AddItem: React.ComponentType<{ addItem }>;
82
+ SortContent: React.ComponentType<object>;
83
+ addItemLabel?: string;
84
+ itemProps: Array<string>;
85
+ sortLabel?: string;
86
+ };
79
87
  radio?: {
80
88
  options?: Array<{
81
89
  label: string | JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import { Shape } from '@visx/visx';
2
2
  import { isEmpty, isNil } from 'ramda';
3
3
 
4
- import { Circle } from './models';
4
+ import { Circle as CircleModel } from './models';
5
5
  import useCoordinateCircle from './useCoordinateCircle';
6
6
 
7
7
  const Circle = ({
@@ -11,7 +11,7 @@ const Circle = ({
11
11
  timeSeries,
12
12
  getX,
13
13
  getCountDisplayedCircles
14
- }: Circle): JSX.Element | null => {
14
+ }: CircleModel): JSX.Element | null => {
15
15
  const coordinates = useCoordinateCircle({
16
16
  getCountDisplayedCircles,
17
17
  getX,
@@ -130,10 +130,11 @@ const WrapperThresholdLines = ({
130
130
 
131
131
  return (
132
132
  <g>
133
- {filteredThresholdLines.map((element) =>
134
- element?.map(({ Component, props, key }) => (
135
- <Component {...props} id={key} key={key} />
136
- ))
133
+ {filteredThresholdLines.map(
134
+ (element) =>
135
+ element?.map(({ Component, props, key }) => (
136
+ <Component {...props} id={key} key={key} />
137
+ ))
137
138
  )}
138
139
  </g>
139
140
  );
@@ -2,7 +2,7 @@ import { equals, isNil } from 'ramda';
2
2
 
3
3
  import { getUnits, getYScale } from '../../common/timeSeries';
4
4
  import { Line } from '../../common/timeSeries/models';
5
- import { Thresholds } from '../../common/models';
5
+ import { Thresholds as ThresholdsModel } from '../../common/models';
6
6
 
7
7
  import { ThresholdLine } from './ThresholdLine';
8
8
 
@@ -13,7 +13,7 @@ interface Props {
13
13
  rightScale: (value: number) => number;
14
14
  showTooltip: (props) => void;
15
15
  thresholdUnit?: string;
16
- thresholds: Thresholds;
16
+ thresholds: ThresholdsModel;
17
17
  width: number;
18
18
  }
19
19
 
@@ -28,7 +28,7 @@ const useFilterLines = ({
28
28
  linesGraph,
29
29
  setLinesGraph
30
30
  }: UseFilterLines): Result => {
31
- const displayedLines = reject(propEq('display', false), linesGraph ?? lines);
31
+ const displayedLines = reject(propEq(false, 'display'), linesGraph ?? lines);
32
32
  const filterLines = (): Array<Line> => {
33
33
  const lineOriginMetric = findLineOfOriginMetricThreshold(lines);
34
34
 
@@ -2,7 +2,7 @@ import { Shape } from '@visx/visx';
2
2
 
3
3
  import { grey } from '@mui/material/colors';
4
4
 
5
- import { GuidingLines } from './models';
5
+ import { GuidingLines as GuidingLinesModel } from './models';
6
6
  import useTickGraph from './useTickGraph';
7
7
 
8
8
  const GuidingLines = ({
@@ -10,7 +10,7 @@ const GuidingLines = ({
10
10
  xScale,
11
11
  graphHeight,
12
12
  graphWidth
13
- }: GuidingLines): JSX.Element | null => {
13
+ }: GuidingLinesModel): JSX.Element | null => {
14
14
  const { positionX, positionY } = useTickGraph({
15
15
  timeSeries,
16
16
  xScale
@@ -43,9 +43,8 @@ const Annotation = ({
43
43
 
44
44
  const setAnnotationHovered = useSetAtom(annotationHoveredAtom);
45
45
 
46
- const content = `${truncate(event.content)} (${t(labelBy)} ${
47
- event.contact?.name
48
- })`;
46
+ const content = `${truncate(event.content)} (${t(labelBy)} ${event.contact
47
+ ?.name})`;
49
48
 
50
49
  return (
51
50
  <g>
@@ -26,7 +26,7 @@ const EventAnnotations = ({
26
26
  color,
27
27
  annotationHoveredId
28
28
  }: Props): JSX.Element => {
29
- const events = filter(propEq('type', type), data);
29
+ const events = filter(propEq(type, 'type'), data);
30
30
 
31
31
  return (
32
32
  <>
@@ -7,7 +7,6 @@ import { Box, alpha, useTheme } from '@mui/material';
7
7
 
8
8
  import { useMemoComponent } from '@centreon/ui';
9
9
 
10
- import { maxLinesDisplayedLegend } from '../common';
11
10
  import { formatMetricValue } from '../../common/timeSeries';
12
11
  import { Line, TimeValue } from '../../common/timeSeries/models';
13
12
  import { labelAvg, labelMax, labelMin } from '../translatedLabels';
@@ -24,7 +23,7 @@ import LegendContent from './LegendContent';
24
23
  interface Props {
25
24
  base: number;
26
25
  displayAnchor?: boolean;
27
- limitLegendRows?: boolean;
26
+ limitLegend?: false | number;
28
27
  lines: Array<Line>;
29
28
  renderExtraComponent?: ReactNode;
30
29
  setLinesGraph: Dispatch<SetStateAction<Array<Line> | null>>;
@@ -39,14 +38,14 @@ const MainLegend = ({
39
38
  timeSeries,
40
39
  base,
41
40
  toggable = true,
42
- limitLegendRows = true,
41
+ limitLegend = false,
43
42
  renderExtraComponent,
44
43
  displayAnchor = true,
45
44
  setLinesGraph,
46
45
  xScale,
47
46
  shouldDisplayLegendInCompactMode
48
47
  }: Props): JSX.Element => {
49
- const { classes, cx } = useStyles({ limitLegendRows });
48
+ const { classes, cx } = useStyles({ limitLegendRows: Boolean(limitLegend) });
50
49
  const theme = useTheme();
51
50
 
52
51
  const { selectMetricLine, clearHighlight, highlightLine, toggleMetricLine } =
@@ -61,8 +60,8 @@ const MainLegend = ({
61
60
 
62
61
  const sortedData = sortBy(prop('metric_id'), lines);
63
62
 
64
- const displayedLines = limitLegendRows
65
- ? slice(0, maxLinesDisplayedLegend, sortedData)
63
+ const displayedLines = limitLegend
64
+ ? slice(0, limitLegend, sortedData)
66
65
  : sortedData;
67
66
 
68
67
  const getMetricValue = ({ value, unit }: GetMetricValueProps): string =>
@@ -174,7 +173,7 @@ const MainLegend = ({
174
173
  const Legend = (props: Props): JSX.Element => {
175
174
  const {
176
175
  toggable,
177
- limitLegendRows,
176
+ limitLegend,
178
177
  timeSeries,
179
178
  lines,
180
179
  base,
@@ -191,7 +190,7 @@ const Legend = (props: Props): JSX.Element => {
191
190
  lines,
192
191
  base,
193
192
  toggable,
194
- limitLegendRows,
193
+ limitLegend,
195
194
  displayAnchor,
196
195
  shouldDisplayLegendInCompactMode
197
196
  ]
@@ -27,9 +27,9 @@ interface Props {
27
27
  }
28
28
 
29
29
  const useLegend = ({ lines, setLinesGraph }: Props): LegendActions => {
30
- const displayedLines = reject(propEq('display', false), lines);
30
+ const displayedLines = reject(propEq(false, 'display'), lines);
31
31
  const getLineByMetric = (metric_id: number): Line =>
32
- find(propEq('metric_id', metric_id), lines) as Line;
32
+ find(propEq(metric_id, 'metric_id'), lines) as Line;
33
33
 
34
34
  const toggleMetricLine = (metric_id): void => {
35
35
  const data = lines.map((line) => ({
@@ -92,7 +92,7 @@ const useLegend = ({ lines, setLinesGraph }: Props): LegendActions => {
92
92
 
93
93
  const newLines = lines.map((line) => ({
94
94
  ...line,
95
- display: find(propEq('metric_id', line.metric_id), lines)?.display ?? true
95
+ display: find(propEq(line.metric_id, 'metric_id'), lines)?.display ?? true
96
96
  }));
97
97
 
98
98
  setLinesGraph(newLines);
@@ -43,6 +43,7 @@ interface Props extends LineChartProps {
43
43
  graphInterval: GraphInterval;
44
44
  graphRef: MutableRefObject<HTMLDivElement | null>;
45
45
  legend?: LegendModel;
46
+ limitLegend?: false | number;
46
47
  marginBottom: number;
47
48
  shapeLines?: GlobalAreaLines;
48
49
  thresholdUnit?: string;
@@ -73,7 +74,8 @@ const LineChart = ({
73
74
  curve,
74
75
  marginBottom,
75
76
  thresholds,
76
- thresholdUnit
77
+ thresholdUnit,
78
+ limitLegend
77
79
  }: Props): JSX.Element => {
78
80
  const { classes } = useStyles();
79
81
 
@@ -301,6 +303,7 @@ const LineChart = ({
301
303
  <Legend
302
304
  base={baseAxis}
303
305
  displayAnchor={displayAnchor?.displayGuidingLines ?? true}
306
+ limitLegend={limitLegend}
304
307
  lines={newLines}
305
308
  renderExtraComponent={legend?.renderExtraComponent}
306
309
  setLinesGraph={setLinesGraph}
@@ -69,21 +69,24 @@ export const getDescription = ({ sections }: Description): string => {
69
69
  })}<br></details>`;
70
70
  }
71
71
 
72
- const formattedProps = props.reduce((accumulator, currentValue, index) => {
73
- const key = Object.keys(currentValue)[0];
74
- const { description, type } = currentValue[key];
75
- const body = `${accumulator} ${getBodyDescription({
76
- description,
77
- key,
78
- type
79
- })}`;
72
+ const formattedProps = props.reduce(
73
+ (accumulator, currentValue, index) => {
74
+ const key = Object.keys(currentValue)[0];
75
+ const { description, type } = currentValue[key];
76
+ const body = `${accumulator} ${getBodyDescription({
77
+ description,
78
+ key,
79
+ type
80
+ })}`;
80
81
 
81
- if (!equals(index, props.length - 1)) {
82
- return body;
83
- }
82
+ if (!equals(index, props.length - 1)) {
83
+ return body;
84
+ }
84
85
 
85
- return `${body}</details>`;
86
- }, getInitialValue({ section: name, type: item?.type }));
86
+ return `${body}</details>`;
87
+ },
88
+ getInitialValue({ section: name, type: item?.type })
89
+ );
87
90
 
88
91
  return formattedProps as string;
89
92
  });
@@ -14,7 +14,7 @@ import { LineChartData } from '../../common/models';
14
14
  export const adjustGraphData = (graphData: LineChartData): LinesData => {
15
15
  const lines = getLineData(graphData);
16
16
  const sortedLines = sortBy(prop('name'), lines);
17
- const displayedLines = reject(propEq('display', false), sortedLines);
17
+ const displayedLines = reject(propEq(false, 'display'), sortedLines);
18
18
 
19
19
  const timeSeries = getTimeSeries(graphData);
20
20
 
@@ -39,8 +39,7 @@ import { Interval, ThresholdType, TooltipData } from './models';
39
39
  import WrapperLineChart from './index';
40
40
 
41
41
  const meta: Meta<typeof WrapperLineChart> = {
42
- component: WrapperLineChart,
43
- tags: ['autodocs']
42
+ component: WrapperLineChart
44
43
  };
45
44
  export default meta;
46
45
 
@@ -353,6 +352,9 @@ export const LineChartWithTimePeriod: Story = {
353
352
  end: defaultEnd,
354
353
  height: 500,
355
354
  start: defaultStart
355
+ },
356
+ parameters: {
357
+ chromatic: { diffThreshold: 0.1 }
356
358
  }
357
359
  };
358
360
 
@@ -28,6 +28,7 @@ interface Props extends Partial<LineChartProps> {
28
28
  data?: LineChartData;
29
29
  end: string;
30
30
  legend: LegendModel;
31
+ limitLegend?: false | number;
31
32
  loading: boolean;
32
33
  marginBottom?: number;
33
34
  shapeLines?: GlobalAreaLines;
@@ -55,7 +56,8 @@ const WrapperLineChart = ({
55
56
  curve = Curve.curveLinear,
56
57
  marginBottom = 0,
57
58
  thresholds,
58
- thresholdUnit
59
+ thresholdUnit,
60
+ limitLegend
59
61
  }: Props): JSX.Element | null => {
60
62
  const { adjustedData } = useLineChartData({ data, end, start });
61
63
  const lineChartRef = useRef<HTMLDivElement | null>(null);
@@ -95,6 +97,7 @@ const WrapperLineChart = ({
95
97
  header={header}
96
98
  height={height || responsiveHeight}
97
99
  legend={legend}
100
+ limitLegend={limitLegend}
98
101
  loading={loading}
99
102
  marginBottom={marginBottom}
100
103
  shapeLines={shapeLines}
@@ -1,4 +1,4 @@
1
- import { Thresholds } from '../common/models';
1
+ import { Thresholds as ThresholdsModel } from '../common/models';
2
2
 
3
3
  import { ThresholdLine } from './ThresholdLine';
4
4
 
@@ -8,7 +8,7 @@ interface Props {
8
8
  hideTooltip: () => void;
9
9
  showTooltip: (args) => void;
10
10
  size: 'small' | 'medium';
11
- thresholds: Thresholds;
11
+ thresholds: ThresholdsModel;
12
12
  xScale: (value: number) => number;
13
13
  }
14
14
 
@@ -24,7 +24,21 @@ export const success: Story = {
24
24
  critical: 'Critical',
25
25
  warning: 'Warning'
26
26
  },
27
- thresholds: [0.5, 1.5]
27
+ thresholds: {
28
+ critical: [
29
+ {
30
+ label: 'Critical',
31
+ value: 1.5
32
+ }
33
+ ],
34
+ enabled: true,
35
+ warning: [
36
+ {
37
+ label: 'Warning',
38
+ value: 0.5
39
+ }
40
+ ]
41
+ }
28
42
  },
29
43
  render: Template
30
44
  };
@@ -36,7 +50,21 @@ export const warning: Story = {
36
50
  critical: 'Critical',
37
51
  warning: 'Warning'
38
52
  },
39
- thresholds: [0.2, 0.5]
53
+ thresholds: {
54
+ critical: [
55
+ {
56
+ label: 'Critical',
57
+ value: 1.5
58
+ }
59
+ ],
60
+ enabled: true,
61
+ warning: [
62
+ {
63
+ label: 'Warning',
64
+ value: 0.4
65
+ }
66
+ ]
67
+ }
40
68
  },
41
69
  render: Template
42
70
  };
@@ -48,7 +76,21 @@ export const critical: Story = {
48
76
  critical: 'Critical',
49
77
  warning: 'Warning'
50
78
  },
51
- thresholds: [0.13, 0.35]
79
+ thresholds: {
80
+ critical: [
81
+ {
82
+ label: 'Critical',
83
+ value: 0.3
84
+ }
85
+ ],
86
+ enabled: true,
87
+ warning: [
88
+ {
89
+ label: 'Warning',
90
+ value: 0.2
91
+ }
92
+ ]
93
+ }
52
94
  },
53
95
  render: Template
54
96
  };
@@ -61,7 +103,21 @@ export const rawValue: Story = {
61
103
  critical: 'Critical',
62
104
  warning: 'Warning'
63
105
  },
64
- thresholds: [0.5, 1.5]
106
+ thresholds: {
107
+ critical: [
108
+ {
109
+ label: 'Critical',
110
+ value: 1.5
111
+ }
112
+ ],
113
+ enabled: true,
114
+ warning: [
115
+ {
116
+ label: 'Warning',
117
+ value: 0.5
118
+ }
119
+ ]
120
+ }
65
121
  },
66
122
  render: Template
67
123
  };
@@ -179,7 +179,7 @@ const getMetricValuesForUnit = ({
179
179
  ) as Array<number>;
180
180
 
181
181
  return pipe(
182
- filter(propEq('unit', unit)) as (line) => Array<Line>,
182
+ filter(propEq(unit, 'unit')) as (line) => Array<Line>,
183
183
  map(prop('metric_id')),
184
184
  map(getTimeSeriesValuesForMetric),
185
185
  flatten,
@@ -203,7 +203,7 @@ const getLineForMetric = ({
203
203
  lines,
204
204
  metric_id
205
205
  }: LineForMetricProps): Line | undefined =>
206
- find(propEq('metric_id', metric_id), lines);
206
+ find(propEq(metric_id, 'metric_id'), lines);
207
207
 
208
208
  interface LinesTimeSeries {
209
209
  lines: Array<Line>;
@@ -275,7 +275,7 @@ interface HasStackedLines {
275
275
  }
276
276
 
277
277
  const hasUnitStackedLines = ({ lines, unit }: HasStackedLines): boolean =>
278
- pipe(getSortedStackedLines, any(propEq('unit', unit)))(lines);
278
+ pipe(getSortedStackedLines, any(propEq(unit, 'unit')))(lines);
279
279
 
280
280
  const getTimeSeriesForLines = ({
281
281
  lines,
@@ -292,13 +292,16 @@ const ConnectedAutocompleteField = (
292
292
  }
293
293
  }, [optionsOpen]);
294
294
 
295
- useEffect(() => {
296
- setSearchParameter(
297
- !isEmpty(searchConditions)
298
- ? { conditions: searchConditions }
299
- : undefined
300
- );
301
- }, useDeepCompare([searchConditions]));
295
+ useEffect(
296
+ () => {
297
+ setSearchParameter(
298
+ !isEmpty(searchConditions)
299
+ ? { conditions: searchConditions }
300
+ : undefined
301
+ );
302
+ },
303
+ useDeepCompare([searchConditions])
304
+ );
302
305
 
303
306
  useEffect(() => {
304
307
  if (!autocompleteChangedValue && !props?.value) {
@@ -49,7 +49,7 @@ const SortableList = ({
49
49
  const dragEnd = ({ items: newItems }): void =>
50
50
  changeItemsOrder(
51
51
  map(
52
- (item) => find(propEq('id', item), items),
52
+ (item) => find(propEq(item, 'id'), items),
53
53
  newItems
54
54
  ) as Array<DraggableSelectEntry>
55
55
  );
@@ -49,7 +49,7 @@ const SortableListContent = ({
49
49
  return;
50
50
  }
51
51
 
52
- const itemIndex = findIndex(propEq('id', id), items);
52
+ const itemIndex = findIndex(propEq(id, 'id'), items);
53
53
 
54
54
  itemHover?.(null);
55
55
  itemClick?.({ index: itemIndex, item: { createOption, id, name } });
@@ -77,7 +77,7 @@ const DraggableAutocomplete = (
77
77
  const deleteValue = (id): void => {
78
78
  itemHover?.(null);
79
79
  setSelectedValues((values: Array<DraggableSelectEntry>) => {
80
- const index = findIndex(propEq('id', id), values);
80
+ const index = findIndex(propEq(id, 'id'), values);
81
81
 
82
82
  const newSelectedValues = remove(index, 1, values);
83
83