@odigos/ui-kit 0.0.10 → 0.0.12
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/CHANGELOG.md +15 -0
- package/lib/components/badge/index.d.ts +2 -2
- package/lib/components/data-card/data-card-fields/index.d.ts +14 -14
- package/lib/components/data-card/index.d.ts +2 -2
- package/lib/components/data-tab/index.d.ts +3 -3
- package/lib/components/delete-warning/index.d.ts +2 -2
- package/lib/components/describe-row/index.d.ts +2 -2
- package/lib/components/divider/index.d.ts +2 -2
- package/lib/components/icon-group/index.d.ts +2 -2
- package/lib/components/icon-wrapped/index.d.ts +2 -2
- package/lib/components/interactive-table/index.d.ts +9 -8
- package/lib/components/interactive-table/table-row.d.ts +13 -0
- package/lib/components/monitors-checkboxes/index.d.ts +4 -4
- package/lib/components/monitors-icons/index.d.ts +2 -2
- package/lib/components/notification-note/index.d.ts +2 -2
- package/lib/components/status/index.d.ts +2 -2
- package/lib/components/stepper/index.d.ts +1 -1
- package/lib/components/warning-modal/index.d.ts +2 -2
- package/lib/components.js +8 -8
- package/lib/constants/strings/index.d.ts +10 -10
- package/lib/constants.js +4 -4
- package/lib/containers/action-drawer/build-card.d.ts +2 -2
- package/lib/containers/action-drawer/index.d.ts +2 -2
- package/lib/containers/action-form/custom-fields/index.d.ts +2 -2
- package/lib/containers/data-flow/edges/labeled-edge.d.ts +2 -2
- package/lib/containers/data-flow/helpers/get-main-container-language.d.ts +2 -2
- package/lib/containers/data-flow/helpers/get-node-positions.d.ts +2 -2
- package/lib/containers/data-flow/nodes/add-node.d.ts +3 -3
- package/lib/containers/data-flow/nodes/base-node.d.ts +5 -5
- package/lib/containers/data-flow/nodes/edged-node.d.ts +2 -2
- package/lib/containers/data-flow/nodes/frame-node.d.ts +2 -2
- package/lib/containers/data-flow/nodes/header-node.d.ts +2 -2
- package/lib/containers/data-flow/nodes/scroll-node.d.ts +5 -5
- package/lib/containers/data-flow/nodes/skeleton-node.d.ts +2 -2
- package/lib/containers/data-flow-actions-menu/index.d.ts +2 -2
- package/lib/containers/data-flow-actions-menu/search/search-results/builder.d.ts +2 -2
- package/lib/containers/destination-drawer/build-card.d.ts +2 -2
- package/lib/containers/destination-form/test-connection/index.d.ts +2 -2
- package/lib/containers/instrumentation-rule-drawer/build-card.d.ts +2 -2
- package/lib/containers/instrumentation-rule-form/custom-fields/index.d.ts +2 -2
- package/lib/containers/side-nav/index.d.ts +8 -8
- package/lib/containers/source-drawer/build-card.d.ts +1 -1
- package/lib/containers.js +373 -366
- package/lib/data/sources/index.d.ts +3 -3
- package/lib/functions/get-action-icon/index.d.ts +2 -2
- package/lib/functions/get-conditions-booleans/index.d.ts +2 -2
- package/lib/functions/get-entity-icon/index.d.ts +2 -2
- package/lib/functions/get-entity-label/index.d.ts +2 -2
- package/lib/functions/get-id-from-sse-target/index.d.ts +2 -2
- package/lib/functions/get-instrumentation-rule-icon/index.d.ts +2 -2
- package/lib/functions/get-metric-for-entity/index.d.ts +2 -2
- package/lib/functions/get-monitor-icon/index.d.ts +2 -2
- package/lib/functions/get-platform-icon/index.d.ts +2 -2
- package/lib/functions/get-platform-label/index.d.ts +2 -2
- package/lib/functions/get-programming-language-icon/index.d.ts +2 -2
- package/lib/functions/get-sse-target-from-id/index.d.ts +2 -2
- package/lib/functions/get-status-icon/index.d.ts +2 -2
- package/lib/functions/index.d.ts +0 -1
- package/lib/functions.js +9 -20
- package/lib/hooks.js +7 -7
- package/lib/icons.js +2 -2
- package/lib/{index-BFct3S32.js → index-7-KCQK-x.js} +2 -2
- package/lib/{index-ixs381n-.js → index-9ObpINp4.js} +4 -4
- package/lib/{index-Do8ODRlA.js → index-B5wdZoej.js} +106 -111
- package/lib/{index-eF2JXMVR.js → index-BtuW12KL.js} +22 -22
- package/lib/{index-CZe2VX28.js → index-CJKFedQi.js} +31 -31
- package/lib/{index-DB1gmCsH.js → index-CYn62h8x.js} +33 -33
- package/lib/{index-DnmWFsTQ.js → index-C_0J5P9M.js} +10 -10
- package/lib/{index-DIcomki-.js → index-DYEcdkUF.js} +19 -19
- package/lib/{index-BumPE6cF.js → index-Db_ZDrEr.js} +13 -13
- package/lib/store/useDrawerStore.d.ts +2 -2
- package/lib/store/useEntityStore.d.ts +5 -5
- package/lib/store/usePendingStore.d.ts +2 -2
- package/lib/store.js +1 -1
- package/lib/theme.js +1 -1
- package/lib/types/actions/index.d.ts +14 -14
- package/lib/types/common/index.d.ts +80 -76
- package/lib/types/connection/index.d.ts +3 -3
- package/lib/types/data-flow/index.d.ts +15 -15
- package/lib/types/destinations/index.d.ts +2 -2
- package/lib/types/instrumentation-rules/index.d.ts +28 -28
- package/lib/types/signals/index.d.ts +5 -5
- package/lib/types/sources/index.d.ts +7 -7
- package/lib/types.js +164 -159
- package/lib/{useSourceSelectionFormData-CxdOP9FT.js → useSourceSelectionFormData-BnlRp8m3.js} +40 -40
- package/lib/{useTransition-Dfxjcy-C.js → useTransition-CFmm4scp.js} +23 -23
- package/package.json +1 -1
- package/lib/components/interactive-table/row.d.ts +0 -13
- package/lib/functions/derive-type-from-rule/index.d.ts +0 -2
package/lib/containers.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import React, { useState, useEffect, forwardRef, useImperativeHandle, useRef, useMemo, useId, memo, useContext, createContext, useCallback, useLayoutEffect, Fragment } from 'react';
|
|
2
2
|
import styled, { css } from 'styled-components';
|
|
3
|
-
import { A as ACTION_OPTIONS, M as MONITORS_OPTIONS, I as INSTRUMENTATION_RULE_OPTIONS } from './index-
|
|
4
|
-
import { D as DISPLAY_TITLES, F as FORM_ALERTS } from './index-
|
|
5
|
-
import {
|
|
6
|
-
import { f as
|
|
7
|
-
import { g as usePendingStore, f as useNotificationStore, a as useDrawerStore, b as useEntityStore, e as useModalStore, c as useFilterStore, s as styleInject, h as useSelectedStore, d as useInstrumentStore, k as getEntityId, i as useSetupStore, u as useDarkMode } from './index-
|
|
3
|
+
import { A as ACTION_OPTIONS, M as MONITORS_OPTIONS, I as INSTRUMENTATION_RULE_OPTIONS } from './index-CJKFedQi.js';
|
|
4
|
+
import { D as DISPLAY_TITLES, F as FORM_ALERTS } from './index-C_0J5P9M.js';
|
|
5
|
+
import { ActionType, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, AddNodeTypes, EdgeTypes, FieldTypes, SignalType, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType } from './types.js';
|
|
6
|
+
import { f as DataCardFieldTypes, p as FieldLabel, b as Checkbox, o as FieldError, v as Input, x as InputTable, K as KeyValueInputsList, w as InputList, U as Text, O as Segment, S as SectionTitle, j as DocsButton, z as MonitorsCheckboxes, V as TextArea, k as Drawer, h as DeleteWarning, C as CancelWarning, d as ConditionDetails, D as DataCard, M as Modal, N as NavigationButtons, a2 as ModalBody, A as AutocompleteInput, i as Divider, Q as Status, _ as FlexRow, X as Tooltip, s as IconWrapped, G as MonitorsIcons, a3 as TableContainer, a4 as TableTitleWrap, r as IconTitleBadge, a5 as TableWrap, y as InteractiveTable, a0 as CenterThis, J as NoDataFound, $ as FlexColumn, Y as TraceLoader, a as Badge, B as Button, E as ExtendArrow, n as Dropdown, a6 as getDefaultExportFromCjs, F as FadeLoader, g as DataTab, P as SkeletonLoader, W as Toggle, L as NotificationNote, R as Stepper, I as IconButton, e as DataCardFields, t as IconsNav, q as IconGroup } from './index-B5wdZoej.js';
|
|
7
|
+
import { g as usePendingStore, f as useNotificationStore, a as useDrawerStore, b as useEntityStore, e as useModalStore, c as useFilterStore, s as styleInject, h as useSelectedStore, d as useInstrumentStore, k as getEntityId, i as useSetupStore, u as useDarkMode } from './index-DYEcdkUF.js';
|
|
8
8
|
import Theme from './theme.js';
|
|
9
9
|
import { i as isEmpty, s as safeJsonParse } from './index-BZS1ijMm.js';
|
|
10
|
-
import { i as CheckCircledIcon, h as ErrorTriangleIcon, W as WarningTriangleIcon } from './index-
|
|
10
|
+
import { i as CheckCircledIcon, h as ErrorTriangleIcon, W as WarningTriangleIcon } from './index-9ObpINp4.js';
|
|
11
11
|
import { C as CrossCircledIcon, E as EditIcon, O as OdigosLogoText, b as OverviewIcon, F as FilterIcon, N as NotificationIcon, S as SlackLogo, a as FolderIcon, K as KeyIcon, T as TerminalIcon } from './index-3KUV6Vlt.js';
|
|
12
|
-
import { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-
|
|
13
|
-
import { u as useActionFormData, a as useClickNode, c as useDestinationFormData, b as useClickNotification, d as useSourceFormData, e as useSourceSelectionFormData } from './useSourceSelectionFormData-
|
|
14
|
-
import { d as useKeyDown, e as useOnClickOutside, u as useContainerSize, c as useInstrumentationRuleFormData, g as useTransition, f as useTimeAgo, a as useCopy } from './useTransition-
|
|
12
|
+
import { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-Db_ZDrEr.js';
|
|
13
|
+
import { u as useActionFormData, a as useClickNode, c as useDestinationFormData, b as useClickNotification, d as useSourceFormData, e as useSourceSelectionFormData } from './useSourceSelectionFormData-BnlRp8m3.js';
|
|
14
|
+
import { d as useKeyDown, e as useOnClickOutside, u as useContainerSize, c as useInstrumentationRuleFormData, g as useTransition, f as useTimeAgo, a as useCopy } from './useTransition-CFmm4scp.js';
|
|
15
15
|
import { T as TrashIcon, S as SearchIcon, P as PlusIcon$1, A as ArrowIcon, a as CopyIcon, f as CheckIcon, g as CrossIcon } from './index-D_Qn2U89.js';
|
|
16
|
-
import { m as mapConditions, b as getStatusIcon, c as capitalizeFirstLetter } from './index-
|
|
17
|
-
import { f as filterActions, g as getConditionsBooleans, j as getEntityLabel, i as getEntityIcon, s as sleep$1, l as getPlatformIcon, m as getPlatformLabel, d as formatBytes, h as getContainersIcons, n as getValueForRange, b as filterSources, a as filterDestinations, c as compareCondition, k as getMetricForEntity, e as getContainersInstrumentedCount, o as isOverTime } from './index-
|
|
16
|
+
import { m as mapConditions, b as getStatusIcon, c as capitalizeFirstLetter } from './index-CYn62h8x.js';
|
|
17
|
+
import { f as filterActions, g as getConditionsBooleans, j as getEntityLabel, i as getEntityIcon, s as sleep$1, l as getPlatformIcon, m as getPlatformLabel, d as formatBytes, h as getContainersIcons, n as getValueForRange, b as filterSources, a as filterDestinations, c as compareCondition, k as getMetricForEntity, e as getContainersInstrumentedCount, o as isOverTime } from './index-BtuW12KL.js';
|
|
18
18
|
import require$$1 from 'use-sync-external-store/shim';
|
|
19
19
|
import { createPortal } from 'react-dom';
|
|
20
20
|
import { O as OdigosLogo } from './index-BGlk5VhF.js';
|
|
@@ -26,24 +26,24 @@ import 'babel-runtime/helpers/createClass';
|
|
|
26
26
|
import 'babel-runtime/helpers/possibleConstructorReturn';
|
|
27
27
|
import 'babel-runtime/helpers/inherits';
|
|
28
28
|
import 'object-assign';
|
|
29
|
-
import './index-
|
|
29
|
+
import './index-7-KCQK-x.js';
|
|
30
30
|
|
|
31
31
|
const buildCard$3 = (action) => {
|
|
32
32
|
const { type, spec: { actionName, notes, signals, disabled, collectContainerAttributes, collectWorkloadId, collectClusterId, labelsAttributes, annotationsAttributes, clusterAttributes, attributeNamesToDelete, renames, piiCategories, fallbackSamplingRatio, samplingPercentage, endpointsFilters, }, } = action;
|
|
33
33
|
const arr = [
|
|
34
34
|
{ title: DISPLAY_TITLES.TYPE, value: type },
|
|
35
|
-
{ type:
|
|
36
|
-
{ type:
|
|
35
|
+
{ type: DataCardFieldTypes.ActiveStatus, title: DISPLAY_TITLES.STATUS, value: String(!disabled) },
|
|
36
|
+
{ type: DataCardFieldTypes.Monitors, title: DISPLAY_TITLES.SIGNALS_FOR_PROCESSING, value: signals.map((str) => str.toLowerCase()).join(', ') },
|
|
37
37
|
{ title: DISPLAY_TITLES.NAME, value: actionName },
|
|
38
38
|
{ title: DISPLAY_TITLES.NOTES, value: notes },
|
|
39
|
-
{ type:
|
|
39
|
+
{ type: DataCardFieldTypes.Divider },
|
|
40
40
|
];
|
|
41
|
-
if (type ===
|
|
41
|
+
if (type === ActionType.K8sAttributes) {
|
|
42
42
|
arr.push({ title: 'Collect Container Attributes', value: String(collectContainerAttributes) });
|
|
43
43
|
arr.push({ title: 'Collect Workload ID', value: String(collectWorkloadId) });
|
|
44
44
|
arr.push({ title: 'Collect Cluster ID', value: String(collectClusterId) });
|
|
45
45
|
if (!!labelsAttributes?.length)
|
|
46
|
-
arr.push({ type:
|
|
46
|
+
arr.push({ type: DataCardFieldTypes.Divider });
|
|
47
47
|
labelsAttributes?.forEach(({ labelKey, attributeKey }, idx) => {
|
|
48
48
|
let str = '';
|
|
49
49
|
str += `Label Key: ${labelKey}\n`;
|
|
@@ -51,7 +51,7 @@ const buildCard$3 = (action) => {
|
|
|
51
51
|
arr.push({ title: `Label${labelsAttributes.length > 1 ? ` #${idx + 1}` : ''}`, value: str });
|
|
52
52
|
});
|
|
53
53
|
if (!!annotationsAttributes?.length)
|
|
54
|
-
arr.push({ type:
|
|
54
|
+
arr.push({ type: DataCardFieldTypes.Divider });
|
|
55
55
|
annotationsAttributes?.forEach(({ annotationKey, attributeKey }, idx) => {
|
|
56
56
|
let str = '';
|
|
57
57
|
str += `Annotation Key: ${annotationKey}\n`;
|
|
@@ -59,7 +59,7 @@ const buildCard$3 = (action) => {
|
|
|
59
59
|
arr.push({ title: `Annotation${annotationsAttributes.length > 1 ? ` #${idx + 1}` : ''}`, value: str });
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
-
if (type ===
|
|
62
|
+
if (type === ActionType.AddClusterInfo) {
|
|
63
63
|
let str = '';
|
|
64
64
|
clusterAttributes?.forEach(({ attributeName, attributeStringValue }, idx) => {
|
|
65
65
|
str += `${attributeName}: ${attributeStringValue}`;
|
|
@@ -68,7 +68,7 @@ const buildCard$3 = (action) => {
|
|
|
68
68
|
});
|
|
69
69
|
arr.push({ title: 'Attributes', value: str });
|
|
70
70
|
}
|
|
71
|
-
if (type ===
|
|
71
|
+
if (type === ActionType.DeleteAttributes) {
|
|
72
72
|
let str = '';
|
|
73
73
|
attributeNamesToDelete?.forEach((attributeName, idx) => {
|
|
74
74
|
str += attributeName;
|
|
@@ -77,7 +77,7 @@ const buildCard$3 = (action) => {
|
|
|
77
77
|
});
|
|
78
78
|
arr.push({ title: 'Attributes', value: str });
|
|
79
79
|
}
|
|
80
|
-
if (type ===
|
|
80
|
+
if (type === ActionType.RenameAttributes) {
|
|
81
81
|
let str = '';
|
|
82
82
|
const entries = Object.entries(renames || {});
|
|
83
83
|
entries.forEach(([oldName, newName], idx) => {
|
|
@@ -87,7 +87,7 @@ const buildCard$3 = (action) => {
|
|
|
87
87
|
});
|
|
88
88
|
arr.push({ title: 'Attributes', value: str });
|
|
89
89
|
}
|
|
90
|
-
if (type ===
|
|
90
|
+
if (type === ActionType.PiiMasking) {
|
|
91
91
|
let str = '';
|
|
92
92
|
piiCategories?.forEach((attributeName, idx) => {
|
|
93
93
|
str += attributeName;
|
|
@@ -96,13 +96,13 @@ const buildCard$3 = (action) => {
|
|
|
96
96
|
});
|
|
97
97
|
arr.push({ title: 'Categories', value: str });
|
|
98
98
|
}
|
|
99
|
-
if (type ===
|
|
99
|
+
if (type === ActionType.ErrorSampler) {
|
|
100
100
|
arr.push({ title: 'Sampling Ratio', value: String(fallbackSamplingRatio) });
|
|
101
101
|
}
|
|
102
|
-
if (type ===
|
|
102
|
+
if (type === ActionType.ProbabilisticSampler) {
|
|
103
103
|
arr.push({ title: 'Sampling Percentage', value: String(samplingPercentage) });
|
|
104
104
|
}
|
|
105
|
-
if (type ===
|
|
105
|
+
if (type === ActionType.LatencySampler) {
|
|
106
106
|
endpointsFilters?.forEach(({ serviceName, httpRoute, minimumLatencyThreshold, fallbackSamplingRatio }, idx) => {
|
|
107
107
|
let str = '';
|
|
108
108
|
str += `Service Name: ${serviceName}\n`;
|
|
@@ -291,14 +291,14 @@ const ProbabilisticSampler = ({ value, setValue, formErrors }) => {
|
|
|
291
291
|
};
|
|
292
292
|
|
|
293
293
|
const componentsMap$1 = {
|
|
294
|
-
[
|
|
295
|
-
[
|
|
296
|
-
[
|
|
297
|
-
[
|
|
298
|
-
[
|
|
299
|
-
[
|
|
300
|
-
[
|
|
301
|
-
[
|
|
294
|
+
[ActionType.K8sAttributes]: K8sAttributes,
|
|
295
|
+
[ActionType.AddClusterInfo]: AddClusterInfo,
|
|
296
|
+
[ActionType.DeleteAttributes]: DeleteAttributes,
|
|
297
|
+
[ActionType.RenameAttributes]: RenameAttributes,
|
|
298
|
+
[ActionType.PiiMasking]: PiiMasking,
|
|
299
|
+
[ActionType.ErrorSampler]: ErrorSampler,
|
|
300
|
+
[ActionType.ProbabilisticSampler]: ProbabilisticSampler,
|
|
301
|
+
[ActionType.LatencySampler]: LatencySampler,
|
|
302
302
|
};
|
|
303
303
|
const CustomFields$1 = ({ actionType, value, setValue, formErrors }) => {
|
|
304
304
|
if (!actionType)
|
|
@@ -341,7 +341,7 @@ const OverviewDrawer = ({ children, width = 640, title, titleTooltip, icon, icon
|
|
|
341
341
|
const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);
|
|
342
342
|
const [isCancelModalOpen, setIsCancelModalOpen] = useState(false);
|
|
343
343
|
const titleRef = useRef(null);
|
|
344
|
-
const isSource = drawerType ===
|
|
344
|
+
const isSource = drawerType === EntityTypes.Source;
|
|
345
345
|
const closeDrawer = () => {
|
|
346
346
|
setDrawerType(null);
|
|
347
347
|
setDrawerEntityId(null);
|
|
@@ -391,7 +391,7 @@ const OverviewDrawer = ({ children, width = 640, title, titleTooltip, icon, icon
|
|
|
391
391
|
}, [drawerType, drawerEntityId]);
|
|
392
392
|
const handlePending = (action) => {
|
|
393
393
|
addNotification({
|
|
394
|
-
type:
|
|
394
|
+
type: StatusType.Warning,
|
|
395
395
|
title: 'Pending',
|
|
396
396
|
message: `Cannot click ${action}, ${drawerType} is pending`,
|
|
397
397
|
hideFromHistory: true,
|
|
@@ -483,7 +483,7 @@ const DataContainer$3 = styled.div `
|
|
|
483
483
|
const ActionDrawer = ({ updateAction, deleteAction }) => {
|
|
484
484
|
const { actions } = useEntityStore();
|
|
485
485
|
const { drawerType, drawerEntityId, setDrawerEntityId, setDrawerType } = useDrawerStore();
|
|
486
|
-
const isOpen = drawerType !==
|
|
486
|
+
const isOpen = drawerType !== EntityTypes.Action;
|
|
487
487
|
const onClose = () => {
|
|
488
488
|
setDrawerType(null);
|
|
489
489
|
setDrawerEntityId(null);
|
|
@@ -521,7 +521,7 @@ const ActionDrawer = ({ updateAction, deleteAction }) => {
|
|
|
521
521
|
onClose();
|
|
522
522
|
};
|
|
523
523
|
const handleSave = (newTitle) => {
|
|
524
|
-
if (validateForm({ withAlert: true, alertTitle:
|
|
524
|
+
if (validateForm({ withAlert: true, alertTitle: Crud.Update })) {
|
|
525
525
|
const title = newTitle !== thisItem.type ? newTitle : '';
|
|
526
526
|
handleFormChange('name', title);
|
|
527
527
|
updateAction(drawerEntityId, { ...formData, name: title });
|
|
@@ -540,7 +540,7 @@ const ActionDrawer = ({ updateAction, deleteAction }) => {
|
|
|
540
540
|
|
|
541
541
|
const ActionModal = ({ createAction }) => {
|
|
542
542
|
const { currentModal, setCurrentModal } = useModalStore();
|
|
543
|
-
const isOpen = currentModal ===
|
|
543
|
+
const isOpen = currentModal === EntityTypes.Action;
|
|
544
544
|
const { formData, formErrors, handleFormChange, resetFormData, validateForm } = useActionFormData();
|
|
545
545
|
const [selectedItem, setSelectedItem] = useState(undefined);
|
|
546
546
|
const handleClose = () => {
|
|
@@ -554,7 +554,7 @@ const ActionModal = ({ createAction }) => {
|
|
|
554
554
|
setSelectedItem(item);
|
|
555
555
|
};
|
|
556
556
|
const handleSubmit = () => {
|
|
557
|
-
const isFormOk = validateForm({ withAlert: true, alertTitle:
|
|
557
|
+
const isFormOk = validateForm({ withAlert: true, alertTitle: Crud.Create });
|
|
558
558
|
if (!isFormOk)
|
|
559
559
|
return null;
|
|
560
560
|
createAction(formData);
|
|
@@ -580,7 +580,7 @@ const ActionModal = ({ createAction }) => {
|
|
|
580
580
|
const buildSpecCell$1 = (action) => {
|
|
581
581
|
const { type, spec: { collectContainerAttributes, collectWorkloadId, collectClusterId, labelsAttributes, annotationsAttributes, clusterAttributes, attributeNamesToDelete, renames, piiCategories, fallbackSamplingRatio, samplingPercentage, endpointsFilters, }, } = action;
|
|
582
582
|
let str = '';
|
|
583
|
-
if (type ===
|
|
583
|
+
if (type === ActionType.K8sAttributes) {
|
|
584
584
|
if (collectContainerAttributes)
|
|
585
585
|
str += 'Container Attributes, ';
|
|
586
586
|
if (collectWorkloadId)
|
|
@@ -596,21 +596,21 @@ const buildSpecCell$1 = (action) => {
|
|
|
596
596
|
;
|
|
597
597
|
});
|
|
598
598
|
}
|
|
599
|
-
if (type ===
|
|
599
|
+
if (type === ActionType.AddClusterInfo) {
|
|
600
600
|
clusterAttributes?.forEach(({ attributeName, attributeStringValue }, idx) => {
|
|
601
601
|
str += `${attributeName}: ${attributeStringValue}`;
|
|
602
602
|
if (idx < clusterAttributes.length - 1)
|
|
603
603
|
str += ', ';
|
|
604
604
|
});
|
|
605
605
|
}
|
|
606
|
-
if (type ===
|
|
606
|
+
if (type === ActionType.DeleteAttributes) {
|
|
607
607
|
attributeNamesToDelete?.forEach((attributeName, idx) => {
|
|
608
608
|
str += attributeName;
|
|
609
609
|
if (idx < attributeNamesToDelete.length - 1)
|
|
610
610
|
str += ', ';
|
|
611
611
|
});
|
|
612
612
|
}
|
|
613
|
-
if (type ===
|
|
613
|
+
if (type === ActionType.RenameAttributes) {
|
|
614
614
|
const entries = Object.entries(renames || {});
|
|
615
615
|
entries.forEach(([oldName, newName], idx) => {
|
|
616
616
|
str += `${oldName}: ${newName}`;
|
|
@@ -618,21 +618,21 @@ const buildSpecCell$1 = (action) => {
|
|
|
618
618
|
str += ', ';
|
|
619
619
|
});
|
|
620
620
|
}
|
|
621
|
-
if (type ===
|
|
621
|
+
if (type === ActionType.PiiMasking) {
|
|
622
622
|
piiCategories?.forEach((attributeName, idx) => {
|
|
623
623
|
str += attributeName;
|
|
624
624
|
if (idx < piiCategories.length - 1)
|
|
625
625
|
str += ', ';
|
|
626
626
|
});
|
|
627
627
|
}
|
|
628
|
-
if (type ===
|
|
628
|
+
if (type === ActionType.ErrorSampler) {
|
|
629
629
|
str += String(fallbackSamplingRatio);
|
|
630
630
|
}
|
|
631
|
-
if (type ===
|
|
631
|
+
if (type === ActionType.ProbabilisticSampler) {
|
|
632
632
|
str += String(samplingPercentage);
|
|
633
633
|
str += '%';
|
|
634
634
|
}
|
|
635
|
-
if (type ===
|
|
635
|
+
if (type === ActionType.LatencySampler) {
|
|
636
636
|
endpointsFilters?.forEach(({ serviceName, httpRoute, minimumLatencyThreshold, fallbackSamplingRatio }, idx) => {
|
|
637
637
|
str += `Endpoint${endpointsFilters.length > 1 ? ` #${idx + 1}` : ''}=${serviceName}${httpRoute}`;
|
|
638
638
|
str += ` Latency=${minimumLatencyThreshold}`;
|
|
@@ -645,17 +645,17 @@ const buildSpecCell$1 = (action) => {
|
|
|
645
645
|
};
|
|
646
646
|
|
|
647
647
|
const TableCellConditions = ({ conditions }) => {
|
|
648
|
-
const errors = useMemo(() => conditions?.filter(({ status }) => status ===
|
|
649
|
-
const warnings = useMemo(() => conditions?.filter(({ status }) => status ===
|
|
650
|
-
const disableds = useMemo(() => conditions?.filter(({ status }) => status ===
|
|
651
|
-
const isLoading = useMemo(() => !conditions?.length || !!conditions?.find(({ status }) => status ===
|
|
652
|
-
return (React.createElement("div", { style: { lineHeight: 1 } }, errors.length > 0 ? (React.createElement(ConditionsStatuses, { conditions: errors })) : warnings.length > 0 ? (React.createElement(ConditionsStatuses, { conditions: warnings })) : disableds.length > 0 ? (React.createElement(ConditionsStatuses, { conditions: disableds })) : isLoading ? (React.createElement(Status, { status:
|
|
648
|
+
const errors = useMemo(() => conditions?.filter(({ status }) => status === StatusType.Error) || [], [conditions]);
|
|
649
|
+
const warnings = useMemo(() => conditions?.filter(({ status }) => status === StatusType.Warning) || [], [conditions]);
|
|
650
|
+
const disableds = useMemo(() => conditions?.filter(({ status }) => status === OtherStatus.Disabled) || [], [conditions]);
|
|
651
|
+
const isLoading = useMemo(() => !conditions?.length || !!conditions?.find(({ status }) => status === OtherStatus.Loading), [conditions]);
|
|
652
|
+
return (React.createElement("div", { style: { lineHeight: 1 } }, errors.length > 0 ? (React.createElement(ConditionsStatuses, { conditions: errors })) : warnings.length > 0 ? (React.createElement(ConditionsStatuses, { conditions: warnings })) : disableds.length > 0 ? (React.createElement(ConditionsStatuses, { conditions: disableds })) : isLoading ? (React.createElement(Status, { status: OtherStatus.Loading, title: OtherStatus.Loading, withBorder: true, withIcon: true })) : (React.createElement(Status, { status: StatusType.Success, title: StatusType.Success, withBorder: true, withIcon: true }))));
|
|
653
653
|
};
|
|
654
654
|
const ConditionsStatuses = ({ conditions }) => {
|
|
655
655
|
const theme = Theme.useTheme();
|
|
656
656
|
return (React.createElement(FlexRow, null, mapConditions(conditions).map(({ status, type, reason, message, lastTransitionTime }) => {
|
|
657
657
|
if (status === 'loading' || status === 'disabled')
|
|
658
|
-
status =
|
|
658
|
+
status = StatusType.Info;
|
|
659
659
|
const icon = getStatusIcon(status, theme);
|
|
660
660
|
return (React.createElement(Tooltip, { key: useId(), titleIcon: icon, title: type, text: message || reason || '', timestamp: lastTransitionTime },
|
|
661
661
|
React.createElement(Status, { status: status, title: reason || type, withBorder: true, withIcon: true })));
|
|
@@ -665,7 +665,7 @@ const ConditionsStatuses = ({ conditions }) => {
|
|
|
665
665
|
const columns$3 = [
|
|
666
666
|
{ key: 'icon', title: '' },
|
|
667
667
|
{ key: 'name', title: DISPLAY_TITLES.NAME, sortable: true },
|
|
668
|
-
{ key: 'signals', title: DISPLAY_TITLES.
|
|
668
|
+
{ key: 'signals', title: DISPLAY_TITLES.Monitors },
|
|
669
669
|
{ key: 'active-status', title: DISPLAY_TITLES.STATUS },
|
|
670
670
|
{ key: 'conditions', title: 'Conditions' },
|
|
671
671
|
{ key: 'type', title: DISPLAY_TITLES.TYPE, sortable: true },
|
|
@@ -681,8 +681,12 @@ const ActionTable = ({ maxHeight, maxWidth }) => {
|
|
|
681
681
|
const rows = useMemo(() => filtered.map((act) => {
|
|
682
682
|
const { hasErrors, hasWarnings, hasDisableds } = getConditionsBooleans(act.conditions || []);
|
|
683
683
|
return {
|
|
684
|
-
status: hasErrors ?
|
|
684
|
+
status: hasErrors ? StatusType.Error : hasWarnings ? StatusType.Warning : undefined,
|
|
685
685
|
faded: hasDisableds,
|
|
686
|
+
onClick: () => {
|
|
687
|
+
setDrawerType(EntityTypes.Action);
|
|
688
|
+
setDrawerEntityId(act.id);
|
|
689
|
+
},
|
|
686
690
|
cells: [
|
|
687
691
|
{
|
|
688
692
|
columnKey: 'icon',
|
|
@@ -690,7 +694,7 @@ const ActionTable = ({ maxHeight, maxWidth }) => {
|
|
|
690
694
|
},
|
|
691
695
|
{
|
|
692
696
|
columnKey: 'name',
|
|
693
|
-
value: getEntityLabel(act,
|
|
697
|
+
value: getEntityLabel(act, EntityTypes.Action, { prioritizeDisplayName: true }),
|
|
694
698
|
},
|
|
695
699
|
{
|
|
696
700
|
columnKey: 'type',
|
|
@@ -720,7 +724,7 @@ const ActionTable = ({ maxHeight, maxWidth }) => {
|
|
|
720
724
|
{
|
|
721
725
|
columnKey: 'active-status',
|
|
722
726
|
component: () => (React.createElement("div", { style: { lineHeight: 1 } },
|
|
723
|
-
React.createElement(Status, { status: act.spec.disabled ?
|
|
727
|
+
React.createElement(Status, { status: act.spec.disabled ? StatusType.Error : StatusType.Success, title: act.spec.disabled ? 'Inactive' : 'Active', withIcon: true, withBorder: true }))),
|
|
724
728
|
},
|
|
725
729
|
],
|
|
726
730
|
};
|
|
@@ -729,12 +733,9 @@ const ActionTable = ({ maxHeight, maxWidth }) => {
|
|
|
729
733
|
const badgeTooltip = useMemo(() => (filtered.length !== actions.length ? DISPLAY_TITLES.FILTERED_COUNT_TOOLTIP : undefined), [filtered, actions]);
|
|
730
734
|
return (React.createElement(TableContainer, { "$maxWidth": maxWidth },
|
|
731
735
|
React.createElement(TableTitleWrap, null,
|
|
732
|
-
React.createElement(IconTitleBadge, { icon: getEntityIcon(
|
|
736
|
+
React.createElement(IconTitleBadge, { icon: getEntityIcon(EntityTypes.Action), title: DISPLAY_TITLES.Actions, badge: badge, badgeTooltip: badgeTooltip, loading: actionsLoading })),
|
|
733
737
|
React.createElement(TableWrap, { "$maxHeight": maxHeight },
|
|
734
|
-
React.createElement(InteractiveTable, { columns: columns$3, rows: rows
|
|
735
|
-
setDrawerType(ENTITY_TYPES.ACTION);
|
|
736
|
-
setDrawerEntityId(filtered[idx].id);
|
|
737
|
-
} })),
|
|
738
|
+
React.createElement(InteractiveTable, { columns: columns$3, rows: rows })),
|
|
738
739
|
!filtered.length && (React.createElement(CenterThis, { style: { marginTop: '2rem' } },
|
|
739
740
|
React.createElement(NoDataFound, null)))));
|
|
740
741
|
};
|
|
@@ -896,13 +897,13 @@ const ComputePlatformSelect = ({ connections, selected, onSelect, onViewAll }) =
|
|
|
896
897
|
isOpen && withSelect && (React.createElement(AbsoluteContainer$2, null,
|
|
897
898
|
React.createElement(HeadWrap, null,
|
|
898
899
|
React.createElement(Input, { placeholder: 'Search...', icon: SearchIcon, value: searchText, onChange: (e) => setSearchText(e.target.value.toLowerCase()) })),
|
|
899
|
-
React.createElement(VerticalScroll$1, { style: { maxHeight: '240px' } }, filtered.map(({ id, type, name, status }, idx) => (React.createElement(SelectionButton, { key: `platform-${id}`, icon: () => getPlatformIcon(type)({ fill: status ===
|
|
900
|
-
if (status ===
|
|
900
|
+
React.createElement(VerticalScroll$1, { style: { maxHeight: '240px' } }, filtered.map(({ id, type, name, status }, idx) => (React.createElement(SelectionButton, { key: `platform-${id}`, icon: () => getPlatformIcon(type)({ fill: status === StatusType.Success ? theme.text.success : theme.text.error }), label: `${!!name ? name : getPlatformLabel(type)} (${id})`, isSelected: selected?.id === id, onClick: () => {
|
|
901
|
+
if (status === StatusType.Success) {
|
|
901
902
|
onSelect(filtered[idx]);
|
|
902
903
|
}
|
|
903
904
|
else {
|
|
904
905
|
addNotification({
|
|
905
|
-
type:
|
|
906
|
+
type: StatusType.Warning,
|
|
906
907
|
title: 'Connection lost',
|
|
907
908
|
message: 'Cannot connect to this platform',
|
|
908
909
|
hideFromHistory: true,
|
|
@@ -916,9 +917,23 @@ const ComputePlatformSelect = ({ connections, selected, onSelect, onViewAll }) =
|
|
|
916
917
|
|
|
917
918
|
const ComputePlatforms = ({ connections, onSelect }) => {
|
|
918
919
|
const { searchText, platformTypes, statuses } = useFilterStore();
|
|
919
|
-
const filtered = connections.filter(({ id, type, status }) => (!searchText || id.toLowerCase().includes(searchText)) &&
|
|
920
|
+
const filtered = useMemo(() => connections.filter(({ id, type, status }) => (!searchText || id.toLowerCase().includes(searchText)) &&
|
|
920
921
|
(!platformTypes?.length || platformTypes.find((opt) => opt.id === type)) &&
|
|
921
|
-
(!statuses?.length || statuses.find((opt) => opt.id === status)));
|
|
922
|
+
(!statuses?.length || statuses.find((opt) => opt.id === status))), [connections, searchText, platformTypes, statuses]);
|
|
923
|
+
const rows = useMemo(() => filtered.map((item) => ({
|
|
924
|
+
onClick: () => onSelect(item),
|
|
925
|
+
cells: [
|
|
926
|
+
{ columnKey: 'id', value: item.id },
|
|
927
|
+
{ columnKey: 'type', value: item.type },
|
|
928
|
+
{ columnKey: 'name', value: item.name || getPlatformLabel(item.type) },
|
|
929
|
+
{ columnKey: 'icon', icon: getPlatformIcon(item.type) },
|
|
930
|
+
{
|
|
931
|
+
columnKey: 'status',
|
|
932
|
+
component: () => (React.createElement("div", { style: { lineHeight: 1 } },
|
|
933
|
+
React.createElement(Status, { title: status === StatusType.Success ? 'connection alive' : 'connection lost', status: item.status, withIcon: true, withBorder: true }))),
|
|
934
|
+
},
|
|
935
|
+
],
|
|
936
|
+
})), [filtered]);
|
|
922
937
|
return (React.createElement(React.Fragment, null,
|
|
923
938
|
React.createElement(InteractiveTable, { columns: [
|
|
924
939
|
{ key: 'icon', title: '' },
|
|
@@ -926,19 +941,7 @@ const ComputePlatforms = ({ connections, onSelect }) => {
|
|
|
926
941
|
{ key: 'type', title: 'Type' },
|
|
927
942
|
{ key: 'status', title: 'Status' },
|
|
928
943
|
{ key: 'id', title: 'Unique ID' },
|
|
929
|
-
], rows:
|
|
930
|
-
cells: [
|
|
931
|
-
{ columnKey: 'id', value: id },
|
|
932
|
-
{ columnKey: 'type', value: type },
|
|
933
|
-
{ columnKey: 'name', value: !!name ? name : getPlatformLabel(type) },
|
|
934
|
-
{ columnKey: 'icon', icon: getPlatformIcon(type) },
|
|
935
|
-
{
|
|
936
|
-
columnKey: 'status',
|
|
937
|
-
component: () => (React.createElement("div", { style: { lineHeight: 1 } },
|
|
938
|
-
React.createElement(Status, { title: status === STATUS_TYPE.SUCCESS ? 'connection alive' : 'connection lost', status: status, withIcon: true, withBorder: true }))),
|
|
939
|
-
},
|
|
940
|
-
],
|
|
941
|
-
})), onRowClick: (idx) => onSelect(filtered[idx]) }),
|
|
944
|
+
], rows: rows }),
|
|
942
945
|
!filtered.length && (React.createElement(CenterThis, { style: { marginTop: '2rem' } },
|
|
943
946
|
React.createElement(NoDataFound, null)))));
|
|
944
947
|
};
|
|
@@ -978,7 +981,7 @@ const ErrorDropdown = ({ title = 'Error Message', value, onSelect, onDeselect, d
|
|
|
978
981
|
// instead, it is now optional and we should fallback to "reason" which is also optional.
|
|
979
982
|
sources.forEach(({ conditions }) => {
|
|
980
983
|
mapConditions(conditions || []).forEach(({ status, message, reason }) => {
|
|
981
|
-
if (status ===
|
|
984
|
+
if (status === StatusType.Error && !payload.find((opt) => opt.id === message)) {
|
|
982
985
|
if (!!message) {
|
|
983
986
|
if (!payload.find((opt) => opt.id === message))
|
|
984
987
|
payload.push({ id: message, value: message });
|
|
@@ -12692,12 +12695,12 @@ const Container$i = styled.div `
|
|
|
12692
12695
|
`;
|
|
12693
12696
|
const BaseNode = memo(({ id: nodeId, data }) => {
|
|
12694
12697
|
const { nodeWidth, id: entityId, type: entityType, status, faded, title, subTitle, icon, icons, iconSrc, iconSrcs, monitors, isActive, raw } = data;
|
|
12695
|
-
const isSource = entityType ===
|
|
12698
|
+
const isSource = entityType === EntityTypes.Source;
|
|
12696
12699
|
const { isThisPending } = usePendingStore();
|
|
12697
12700
|
const isPending = isThisPending({ entityType, entityId });
|
|
12698
12701
|
const renderActions = () => {
|
|
12699
12702
|
const sourceIsInstrumenting = isSource && (!raw.conditions?.length || raw.conditions?.some(({ status }) => status === 'loading'));
|
|
12700
|
-
return (React.createElement(React.Fragment, null, isPending ? (React.createElement(FadeLoader, null)) : status ===
|
|
12703
|
+
return (React.createElement(React.Fragment, null, isPending ? (React.createElement(FadeLoader, null)) : status === StatusType.Error ? (React.createElement(ErrorTriangleIcon, { size: 20 })) : status === StatusType.Warning ? (React.createElement(WarningTriangleIcon, { size: 20 })) : sourceIsInstrumenting ? (React.createElement(FadeLoader, null)) : null));
|
|
12701
12704
|
};
|
|
12702
12705
|
const { selectedSources, setSelectedSources } = useSelectedStore();
|
|
12703
12706
|
const namespaces = { ...selectedSources };
|
|
@@ -12727,7 +12730,7 @@ const Container$h = styled.div `
|
|
|
12727
12730
|
`;
|
|
12728
12731
|
const EdgedNode = memo(({ data }) => {
|
|
12729
12732
|
const { nodeWidth, nodeHeight } = data;
|
|
12730
|
-
return (React.createElement(Container$h, { "$nodeWidth": nodeWidth, "$nodeHeight": nodeHeight },
|
|
12733
|
+
return (React.createElement(Container$h, { "$nodeWidth": nodeWidth, "$nodeHeight": nodeHeight, className: 'nowheel nodrag' },
|
|
12731
12734
|
React.createElement(Handle, { type: 'source', position: Position.Right, style: { visibility: 'hidden' } }),
|
|
12732
12735
|
React.createElement(Handle, { type: 'target', position: Position.Left, style: { visibility: 'hidden' } })));
|
|
12733
12736
|
});
|
|
@@ -12748,6 +12751,7 @@ const FrameNode = memo(({ data }) => {
|
|
|
12748
12751
|
|
|
12749
12752
|
const Container$f = styled.div `
|
|
12750
12753
|
position: relative;
|
|
12754
|
+
z-index: 1;
|
|
12751
12755
|
width: ${({ $nodeWidth }) => $nodeWidth}px;
|
|
12752
12756
|
height: ${({ $nodeHeight }) => $nodeHeight}px;
|
|
12753
12757
|
background: transparent;
|
|
@@ -12812,7 +12816,7 @@ const ScrollNode = memo(({ data, ...rest }) => {
|
|
|
12812
12816
|
// @ts-ignore
|
|
12813
12817
|
onClickNode(e, item);
|
|
12814
12818
|
} },
|
|
12815
|
-
React.createElement(BaseNode, { ...rest, type:
|
|
12819
|
+
React.createElement(BaseNode, { ...rest, type: NodeTypes.Base, id: item.id, data: item.data })))),
|
|
12816
12820
|
React.createElement(LoadMoreWrapper, { "$hide": isBottomOfList })));
|
|
12817
12821
|
});
|
|
12818
12822
|
|
|
@@ -12853,7 +12857,7 @@ const HeaderNode = memo(({ id: nodeId, data }) => {
|
|
|
12853
12857
|
const { nodeWidth, title, icon: Icon, badge, badgeTooltip, isFetching, sources } = data;
|
|
12854
12858
|
const entityType = nodeId.split('-')[0];
|
|
12855
12859
|
const { isAwaitingInstrumentation, sourcesToCreate, sourcesCreated, sourcesToDelete, sourcesDeleted } = useInstrumentStore();
|
|
12856
|
-
const isSourceAwaitingInstrumentation = entityType ===
|
|
12860
|
+
const isSourceAwaitingInstrumentation = entityType === EntityTypes.Source && isAwaitingInstrumentation;
|
|
12857
12861
|
const instrumentingPercent = (!!sourcesToCreate ? Math.floor((100 / sourcesToCreate) * sourcesCreated) : !!sourcesToDelete ? Math.floor((100 / sourcesToDelete) * sourcesDeleted) : 0) || 1;
|
|
12858
12862
|
const { selectedSources, setSelectedSources } = useSelectedStore();
|
|
12859
12863
|
const { isThisPending } = usePendingStore();
|
|
@@ -12869,7 +12873,7 @@ const HeaderNode = memo(({ id: nodeId, data }) => {
|
|
|
12869
12873
|
const payload = {};
|
|
12870
12874
|
sources?.forEach((source) => {
|
|
12871
12875
|
const id = { namespace: source.namespace, name: source.name, kind: source.kind };
|
|
12872
|
-
const isPending = isThisPending({ entityType:
|
|
12876
|
+
const isPending = isThisPending({ entityType: EntityTypes.Source, entityId: id });
|
|
12873
12877
|
if (!isPending) {
|
|
12874
12878
|
if (!payload[source.namespace]) {
|
|
12875
12879
|
payload[source.namespace] = [source];
|
|
@@ -12886,7 +12890,7 @@ const HeaderNode = memo(({ id: nodeId, data }) => {
|
|
|
12886
12890
|
}
|
|
12887
12891
|
};
|
|
12888
12892
|
return (React.createElement(Container$e, { "$nodeWidth": nodeWidth, className: 'nowheel nodrag' },
|
|
12889
|
-
entityType ===
|
|
12893
|
+
entityType === EntityTypes.Source && (React.createElement(SelectorWrapper, null,
|
|
12890
12894
|
React.createElement(Checkbox, { partiallyChecked: hasSelected && sources?.length !== totalSelectedSources, value: hasSelected && sources?.length === totalSelectedSources, onChange: onSelect, disabled: !sources?.length }))),
|
|
12891
12895
|
React.createElement(IconTitleBadge, { icon: Icon, title: title, badge: isSourceAwaitingInstrumentation ? `${instrumentingPercent}%` : badge, badgeTooltip: badgeTooltip, loading: isFetching && !isSourceAwaitingInstrumentation }),
|
|
12892
12896
|
React.createElement(Actions$1, { entityType: entityType }),
|
|
@@ -12901,13 +12905,13 @@ const Actions$1 = memo(({ entityType }) => {
|
|
|
12901
12905
|
// @ts-ignore
|
|
12902
12906
|
onClickNode(undefined, {
|
|
12903
12907
|
data: {
|
|
12904
|
-
type: entityType ===
|
|
12905
|
-
?
|
|
12906
|
-
: entityType ===
|
|
12907
|
-
?
|
|
12908
|
-
: entityType ===
|
|
12909
|
-
?
|
|
12910
|
-
:
|
|
12908
|
+
type: entityType === EntityTypes.Source
|
|
12909
|
+
? AddNodeTypes.AddSource
|
|
12910
|
+
: entityType === EntityTypes.Destination
|
|
12911
|
+
? AddNodeTypes.AddDestination
|
|
12912
|
+
: entityType === EntityTypes.Action
|
|
12913
|
+
? AddNodeTypes.AddAction
|
|
12914
|
+
: AddNodeTypes.AddRule,
|
|
12911
12915
|
},
|
|
12912
12916
|
});
|
|
12913
12917
|
} },
|
|
@@ -12978,16 +12982,16 @@ const ControllerWrapper = styled.div `
|
|
|
12978
12982
|
}
|
|
12979
12983
|
`;
|
|
12980
12984
|
const nodeTypes = {
|
|
12981
|
-
[
|
|
12982
|
-
[
|
|
12983
|
-
[
|
|
12984
|
-
[
|
|
12985
|
-
[
|
|
12986
|
-
[
|
|
12987
|
-
[
|
|
12985
|
+
[NodeTypes.Header]: HeaderNode,
|
|
12986
|
+
[NodeTypes.Add]: AddNode,
|
|
12987
|
+
[NodeTypes.Base]: BaseNode,
|
|
12988
|
+
[NodeTypes.Edged]: EdgedNode,
|
|
12989
|
+
[NodeTypes.Frame]: FrameNode,
|
|
12990
|
+
[NodeTypes.Scroll]: ScrollNode,
|
|
12991
|
+
[NodeTypes.Skeleton]: SkeletonNode,
|
|
12988
12992
|
};
|
|
12989
12993
|
const edgeTypes = {
|
|
12990
|
-
[
|
|
12994
|
+
[EdgeTypes.Labeled]: LabeledEdge,
|
|
12991
12995
|
};
|
|
12992
12996
|
const Flow = ({ nodes, edges, onNodesChange, onEdgesChange }) => {
|
|
12993
12997
|
const { onClickNode } = useClickNode();
|
|
@@ -13016,7 +13020,7 @@ const createEdge = (edgeId, params) => {
|
|
|
13016
13020
|
const [sourceNodeId, targetNodeId] = edgeId.split('-to-');
|
|
13017
13021
|
return {
|
|
13018
13022
|
id: edgeId,
|
|
13019
|
-
type: !!label ?
|
|
13023
|
+
type: !!label ? EdgeTypes.Labeled : 'default',
|
|
13020
13024
|
source: sourceNodeId,
|
|
13021
13025
|
target: targetNodeId,
|
|
13022
13026
|
animated,
|
|
@@ -13026,9 +13030,9 @@ const createEdge = (edgeId, params) => {
|
|
|
13026
13030
|
};
|
|
13027
13031
|
const buildEdges = ({ theme, nodes, metrics, containerHeight }) => {
|
|
13028
13032
|
const edges = [];
|
|
13029
|
-
const actionNodeId = nodes.find(({ id: nodeId }) => [`${
|
|
13033
|
+
const actionNodeId = nodes.find(({ id: nodeId }) => [`${EntityTypes.Action}-${NodeTypes.Frame}`, `${EntityTypes.Action}-${NodeTypes.Add}`].includes(nodeId))?.id;
|
|
13030
13034
|
nodes.forEach(({ type: nodeType, id: nodeId, data: { type: entityType, id: entityId, status }, position }) => {
|
|
13031
|
-
if (nodeType ===
|
|
13035
|
+
if (nodeType === NodeTypes.Edged && entityType === EntityTypes.Source) {
|
|
13032
13036
|
const { namespace, name, kind } = entityId;
|
|
13033
13037
|
const metric = metrics?.sources.find((m) => m.kind === kind && m.name === name && m.namespace === namespace);
|
|
13034
13038
|
const topLimit = -80 / 2 + framePadding$2;
|
|
@@ -13039,18 +13043,18 @@ const buildEdges = ({ theme, nodes, metrics, containerHeight }) => {
|
|
|
13039
13043
|
animated: false,
|
|
13040
13044
|
isMultiTarget: false,
|
|
13041
13045
|
label: formatBytes(metric?.throughput),
|
|
13042
|
-
isError: status ===
|
|
13046
|
+
isError: status === StatusType.Error,
|
|
13043
13047
|
}));
|
|
13044
13048
|
}
|
|
13045
13049
|
}
|
|
13046
|
-
if (nodeType ===
|
|
13050
|
+
if (nodeType === NodeTypes.Base && entityType === EntityTypes.Destination) {
|
|
13047
13051
|
const metric = metrics?.destinations.find((m) => m.id === entityId);
|
|
13048
13052
|
edges.push(createEdge(`${actionNodeId}-to-${nodeId}`, {
|
|
13049
13053
|
theme,
|
|
13050
13054
|
animated: false,
|
|
13051
13055
|
isMultiTarget: true,
|
|
13052
13056
|
label: formatBytes(metric?.throughput),
|
|
13053
|
-
isError: status ===
|
|
13057
|
+
isError: status === StatusType.Error,
|
|
13054
13058
|
}));
|
|
13055
13059
|
}
|
|
13056
13060
|
});
|
|
@@ -13062,9 +13066,9 @@ const mapToNodeData$3 = (entity) => {
|
|
|
13062
13066
|
return {
|
|
13063
13067
|
nodeWidth: nodeWidth$4,
|
|
13064
13068
|
id: entity.ruleId,
|
|
13065
|
-
type:
|
|
13069
|
+
type: EntityTypes.InstrumentationRule,
|
|
13066
13070
|
status: undefined,
|
|
13067
|
-
title: getEntityLabel(entity,
|
|
13071
|
+
title: getEntityLabel(entity, EntityTypes.InstrumentationRule, { prioritizeDisplayName: true }),
|
|
13068
13072
|
subTitle: entity.type,
|
|
13069
13073
|
icon: getInstrumentationRuleIcon(entity.type),
|
|
13070
13074
|
isActive: !entity.disabled,
|
|
@@ -13073,18 +13077,18 @@ const mapToNodeData$3 = (entity) => {
|
|
|
13073
13077
|
};
|
|
13074
13078
|
const buildRuleNodes = ({ loading, entities, positions, unfilteredCount }) => {
|
|
13075
13079
|
const nodes = [];
|
|
13076
|
-
const position = positions[
|
|
13080
|
+
const position = positions[EntityTypes.InstrumentationRule];
|
|
13077
13081
|
nodes.push({
|
|
13078
|
-
id: `${
|
|
13079
|
-
type:
|
|
13082
|
+
id: `${EntityTypes.InstrumentationRule}-${NodeTypes.Header}`,
|
|
13083
|
+
type: NodeTypes.Header,
|
|
13080
13084
|
position: {
|
|
13081
|
-
x: positions[
|
|
13085
|
+
x: positions[EntityTypes.InstrumentationRule]['x'],
|
|
13082
13086
|
y: 0,
|
|
13083
13087
|
},
|
|
13084
13088
|
data: {
|
|
13085
13089
|
nodeWidth: nodeWidth$4,
|
|
13086
|
-
title: DISPLAY_TITLES.
|
|
13087
|
-
icon: getEntityIcon(
|
|
13090
|
+
title: DISPLAY_TITLES.InstrumentationRules,
|
|
13091
|
+
icon: getEntityIcon(EntityTypes.InstrumentationRule),
|
|
13088
13092
|
badge: unfilteredCount,
|
|
13089
13093
|
isFetching: loading,
|
|
13090
13094
|
},
|
|
@@ -13092,8 +13096,8 @@ const buildRuleNodes = ({ loading, entities, positions, unfilteredCount }) => {
|
|
|
13092
13096
|
if (!!entities.length) {
|
|
13093
13097
|
entities.forEach((rule, idx) => {
|
|
13094
13098
|
nodes.push({
|
|
13095
|
-
id: `${
|
|
13096
|
-
type:
|
|
13099
|
+
id: `${EntityTypes.InstrumentationRule}-${idx}`,
|
|
13100
|
+
type: NodeTypes.Base,
|
|
13097
13101
|
position: {
|
|
13098
13102
|
x: position['x'],
|
|
13099
13103
|
y: position['y'](idx),
|
|
@@ -13104,8 +13108,8 @@ const buildRuleNodes = ({ loading, entities, positions, unfilteredCount }) => {
|
|
|
13104
13108
|
}
|
|
13105
13109
|
else if (loading) {
|
|
13106
13110
|
nodes.push({
|
|
13107
|
-
id: `${
|
|
13108
|
-
type:
|
|
13111
|
+
id: `${EntityTypes.InstrumentationRule}-${NodeTypes.Skeleton}`,
|
|
13112
|
+
type: NodeTypes.Skeleton,
|
|
13109
13113
|
position: {
|
|
13110
13114
|
x: position['x'],
|
|
13111
13115
|
y: position['y'](),
|
|
@@ -13117,15 +13121,15 @@ const buildRuleNodes = ({ loading, entities, positions, unfilteredCount }) => {
|
|
|
13117
13121
|
}
|
|
13118
13122
|
else {
|
|
13119
13123
|
nodes.push({
|
|
13120
|
-
id: `${
|
|
13121
|
-
type:
|
|
13124
|
+
id: `${EntityTypes.InstrumentationRule}-${NodeTypes.Add}`,
|
|
13125
|
+
type: NodeTypes.Add,
|
|
13122
13126
|
position: {
|
|
13123
13127
|
x: position['x'],
|
|
13124
13128
|
y: position['y'](),
|
|
13125
13129
|
},
|
|
13126
13130
|
data: {
|
|
13127
13131
|
nodeWidth: nodeWidth$4,
|
|
13128
|
-
type:
|
|
13132
|
+
type: AddNodeTypes.AddRule,
|
|
13129
13133
|
title: 'ADD RULE',
|
|
13130
13134
|
subTitle: 'To modify OpenTelemetry data',
|
|
13131
13135
|
},
|
|
@@ -13140,10 +13144,10 @@ const mapToNodeData$2 = (entity) => {
|
|
|
13140
13144
|
return {
|
|
13141
13145
|
nodeWidth: nodeWidth$3,
|
|
13142
13146
|
id: entity.id,
|
|
13143
|
-
type:
|
|
13147
|
+
type: EntityTypes.Action,
|
|
13144
13148
|
status: priorotizedStatus,
|
|
13145
13149
|
faded: hasDisableds,
|
|
13146
|
-
title: getEntityLabel(entity,
|
|
13150
|
+
title: getEntityLabel(entity, EntityTypes.Action, { prioritizeDisplayName: true }),
|
|
13147
13151
|
subTitle: entity.type,
|
|
13148
13152
|
icon: getActionIcon(entity.type),
|
|
13149
13153
|
monitors: entity.spec.signals,
|
|
@@ -13153,26 +13157,26 @@ const mapToNodeData$2 = (entity) => {
|
|
|
13153
13157
|
};
|
|
13154
13158
|
const buildActionNodes = ({ loading, entities, positions, unfilteredCount }) => {
|
|
13155
13159
|
const nodes = [];
|
|
13156
|
-
const position = positions[
|
|
13160
|
+
const position = positions[EntityTypes.Action];
|
|
13157
13161
|
nodes.push({
|
|
13158
|
-
id: `${
|
|
13159
|
-
type:
|
|
13162
|
+
id: `${EntityTypes.Action}-${NodeTypes.Header}`,
|
|
13163
|
+
type: NodeTypes.Header,
|
|
13160
13164
|
position: {
|
|
13161
|
-
x: positions[
|
|
13165
|
+
x: positions[EntityTypes.Action]['x'],
|
|
13162
13166
|
y: 0,
|
|
13163
13167
|
},
|
|
13164
13168
|
data: {
|
|
13165
13169
|
nodeWidth: nodeWidth$3,
|
|
13166
|
-
title: DISPLAY_TITLES.
|
|
13167
|
-
icon: getEntityIcon(
|
|
13170
|
+
title: DISPLAY_TITLES.Actions,
|
|
13171
|
+
icon: getEntityIcon(EntityTypes.Action),
|
|
13168
13172
|
badge: unfilteredCount,
|
|
13169
13173
|
isFetching: loading,
|
|
13170
13174
|
},
|
|
13171
13175
|
});
|
|
13172
13176
|
if (!!entities.length) {
|
|
13173
13177
|
nodes.push({
|
|
13174
|
-
id: `${
|
|
13175
|
-
type:
|
|
13178
|
+
id: `${EntityTypes.Action}-${NodeTypes.Frame}`,
|
|
13179
|
+
type: NodeTypes.Frame,
|
|
13176
13180
|
position: {
|
|
13177
13181
|
x: position['x'] - framePadding$1,
|
|
13178
13182
|
y: position['y']() - framePadding$1,
|
|
@@ -13184,10 +13188,10 @@ const buildActionNodes = ({ loading, entities, positions, unfilteredCount }) =>
|
|
|
13184
13188
|
});
|
|
13185
13189
|
entities.forEach((action, idx) => {
|
|
13186
13190
|
nodes.push({
|
|
13187
|
-
id: `${
|
|
13188
|
-
type:
|
|
13191
|
+
id: `${EntityTypes.Action}-${idx}`,
|
|
13192
|
+
type: NodeTypes.Base,
|
|
13189
13193
|
extent: 'parent',
|
|
13190
|
-
parentId: `${
|
|
13194
|
+
parentId: `${EntityTypes.Action}-${NodeTypes.Frame}`,
|
|
13191
13195
|
position: {
|
|
13192
13196
|
x: framePadding$1,
|
|
13193
13197
|
y: position['y'](idx) - (nodeHeight$2 - framePadding$1),
|
|
@@ -13198,8 +13202,8 @@ const buildActionNodes = ({ loading, entities, positions, unfilteredCount }) =>
|
|
|
13198
13202
|
}
|
|
13199
13203
|
else if (loading) {
|
|
13200
13204
|
nodes.push({
|
|
13201
|
-
id: `${
|
|
13202
|
-
type:
|
|
13205
|
+
id: `${EntityTypes.Action}-${NodeTypes.Skeleton}`,
|
|
13206
|
+
type: NodeTypes.Skeleton,
|
|
13203
13207
|
position: {
|
|
13204
13208
|
x: position['x'],
|
|
13205
13209
|
y: position['y'](),
|
|
@@ -13211,16 +13215,16 @@ const buildActionNodes = ({ loading, entities, positions, unfilteredCount }) =>
|
|
|
13211
13215
|
}
|
|
13212
13216
|
else {
|
|
13213
13217
|
nodes.push({
|
|
13214
|
-
id: `${
|
|
13215
|
-
type:
|
|
13218
|
+
id: `${EntityTypes.Action}-${NodeTypes.Add}`,
|
|
13219
|
+
type: NodeTypes.Add,
|
|
13216
13220
|
position: {
|
|
13217
13221
|
x: position['x'],
|
|
13218
13222
|
y: position['y'](),
|
|
13219
13223
|
},
|
|
13220
13224
|
data: {
|
|
13221
13225
|
nodeWidth: nodeWidth$3,
|
|
13222
|
-
type:
|
|
13223
|
-
title: 'ADD
|
|
13226
|
+
type: AddNodeTypes.AddAction,
|
|
13227
|
+
title: 'ADD Action',
|
|
13224
13228
|
subTitle: 'To modify OpenTelemetry data',
|
|
13225
13229
|
},
|
|
13226
13230
|
});
|
|
@@ -13240,10 +13244,10 @@ const mapToNodeData$1 = (entity) => {
|
|
|
13240
13244
|
name: entity.name,
|
|
13241
13245
|
kind: entity.kind,
|
|
13242
13246
|
},
|
|
13243
|
-
type:
|
|
13247
|
+
type: EntityTypes.Source,
|
|
13244
13248
|
status: priorotizedStatus,
|
|
13245
13249
|
faded: hasDisableds,
|
|
13246
|
-
title: getEntityLabel(entity,
|
|
13250
|
+
title: getEntityLabel(entity, EntityTypes.Source, { extended: true }),
|
|
13247
13251
|
subTitle: `${entity.namespace} • ${entity.kind}`,
|
|
13248
13252
|
icons: getContainersIcons(entity.containers),
|
|
13249
13253
|
raw: entity,
|
|
@@ -13251,19 +13255,19 @@ const mapToNodeData$1 = (entity) => {
|
|
|
13251
13255
|
};
|
|
13252
13256
|
const buildSourceNodes = ({ loading, entities, positions, unfilteredCount, containerHeight, onScroll }) => {
|
|
13253
13257
|
const nodes = [];
|
|
13254
|
-
const position = positions[
|
|
13258
|
+
const position = positions[EntityTypes.Source];
|
|
13255
13259
|
const hasFiltersApplied = entities.length !== unfilteredCount;
|
|
13256
13260
|
nodes.push({
|
|
13257
|
-
id: `${
|
|
13258
|
-
type:
|
|
13261
|
+
id: `${EntityTypes.Source}-${NodeTypes.Header}`,
|
|
13262
|
+
type: NodeTypes.Header,
|
|
13259
13263
|
position: {
|
|
13260
|
-
x: positions[
|
|
13264
|
+
x: positions[EntityTypes.Source]['x'],
|
|
13261
13265
|
y: 0,
|
|
13262
13266
|
},
|
|
13263
13267
|
data: {
|
|
13264
13268
|
nodeWidth: nodeWidth$2,
|
|
13265
|
-
title: DISPLAY_TITLES.
|
|
13266
|
-
icon: getEntityIcon(
|
|
13269
|
+
title: DISPLAY_TITLES.Sources,
|
|
13270
|
+
icon: getEntityIcon(EntityTypes.Source),
|
|
13267
13271
|
badge: hasFiltersApplied ? `${entities.length}/${unfilteredCount}` : unfilteredCount,
|
|
13268
13272
|
badgeTooltip: hasFiltersApplied ? DISPLAY_TITLES.FILTERED_COUNT_TOOLTIP : undefined,
|
|
13269
13273
|
isFetching: loading,
|
|
@@ -13272,8 +13276,8 @@ const buildSourceNodes = ({ loading, entities, positions, unfilteredCount, conta
|
|
|
13272
13276
|
});
|
|
13273
13277
|
if (!!entities.length) {
|
|
13274
13278
|
nodes.push({
|
|
13275
|
-
id: `${
|
|
13276
|
-
type:
|
|
13279
|
+
id: `${EntityTypes.Source}-${NodeTypes.Scroll}`,
|
|
13280
|
+
type: NodeTypes.Scroll,
|
|
13277
13281
|
position: {
|
|
13278
13282
|
x: position['x'],
|
|
13279
13283
|
y: position['y']() - framePadding,
|
|
@@ -13285,7 +13289,7 @@ const buildSourceNodes = ({ loading, entities, positions, unfilteredCount, conta
|
|
|
13285
13289
|
nodeWidth: nodeWidth$2,
|
|
13286
13290
|
nodeHeight: containerHeight - nodeHeight$1 + framePadding * 2,
|
|
13287
13291
|
items: entities.map((source, idx) => ({
|
|
13288
|
-
id: `${
|
|
13292
|
+
id: `${EntityTypes.Source}-${idx}`,
|
|
13289
13293
|
data: mapToNodeData$1(source),
|
|
13290
13294
|
})),
|
|
13291
13295
|
onScroll,
|
|
@@ -13293,10 +13297,10 @@ const buildSourceNodes = ({ loading, entities, positions, unfilteredCount, conta
|
|
|
13293
13297
|
});
|
|
13294
13298
|
entities.forEach((source, idx) => {
|
|
13295
13299
|
nodes.push({
|
|
13296
|
-
id: `${
|
|
13297
|
-
type:
|
|
13300
|
+
id: `${EntityTypes.Source}-${idx}-hidden`,
|
|
13301
|
+
type: NodeTypes.Edged,
|
|
13298
13302
|
extent: 'parent',
|
|
13299
|
-
parentId: `${
|
|
13303
|
+
parentId: `${EntityTypes.Source}-${NodeTypes.Scroll}`,
|
|
13300
13304
|
position: {
|
|
13301
13305
|
x: framePadding,
|
|
13302
13306
|
y: position['y'](idx) - (nodeHeight$1 - framePadding / 2),
|
|
@@ -13310,8 +13314,8 @@ const buildSourceNodes = ({ loading, entities, positions, unfilteredCount, conta
|
|
|
13310
13314
|
}
|
|
13311
13315
|
else if (loading) {
|
|
13312
13316
|
nodes.push({
|
|
13313
|
-
id: `${
|
|
13314
|
-
type:
|
|
13317
|
+
id: `${EntityTypes.Source}-${NodeTypes.Skeleton}`,
|
|
13318
|
+
type: NodeTypes.Skeleton,
|
|
13315
13319
|
position: {
|
|
13316
13320
|
x: position['x'],
|
|
13317
13321
|
y: position['y'](),
|
|
@@ -13323,16 +13327,16 @@ const buildSourceNodes = ({ loading, entities, positions, unfilteredCount, conta
|
|
|
13323
13327
|
}
|
|
13324
13328
|
else {
|
|
13325
13329
|
nodes.push({
|
|
13326
|
-
id: `${
|
|
13327
|
-
type:
|
|
13330
|
+
id: `${EntityTypes.Source}-${NodeTypes.Add}`,
|
|
13331
|
+
type: NodeTypes.Add,
|
|
13328
13332
|
position: {
|
|
13329
13333
|
x: position['x'],
|
|
13330
13334
|
y: position['y'](),
|
|
13331
13335
|
},
|
|
13332
13336
|
data: {
|
|
13333
13337
|
nodeWidth: nodeWidth$2,
|
|
13334
|
-
type:
|
|
13335
|
-
title: 'ADD
|
|
13338
|
+
type: AddNodeTypes.AddSource,
|
|
13339
|
+
title: 'ADD Source',
|
|
13336
13340
|
subTitle: 'To collect OpenTelemetry data',
|
|
13337
13341
|
},
|
|
13338
13342
|
});
|
|
@@ -13346,25 +13350,25 @@ const getNodePositions = ({ containerWidth }) => {
|
|
|
13346
13350
|
const endX = (containerWidth <= 1500 ? 1500 : containerWidth) - nodeWidth$1 - startX;
|
|
13347
13351
|
const getY = (idx) => nodeHeight * ((idx || 0) + 1);
|
|
13348
13352
|
const positions = {
|
|
13349
|
-
[
|
|
13353
|
+
[EntityTypes.InstrumentationRule]: {
|
|
13350
13354
|
x: startX,
|
|
13351
13355
|
y: getY,
|
|
13352
13356
|
},
|
|
13353
|
-
[
|
|
13357
|
+
[EntityTypes.Source]: {
|
|
13354
13358
|
x: getValueForRange(containerWidth, [
|
|
13355
13359
|
[0, 1600, endX / 3.5],
|
|
13356
13360
|
[1600, null, endX / 4],
|
|
13357
13361
|
]),
|
|
13358
13362
|
y: getY,
|
|
13359
13363
|
},
|
|
13360
|
-
[
|
|
13364
|
+
[EntityTypes.Action]: {
|
|
13361
13365
|
x: getValueForRange(containerWidth, [
|
|
13362
13366
|
[0, 1600, endX / 1.55],
|
|
13363
13367
|
[1600, null, endX / 1.6],
|
|
13364
13368
|
]),
|
|
13365
13369
|
y: getY,
|
|
13366
13370
|
},
|
|
13367
|
-
[
|
|
13371
|
+
[EntityTypes.Destination]: {
|
|
13368
13372
|
x: endX,
|
|
13369
13373
|
y: getY,
|
|
13370
13374
|
},
|
|
@@ -13378,10 +13382,10 @@ const mapToNodeData = (entity) => {
|
|
|
13378
13382
|
return {
|
|
13379
13383
|
nodeWidth,
|
|
13380
13384
|
id: entity.id,
|
|
13381
|
-
type:
|
|
13385
|
+
type: EntityTypes.Destination,
|
|
13382
13386
|
status: priorotizedStatus,
|
|
13383
13387
|
faded: hasDisableds,
|
|
13384
|
-
title: getEntityLabel(entity,
|
|
13388
|
+
title: getEntityLabel(entity, EntityTypes.Destination, { prioritizeDisplayName: true }),
|
|
13385
13389
|
subTitle: entity.destinationType.displayName,
|
|
13386
13390
|
iconSrc: entity.destinationType.imageUrl,
|
|
13387
13391
|
monitors: Object.keys(entity.exportedSignals).filter((signal) => entity.exportedSignals[signal] === true),
|
|
@@ -13390,18 +13394,18 @@ const mapToNodeData = (entity) => {
|
|
|
13390
13394
|
};
|
|
13391
13395
|
const buildDestinationNodes = ({ loading, entities, positions, unfilteredCount }) => {
|
|
13392
13396
|
const nodes = [];
|
|
13393
|
-
const position = positions[
|
|
13397
|
+
const position = positions[EntityTypes.Destination];
|
|
13394
13398
|
nodes.push({
|
|
13395
|
-
id: `${
|
|
13396
|
-
type:
|
|
13399
|
+
id: `${EntityTypes.Destination}-${NodeTypes.Header}`,
|
|
13400
|
+
type: NodeTypes.Header,
|
|
13397
13401
|
position: {
|
|
13398
|
-
x: positions[
|
|
13402
|
+
x: positions[EntityTypes.Destination]['x'],
|
|
13399
13403
|
y: 0,
|
|
13400
13404
|
},
|
|
13401
13405
|
data: {
|
|
13402
13406
|
nodeWidth,
|
|
13403
|
-
title: DISPLAY_TITLES.
|
|
13404
|
-
icon: getEntityIcon(
|
|
13407
|
+
title: DISPLAY_TITLES.Destinations,
|
|
13408
|
+
icon: getEntityIcon(EntityTypes.Destination),
|
|
13405
13409
|
badge: unfilteredCount,
|
|
13406
13410
|
isFetching: loading,
|
|
13407
13411
|
},
|
|
@@ -13409,8 +13413,8 @@ const buildDestinationNodes = ({ loading, entities, positions, unfilteredCount }
|
|
|
13409
13413
|
if (!!entities.length) {
|
|
13410
13414
|
entities.forEach((destination, idx) => {
|
|
13411
13415
|
nodes.push({
|
|
13412
|
-
id: `${
|
|
13413
|
-
type:
|
|
13416
|
+
id: `${EntityTypes.Destination}-${idx}`,
|
|
13417
|
+
type: NodeTypes.Base,
|
|
13414
13418
|
position: {
|
|
13415
13419
|
x: position['x'],
|
|
13416
13420
|
y: position['y'](idx),
|
|
@@ -13421,8 +13425,8 @@ const buildDestinationNodes = ({ loading, entities, positions, unfilteredCount }
|
|
|
13421
13425
|
}
|
|
13422
13426
|
else if (loading) {
|
|
13423
13427
|
nodes.push({
|
|
13424
|
-
id: `${
|
|
13425
|
-
type:
|
|
13428
|
+
id: `${EntityTypes.Destination}-${NodeTypes.Skeleton}`,
|
|
13429
|
+
type: NodeTypes.Skeleton,
|
|
13426
13430
|
position: {
|
|
13427
13431
|
x: position['x'],
|
|
13428
13432
|
y: position['y'](),
|
|
@@ -13434,16 +13438,16 @@ const buildDestinationNodes = ({ loading, entities, positions, unfilteredCount }
|
|
|
13434
13438
|
}
|
|
13435
13439
|
else {
|
|
13436
13440
|
nodes.push({
|
|
13437
|
-
id: `${
|
|
13438
|
-
type:
|
|
13441
|
+
id: `${EntityTypes.Destination}-${NodeTypes.Add}`,
|
|
13442
|
+
type: NodeTypes.Add,
|
|
13439
13443
|
position: {
|
|
13440
13444
|
x: position['x'],
|
|
13441
13445
|
y: position['y'](),
|
|
13442
13446
|
},
|
|
13443
13447
|
data: {
|
|
13444
13448
|
nodeWidth,
|
|
13445
|
-
type:
|
|
13446
|
-
title: 'ADD
|
|
13449
|
+
type: AddNodeTypes.AddDestination,
|
|
13450
|
+
title: 'ADD Destination',
|
|
13447
13451
|
subTitle: 'To monitor OpenTelemetry data',
|
|
13448
13452
|
},
|
|
13449
13453
|
});
|
|
@@ -13475,7 +13479,7 @@ const DataFlow = ({ heightToRemove, metrics }) => {
|
|
|
13475
13479
|
};
|
|
13476
13480
|
const handleNodesScrolled = (currNodes, key, yOffset) => {
|
|
13477
13481
|
setNodes((prevNodes) => applyNodeChanges(currNodes
|
|
13478
|
-
.filter((node) => node.extent === 'parent' && node.parentId === `${key}-${
|
|
13482
|
+
.filter((node) => node.extent === 'parent' && node.parentId === `${key}-${NodeTypes.Scroll}`)
|
|
13479
13483
|
.map((node) => ({
|
|
13480
13484
|
id: node.id,
|
|
13481
13485
|
type: 'position',
|
|
@@ -13492,10 +13496,10 @@ const DataFlow = ({ heightToRemove, metrics }) => {
|
|
|
13492
13496
|
unfilteredCount: sources.length,
|
|
13493
13497
|
positions,
|
|
13494
13498
|
containerHeight,
|
|
13495
|
-
onScroll: ({ scrollTop }) => handleNodesScrolled(sourceNodes,
|
|
13499
|
+
onScroll: ({ scrollTop }) => handleNodesScrolled(sourceNodes, EntityTypes.Source, scrollTop),
|
|
13496
13500
|
});
|
|
13497
|
-
handleNodesChanged(sourceNodes,
|
|
13498
|
-
}, [sources, sourcesLoading, isAwaitingInstrumentation, positions.
|
|
13501
|
+
handleNodesChanged(sourceNodes, EntityTypes.Source);
|
|
13502
|
+
}, [sources, sourcesLoading, isAwaitingInstrumentation, positions[EntityTypes.Source], filters, containerHeight]);
|
|
13499
13503
|
useEffect(() => {
|
|
13500
13504
|
const destinationNodes = buildDestinationNodes({
|
|
13501
13505
|
entities: filterDestinations(destinations, filters),
|
|
@@ -13503,8 +13507,8 @@ const DataFlow = ({ heightToRemove, metrics }) => {
|
|
|
13503
13507
|
unfilteredCount: destinations.length,
|
|
13504
13508
|
positions,
|
|
13505
13509
|
});
|
|
13506
|
-
handleNodesChanged(destinationNodes,
|
|
13507
|
-
}, [destinations, destinationsLoading, positions.
|
|
13510
|
+
handleNodesChanged(destinationNodes, EntityTypes.Destination);
|
|
13511
|
+
}, [destinations, destinationsLoading, positions[EntityTypes.Destination], filters]);
|
|
13508
13512
|
useEffect(() => {
|
|
13509
13513
|
const actionNodes = buildActionNodes({
|
|
13510
13514
|
entities: filterActions(actions, filters),
|
|
@@ -13512,8 +13516,8 @@ const DataFlow = ({ heightToRemove, metrics }) => {
|
|
|
13512
13516
|
unfilteredCount: actions.length,
|
|
13513
13517
|
positions,
|
|
13514
13518
|
});
|
|
13515
|
-
handleNodesChanged(actionNodes,
|
|
13516
|
-
}, [actions, actionsLoading, positions.
|
|
13519
|
+
handleNodesChanged(actionNodes, EntityTypes.Action);
|
|
13520
|
+
}, [actions, actionsLoading, positions[EntityTypes.Action], filters]);
|
|
13517
13521
|
useEffect(() => {
|
|
13518
13522
|
// note: rules do not have filters yet
|
|
13519
13523
|
const ruleNodes = buildRuleNodes({
|
|
@@ -13522,8 +13526,8 @@ const DataFlow = ({ heightToRemove, metrics }) => {
|
|
|
13522
13526
|
unfilteredCount: instrumentationRules.length,
|
|
13523
13527
|
positions,
|
|
13524
13528
|
});
|
|
13525
|
-
handleNodesChanged(ruleNodes,
|
|
13526
|
-
}, [instrumentationRules, instrumentationRulesLoading, positions.
|
|
13529
|
+
handleNodesChanged(ruleNodes, EntityTypes.InstrumentationRule);
|
|
13530
|
+
}, [instrumentationRules, instrumentationRulesLoading, positions[EntityTypes.InstrumentationRule]]);
|
|
13527
13531
|
return (React.createElement(Container$c, { ref: containerRef, "$heightToRemove": heightToRemove },
|
|
13528
13532
|
React.createElement(Flow, { nodes: nodes, edges: edges, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange })));
|
|
13529
13533
|
};
|
|
@@ -13554,25 +13558,25 @@ const buildSearchResults = ({ instrumentationRules, sources, actions, destinatio
|
|
|
13554
13558
|
: destinations.filter((destination) => destination.destinationType.displayName?.toLowerCase().includes(searchText) || destination.name?.toLowerCase().includes(searchText));
|
|
13555
13559
|
const categories = [
|
|
13556
13560
|
{
|
|
13557
|
-
category:
|
|
13561
|
+
category: EntityTypes.Source,
|
|
13558
13562
|
label: 'Sources',
|
|
13559
13563
|
count: filteredSources.length,
|
|
13560
13564
|
entities: [],
|
|
13561
13565
|
},
|
|
13562
13566
|
{
|
|
13563
|
-
category:
|
|
13567
|
+
category: EntityTypes.Action,
|
|
13564
13568
|
label: 'Actions',
|
|
13565
13569
|
count: filteredActions.length,
|
|
13566
13570
|
entities: [],
|
|
13567
13571
|
},
|
|
13568
13572
|
{
|
|
13569
|
-
category:
|
|
13573
|
+
category: EntityTypes.Destination,
|
|
13570
13574
|
label: 'Destinations',
|
|
13571
13575
|
count: filteredDestinations.length,
|
|
13572
13576
|
entities: [],
|
|
13573
13577
|
},
|
|
13574
13578
|
{
|
|
13575
|
-
category:
|
|
13579
|
+
category: EntityTypes.InstrumentationRule,
|
|
13576
13580
|
label: 'Instrumentation Rules',
|
|
13577
13581
|
count: filteredRules.length,
|
|
13578
13582
|
entities: [],
|
|
@@ -13588,13 +13592,13 @@ const buildSearchResults = ({ instrumentationRules, sources, actions, destinatio
|
|
|
13588
13592
|
.filter(({ count, category }) => !!count && category !== 'all' && ['all', category].includes(selectedCategory))
|
|
13589
13593
|
.map((item) => ({
|
|
13590
13594
|
...item,
|
|
13591
|
-
entities: item.category ===
|
|
13595
|
+
entities: item.category === EntityTypes.InstrumentationRule
|
|
13592
13596
|
? filteredRules
|
|
13593
|
-
: item.category ===
|
|
13597
|
+
: item.category === EntityTypes.Source
|
|
13594
13598
|
? filteredSources
|
|
13595
|
-
: item.category ===
|
|
13599
|
+
: item.category === EntityTypes.Action
|
|
13596
13600
|
? filteredActions
|
|
13597
|
-
: item.category ===
|
|
13601
|
+
: item.category === EntityTypes.Destination
|
|
13598
13602
|
? filteredDestinations
|
|
13599
13603
|
: [],
|
|
13600
13604
|
}));
|
|
@@ -13772,8 +13776,8 @@ const buildCard$2 = (destination, yamlFields) => {
|
|
|
13772
13776
|
const arr = [
|
|
13773
13777
|
{ title: DISPLAY_TITLES.NAME, value: destinationType.displayName },
|
|
13774
13778
|
{ title: DISPLAY_TITLES.TYPE, value: destinationType.type },
|
|
13775
|
-
{ type:
|
|
13776
|
-
{ type:
|
|
13779
|
+
{ type: DataCardFieldTypes.Monitors, title: DISPLAY_TITLES.Monitors, value: buildMonitorsList(exportedSignals) },
|
|
13780
|
+
{ type: DataCardFieldTypes.Divider },
|
|
13777
13781
|
];
|
|
13778
13782
|
const parsedFields = safeJsonParse(fields, {});
|
|
13779
13783
|
const sortedParsedFields = yamlFields.map((field) => ({ key: field.name, value: parsedFields[field.name] ?? null })).filter((item) => item.value !== null) ||
|
|
@@ -13814,17 +13818,17 @@ const DynamicFields = ({ fields, onChange, formErrors }) => {
|
|
|
13814
13818
|
if (!shouldRender)
|
|
13815
13819
|
return null;
|
|
13816
13820
|
switch (componentType) {
|
|
13817
|
-
case
|
|
13821
|
+
case FieldTypes.Input:
|
|
13818
13822
|
return React.createElement(Input, { key: field.name, ...rest, onChange: (e) => onChange(field.name, e.target.value), errorMessage: formErrors[field.name] });
|
|
13819
|
-
case
|
|
13823
|
+
case FieldTypes.Dropdown:
|
|
13820
13824
|
return (React.createElement(Dropdown, { key: field.name, ...rest, value: { id: rest.value || '', value: rest.value || '' }, options: rest.options || [], onSelect: (option) => onChange(field.name, option.value), errorMessage: formErrors[field.name] }));
|
|
13821
|
-
case
|
|
13825
|
+
case FieldTypes.MultiInput:
|
|
13822
13826
|
return (React.createElement(InputList, { key: field.name, ...rest, value: typeof rest.value === 'string' ? safeJsonParse(rest.value, []) : rest.value, onChange: (value) => onChange(field.name, JSON.stringify(value)), errorMessage: formErrors[field.name] }));
|
|
13823
|
-
case
|
|
13827
|
+
case FieldTypes.KeyValuePair:
|
|
13824
13828
|
return (React.createElement(KeyValueInputsList, { key: field.name, ...rest, value: typeof rest.value === 'string' ? safeJsonParse(rest.value, []) : rest.value, onChange: (value) => onChange(field.name, JSON.stringify(value)), errorMessage: formErrors[field.name] }));
|
|
13825
|
-
case
|
|
13829
|
+
case FieldTypes.TextArea:
|
|
13826
13830
|
return React.createElement(TextArea, { key: field.name, ...rest, onChange: (e) => onChange(field.name, e.target.value), errorMessage: formErrors[field.name] });
|
|
13827
|
-
case
|
|
13831
|
+
case FieldTypes.Checkbox:
|
|
13828
13832
|
return React.createElement(Checkbox, { key: field.name, ...rest, value: rest.value == 'true', onChange: (bool) => onChange(field.name, String(bool)), errorMessage: formErrors[field.name] });
|
|
13829
13833
|
default:
|
|
13830
13834
|
return null;
|
|
@@ -13915,45 +13919,45 @@ const DestinationForm = ({ isUpdate, categoryItem, formData, formErrors, validat
|
|
|
13915
13919
|
const { logs, metrics, traces } = supportedSignals || {};
|
|
13916
13920
|
const arr = [];
|
|
13917
13921
|
if (logs?.supported)
|
|
13918
|
-
arr.push(
|
|
13922
|
+
arr.push(SignalType.Logs);
|
|
13919
13923
|
if (metrics?.supported)
|
|
13920
|
-
arr.push(
|
|
13924
|
+
arr.push(SignalType.Metrics);
|
|
13921
13925
|
if (traces?.supported)
|
|
13922
|
-
arr.push(
|
|
13926
|
+
arr.push(SignalType.Traces);
|
|
13923
13927
|
return arr;
|
|
13924
13928
|
}, [supportedSignals]);
|
|
13925
13929
|
const selectedMonitors = useMemo(() => {
|
|
13926
13930
|
const { logs, metrics, traces } = formData['exportedSignals'] || {};
|
|
13927
13931
|
const arr = [];
|
|
13928
13932
|
if (logs)
|
|
13929
|
-
arr.push(
|
|
13933
|
+
arr.push(SignalType.Logs);
|
|
13930
13934
|
if (metrics)
|
|
13931
|
-
arr.push(
|
|
13935
|
+
arr.push(SignalType.Metrics);
|
|
13932
13936
|
if (traces)
|
|
13933
|
-
arr.push(
|
|
13937
|
+
arr.push(SignalType.Traces);
|
|
13934
13938
|
return arr;
|
|
13935
13939
|
}, [formData['exportedSignals']]);
|
|
13936
13940
|
const handleSelectedSignals = (signals) => {
|
|
13937
13941
|
dirtyForm();
|
|
13938
13942
|
handleFormChange('exportedSignals', {
|
|
13939
|
-
logs: signals.includes(
|
|
13940
|
-
metrics: signals.includes(
|
|
13941
|
-
traces: signals.includes(
|
|
13943
|
+
logs: signals.includes(SignalType.Logs),
|
|
13944
|
+
metrics: signals.includes(SignalType.Metrics),
|
|
13945
|
+
traces: signals.includes(SignalType.Traces),
|
|
13942
13946
|
});
|
|
13943
13947
|
};
|
|
13944
13948
|
return (React.createElement(Container$a, null,
|
|
13945
13949
|
!isUpdate && (React.createElement(React.Fragment, null,
|
|
13946
13950
|
React.createElement(SectionTitle, { title: 'Create connection', description: `Connect ${displayName} with Odigos.`, actionButton: testConnectionSupported && (React.createElement(TestConnection, { destination: formData, disabled: !isFormDirty, validateForm: validateForm, status: connectionStatus, testConnection: testConnection, testLoading: testLoading, testResult: testResult, onError: () => {
|
|
13947
13951
|
setIsFormDirty(false);
|
|
13948
|
-
setConnectionStatus(
|
|
13952
|
+
setConnectionStatus(StatusType.Error);
|
|
13949
13953
|
}, onSuccess: () => {
|
|
13950
13954
|
setIsFormDirty(false);
|
|
13951
|
-
setConnectionStatus(
|
|
13955
|
+
setConnectionStatus(StatusType.Success);
|
|
13952
13956
|
} })) }),
|
|
13953
13957
|
(testConnectionSupported || autoFilled) && (React.createElement(NotesWrapper, null,
|
|
13954
|
-
testConnectionSupported && connectionStatus ===
|
|
13955
|
-
testConnectionSupported && connectionStatus ===
|
|
13956
|
-
autoFilled && React.createElement(NotificationNote, { type:
|
|
13958
|
+
testConnectionSupported && connectionStatus === StatusType.Error && React.createElement(NotificationNote, { type: StatusType.Error, message: 'Connection failed. Please check your input and try again.' }),
|
|
13959
|
+
testConnectionSupported && connectionStatus === StatusType.Success && React.createElement(NotificationNote, { type: StatusType.Success, message: 'Connection succeeded.' }),
|
|
13960
|
+
autoFilled && React.createElement(NotificationNote, { type: StatusType.Default, message: `Odigos autocompleted ${displayName} connection details.` }))),
|
|
13957
13961
|
React.createElement(Divider, null))),
|
|
13958
13962
|
React.createElement(MonitorsCheckboxes, { title: isUpdate ? '' : 'This connection will monitor:', required: true, allowedSignals: supportedMonitors, selectedSignals: selectedMonitors, setSelectedSignals: handleSelectedSignals, errorMessage: formErrors['exportedSignals'] }),
|
|
13959
13963
|
!isUpdate && (React.createElement(Input, { title: 'Destination name', placeholder: 'Enter destination name', value: formData['name'], onChange: (e) => {
|
|
@@ -13988,7 +13992,7 @@ const DataContainer$2 = styled.div `
|
|
|
13988
13992
|
const DestinationDrawer = ({ categories, updateDestination, deleteDestination, testConnection, testLoading, testResult }) => {
|
|
13989
13993
|
const { destinations } = useEntityStore();
|
|
13990
13994
|
const { drawerType, drawerEntityId, setDrawerEntityId, setDrawerType } = useDrawerStore();
|
|
13991
|
-
const isOpen = drawerType !==
|
|
13995
|
+
const isOpen = drawerType !== EntityTypes.Destination;
|
|
13992
13996
|
const onClose = () => {
|
|
13993
13997
|
setDrawerType(null);
|
|
13994
13998
|
setDrawerEntityId(null);
|
|
@@ -14043,7 +14047,7 @@ const DestinationDrawer = ({ categories, updateDestination, deleteDestination, t
|
|
|
14043
14047
|
onClose();
|
|
14044
14048
|
};
|
|
14045
14049
|
const handleSave = async (newTitle) => {
|
|
14046
|
-
if (validateForm({ withAlert: true, alertTitle:
|
|
14050
|
+
if (validateForm({ withAlert: true, alertTitle: Crud.Update })) {
|
|
14047
14051
|
const title = newTitle !== thisItem.destinationType.displayName ? newTitle : '';
|
|
14048
14052
|
handleFormChange('name', title);
|
|
14049
14053
|
updateDestination(drawerEntityId, { ...formData, name: title });
|
|
@@ -14124,7 +14128,7 @@ const DROPDOWN_OPTIONS = [
|
|
|
14124
14128
|
{ value: 'Self-hosted', id: 'self hosted' },
|
|
14125
14129
|
];
|
|
14126
14130
|
const DEFAULT_CATEGORY = DROPDOWN_OPTIONS[0];
|
|
14127
|
-
const DEFAULT_MONITORS = [
|
|
14131
|
+
const DEFAULT_MONITORS = [SignalType.Logs, SignalType.Metrics, SignalType.Traces];
|
|
14128
14132
|
const ChooseDestinationBody = ({ hidden, categories, potentialDestinations, onSelect }) => {
|
|
14129
14133
|
const [search, setSearch] = useState('');
|
|
14130
14134
|
const [selectedCategory, setSelectedCategory] = useState(DEFAULT_CATEGORY);
|
|
@@ -14173,7 +14177,7 @@ const SideMenuWrapper = styled.div `
|
|
|
14173
14177
|
const DestinationModal = ({ isOnboarding, categories, potentialDestinations, createDestination, testConnection, testLoading, testResult }) => {
|
|
14174
14178
|
const { addConfiguredDestination } = useSetupStore();
|
|
14175
14179
|
const { currentModal, setCurrentModal } = useModalStore();
|
|
14176
|
-
const isOpen = currentModal ===
|
|
14180
|
+
const isOpen = currentModal === EntityTypes.Destination;
|
|
14177
14181
|
const [selectedItem, setSelectedItem] = useState(undefined);
|
|
14178
14182
|
const { formData, formErrors, handleFormChange, resetFormData, validateForm, setYamlFields, dynamicFields, setDynamicFields } = useDestinationFormData({
|
|
14179
14183
|
supportedSignals: selectedItem?.supportedSignals,
|
|
@@ -14195,13 +14199,13 @@ const DestinationModal = ({ isOnboarding, categories, potentialDestinations, cre
|
|
|
14195
14199
|
setSelectedItem(item);
|
|
14196
14200
|
};
|
|
14197
14201
|
const handleSubmit = async () => {
|
|
14198
|
-
const isFormOk = validateForm({ withAlert: !isOnboarding, alertTitle:
|
|
14202
|
+
const isFormOk = validateForm({ withAlert: !isOnboarding, alertTitle: Crud.Create });
|
|
14199
14203
|
if (!isFormOk)
|
|
14200
14204
|
return null;
|
|
14201
14205
|
if (isOnboarding) {
|
|
14202
14206
|
const destinationTypeDetails = dynamicFields.map((field) => ({
|
|
14203
14207
|
title: field.title || '',
|
|
14204
|
-
value: (field.componentType ===
|
|
14208
|
+
value: (field.componentType === FieldTypes.Dropdown ? field.value?.value || '' : field.value),
|
|
14205
14209
|
}));
|
|
14206
14210
|
destinationTypeDetails.unshift({
|
|
14207
14211
|
title: 'Destination name',
|
|
@@ -14246,7 +14250,7 @@ const DestinationModal = ({ isOnboarding, categories, potentialDestinations, cre
|
|
|
14246
14250
|
React.createElement(Container$8, null,
|
|
14247
14251
|
React.createElement(SideMenuWrapper, null,
|
|
14248
14252
|
React.createElement(Stepper, { currentStep: !!selectedItem ? 2 : 1, data: [
|
|
14249
|
-
{ stepNumber: 1, title: '
|
|
14253
|
+
{ stepNumber: 1, title: 'Destinations' },
|
|
14250
14254
|
{ stepNumber: 2, title: 'CONNECTION' },
|
|
14251
14255
|
] })),
|
|
14252
14256
|
React.createElement(ModalBody, { style: { margin: '32px 24px 12px 24px' } },
|
|
@@ -14275,7 +14279,7 @@ const ListItem$1 = ({ item, isLastItem, ...props }) => {
|
|
|
14275
14279
|
return (React.createElement(React.Fragment, null,
|
|
14276
14280
|
React.createElement(DataTab, { title: item.displayName, iconSrc: item.imageUrl, monitors: Object.keys(item.exportedSignals).filter((signal) => item.exportedSignals[signal] === true), monitorsWithLabels: true, withExtend: true, renderExtended: () => React.createElement(DataCardFields, { data: item.destinationTypeDetails }), renderActions: () => (React.createElement(IconButton, { onClick: () => setDeleteWarning(true) },
|
|
14277
14281
|
React.createElement(TrashIcon, null))), ...props }),
|
|
14278
|
-
React.createElement(DeleteWarning, { isOpen: deleteWarning, name: item.displayName || item.type, type:
|
|
14282
|
+
React.createElement(DeleteWarning, { isOpen: deleteWarning, name: item.displayName || item.type, type: EntityTypes.Destination, isLastItem: isLastItem, onApprove: () => removeConfiguredDestination(item), onDeny: () => setDeleteWarning(false) })));
|
|
14279
14283
|
};
|
|
14280
14284
|
|
|
14281
14285
|
const ContentWrapper = styled.div `
|
|
@@ -14299,18 +14303,18 @@ const StyledAddDestinationButton = styled(Button) `
|
|
|
14299
14303
|
const DestinationSelectionForm = ({ categories, potentialDestinations, createDestination, isLoading, testConnection, testLoading, testResult, isSourcesListEmpty, goToSources, }) => {
|
|
14300
14304
|
const theme = Theme.useTheme();
|
|
14301
14305
|
const { setCurrentModal } = useModalStore();
|
|
14302
|
-
const onOpen = () => setCurrentModal(
|
|
14306
|
+
const onOpen = () => setCurrentModal(EntityTypes.Destination);
|
|
14303
14307
|
return (React.createElement(ContentWrapper, null,
|
|
14304
14308
|
React.createElement(SectionTitle, { title: 'Configure destinations', description: 'Select destinations where telemetry data will be sent and configure their settings.' }),
|
|
14305
14309
|
!isLoading && isSourcesListEmpty && (React.createElement(NotificationNoteWrapper, null,
|
|
14306
|
-
React.createElement(NotificationNote, { type:
|
|
14310
|
+
React.createElement(NotificationNote, { type: StatusType.Warning, message: 'No sources selected. Please go back to select sources.', action: {
|
|
14307
14311
|
label: 'Select Sources',
|
|
14308
14312
|
onClick: goToSources,
|
|
14309
14313
|
} }))),
|
|
14310
14314
|
React.createElement(AddDestinationButtonWrapper, null,
|
|
14311
14315
|
React.createElement(StyledAddDestinationButton, { variant: 'secondary', disabled: isLoading, onClick: onOpen },
|
|
14312
14316
|
React.createElement(PlusIcon$1, null),
|
|
14313
|
-
React.createElement(Text, { color: theme.colors.secondary, size: 14, decoration: 'underline', family: 'secondary' }, "ADD
|
|
14317
|
+
React.createElement(Text, { color: theme.colors.secondary, size: 14, decoration: 'underline', family: 'secondary' }, "ADD Destination")),
|
|
14314
14318
|
React.createElement(DestinationModal, { isOnboarding: true, categories: categories, potentialDestinations: potentialDestinations, createDestination: createDestination, testConnection: testConnection, testLoading: testLoading, testResult: testResult })),
|
|
14315
14319
|
isLoading ? (React.createElement(CenterThis, null,
|
|
14316
14320
|
React.createElement(FadeLoader, { scale: 2, cssOverride: { marginTop: '3rem' } }))) : (React.createElement(ConfiguredList, null))));
|
|
@@ -14320,7 +14324,7 @@ const columns$2 = [
|
|
|
14320
14324
|
{ key: 'icon', title: '' },
|
|
14321
14325
|
{ key: 'name', title: DISPLAY_TITLES.NAME, sortable: true },
|
|
14322
14326
|
{ key: 'type', title: DISPLAY_TITLES.TYPE, sortable: true },
|
|
14323
|
-
{ key: 'signals', title: DISPLAY_TITLES.
|
|
14327
|
+
{ key: 'signals', title: DISPLAY_TITLES.Monitors },
|
|
14324
14328
|
{ key: 'conditions', title: 'Conditions' },
|
|
14325
14329
|
{ key: 'throughput', title: 'Throughput', sortable: true },
|
|
14326
14330
|
];
|
|
@@ -14333,8 +14337,12 @@ const DestinationTable = ({ metrics, maxHeight, maxWidth }) => {
|
|
|
14333
14337
|
const rows = useMemo(() => filtered.map((dest) => {
|
|
14334
14338
|
const { hasErrors, hasWarnings, hasDisableds } = getConditionsBooleans(dest.conditions || []);
|
|
14335
14339
|
return {
|
|
14336
|
-
status: hasErrors ?
|
|
14340
|
+
status: hasErrors ? StatusType.Error : hasWarnings ? StatusType.Warning : undefined,
|
|
14337
14341
|
faded: hasDisableds,
|
|
14342
|
+
onClick: () => {
|
|
14343
|
+
setDrawerType(EntityTypes.Destination);
|
|
14344
|
+
setDrawerEntityId(dest.id);
|
|
14345
|
+
},
|
|
14338
14346
|
cells: [
|
|
14339
14347
|
{
|
|
14340
14348
|
columnKey: 'icon',
|
|
@@ -14342,7 +14350,7 @@ const DestinationTable = ({ metrics, maxHeight, maxWidth }) => {
|
|
|
14342
14350
|
},
|
|
14343
14351
|
{
|
|
14344
14352
|
columnKey: 'name',
|
|
14345
|
-
value: getEntityLabel(dest,
|
|
14353
|
+
value: getEntityLabel(dest, EntityTypes.Destination, { prioritizeDisplayName: true }),
|
|
14346
14354
|
},
|
|
14347
14355
|
{
|
|
14348
14356
|
columnKey: 'type',
|
|
@@ -14351,7 +14359,7 @@ const DestinationTable = ({ metrics, maxHeight, maxWidth }) => {
|
|
|
14351
14359
|
},
|
|
14352
14360
|
{
|
|
14353
14361
|
columnKey: 'throughput',
|
|
14354
|
-
value: formatBytes(getMetricForEntity(metrics,
|
|
14362
|
+
value: formatBytes(getMetricForEntity(metrics, EntityTypes.Destination, dest.id).throughput),
|
|
14355
14363
|
textColor: theme.text.info,
|
|
14356
14364
|
},
|
|
14357
14365
|
{
|
|
@@ -14369,12 +14377,9 @@ const DestinationTable = ({ metrics, maxHeight, maxWidth }) => {
|
|
|
14369
14377
|
const badgeTooltip = useMemo(() => (filtered.length !== destinations.length ? DISPLAY_TITLES.FILTERED_COUNT_TOOLTIP : undefined), [filtered, destinations]);
|
|
14370
14378
|
return (React.createElement(TableContainer, { "$maxWidth": maxWidth },
|
|
14371
14379
|
React.createElement(TableTitleWrap, null,
|
|
14372
|
-
React.createElement(IconTitleBadge, { icon: getEntityIcon(
|
|
14380
|
+
React.createElement(IconTitleBadge, { icon: getEntityIcon(EntityTypes.Destination), title: DISPLAY_TITLES.Destinations, badge: badge, badgeTooltip: badgeTooltip, loading: destinationsLoading })),
|
|
14373
14381
|
React.createElement(TableWrap, { "$maxHeight": maxHeight },
|
|
14374
|
-
React.createElement(InteractiveTable, { columns: columns$2, rows: rows
|
|
14375
|
-
setDrawerType(ENTITY_TYPES.DESTINATION);
|
|
14376
|
-
setDrawerEntityId(filtered[idx].id);
|
|
14377
|
-
} })),
|
|
14382
|
+
React.createElement(InteractiveTable, { columns: columns$2, rows: rows })),
|
|
14378
14383
|
!filtered.length && (React.createElement(CenterThis, { style: { marginTop: '2rem' } },
|
|
14379
14384
|
React.createElement(NoDataFound, null)))));
|
|
14380
14385
|
};
|
|
@@ -14383,11 +14388,11 @@ const buildCard$1 = (rule) => {
|
|
|
14383
14388
|
const { type, ruleName, notes, disabled, profileName, payloadCollection, codeAttributes } = rule;
|
|
14384
14389
|
const arr = [
|
|
14385
14390
|
{ title: DISPLAY_TITLES.TYPE, value: type },
|
|
14386
|
-
{ type:
|
|
14391
|
+
{ type: DataCardFieldTypes.ActiveStatus, title: DISPLAY_TITLES.STATUS, value: String(!disabled) },
|
|
14387
14392
|
{ title: DISPLAY_TITLES.NAME, value: ruleName },
|
|
14388
14393
|
{ title: DISPLAY_TITLES.NOTES, value: notes },
|
|
14389
14394
|
{ title: DISPLAY_TITLES.MANAGED_BY_PROFILE, value: profileName },
|
|
14390
|
-
{ type:
|
|
14395
|
+
{ type: DataCardFieldTypes.Divider },
|
|
14391
14396
|
];
|
|
14392
14397
|
if (!!payloadCollection) {
|
|
14393
14398
|
const str = Object.entries(payloadCollection)
|
|
@@ -14422,34 +14427,34 @@ const ListContainer$1 = styled.div `
|
|
|
14422
14427
|
`;
|
|
14423
14428
|
const recommendedList = [
|
|
14424
14429
|
{
|
|
14425
|
-
id:
|
|
14430
|
+
id: CodeAttributesKeyTypes.FilePath,
|
|
14426
14431
|
label: 'Collect File Path',
|
|
14427
14432
|
tooltip: 'Indicates whether to record the `code.filepath` attribute.',
|
|
14428
14433
|
},
|
|
14429
14434
|
{
|
|
14430
|
-
id:
|
|
14435
|
+
id: CodeAttributesKeyTypes.Function,
|
|
14431
14436
|
label: 'Collect Function',
|
|
14432
14437
|
tooltip: 'Indicates whether to record the `code.function` attribute.',
|
|
14433
14438
|
},
|
|
14434
14439
|
{
|
|
14435
|
-
id:
|
|
14440
|
+
id: CodeAttributesKeyTypes.LineNumber,
|
|
14436
14441
|
label: 'Collect Line Number',
|
|
14437
14442
|
tooltip: 'Indicates whether to record the `code.lineno` attribute.',
|
|
14438
14443
|
},
|
|
14439
14444
|
];
|
|
14440
14445
|
const verboseList = [
|
|
14441
14446
|
{
|
|
14442
|
-
id:
|
|
14447
|
+
id: CodeAttributesKeyTypes.Column,
|
|
14443
14448
|
label: 'Collect Column',
|
|
14444
14449
|
tooltip: 'Indicates whether to record the `code.column` attribute.',
|
|
14445
14450
|
},
|
|
14446
14451
|
{
|
|
14447
|
-
id:
|
|
14452
|
+
id: CodeAttributesKeyTypes.Namespace,
|
|
14448
14453
|
label: 'Collect Namespace',
|
|
14449
14454
|
tooltip: 'Indicates whether to record the `code.namespace` attribute.',
|
|
14450
14455
|
},
|
|
14451
14456
|
{
|
|
14452
|
-
id:
|
|
14457
|
+
id: CodeAttributesKeyTypes.StackTrace,
|
|
14453
14458
|
label: 'Collect Stacktrace',
|
|
14454
14459
|
tooltip: 'Indicates whether to record the `code.stacktrace` attribute.',
|
|
14455
14460
|
},
|
|
@@ -14463,12 +14468,12 @@ const CodeAttributes = ({ value, setValue, formErrors }) => {
|
|
|
14463
14468
|
useEffect(() => {
|
|
14464
14469
|
if (!mappedValue.length) {
|
|
14465
14470
|
const payload = {
|
|
14466
|
-
[
|
|
14467
|
-
[
|
|
14468
|
-
[
|
|
14469
|
-
[
|
|
14470
|
-
[
|
|
14471
|
-
[
|
|
14471
|
+
[CodeAttributesKeyTypes.Column]: null,
|
|
14472
|
+
[CodeAttributesKeyTypes.FilePath]: true,
|
|
14473
|
+
[CodeAttributesKeyTypes.Function]: true,
|
|
14474
|
+
[CodeAttributesKeyTypes.LineNumber]: true,
|
|
14475
|
+
[CodeAttributesKeyTypes.Namespace]: null,
|
|
14476
|
+
[CodeAttributesKeyTypes.StackTrace]: null,
|
|
14472
14477
|
};
|
|
14473
14478
|
setValue('codeAttributes', payload);
|
|
14474
14479
|
setIsLastSelection(false);
|
|
@@ -14477,7 +14482,7 @@ const CodeAttributes = ({ value, setValue, formErrors }) => {
|
|
|
14477
14482
|
}, []);
|
|
14478
14483
|
const handleChange = (id, isAdd) => {
|
|
14479
14484
|
const arr = isAdd ? [...mappedValue, id] : mappedValue.filter((str) => str !== id);
|
|
14480
|
-
const payload = Object.values(
|
|
14485
|
+
const payload = Object.values(CodeAttributesKeyTypes).reduce((acc, attribute) => {
|
|
14481
14486
|
// @ts-ignore - TS doesn't know that `acc` is initialized 2 rows below
|
|
14482
14487
|
acc[attribute] = arr.includes(attribute) ? true : null;
|
|
14483
14488
|
return acc;
|
|
@@ -14512,19 +14517,19 @@ const ListContainer = styled.div `
|
|
|
14512
14517
|
`;
|
|
14513
14518
|
const strictPicklist = [
|
|
14514
14519
|
{
|
|
14515
|
-
id:
|
|
14520
|
+
id: PayloadCollectionKeyTypes.HttpRequest,
|
|
14516
14521
|
label: 'Collect HTTP Request',
|
|
14517
14522
|
},
|
|
14518
14523
|
{
|
|
14519
|
-
id:
|
|
14524
|
+
id: PayloadCollectionKeyTypes.HttpResponse,
|
|
14520
14525
|
label: 'Collect HTTP Response',
|
|
14521
14526
|
},
|
|
14522
14527
|
{
|
|
14523
|
-
id:
|
|
14528
|
+
id: PayloadCollectionKeyTypes.DbQuery,
|
|
14524
14529
|
label: 'Collect DB Query',
|
|
14525
14530
|
},
|
|
14526
14531
|
{
|
|
14527
|
-
id:
|
|
14532
|
+
id: PayloadCollectionKeyTypes.Messaging,
|
|
14528
14533
|
label: 'Collect Messaging',
|
|
14529
14534
|
},
|
|
14530
14535
|
];
|
|
@@ -14537,10 +14542,10 @@ const PayloadCollection = ({ value, setValue, formErrors }) => {
|
|
|
14537
14542
|
useEffect(() => {
|
|
14538
14543
|
if (!mappedValue.length) {
|
|
14539
14544
|
const payload = {
|
|
14540
|
-
[
|
|
14541
|
-
[
|
|
14542
|
-
[
|
|
14543
|
-
[
|
|
14545
|
+
[PayloadCollectionKeyTypes.HttpRequest]: {},
|
|
14546
|
+
[PayloadCollectionKeyTypes.HttpResponse]: {},
|
|
14547
|
+
[PayloadCollectionKeyTypes.DbQuery]: {},
|
|
14548
|
+
[PayloadCollectionKeyTypes.Messaging]: {},
|
|
14544
14549
|
};
|
|
14545
14550
|
setValue('payloadCollection', payload);
|
|
14546
14551
|
setIsLastSelection(false);
|
|
@@ -14550,10 +14555,10 @@ const PayloadCollection = ({ value, setValue, formErrors }) => {
|
|
|
14550
14555
|
const handleChange = (id, isAdd) => {
|
|
14551
14556
|
const arr = isAdd ? [...mappedValue, id] : mappedValue.filter((str) => str !== id);
|
|
14552
14557
|
const payload = {
|
|
14553
|
-
[
|
|
14554
|
-
[
|
|
14555
|
-
[
|
|
14556
|
-
[
|
|
14558
|
+
[PayloadCollectionKeyTypes.HttpRequest]: arr.includes(PayloadCollectionKeyTypes.HttpRequest) ? {} : null,
|
|
14559
|
+
[PayloadCollectionKeyTypes.HttpResponse]: arr.includes(PayloadCollectionKeyTypes.HttpResponse) ? {} : null,
|
|
14560
|
+
[PayloadCollectionKeyTypes.DbQuery]: arr.includes(PayloadCollectionKeyTypes.DbQuery) ? {} : null,
|
|
14561
|
+
[PayloadCollectionKeyTypes.Messaging]: arr.includes(PayloadCollectionKeyTypes.Messaging) ? {} : null,
|
|
14557
14562
|
};
|
|
14558
14563
|
setValue('payloadCollection', payload);
|
|
14559
14564
|
setIsLastSelection(arr.length === 1);
|
|
@@ -14565,9 +14570,9 @@ const PayloadCollection = ({ value, setValue, formErrors }) => {
|
|
|
14565
14570
|
};
|
|
14566
14571
|
|
|
14567
14572
|
const componentsMap = {
|
|
14568
|
-
[
|
|
14569
|
-
[
|
|
14570
|
-
[
|
|
14573
|
+
[InstrumentationRuleType.PayloadCollection]: PayloadCollection,
|
|
14574
|
+
[InstrumentationRuleType.CodeAttributes]: CodeAttributes,
|
|
14575
|
+
[InstrumentationRuleType.UnknownType]: null,
|
|
14571
14576
|
};
|
|
14572
14577
|
const CustomFields = ({ ruleType, value, setValue, formErrors }) => {
|
|
14573
14578
|
if (!ruleType)
|
|
@@ -14611,7 +14616,7 @@ const InstrumentationRuleDrawer = ({ updateInstrumentationRule, deleteInstrument
|
|
|
14611
14616
|
const { instrumentationRules } = useEntityStore();
|
|
14612
14617
|
const { addNotification } = useNotificationStore();
|
|
14613
14618
|
const { drawerType, drawerEntityId, setDrawerType, setDrawerEntityId } = useDrawerStore();
|
|
14614
|
-
const isOpen = drawerType !==
|
|
14619
|
+
const isOpen = drawerType !== EntityTypes.InstrumentationRule;
|
|
14615
14620
|
const onClose = () => {
|
|
14616
14621
|
setDrawerType(null);
|
|
14617
14622
|
setDrawerEntityId(null);
|
|
@@ -14633,10 +14638,10 @@ const InstrumentationRuleDrawer = ({ updateInstrumentationRule, deleteInstrument
|
|
|
14633
14638
|
const handleEdit = (bool) => {
|
|
14634
14639
|
if (!thisItem.mutable && (bool || bool === undefined)) {
|
|
14635
14640
|
addNotification({
|
|
14636
|
-
type:
|
|
14641
|
+
type: StatusType.Warning,
|
|
14637
14642
|
title: FORM_ALERTS.FORBIDDEN,
|
|
14638
14643
|
message: FORM_ALERTS.CANNOT_EDIT_RULE,
|
|
14639
|
-
crdType:
|
|
14644
|
+
crdType: EntityTypes.InstrumentationRule,
|
|
14640
14645
|
target: drawerEntityId,
|
|
14641
14646
|
hideFromHistory: true,
|
|
14642
14647
|
});
|
|
@@ -14653,10 +14658,10 @@ const InstrumentationRuleDrawer = ({ updateInstrumentationRule, deleteInstrument
|
|
|
14653
14658
|
const handleDelete = () => {
|
|
14654
14659
|
if (!thisItem.mutable) {
|
|
14655
14660
|
addNotification({
|
|
14656
|
-
type:
|
|
14661
|
+
type: StatusType.Warning,
|
|
14657
14662
|
title: FORM_ALERTS.FORBIDDEN,
|
|
14658
14663
|
message: FORM_ALERTS.CANNOT_DELETE_RULE,
|
|
14659
|
-
crdType:
|
|
14664
|
+
crdType: EntityTypes.InstrumentationRule,
|
|
14660
14665
|
target: drawerEntityId,
|
|
14661
14666
|
hideFromHistory: true,
|
|
14662
14667
|
});
|
|
@@ -14671,7 +14676,7 @@ const InstrumentationRuleDrawer = ({ updateInstrumentationRule, deleteInstrument
|
|
|
14671
14676
|
}
|
|
14672
14677
|
};
|
|
14673
14678
|
const handleSave = (newTitle) => {
|
|
14674
|
-
if (validateForm({ withAlert: true, alertTitle:
|
|
14679
|
+
if (validateForm({ withAlert: true, alertTitle: Crud.Update })) {
|
|
14675
14680
|
const title = newTitle !== thisItem.type ? newTitle : '';
|
|
14676
14681
|
handleFormChange('ruleName', title);
|
|
14677
14682
|
updateInstrumentationRule(drawerEntityId, { ...formData, ruleName: title });
|
|
@@ -14688,7 +14693,7 @@ const InstrumentationRuleDrawer = ({ updateInstrumentationRule, deleteInstrument
|
|
|
14688
14693
|
|
|
14689
14694
|
const InstrumentationRuleModal = ({ isEnterprise, createInstrumentationRule }) => {
|
|
14690
14695
|
const { currentModal, setCurrentModal } = useModalStore();
|
|
14691
|
-
const isOpen = currentModal ===
|
|
14696
|
+
const isOpen = currentModal === EntityTypes.InstrumentationRule;
|
|
14692
14697
|
const { formData, formErrors, handleFormChange, resetFormData, validateForm } = useInstrumentationRuleFormData();
|
|
14693
14698
|
const [selectedItem, setSelectedItem] = useState(undefined);
|
|
14694
14699
|
const handleClose = () => {
|
|
@@ -14701,7 +14706,7 @@ const InstrumentationRuleModal = ({ isEnterprise, createInstrumentationRule }) =
|
|
|
14701
14706
|
setSelectedItem(item);
|
|
14702
14707
|
};
|
|
14703
14708
|
const handleSubmit = () => {
|
|
14704
|
-
const isFormOk = validateForm({ withAlert: true, alertTitle:
|
|
14709
|
+
const isFormOk = validateForm({ withAlert: true, alertTitle: Crud.Create });
|
|
14705
14710
|
if (!isFormOk)
|
|
14706
14711
|
return null;
|
|
14707
14712
|
createInstrumentationRule(formData);
|
|
@@ -14719,7 +14724,7 @@ const InstrumentationRuleModal = ({ isEnterprise, createInstrumentationRule }) =
|
|
|
14719
14724
|
] }) },
|
|
14720
14725
|
React.createElement(ModalBody, null,
|
|
14721
14726
|
React.createElement(SectionTitle, { title: 'Select Instrumentation Rule', description: 'Define how telemetry is recorded from your application. Choose a rule type and configure the details.' }),
|
|
14722
|
-
!isEnterprise && React.createElement(NotificationNote, { type:
|
|
14727
|
+
!isEnterprise && React.createElement(NotificationNote, { type: StatusType.Default, message: FORM_ALERTS.ENTERPRISE_ONLY('Instrumentation Rules'), style: { marginTop: '24px' } }),
|
|
14723
14728
|
React.createElement(AutocompleteInput, { options: INSTRUMENTATION_RULE_OPTIONS, selectedOption: selectedItem, onOptionSelect: (opt) => handleSelect(opt), style: { marginTop: isEnterprise ? '24px' : '12px' }, autoFocus: !selectedItem?.type }),
|
|
14724
14729
|
!!selectedItem?.type ? (React.createElement("div", null,
|
|
14725
14730
|
React.createElement(Divider, { margin: '16px 0' }),
|
|
@@ -14762,6 +14767,10 @@ const InstrumentationRuleTable = ({ maxHeight, maxWidth }) => {
|
|
|
14762
14767
|
// note: rules do not have filters yet
|
|
14763
14768
|
instrumentationRules.map((rule) => {
|
|
14764
14769
|
return {
|
|
14770
|
+
onClick: () => {
|
|
14771
|
+
setDrawerType(EntityTypes.InstrumentationRule);
|
|
14772
|
+
setDrawerEntityId(rule.ruleId);
|
|
14773
|
+
},
|
|
14765
14774
|
cells: [
|
|
14766
14775
|
{
|
|
14767
14776
|
columnKey: 'icon',
|
|
@@ -14769,7 +14778,7 @@ const InstrumentationRuleTable = ({ maxHeight, maxWidth }) => {
|
|
|
14769
14778
|
},
|
|
14770
14779
|
{
|
|
14771
14780
|
columnKey: 'name',
|
|
14772
|
-
value: getEntityLabel(rule,
|
|
14781
|
+
value: getEntityLabel(rule, EntityTypes.InstrumentationRule, { prioritizeDisplayName: true }),
|
|
14773
14782
|
},
|
|
14774
14783
|
{
|
|
14775
14784
|
columnKey: 'type',
|
|
@@ -14796,24 +14805,21 @@ const InstrumentationRuleTable = ({ maxHeight, maxWidth }) => {
|
|
|
14796
14805
|
{
|
|
14797
14806
|
columnKey: 'active-status',
|
|
14798
14807
|
component: () => (React.createElement("div", { style: { lineHeight: 1 } },
|
|
14799
|
-
React.createElement(Status, { status: rule.disabled ?
|
|
14808
|
+
React.createElement(Status, { status: rule.disabled ? StatusType.Error : StatusType.Success, title: rule.disabled ? 'Inactive' : 'Active', withIcon: true, withBorder: true }))),
|
|
14800
14809
|
},
|
|
14801
14810
|
{
|
|
14802
14811
|
columnKey: 'source-count',
|
|
14803
14812
|
component: () => (React.createElement("div", { style: { lineHeight: 1 } },
|
|
14804
|
-
React.createElement(Status, { status:
|
|
14813
|
+
React.createElement(Status, { status: StatusType.Info, title: 'all sources', withBorder: true }))),
|
|
14805
14814
|
},
|
|
14806
14815
|
],
|
|
14807
14816
|
};
|
|
14808
14817
|
}), [instrumentationRules]);
|
|
14809
14818
|
return (React.createElement(TableContainer, { "$maxWidth": maxWidth },
|
|
14810
14819
|
React.createElement(TableTitleWrap, null,
|
|
14811
|
-
React.createElement(IconTitleBadge, { icon: getEntityIcon(
|
|
14820
|
+
React.createElement(IconTitleBadge, { icon: getEntityIcon(EntityTypes.Action), title: DISPLAY_TITLES.InstrumentationRules, badge: instrumentationRules.length, loading: instrumentationRulesLoading })),
|
|
14812
14821
|
React.createElement(TableWrap, { "$maxHeight": maxHeight },
|
|
14813
|
-
React.createElement(InteractiveTable, { columns: columns$1, rows: rows
|
|
14814
|
-
setDrawerType(ENTITY_TYPES.INSTRUMENTATION_RULE);
|
|
14815
|
-
setDrawerEntityId(instrumentationRules[idx].ruleId);
|
|
14816
|
-
} })),
|
|
14822
|
+
React.createElement(InteractiveTable, { columns: columns$1, rows: rows })),
|
|
14817
14823
|
!instrumentationRules.length && (React.createElement(CenterThis, { style: { marginTop: '2rem' } },
|
|
14818
14824
|
React.createElement(NoDataFound, null)))));
|
|
14819
14825
|
};
|
|
@@ -14866,7 +14872,7 @@ const MultiSourceControl = ({ totalSourceCount, uninstrumentSources }) => {
|
|
|
14866
14872
|
React.createElement(Button, { variant: 'tertiary', onClick: () => setIsWarnModalOpen(true) },
|
|
14867
14873
|
React.createElement(TrashIcon, null),
|
|
14868
14874
|
React.createElement(Text, { family: 'secondary', decoration: 'underline', color: theme.text.error }, "Uninstrument"))),
|
|
14869
|
-
React.createElement(DeleteWarning, { isOpen: isWarnModalOpen, name: `${totalSelected} sources`, type:
|
|
14875
|
+
React.createElement(DeleteWarning, { isOpen: isWarnModalOpen, name: `${totalSelected} sources`, type: EntityTypes.Source, isLastItem: totalSelected === totalSourceCount, onApprove: onDelete, onDeny: () => setIsWarnModalOpen(false) })));
|
|
14870
14876
|
};
|
|
14871
14877
|
|
|
14872
14878
|
const RelativeContainer = styled.div `
|
|
@@ -14995,7 +15001,7 @@ const NotificationListItem = ({ id, seen, type, title, message, time, crdType, t
|
|
|
14995
15001
|
const timeAgo = useTimeAgo();
|
|
14996
15002
|
const { onClickNotification } = useClickNotification();
|
|
14997
15003
|
const canClick = !!crdType && !!target;
|
|
14998
|
-
const isDeleted = title?.toLowerCase().includes(
|
|
15004
|
+
const isDeleted = title?.toLowerCase().includes(Crud.Delete.toLowerCase()) || false;
|
|
14999
15005
|
const Icon = getStatusIcon(type, theme);
|
|
15000
15006
|
return (React.createElement(NotifCard, { key: `notification-${id}`, className: canClick ? 'click-enabled' : '', onClick: () => {
|
|
15001
15007
|
if (canClick) {
|
|
@@ -15003,7 +15009,7 @@ const NotificationListItem = ({ id, seen, type, title, message, time, crdType, t
|
|
|
15003
15009
|
onClickNotification({ id, crdType, target });
|
|
15004
15010
|
}
|
|
15005
15011
|
} },
|
|
15006
|
-
React.createElement(StatusIcon, { "$type": isDeleted ?
|
|
15012
|
+
React.createElement(StatusIcon, { "$type": isDeleted ? StatusType.Error : type }, isDeleted ? React.createElement(TrashIcon, null) : React.createElement(Icon, null)),
|
|
15007
15013
|
React.createElement(NotifTextWrap, null,
|
|
15008
15014
|
React.createElement(NotifHeaderTextWrap, null,
|
|
15009
15015
|
React.createElement(Text, { size: 14 }, message)),
|
|
@@ -15014,24 +15020,24 @@ const NotificationListItem = ({ id, seen, type, title, message, time, crdType, t
|
|
|
15014
15020
|
React.createElement(Text, { size: 10, color: theme.colors.orange_soft }, "new")))))));
|
|
15015
15021
|
};
|
|
15016
15022
|
|
|
15017
|
-
var
|
|
15018
|
-
(function (
|
|
15019
|
-
|
|
15020
|
-
|
|
15021
|
-
|
|
15022
|
-
|
|
15023
|
-
|
|
15024
|
-
})(
|
|
15023
|
+
var NavIconIds;
|
|
15024
|
+
(function (NavIconIds) {
|
|
15025
|
+
NavIconIds["Overview"] = "overview";
|
|
15026
|
+
NavIconIds["InstrumentationRules"] = "instrumentation rule";
|
|
15027
|
+
NavIconIds["Sources"] = "source";
|
|
15028
|
+
NavIconIds["Actions"] = "action";
|
|
15029
|
+
NavIconIds["Destinations"] = "destination";
|
|
15030
|
+
})(NavIconIds || (NavIconIds = {}));
|
|
15025
15031
|
const SideNav = ({ onClickId, defaultSelectedId, extendedNavIcons }) => {
|
|
15026
15032
|
const [selectedId, setSelectedId] = useState(defaultSelectedId || '');
|
|
15027
15033
|
const mainIcons = useMemo(() => [
|
|
15028
15034
|
{
|
|
15029
|
-
id:
|
|
15035
|
+
id: NavIconIds.Overview,
|
|
15030
15036
|
icon: OverviewIcon,
|
|
15031
|
-
selected: selectedId ===
|
|
15037
|
+
selected: selectedId === NavIconIds.Overview,
|
|
15032
15038
|
onClick: () => {
|
|
15033
|
-
setSelectedId(
|
|
15034
|
-
onClickId(
|
|
15039
|
+
setSelectedId(NavIconIds.Overview);
|
|
15040
|
+
onClickId(NavIconIds.Overview);
|
|
15035
15041
|
},
|
|
15036
15042
|
tooltip: 'Overview',
|
|
15037
15043
|
},
|
|
@@ -15044,45 +15050,45 @@ const SideNav = ({ onClickId, defaultSelectedId, extendedNavIcons }) => {
|
|
|
15044
15050
|
},
|
|
15045
15051
|
})),
|
|
15046
15052
|
], [selectedId]);
|
|
15047
|
-
const subIcons = useMemo(() => [
|
|
15053
|
+
const subIcons = useMemo(() => [NavIconIds.Overview, NavIconIds.InstrumentationRules, NavIconIds.Sources, NavIconIds.Actions, NavIconIds.Destinations].includes(selectedId)
|
|
15048
15054
|
? [
|
|
15049
15055
|
{
|
|
15050
|
-
id:
|
|
15056
|
+
id: NavIconIds.InstrumentationRules,
|
|
15051
15057
|
icon: RulesIcon,
|
|
15052
|
-
selected: selectedId ===
|
|
15058
|
+
selected: selectedId === NavIconIds.InstrumentationRules,
|
|
15053
15059
|
onClick: () => {
|
|
15054
|
-
setSelectedId(
|
|
15055
|
-
onClickId(
|
|
15060
|
+
setSelectedId(NavIconIds.InstrumentationRules);
|
|
15061
|
+
onClickId(NavIconIds.InstrumentationRules);
|
|
15056
15062
|
},
|
|
15057
15063
|
tooltip: 'Instrumentation Rules',
|
|
15058
15064
|
},
|
|
15059
15065
|
{
|
|
15060
|
-
id:
|
|
15066
|
+
id: NavIconIds.Sources,
|
|
15061
15067
|
icon: SourcesIcon,
|
|
15062
|
-
selected: selectedId ===
|
|
15068
|
+
selected: selectedId === NavIconIds.Sources,
|
|
15063
15069
|
onClick: () => {
|
|
15064
|
-
setSelectedId(
|
|
15065
|
-
onClickId(
|
|
15070
|
+
setSelectedId(NavIconIds.Sources);
|
|
15071
|
+
onClickId(NavIconIds.Sources);
|
|
15066
15072
|
},
|
|
15067
15073
|
tooltip: 'Sources',
|
|
15068
15074
|
},
|
|
15069
15075
|
{
|
|
15070
|
-
id:
|
|
15076
|
+
id: NavIconIds.Actions,
|
|
15071
15077
|
icon: ActionsIcon,
|
|
15072
|
-
selected: selectedId ===
|
|
15078
|
+
selected: selectedId === NavIconIds.Actions,
|
|
15073
15079
|
onClick: () => {
|
|
15074
|
-
setSelectedId(
|
|
15075
|
-
onClickId(
|
|
15080
|
+
setSelectedId(NavIconIds.Actions);
|
|
15081
|
+
onClickId(NavIconIds.Actions);
|
|
15076
15082
|
},
|
|
15077
15083
|
tooltip: 'Actions',
|
|
15078
15084
|
},
|
|
15079
15085
|
{
|
|
15080
|
-
id:
|
|
15086
|
+
id: NavIconIds.Destinations,
|
|
15081
15087
|
icon: DestinationsIcon,
|
|
15082
|
-
selected: selectedId ===
|
|
15088
|
+
selected: selectedId === NavIconIds.Destinations,
|
|
15083
15089
|
onClick: () => {
|
|
15084
|
-
setSelectedId(
|
|
15085
|
-
onClickId(
|
|
15090
|
+
setSelectedId(NavIconIds.Destinations);
|
|
15091
|
+
onClickId(NavIconIds.Destinations);
|
|
15086
15092
|
},
|
|
15087
15093
|
tooltip: 'Destinations',
|
|
15088
15094
|
},
|
|
@@ -15118,18 +15124,18 @@ const Describe$1 = ({ source, fetchDescribeSource }) => {
|
|
|
15118
15124
|
}
|
|
15119
15125
|
return (React.createElement(FlexColumn, { "$gap": 12 }, !describe.pods?.length ? (React.createElement(CenterThis, null,
|
|
15120
15126
|
React.createElement(NoDataFound, { subTitle: 'Check if you have any running pods and try again' }))) : (describe.pods.map(({ podName, nodeName, phase, containers }) => {
|
|
15121
|
-
const podHasErrors = phase.status !==
|
|
15122
|
-
containers.findIndex(({ instrumentationInstances }) => instrumentationInstances.findIndex(({ healthy }) => healthy.status !==
|
|
15123
|
-
const podStatus = podHasErrors ?
|
|
15124
|
-
const divider = { type:
|
|
15127
|
+
const podHasErrors = phase.status !== StatusType.Success ||
|
|
15128
|
+
containers.findIndex(({ instrumentationInstances }) => instrumentationInstances.findIndex(({ healthy }) => healthy.status !== StatusType.Success) !== -1) !== -1;
|
|
15129
|
+
const podStatus = podHasErrors ? StatusType.Error : StatusType.Success;
|
|
15130
|
+
const divider = { type: DataCardFieldTypes.Divider };
|
|
15125
15131
|
return (React.createElement(DataCard, { key: `pod-${podName.value}`, title: `Pod: ${podName.value}`, withExtend: true, action: () => React.createElement(Status, { status: podStatus, title: podStatus, withIcon: true, withBorder: true }), data: [
|
|
15126
15132
|
{
|
|
15127
|
-
type:
|
|
15133
|
+
type: DataCardFieldTypes.CopyText,
|
|
15128
15134
|
value: `kubectl get pod ${podName.value} -n ${describe?.namespace?.value || source.namespace}`,
|
|
15129
15135
|
},
|
|
15130
15136
|
divider,
|
|
15131
15137
|
{
|
|
15132
|
-
type:
|
|
15138
|
+
type: DataCardFieldTypes.DescribeRow,
|
|
15133
15139
|
value: JSON.stringify({
|
|
15134
15140
|
title: nodeName.name,
|
|
15135
15141
|
tooltip: nodeName.explain,
|
|
@@ -15141,7 +15147,7 @@ const Describe$1 = ({ source, fetchDescribeSource }) => {
|
|
|
15141
15147
|
},
|
|
15142
15148
|
divider,
|
|
15143
15149
|
{
|
|
15144
|
-
type:
|
|
15150
|
+
type: DataCardFieldTypes.DescribeRow,
|
|
15145
15151
|
value: JSON.stringify({
|
|
15146
15152
|
title: phase.name,
|
|
15147
15153
|
tooltip: phase.explain,
|
|
@@ -15154,7 +15160,7 @@ const Describe$1 = ({ source, fetchDescribeSource }) => {
|
|
|
15154
15160
|
divider,
|
|
15155
15161
|
...containers.map((container) => {
|
|
15156
15162
|
return {
|
|
15157
|
-
type:
|
|
15163
|
+
type: DataCardFieldTypes.PodContainer,
|
|
15158
15164
|
value: JSON.stringify({
|
|
15159
15165
|
containerName: container.containerName.value,
|
|
15160
15166
|
actualDevice: {
|
|
@@ -15177,7 +15183,7 @@ const Describe$1 = ({ source, fetchDescribeSource }) => {
|
|
|
15177
15183
|
const buildCard = (source) => {
|
|
15178
15184
|
const { name, kind, namespace } = source;
|
|
15179
15185
|
const arr = [
|
|
15180
|
-
{ title: DISPLAY_TITLES.
|
|
15186
|
+
{ title: DISPLAY_TITLES.Namespace, value: namespace },
|
|
15181
15187
|
{ title: DISPLAY_TITLES.KIND, value: kind },
|
|
15182
15188
|
{ title: DISPLAY_TITLES.NAME, value: name, tooltip: 'K8s resource name' },
|
|
15183
15189
|
];
|
|
@@ -15195,11 +15201,11 @@ const SourceForm = ({ formData, handleFormChange }) => {
|
|
|
15195
15201
|
React.createElement(Input, { name: 'sourceName', title: 'Source name', tooltip: 'This overrides the default service name that runs in your cluster.', placeholder: 'Use a name that overrides the source name', value: formData.otelServiceName, onChange: ({ target: { value } }) => handleFormChange('otelServiceName', value) })));
|
|
15196
15202
|
};
|
|
15197
15203
|
|
|
15198
|
-
var
|
|
15199
|
-
(function (
|
|
15200
|
-
|
|
15201
|
-
|
|
15202
|
-
})(
|
|
15204
|
+
var Tabs;
|
|
15205
|
+
(function (Tabs) {
|
|
15206
|
+
Tabs["Overview"] = "Overview";
|
|
15207
|
+
Tabs["Pods"] = "Pods";
|
|
15208
|
+
})(Tabs || (Tabs = {}));
|
|
15203
15209
|
const FormContainer = styled.div `
|
|
15204
15210
|
width: 100%;
|
|
15205
15211
|
height: 100%;
|
|
@@ -15215,10 +15221,10 @@ const DataContainer$1 = styled.div `
|
|
|
15215
15221
|
const SourceDrawer = ({ persistSources, updateSource, fetchDescribeSource }) => {
|
|
15216
15222
|
const { sources } = useEntityStore();
|
|
15217
15223
|
const { drawerType, drawerEntityId, setDrawerEntityId, setDrawerType } = useDrawerStore();
|
|
15218
|
-
const [selectedTab, setSelectedTab] = useState(
|
|
15219
|
-
const isOpen = drawerType !==
|
|
15224
|
+
const [selectedTab, setSelectedTab] = useState(Tabs.Overview);
|
|
15225
|
+
const isOpen = drawerType !== EntityTypes.Source;
|
|
15220
15226
|
const onClose = () => {
|
|
15221
|
-
setSelectedTab(
|
|
15227
|
+
setSelectedTab(Tabs.Overview);
|
|
15222
15228
|
setDrawerType(null);
|
|
15223
15229
|
setDrawerEntityId(null);
|
|
15224
15230
|
};
|
|
@@ -15236,7 +15242,7 @@ const SourceDrawer = ({ persistSources, updateSource, fetchDescribeSource }) =>
|
|
|
15236
15242
|
if (!thisItem)
|
|
15237
15243
|
return null;
|
|
15238
15244
|
const containersData = thisItem.containers?.map((container) => ({
|
|
15239
|
-
type:
|
|
15245
|
+
type: DataCardFieldTypes.SourceContainer,
|
|
15240
15246
|
value: JSON.stringify(container),
|
|
15241
15247
|
})) || [];
|
|
15242
15248
|
const handleEdit = (bool) => {
|
|
@@ -15263,18 +15269,18 @@ const SourceDrawer = ({ persistSources, updateSource, fetchDescribeSource }) =>
|
|
|
15263
15269
|
setIsEditing(false);
|
|
15264
15270
|
setIsFormDirty(false);
|
|
15265
15271
|
};
|
|
15266
|
-
return (React.createElement(OverviewDrawer, { title: thisItem.otelServiceName || thisItem.name, titleTooltip: 'This attribute is used to identify the name of the service (service.name) that is generating telemetry data.', icon: getEntityIcon(
|
|
15272
|
+
return (React.createElement(OverviewDrawer, { title: thisItem.otelServiceName || thisItem.name, titleTooltip: 'This attribute is used to identify the name of the service (service.name) that is generating telemetry data.', icon: getEntityIcon(EntityTypes.Source), isEdit: isEditing, isFormDirty: isFormDirty, onEdit: selectedTab === Tabs.Overview ? handleEdit : undefined, onSave: handleSave, onDelete: selectedTab === Tabs.Overview ? handleDelete : undefined, onCancel: handleCancel, isLastItem: sources.length === 1, tabs: [
|
|
15267
15273
|
{
|
|
15268
|
-
label:
|
|
15269
|
-
onClick: () => setSelectedTab(
|
|
15270
|
-
selected: selectedTab ===
|
|
15274
|
+
label: Tabs.Overview,
|
|
15275
|
+
onClick: () => setSelectedTab(Tabs.Overview),
|
|
15276
|
+
selected: selectedTab === Tabs.Overview,
|
|
15271
15277
|
},
|
|
15272
15278
|
{
|
|
15273
|
-
label:
|
|
15274
|
-
onClick: () => setSelectedTab(
|
|
15275
|
-
selected: selectedTab ===
|
|
15279
|
+
label: Tabs.Pods,
|
|
15280
|
+
onClick: () => setSelectedTab(Tabs.Pods),
|
|
15281
|
+
selected: selectedTab === Tabs.Pods,
|
|
15276
15282
|
},
|
|
15277
|
-
] }, selectedTab ===
|
|
15283
|
+
] }, selectedTab === Tabs.Overview ? (isEditing ? (React.createElement(FormContainer, null,
|
|
15278
15284
|
React.createElement(SourceForm, { formData: formData, handleFormChange: (...params) => {
|
|
15279
15285
|
setIsFormDirty(true);
|
|
15280
15286
|
handleFormChange(...params);
|
|
@@ -15540,7 +15546,7 @@ const SourceSelectionForm = forwardRef(({ componentType, isModal, namespaces, na
|
|
|
15540
15546
|
|
|
15541
15547
|
const SourceModal = ({ componentType = 'FAST', namespaces, namespace, namespacesLoading, selectedNamespace, setSelectedNamespace, persistSources }) => {
|
|
15542
15548
|
const { currentModal, setCurrentModal } = useModalStore();
|
|
15543
|
-
const isOpen = currentModal ===
|
|
15549
|
+
const isOpen = currentModal === EntityTypes.Source;
|
|
15544
15550
|
const onSelectNamespace = (ns) => {
|
|
15545
15551
|
setSelectedNamespace((prev) => (prev === ns ? '' : ns));
|
|
15546
15552
|
};
|
|
@@ -15571,7 +15577,7 @@ const columns = [
|
|
|
15571
15577
|
{ key: 'checkbox-and-icon', title: '' },
|
|
15572
15578
|
{ key: 'name', title: DISPLAY_TITLES.NAME, sortable: true },
|
|
15573
15579
|
{ key: 'type', title: 'Kubernetes Type', sortable: true },
|
|
15574
|
-
{ key: 'namespace', title: DISPLAY_TITLES.
|
|
15580
|
+
{ key: 'namespace', title: DISPLAY_TITLES.Namespace, sortable: true },
|
|
15575
15581
|
{ key: 'containers', title: DISPLAY_TITLES.DETECTED_CONTAINERS },
|
|
15576
15582
|
{ key: 'conditions', title: 'Conditions' },
|
|
15577
15583
|
{ key: 'throughput', title: 'Throughput', sortable: true },
|
|
@@ -15605,7 +15611,7 @@ const SourceTable = ({ metrics, maxHeight, maxWidth }) => {
|
|
|
15605
15611
|
const payload = {};
|
|
15606
15612
|
filtered.forEach((source) => {
|
|
15607
15613
|
const id = { namespace: source.namespace, name: source.name, kind: source.kind };
|
|
15608
|
-
const isPending = isThisPending({ entityType:
|
|
15614
|
+
const isPending = isThisPending({ entityType: EntityTypes.Source, entityId: id });
|
|
15609
15615
|
if (!isPending) {
|
|
15610
15616
|
if (!payload[source.namespace]) {
|
|
15611
15617
|
payload[source.namespace] = [source];
|
|
@@ -15638,11 +15644,15 @@ const SourceTable = ({ metrics, maxHeight, maxWidth }) => {
|
|
|
15638
15644
|
const rows = useMemo(() => filtered.map((source) => {
|
|
15639
15645
|
const id = { namespace: source.namespace, name: source.name, kind: source.kind };
|
|
15640
15646
|
const { hasErrors, hasWarnings, hasDisableds } = getConditionsBooleans(source.conditions || []);
|
|
15641
|
-
const isPending = isThisPending({ entityType:
|
|
15647
|
+
const isPending = isThisPending({ entityType: EntityTypes.Source, entityId: id });
|
|
15642
15648
|
const isChecked = !!selectedSources[id.namespace]?.find((x) => x.namespace === id.namespace && x.name === id.name && x.kind === id.kind);
|
|
15643
15649
|
return {
|
|
15644
|
-
status: hasErrors ?
|
|
15650
|
+
status: hasErrors ? StatusType.Error : hasWarnings ? StatusType.Warning : undefined,
|
|
15645
15651
|
faded: hasDisableds,
|
|
15652
|
+
onClick: () => {
|
|
15653
|
+
setDrawerType(EntityTypes.Source);
|
|
15654
|
+
setDrawerEntityId(id);
|
|
15655
|
+
},
|
|
15646
15656
|
cells: [
|
|
15647
15657
|
{
|
|
15648
15658
|
columnKey: 'checkbox-and-icon',
|
|
@@ -15652,7 +15662,7 @@ const SourceTable = ({ metrics, maxHeight, maxWidth }) => {
|
|
|
15652
15662
|
},
|
|
15653
15663
|
{
|
|
15654
15664
|
columnKey: 'name',
|
|
15655
|
-
value: getEntityLabel(source,
|
|
15665
|
+
value: getEntityLabel(source, EntityTypes.Source, { extended: true }),
|
|
15656
15666
|
},
|
|
15657
15667
|
{
|
|
15658
15668
|
columnKey: 'type',
|
|
@@ -15666,7 +15676,7 @@ const SourceTable = ({ metrics, maxHeight, maxWidth }) => {
|
|
|
15666
15676
|
},
|
|
15667
15677
|
{
|
|
15668
15678
|
columnKey: 'throughput',
|
|
15669
|
-
value: formatBytes(getMetricForEntity(metrics,
|
|
15679
|
+
value: formatBytes(getMetricForEntity(metrics, EntityTypes.Source, id).throughput),
|
|
15670
15680
|
textColor: theme.text.info,
|
|
15671
15681
|
},
|
|
15672
15682
|
{
|
|
@@ -15676,7 +15686,7 @@ const SourceTable = ({ metrics, maxHeight, maxWidth }) => {
|
|
|
15676
15686
|
{
|
|
15677
15687
|
columnKey: 'containers',
|
|
15678
15688
|
component: () => (React.createElement("div", { style: { lineHeight: 1 } },
|
|
15679
|
-
React.createElement(Status, { status:
|
|
15689
|
+
React.createElement(Status, { status: StatusType.Info, title: getContainersInstrumentedCount(source.containers), withBorder: true }))),
|
|
15680
15690
|
},
|
|
15681
15691
|
],
|
|
15682
15692
|
};
|
|
@@ -15686,12 +15696,9 @@ const SourceTable = ({ metrics, maxHeight, maxWidth }) => {
|
|
|
15686
15696
|
return (React.createElement(TableContainer, { "$maxWidth": maxWidth },
|
|
15687
15697
|
React.createElement(TableTitleWrap, null,
|
|
15688
15698
|
React.createElement(Checkbox, { partiallyChecked: hasSelected && filtered?.length !== totalSelectedSources, value: hasSelected && filtered?.length === totalSelectedSources, onChange: onSelectAll, disabled: !filtered?.length }),
|
|
15689
|
-
React.createElement(IconTitleBadge, { icon: getEntityIcon(
|
|
15699
|
+
React.createElement(IconTitleBadge, { icon: getEntityIcon(EntityTypes.Source), title: DISPLAY_TITLES.Sources, badge: badge, badgeTooltip: badgeTooltip, loading: sourcesLoading && !isAwaitingInstrumentation })),
|
|
15690
15700
|
React.createElement(TableWrap, { "$maxHeight": maxHeight },
|
|
15691
|
-
React.createElement(InteractiveTable, { columns: columns, rows: isAwaitingInstrumentation ? [] : rows
|
|
15692
|
-
setDrawerType(ENTITY_TYPES.SOURCE);
|
|
15693
|
-
setDrawerEntityId({ namespace: filtered[idx].namespace, name: filtered[idx].name, kind: filtered[idx].kind });
|
|
15694
|
-
} })),
|
|
15701
|
+
React.createElement(InteractiveTable, { columns: columns, rows: isAwaitingInstrumentation ? [] : rows })),
|
|
15695
15702
|
isAwaitingInstrumentation ? (React.createElement(CenterThis, { style: { marginTop: '2rem', gap: '24px' } },
|
|
15696
15703
|
React.createElement(TraceLoader, { width: 420 }),
|
|
15697
15704
|
React.createElement(FlexRow, { "$gap": 16 },
|
|
@@ -15754,7 +15761,7 @@ const TokenActions = ({ token, saveToken }) => {
|
|
|
15754
15761
|
setIsEdit(false);
|
|
15755
15762
|
setInputValue(token);
|
|
15756
15763
|
};
|
|
15757
|
-
const SuccessIcon = getStatusIcon(
|
|
15764
|
+
const SuccessIcon = getStatusIcon(StatusType.Success, theme);
|
|
15758
15765
|
useOnClickOutside(popupRef, onCloseEdit);
|
|
15759
15766
|
return (React.createElement(FlexRow, { "$gap": 0 },
|
|
15760
15767
|
React.createElement(IconButton, { size: 32, onClick: () => clickCopy(token) }, isCopied ? React.createElement(SuccessIcon, null) : React.createElement(CopyIcon, null)),
|
|
@@ -15777,7 +15784,7 @@ const TokenActions = ({ token, saveToken }) => {
|
|
|
15777
15784
|
const Tokens = ({ tokens, saveToken }) => {
|
|
15778
15785
|
return (React.createElement(DataCard, { title: 'Authorization Tokens', titleBadge: tokens.length, data: [
|
|
15779
15786
|
{
|
|
15780
|
-
type:
|
|
15787
|
+
type: DataCardFieldTypes.Table,
|
|
15781
15788
|
value: {
|
|
15782
15789
|
columns: [
|
|
15783
15790
|
{ key: 'icon', title: '' },
|
|
@@ -15820,10 +15827,10 @@ const Describe = ({ fetchDescribeOdigos }) => {
|
|
|
15820
15827
|
const mapObjectToCardFields = (obj) => !!obj?.name
|
|
15821
15828
|
? [
|
|
15822
15829
|
{
|
|
15823
|
-
type:
|
|
15830
|
+
type: DataCardFieldTypes.Divider,
|
|
15824
15831
|
},
|
|
15825
15832
|
{
|
|
15826
|
-
type:
|
|
15833
|
+
type: DataCardFieldTypes.DescribeRow,
|
|
15827
15834
|
value: JSON.stringify({
|
|
15828
15835
|
title: obj.name,
|
|
15829
15836
|
subTitle: obj.explain,
|
|
@@ -15950,4 +15957,4 @@ const ToggleDarkMode = () => {
|
|
|
15950
15957
|
React.createElement(Background, { "$darkMode": darkMode })));
|
|
15951
15958
|
};
|
|
15952
15959
|
|
|
15953
|
-
export { ActionDrawer, ActionForm, ActionModal, ActionTable, AwaitPipeline, ComputePlatformSelect, ComputePlatforms, ComputePlatformsActionsMenu, ConnectionStatusDropdown, ConnectionTypeDropdown, DataFlow, DataFlowActionsMenu, DestinationDrawer, DestinationForm, DestinationModal, DestinationSelectionForm, DestinationTable, ErrorDropdown, InstrumentationRuleDrawer, InstrumentationRuleForm, InstrumentationRuleModal, InstrumentationRuleTable, KindDropdown, LanguageDropdown, MonitorDropdown, MultiSourceControl,
|
|
15960
|
+
export { ActionDrawer, ActionForm, ActionModal, ActionTable, AwaitPipeline, ComputePlatformSelect, ComputePlatforms, ComputePlatformsActionsMenu, ConnectionStatusDropdown, ConnectionTypeDropdown, DataFlow, DataFlowActionsMenu, DestinationDrawer, DestinationForm, DestinationModal, DestinationSelectionForm, DestinationTable, ErrorDropdown, InstrumentationRuleDrawer, InstrumentationRuleForm, InstrumentationRuleModal, InstrumentationRuleTable, KindDropdown, LanguageDropdown, MonitorDropdown, MultiSourceControl, NamespaceDropdown, NavIconIds, NotificationManager, OverviewDrawer, SideNav, SlackInvite, SourceDrawer, SourceForm, SourceModal, SourceSelectionForm, SourceTable, SystemOverview, ToastList, ToggleDarkMode };
|