@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.
- package/package.json +19 -14
- package/public/mockServiceWorker.js +1 -1
- package/src/Button/Icon/index.tsx +1 -1
- package/src/Button/Save/StartIcon.tsx +3 -3
- package/src/Button/Save/index.tsx +9 -5
- package/src/Checkbox/Checkbox.tsx +2 -2
- package/src/Checkbox/CheckboxGroup/index.tsx +2 -2
- package/src/Dashboard/Item.tsx +1 -1
- package/src/Dashboard/Layout.tsx +2 -2
- package/src/Dialog/index.tsx +1 -1
- package/src/FallbackPage/FallbackPage.tsx +3 -3
- package/src/FileDropZone/index.tsx +3 -1
- package/src/Form/Form.cypress.spec.tsx +133 -0
- package/src/Form/Inputs/CheckboxGroup.tsx +1 -4
- package/src/Form/Inputs/List/Content.tsx +62 -0
- package/src/Form/Inputs/List/List.styles.ts +29 -0
- package/src/Form/Inputs/List/List.tsx +58 -0
- package/src/Form/Inputs/List/useList.ts +81 -0
- package/src/Form/Inputs/index.tsx +3 -1
- package/src/Form/Inputs/models.ts +9 -1
- package/src/Graph/LineChart/BasicComponents/Lines/Threshold/Circle.tsx +2 -2
- package/src/Graph/LineChart/BasicComponents/Lines/Threshold/index.tsx +5 -4
- package/src/Graph/LineChart/BasicComponents/Thresholds.tsx +2 -2
- package/src/Graph/LineChart/BasicComponents/useFilterLines.ts +1 -1
- package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/GuidingLines.tsx +2 -2
- package/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/index.tsx +2 -3
- package/src/Graph/LineChart/InteractiveComponents/Annotations/EventAnnotations.tsx +1 -1
- package/src/Graph/LineChart/Legend/index.tsx +7 -8
- package/src/Graph/LineChart/Legend/useLegend.ts +3 -3
- package/src/Graph/LineChart/LineChart.tsx +4 -1
- package/src/Graph/LineChart/helpers/doc.ts +16 -13
- package/src/Graph/LineChart/helpers/index.ts +1 -1
- package/src/Graph/LineChart/index.stories.tsx +4 -2
- package/src/Graph/LineChart/index.tsx +4 -1
- package/src/Graph/SingleBar/Thresholds.tsx +2 -2
- package/src/Graph/Text/Text.stories.tsx +60 -4
- package/src/Graph/common/timeSeries/index.ts +3 -3
- package/src/InputField/Select/Autocomplete/Connected/index.tsx +10 -7
- package/src/InputField/Select/Autocomplete/Draggable/SortableList.tsx +1 -1
- package/src/InputField/Select/Autocomplete/Draggable/SortableListContent.tsx +1 -1
- package/src/InputField/Select/Autocomplete/Draggable/index.tsx +1 -1
- package/src/InputField/Select/Autocomplete/index.tsx +121 -115
- package/src/InputField/Select/IconPopover/index.tsx +2 -2
- package/src/InputField/Select/index.tsx +1 -1
- package/src/InputField/Text/index.tsx +2 -2
- package/src/Listing/Cell/DataCell.tsx +15 -1
- package/src/Listing/Header/ListingHeader.tsx +1 -1
- package/src/Listing/Listing.styles.ts +2 -3
- package/src/Listing/index.stories.tsx +12 -1
- package/src/Listing/index.tsx +1 -2
- package/src/Module/Module.cypress.spec.tsx +129 -0
- package/src/Module/index.tsx +2 -4
- package/src/RichTextEditor/RichTextEditor.tsx +12 -1
- package/src/SortableItems/index.tsx +2 -7
- package/src/ThemeProvider/index.tsx +24 -0
- package/src/TimePeriods/CustomTimePeriod/CompactCustomTimePeriod.styles.ts +6 -7
- package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/PickersStartEndDate.tsx +8 -3
- package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/models.ts +0 -2
- package/src/TimePeriods/DateTimePickerInput.tsx +56 -19
- package/src/TimePeriods/ResolutionTimePeriod.cypress.spec.tsx +12 -9
- package/src/TimePeriods/TimePeriods.cypress.spec.tsx +9 -33
- package/src/TimePeriods/helpers/index.ts +1 -1
- package/src/TimePeriods/index.stories.tsx +12 -4
- package/src/TimePeriods/index.tsx +2 -2
- package/src/api/QueryProvider.tsx +1 -1
- package/src/api/TestQueryProvider.tsx +1 -1
- package/src/api/useFetchQuery/index.ts +27 -23
- package/src/api/useGraphQuery/index.ts +26 -5
- package/src/api/useGraphQuery/models.ts +5 -0
- package/src/api/useMutationQuery/index.ts +45 -21
- package/src/components/Button/Icon/IconButton.tsx +6 -2
- package/src/components/CollapsibleItem/CollapsibleItem.cypress.spec.tsx +76 -0
- package/src/components/CollapsibleItem/CollapsibleItem.stories.tsx +26 -0
- package/src/components/CollapsibleItem/CollapsibleItem.tsx +43 -14
- package/src/components/CollapsibleItem/useCollapsibleItemStyles.ts +24 -1
- package/src/components/DataTable/DataListing.tsx +6 -0
- package/src/components/DataTable/DataTable.cypress.spec.tsx +193 -0
- package/src/components/DataTable/DataTable.stories.tsx +40 -0
- package/src/components/DataTable/DataTable.styles.ts +3 -0
- package/src/components/DataTable/DataTable.tsx +3 -3
- package/src/components/DataTable/Item/DataTableItem.styles.ts +7 -2
- package/src/components/DataTable/Item/DataTableItem.tsx +4 -4
- package/src/components/DataTable/index.ts +3 -1
- package/src/components/Form/Dashboard/DashboardForm.tsx +15 -12
- package/src/components/ItemComposition/Item.tsx +1 -1
- package/src/components/ItemComposition/ItemComposition.cypress.spec.tsx +116 -0
- package/src/components/ItemComposition/ItemComposition.styles.ts +8 -1
- package/src/components/ItemComposition/ItemComposition.tsx +26 -16
- package/src/components/Layout/PageLayout/PageLayout.tsx +1 -1
- package/src/components/Layout/PageLayout/PageLayoutActions.tsx +1 -0
- package/src/components/Layout/PageLayout/PageLayoutBody.tsx +1 -0
- package/src/components/Layout/PageLayout/PageLayoutHeader.tsx +5 -1
- package/src/components/Layout/PageLayout/PageQuickAccess.tsx +76 -0
- package/src/components/Layout/PageLayout/index.ts +3 -1
- package/src/components/Layout/PageLayout.cypress.spec.tsx +66 -0
- package/src/components/Modal/Modal.styles.ts +1 -1
- package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.stories.tsx +3 -3
- package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.tsx +1 -1
- package/src/components/Tooltip/ConfirmationTooltip/models.ts +1 -1
- package/src/index.ts +2 -2
- package/src/queryParameters/url/index.ts +5 -1
- package/src/utils/index.ts +2 -1
- package/src/utils/{useLicenseExpirationWarning.cypress.spec.tsx → useLicenseExpirationWarning.test.tsx} +48 -37
- package/src/utils/useLicenseExpirationWarning.ts +18 -18
- package/src/utils/usePluralizedTranslation.ts +21 -0
- package/src/screens/dashboard/DashboardsDetail.stories.tsx +0 -108
- package/src/screens/dashboard/DashboardsOverview.stories.tsx +0 -281
- 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
|
-
}:
|
|
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(
|
|
134
|
-
element
|
|
135
|
-
|
|
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:
|
|
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'
|
|
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
|
-
}:
|
|
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
|
-
|
|
48
|
-
})`;
|
|
46
|
+
const content = `${truncate(event.content)} (${t(labelBy)} ${event.contact
|
|
47
|
+
?.name})`;
|
|
49
48
|
|
|
50
49
|
return (
|
|
51
50
|
<g>
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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 =
|
|
65
|
-
? slice(0,
|
|
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
|
-
|
|
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
|
-
|
|
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'
|
|
30
|
+
const displayedLines = reject(propEq(false, 'display'), lines);
|
|
31
31
|
const getLineByMetric = (metric_id: number): Line =>
|
|
32
|
-
find(propEq(
|
|
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(
|
|
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(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
if (!equals(index, props.length - 1)) {
|
|
83
|
+
return body;
|
|
84
|
+
}
|
|
84
85
|
|
|
85
|
-
|
|
86
|
-
|
|
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'
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
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 SortableListContent = ({
|
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
const itemIndex = findIndex(propEq(
|
|
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(
|
|
80
|
+
const index = findIndex(propEq(id, 'id'), values);
|
|
81
81
|
|
|
82
82
|
const newSelectedValues = remove(index, 1, values);
|
|
83
83
|
|