@odigos/ui-kit 0.0.7 → 0.0.9
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 +34 -0
- package/lib/components/data-card/index.d.ts +1 -0
- package/lib/components/dropdown/dropdown.stories.d.ts +3 -2
- package/lib/components/error-boundary/error-boundary.stories.d.ts +9 -0
- package/lib/components/error-boundary/index.d.ts +5 -0
- package/lib/components/icon-title-badge/index.d.ts +1 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components.js +161 -10
- package/lib/constants.js +3 -3
- package/lib/containers/compute-platform-select/index.d.ts +4 -4
- package/lib/containers/compute-platforms/index.d.ts +3 -3
- package/lib/containers/compute-platforms-actions-menu/index.d.ts +2 -2
- package/lib/containers/data-flow/nodes/header-node.d.ts +2 -1
- package/lib/containers/dropdowns/connection-status-dropdown/index.d.ts +2 -2
- package/lib/containers/dropdowns/connection-type-dropdown/connection-type-dropdown.stories.d.ts +9 -0
- package/lib/containers/dropdowns/{platform-types-dropdown → connection-type-dropdown}/index.d.ts +5 -5
- package/lib/containers/dropdowns/index.d.ts +1 -1
- package/lib/containers.js +74 -67
- package/lib/data/sources/index.d.ts +1 -0
- package/lib/functions/get-containers-icons/index.d.ts +2 -2
- package/lib/functions/get-platform-icon/index.d.ts +1 -1
- package/lib/functions/get-platform-label/index.d.ts +1 -1
- package/lib/functions/get-programming-language-icon/index.d.ts +2 -2
- package/lib/functions.js +6 -6
- package/lib/hooks/useCopy.d.ts +1 -1
- package/lib/hooks.js +5 -5
- package/lib/icons/common/image-error-icon/image-error-icon.stories.d.ts +8 -0
- package/lib/icons/common/image-error-icon/index.d.ts +2 -0
- package/lib/icons/common/index.d.ts +1 -0
- package/lib/icons/index.d.ts +1 -0
- package/lib/icons/overview/connections-icon/connections-icon.stories.d.ts +8 -0
- package/lib/icons/overview/connections-icon/index.d.ts +2 -0
- package/lib/icons/overview/index.d.ts +1 -0
- package/lib/icons/programming-languages/c-plus-plus-logo/c-plus-plus-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/c-plus-plus-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/c-sharp-logo/c-sharp-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/c-sharp-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/dotnet-logo/dotnet-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/dotnet-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/elixir-logo/elixir-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/elixir-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/go-logo/go-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/go-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/index.d.ts +17 -0
- package/lib/icons/programming-languages/java-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/java-logo/java-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/kafka-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/kafka-logo/kafka-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/mysql-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/mysql-logo/mysql-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/nginx-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/nginx-logo/nginx-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/nodejs-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/nodejs-logo/nodejs-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/php-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/php-logo/php-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/postgres-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/postgres-logo/postgres-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/python-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/python-logo/python-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/redis-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/redis-logo/redis-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/ruby-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/ruby-logo/ruby-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/rust-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/rust-logo/rust-logo.stories.d.ts +8 -0
- package/lib/icons/programming-languages/swift-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/swift-logo/swift-logo.stories.d.ts +8 -0
- package/lib/icons.js +11 -4
- package/lib/{index-4tCBQ2pl.js → index-Bc8gi9FH.js} +24 -26
- package/lib/{index-BhCi-TxF.js → index-BumPE6cF.js} +1 -1
- package/lib/{index-Byh3BO6S.js → index-CZe2VX28.js} +2 -2
- package/lib/{index-DRT_7tQl.js → index-DIcomki-.js} +12 -0
- package/lib/{index-BJxaoI0G.js → index-D_Qn2U89.js} +8 -1
- package/lib/{index-DUW6bkzG.js → index-g6Twdelv.js} +7 -3
- package/lib/index-ixs381n-.js +466 -0
- package/lib/{index-COMxdOJo.js → index-m62aT4IR.js} +28 -28
- package/lib/store/useEntityStore.d.ts +1 -0
- package/lib/store.js +1 -1
- package/lib/theme.js +1 -1
- package/lib/types/{compute-platform → connection}/index.d.ts +3 -3
- package/lib/types/index.d.ts +1 -1
- package/lib/{useSourceSelectionFormData-ClorQ_WP.js → useSourceSelectionFormData-BY6B70Kf.js} +5 -4
- package/lib/{useTransition-5w3VnEhL.js → useTransition-Dfxjcy-C.js} +25 -4
- package/package.json +4 -1
- package/lib/containers/dropdowns/platform-types-dropdown/platform-types-dropdown.stories.d.ts +0 -9
- package/lib/index-DLKEpJJm.js +0 -53
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-
|
|
3
|
+
import { A as ACTION_OPTIONS, M as MONITORS_OPTIONS, I as INSTRUMENTATION_RULE_OPTIONS } from './index-CZe2VX28.js';
|
|
4
4
|
import { D as DISPLAY_TITLES, F as FORM_ALERTS } from './index-Cu2uHOuh.js';
|
|
5
5
|
import { ACTION_TYPE, ENTITY_TYPES, NOTIFICATION_TYPE, CRUD, OTHER_STATUS, NODE_TYPES, ADD_NODE_TYPES, EDGE_TYPES, FIELD_TYPES, SIGNAL_TYPE, CODE_ATTRIBUTES_KEY_TYPES, PAYLOAD_COLLECTION_KEY_TYPES, INSTRUMENTATION_RULE_TYPE } from './types.js';
|
|
6
|
-
import { f as DATA_CARD_FIELD_TYPES, 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, $ as FlexColumn, r as IconTitleBadge, y as InteractiveTable, a0 as CenterThis, J as NoDataFound, Y as TraceLoader,
|
|
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-
|
|
6
|
+
import { f as DATA_CARD_FIELD_TYPES, 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, $ as FlexColumn, r as IconTitleBadge, y as InteractiveTable, a0 as CenterThis, J as NoDataFound, Y as TraceLoader, a as Badge, B as Button, E as ExtendArrow, n as Dropdown, a3 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-m62aT4IR.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-DIcomki-.js';
|
|
8
8
|
import Theme from './theme.js';
|
|
9
9
|
import { i as isEmpty, s as safeJsonParse } from './index-BZS1ijMm.js';
|
|
10
|
-
import {
|
|
10
|
+
import { i as CheckCircledIcon, h as ErrorTriangleIcon, W as WarningTriangleIcon } from './index-ixs381n-.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-
|
|
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-
|
|
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-
|
|
12
|
+
import { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-BumPE6cF.js';
|
|
13
|
+
import { u as useActionFormData, a as useClickNode, c as useDestinationFormData, b as useClickNotification, d as useSourceFormData, e as useSourceSelectionFormData } from './useSourceSelectionFormData-BY6B70Kf.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-Dfxjcy-C.js';
|
|
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-Bc8gi9FH.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-g6Twdelv.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';
|
|
@@ -800,11 +800,19 @@ const StyledButton = styled(Button) `
|
|
|
800
800
|
background-color: ${({ theme }) => theme.colors.majestic_blue + Theme.opacity.hex['048']};
|
|
801
801
|
}
|
|
802
802
|
`;
|
|
803
|
+
const TextLimited = styled(Text) `
|
|
804
|
+
white-space: nowrap;
|
|
805
|
+
overflow: hidden;
|
|
806
|
+
text-overflow: ellipsis;
|
|
807
|
+
font-size: 14px;
|
|
808
|
+
`;
|
|
803
809
|
const SelectionButton = ({ label, onClick, icon: Icon, iconSrc, badgeLabel, badgeFilled, isSelected, withBorder, color, hoverColor, style }) => {
|
|
804
810
|
return (React.createElement(StyledButton, { onClick: onClick, className: isSelected ? 'selected' : 'not-selected', "$withBorder": withBorder, "$color": color, "$hoverColor": hoverColor, style: style },
|
|
805
|
-
Icon && React.createElement(
|
|
806
|
-
|
|
807
|
-
React.createElement(
|
|
811
|
+
Icon && (React.createElement("div", null,
|
|
812
|
+
React.createElement(Icon, null))),
|
|
813
|
+
iconSrc && (React.createElement("div", null,
|
|
814
|
+
React.createElement("img", { src: iconSrc, alt: '', width: 16, height: 16 }))),
|
|
815
|
+
React.createElement(TextLimited, null, label),
|
|
808
816
|
badgeLabel !== undefined && React.createElement(Badge, { label: badgeLabel, filled: badgeFilled || isSelected })));
|
|
809
817
|
};
|
|
810
818
|
|
|
@@ -867,7 +875,7 @@ const FootWrap = styled.div `
|
|
|
867
875
|
border-top: ${({ theme }) => `1px solid ${theme.colors.border}`};
|
|
868
876
|
padding: 12px;
|
|
869
877
|
`;
|
|
870
|
-
const ComputePlatformSelect = ({
|
|
878
|
+
const ComputePlatformSelect = ({ connections, selected, onSelect, onViewAll }) => {
|
|
871
879
|
const theme = Theme.useTheme();
|
|
872
880
|
const { addNotification } = useNotificationStore();
|
|
873
881
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -878,8 +886,8 @@ const ComputePlatformSelect = ({ computePlatforms, selected, onSelect, onViewAll
|
|
|
878
886
|
const containerRef = useRef(null);
|
|
879
887
|
useOnClickOutside(containerRef, onClose);
|
|
880
888
|
useKeyDown({ key: 'Escape', active: isOpen }, onClose);
|
|
881
|
-
const withSelect = !!
|
|
882
|
-
const filtered =
|
|
889
|
+
const withSelect = !!connections.length;
|
|
890
|
+
const filtered = connections.filter(({ id }) => id.toLowerCase().includes(searchText));
|
|
883
891
|
const Icon = !!selected?.type ? getPlatformIcon(selected.type) : null;
|
|
884
892
|
return (React.createElement(RelativeContainer$2, { ref: containerRef },
|
|
885
893
|
React.createElement(Tab, { "$withSelect": withSelect, onClick: () => setIsOpen((prev) => !prev) },
|
|
@@ -890,8 +898,8 @@ const ComputePlatformSelect = ({ computePlatforms, selected, onSelect, onViewAll
|
|
|
890
898
|
isOpen && withSelect && (React.createElement(AbsoluteContainer$2, null,
|
|
891
899
|
React.createElement(HeadWrap, null,
|
|
892
900
|
React.createElement(Input, { placeholder: 'Search...', icon: SearchIcon, value: searchText, onChange: (e) => setSearchText(e.target.value.toLowerCase()) })),
|
|
893
|
-
React.createElement(VerticalScroll$1, { style: { maxHeight: '240px' } }, filtered.map(({ id, type, name,
|
|
894
|
-
if (
|
|
901
|
+
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 === NOTIFICATION_TYPE.SUCCESS ? theme.text.success : theme.text.error }), label: `${!!name ? name : getPlatformLabel(type)} (${id})`, isSelected: selected?.id === id, onClick: () => {
|
|
902
|
+
if (status === NOTIFICATION_TYPE.SUCCESS) {
|
|
895
903
|
onSelect(filtered[idx]);
|
|
896
904
|
}
|
|
897
905
|
else {
|
|
@@ -908,11 +916,11 @@ const ComputePlatformSelect = ({ computePlatforms, selected, onSelect, onViewAll
|
|
|
908
916
|
React.createElement(Button, { variant: 'secondary', style: { width: '100%' }, onClick: onViewAll }, "VIEW ALL"))))));
|
|
909
917
|
};
|
|
910
918
|
|
|
911
|
-
const ComputePlatforms = ({
|
|
919
|
+
const ComputePlatforms = ({ connections, onSelect }) => {
|
|
912
920
|
const { searchText, platformTypes, statuses } = useFilterStore();
|
|
913
|
-
const filtered =
|
|
921
|
+
const filtered = connections.filter(({ id, type, status }) => (!searchText || id.toLowerCase().includes(searchText)) &&
|
|
914
922
|
(!platformTypes?.length || platformTypes.find((opt) => opt.id === type)) &&
|
|
915
|
-
(!statuses?.length || statuses.find((opt) => opt.id ===
|
|
923
|
+
(!statuses?.length || statuses.find((opt) => opt.id === status)));
|
|
916
924
|
return (React.createElement(React.Fragment, null,
|
|
917
925
|
React.createElement(InteractiveTable, { columns: [
|
|
918
926
|
{ key: 'icon', title: '' },
|
|
@@ -920,7 +928,7 @@ const ComputePlatforms = ({ computePlatforms, onSelect }) => {
|
|
|
920
928
|
{ key: 'type', title: 'Type' },
|
|
921
929
|
{ key: 'status', title: 'Status' },
|
|
922
930
|
{ key: 'id', title: 'Unique ID' },
|
|
923
|
-
], rows: filtered.map(({ id, name, type,
|
|
931
|
+
], rows: filtered.map(({ id, name, type, status }) => ({
|
|
924
932
|
cells: [
|
|
925
933
|
{ columnKey: 'id', value: id },
|
|
926
934
|
{ columnKey: 'type', value: type },
|
|
@@ -929,7 +937,7 @@ const ComputePlatforms = ({ computePlatforms, onSelect }) => {
|
|
|
929
937
|
{
|
|
930
938
|
columnKey: 'status',
|
|
931
939
|
component: () => (React.createElement("div", { style: { lineHeight: 1 } },
|
|
932
|
-
React.createElement(Status, { title:
|
|
940
|
+
React.createElement(Status, { title: status === NOTIFICATION_TYPE.SUCCESS ? 'connection alive' : 'connection lost', status: status, withIcon: true, withBorder: true }))),
|
|
933
941
|
},
|
|
934
942
|
],
|
|
935
943
|
})), onRowClick: (idx) => onSelect(filtered[idx]) }),
|
|
@@ -937,19 +945,32 @@ const ComputePlatforms = ({ computePlatforms, onSelect }) => {
|
|
|
937
945
|
React.createElement(NoDataFound, null)))));
|
|
938
946
|
};
|
|
939
947
|
|
|
940
|
-
const ConnectionStatusDropdown = ({
|
|
948
|
+
const ConnectionStatusDropdown = ({ connections, title = '', value, onSelect, onDeselect, ...props }) => {
|
|
941
949
|
const options = useMemo(() => {
|
|
942
950
|
const payload = [];
|
|
943
|
-
|
|
944
|
-
if (!payload.find((opt) => opt.id ===
|
|
945
|
-
payload.push({ id:
|
|
951
|
+
connections?.forEach(({ status }) => {
|
|
952
|
+
if (!payload.find((opt) => opt.id === status)) {
|
|
953
|
+
payload.push({ id: status, value: status });
|
|
946
954
|
}
|
|
947
955
|
});
|
|
948
956
|
return payload;
|
|
949
|
-
}, [
|
|
957
|
+
}, [connections]);
|
|
950
958
|
return React.createElement(Dropdown, { disabled: !options?.length, title: title, placeholder: 'All Statuses', options: options, value: value, onSelect: onSelect, onDeselect: onDeselect, ...props });
|
|
951
959
|
};
|
|
952
960
|
|
|
961
|
+
const ConnectionTypeDropdown = ({ connections, title = '', value, onSelect, onDeselect, ...props }) => {
|
|
962
|
+
const options = useMemo(() => {
|
|
963
|
+
const payload = [];
|
|
964
|
+
connections?.forEach(({ type }) => {
|
|
965
|
+
if (!payload.find((opt) => opt.id === type)) {
|
|
966
|
+
payload.push({ id: type, value: type });
|
|
967
|
+
}
|
|
968
|
+
});
|
|
969
|
+
return payload;
|
|
970
|
+
}, [connections]);
|
|
971
|
+
return React.createElement(Dropdown, { disabled: !options?.length, title: title, placeholder: 'All Types', options: options, value: value, onSelect: onSelect, onDeselect: onDeselect, ...props });
|
|
972
|
+
};
|
|
973
|
+
|
|
953
974
|
const ErrorDropdown = ({ title = 'Error Message', value, onSelect, onDeselect, disabled, ...props }) => {
|
|
954
975
|
const { sources } = useEntityStore();
|
|
955
976
|
const options = useMemo(() => {
|
|
@@ -1017,19 +1038,6 @@ const NamespaceDropdown = ({ namespaces, title = 'Namespace', value, onSelect, o
|
|
|
1017
1038
|
return React.createElement(Dropdown, { disabled: !options?.length, title: title, placeholder: 'Select namespace', options: options, value: value, onSelect: onSelect, onDeselect: onDeselect, ...props });
|
|
1018
1039
|
};
|
|
1019
1040
|
|
|
1020
|
-
const PlatformTypesDropdown = ({ computePlatforms, title = '', value, onSelect, onDeselect, ...props }) => {
|
|
1021
|
-
const options = useMemo(() => {
|
|
1022
|
-
const payload = [];
|
|
1023
|
-
computePlatforms?.forEach(({ type }) => {
|
|
1024
|
-
if (!payload.find((opt) => opt.id === type)) {
|
|
1025
|
-
payload.push({ id: type, value: type });
|
|
1026
|
-
}
|
|
1027
|
-
});
|
|
1028
|
-
return payload;
|
|
1029
|
-
}, [computePlatforms]);
|
|
1030
|
-
return React.createElement(Dropdown, { disabled: !options?.length, title: title, placeholder: 'All Types', options: options, value: value, onSelect: onSelect, onDeselect: onDeselect, ...props });
|
|
1031
|
-
};
|
|
1032
|
-
|
|
1033
1041
|
const KindDropdown = ({ title = 'Kind', value, onSelect, onDeselect, ...props }) => {
|
|
1034
1042
|
const { sources } = useEntityStore();
|
|
1035
1043
|
const options = useMemo(() => {
|
|
@@ -1058,7 +1066,7 @@ const Title$1 = styled(Text) `
|
|
|
1058
1066
|
const SearchAndFilterWrapper = styled.div `
|
|
1059
1067
|
width: 200px;
|
|
1060
1068
|
`;
|
|
1061
|
-
const ComputePlatformsActionsMenu = ({
|
|
1069
|
+
const ComputePlatformsActionsMenu = ({ connections }) => {
|
|
1062
1070
|
const { searchText, setSearchText, statuses, setStatuses, clearAll } = useFilterStore();
|
|
1063
1071
|
// cleanup filters on unmount
|
|
1064
1072
|
useEffect(() => {
|
|
@@ -1068,12 +1076,12 @@ const ComputePlatformsActionsMenu = ({ computePlatforms }) => {
|
|
|
1068
1076
|
React.createElement(FlexRow, { "$gap": 16 },
|
|
1069
1077
|
React.createElement(FlexRow, { "$gap": 12 },
|
|
1070
1078
|
React.createElement(Title$1, null, "Compute platforms"),
|
|
1071
|
-
React.createElement(Badge, { label:
|
|
1079
|
+
React.createElement(Badge, { label: connections.length, filled: !!connections.length })),
|
|
1072
1080
|
React.createElement(Divider, { orientation: 'vertical', length: '20px', margin: '0' }),
|
|
1073
1081
|
React.createElement(SearchAndFilterWrapper, null,
|
|
1074
1082
|
React.createElement(Input, { placeholder: 'Search...', icon: SearchIcon, value: searchText, onChange: (e) => setSearchText(e.target.value.toLowerCase()) })),
|
|
1075
1083
|
React.createElement(SearchAndFilterWrapper, null,
|
|
1076
|
-
React.createElement(ConnectionStatusDropdown, {
|
|
1084
|
+
React.createElement(ConnectionStatusDropdown, { connections: connections, value: statuses, onSelect: (val) => setStatuses([...(statuses || []), val]), onDeselect: (val) => setStatuses((statuses || []).filter((opt) => opt.id !== val.id)), showSearch: true, required: true, isMulti: true })))));
|
|
1077
1085
|
};
|
|
1078
1086
|
|
|
1079
1087
|
var css_248z = "/* this gets exported as style.css and can be used for the default theming */\n/* these are the necessary styles for React/Svelte Flow, they get used by base.css and style.css */\n.react-flow {\n direction: ltr;\n\n --xy-edge-stroke-default: #b1b1b7;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #555;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);\n\n --xy-minimap-background-color-default: #fff;\n --xy-minimap-mask-background-color-default: rgb(240, 240, 240, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #e2e2e2;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: transparent;\n --xy-background-pattern-dots-color-default: #91919a;\n --xy-background-pattern-lines-color-default: #eee;\n --xy-background-pattern-cross-color-default: #e2e2e2;\n background-color: var(--xy-background-color, var(--xy-background-color-default));\n --xy-node-color-default: inherit;\n --xy-node-border-default: 1px solid #1a192b;\n --xy-node-background-color-default: #fff;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;\n --xy-node-border-radius-default: 3px;\n\n --xy-handle-background-color-default: #1a192b;\n --xy-handle-border-color-default: #fff;\n\n --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);\n\n --xy-controls-button-background-color-default: #fefefe;\n --xy-controls-button-background-color-hover-default: #f4f4f4;\n --xy-controls-button-color-default: inherit;\n --xy-controls-button-color-hover-default: inherit;\n --xy-controls-button-border-color-default: #eee;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #ffffff;\n --xy-edge-label-color-default: inherit;\n --xy-resize-background-color-default: #3367d9;\n}\n.react-flow.dark {\n --xy-edge-stroke-default: #3e3e3e;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #727272;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(150, 150, 150, 0.25);\n\n --xy-minimap-background-color-default: #141414;\n --xy-minimap-mask-background-color-default: rgb(60, 60, 60, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #2b2b2b;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: #141414;\n --xy-background-pattern-dots-color-default: #777;\n --xy-background-pattern-lines-color-default: #777;\n --xy-background-pattern-cross-color-default: #777;\n --xy-node-color-default: #f8f8f8;\n --xy-node-border-default: 1px solid #3c3c3c;\n --xy-node-background-color-default: #1e1e1e;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;\n\n --xy-handle-background-color-default: #bebebe;\n --xy-handle-border-color-default: #1e1e1e;\n\n --xy-selection-background-color-default: rgba(200, 200, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(200, 200, 220, 0.8);\n\n --xy-controls-button-background-color-default: #2b2b2b;\n --xy-controls-button-background-color-hover-default: #3e3e3e;\n --xy-controls-button-color-default: #f8f8f8;\n --xy-controls-button-color-hover-default: #fff;\n --xy-controls-button-border-color-default: #5b5b5b;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #141414;\n --xy-edge-label-color-default: #f8f8f8;\n}\n.react-flow__background {\n background-color: var(--xy-background-color, var(--xy-background-color-props, var(--xy-background-color-default)));\n pointer-events: none;\n z-index: -1;\n}\n.react-flow__container {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n}\n.react-flow__pane {\n z-index: 1;\n}\n.react-flow__pane.draggable {\n cursor: grab;\n }\n.react-flow__pane.dragging {\n cursor: grabbing;\n }\n.react-flow__pane.selection {\n cursor: pointer;\n }\n.react-flow__viewport {\n transform-origin: 0 0;\n z-index: 2;\n pointer-events: none;\n}\n.react-flow__renderer {\n z-index: 4;\n}\n.react-flow__selection {\n z-index: 6;\n}\n.react-flow__nodesselection-rect:focus,\n.react-flow__nodesselection-rect:focus-visible {\n outline: none;\n}\n.react-flow__edge-path {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));\n fill: none;\n}\n.react-flow__connection-path {\n stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));\n stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));\n fill: none;\n}\n.react-flow .react-flow__edges {\n position: absolute;\n}\n.react-flow .react-flow__edges svg {\n overflow: visible;\n position: absolute;\n pointer-events: none;\n }\n.react-flow__edge {\n pointer-events: visibleStroke;\n}\n.react-flow__edge.selectable {\n cursor: pointer;\n }\n.react-flow__edge.animated path {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\n.react-flow__edge.animated path.react-flow__edge-interaction {\n stroke-dasharray: none;\n animation: none;\n }\n.react-flow__edge.inactive {\n pointer-events: none;\n }\n.react-flow__edge.selected,\n .react-flow__edge:focus,\n .react-flow__edge:focus-visible {\n outline: none;\n }\n.react-flow__edge.selected .react-flow__edge-path,\n .react-flow__edge.selectable:focus .react-flow__edge-path,\n .react-flow__edge.selectable:focus-visible .react-flow__edge-path {\n stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));\n }\n.react-flow__edge-textwrapper {\n pointer-events: all;\n }\n.react-flow__edge .react-flow__edge-text {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n.react-flow__connection {\n pointer-events: none;\n}\n.react-flow__connection .animated {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\nsvg.react-flow__connectionline {\n z-index: 1001;\n overflow: visible;\n position: absolute;\n}\n.react-flow__nodes {\n pointer-events: none;\n transform-origin: 0 0;\n}\n.react-flow__node {\n position: absolute;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n pointer-events: all;\n transform-origin: 0 0;\n box-sizing: border-box;\n cursor: default;\n}\n.react-flow__node.selectable {\n cursor: pointer;\n }\n.react-flow__node.draggable {\n cursor: grab;\n pointer-events: all;\n }\n.react-flow__node.draggable.dragging {\n cursor: grabbing;\n }\n.react-flow__nodesselection {\n z-index: 3;\n transform-origin: left top;\n pointer-events: none;\n}\n.react-flow__nodesselection-rect {\n position: absolute;\n pointer-events: all;\n cursor: grab;\n }\n.react-flow__handle {\n position: absolute;\n pointer-events: none;\n min-width: 5px;\n min-height: 5px;\n width: 6px;\n height: 6px;\n background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));\n border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));\n border-radius: 100%;\n}\n.react-flow__handle.connectingfrom {\n pointer-events: all;\n }\n.react-flow__handle.connectionindicator {\n pointer-events: all;\n cursor: crosshair;\n }\n.react-flow__handle-bottom {\n top: auto;\n left: 50%;\n bottom: 0;\n transform: translate(-50%, 50%);\n }\n.react-flow__handle-top {\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-left {\n top: 50%;\n left: 0;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-right {\n top: 50%;\n right: 0;\n transform: translate(50%, -50%);\n }\n.react-flow__edgeupdater {\n cursor: move;\n pointer-events: all;\n}\n.react-flow__panel {\n position: absolute;\n z-index: 5;\n margin: 15px;\n}\n.react-flow__panel.top {\n top: 0;\n }\n.react-flow__panel.bottom {\n bottom: 0;\n }\n.react-flow__panel.left {\n left: 0;\n }\n.react-flow__panel.right {\n right: 0;\n }\n.react-flow__panel.center {\n left: 50%;\n transform: translateX(-50%);\n }\n.react-flow__attribution {\n font-size: 10px;\n background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));\n padding: 2px 3px;\n margin: 0;\n}\n.react-flow__attribution a {\n text-decoration: none;\n color: #999;\n }\n@keyframes dashdraw {\n from {\n stroke-dashoffset: 10;\n }\n}\n.react-flow__edgelabel-renderer {\n position: absolute;\n width: 100%;\n height: 100%;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n left: 0;\n top: 0;\n}\n.react-flow__viewport-portal {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.react-flow__minimap {\n background: var(\n --xy-minimap-background-color-props,\n var(--xy-minimap-background-color, var(--xy-minimap-background-color-default))\n );\n}\n.react-flow__minimap-svg {\n display: block;\n }\n.react-flow__minimap-mask {\n fill: var(\n --xy-minimap-mask-background-color-props,\n var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default))\n );\n stroke: var(\n --xy-minimap-mask-stroke-color-props,\n var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-mask-stroke-width-props,\n var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default))\n );\n }\n.react-flow__minimap-node {\n fill: var(\n --xy-minimap-node-background-color-props,\n var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default))\n );\n stroke: var(\n --xy-minimap-node-stroke-color-props,\n var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-node-stroke-width-props,\n var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default))\n );\n }\n.react-flow__background-pattern.dots {\n fill: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default))\n );\n }\n.react-flow__background-pattern.lines {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default))\n );\n }\n.react-flow__background-pattern.cross {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default))\n );\n }\n.react-flow__controls {\n display: flex;\n flex-direction: column;\n box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));\n}\n.react-flow__controls.horizontal {\n flex-direction: row;\n }\n.react-flow__controls-button {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 26px;\n width: 26px;\n padding: 4px;\n border: none;\n background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));\n border-bottom: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n color: var(\n --xy-controls-button-color-props,\n var(--xy-controls-button-color, var(--xy-controls-button-color-default))\n );\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n.react-flow__controls-button svg {\n width: 100%;\n max-width: 12px;\n max-height: 12px;\n fill: currentColor;\n }\n.react-flow__edge.updating .react-flow__edge-path {\n stroke: #777;\n }\n.react-flow__edge-text {\n font-size: 10px;\n }\n.react-flow__node.selectable:focus,\n .react-flow__node.selectable:focus-visible {\n outline: none;\n }\n.react-flow__node-input,\n.react-flow__node-default,\n.react-flow__node-output,\n.react-flow__node-group {\n padding: 10px;\n border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));\n width: 150px;\n font-size: 12px;\n color: var(--xy-node-color, var(--xy-node-color-default));\n text-align: center;\n border: var(--xy-node-border, var(--xy-node-border-default));\n background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));\n}\n.react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {\n box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));\n }\n.react-flow__node-input.selectable.selected,\n .react-flow__node-input.selectable:focus,\n .react-flow__node-input.selectable:focus-visible,\n .react-flow__node-default.selectable.selected,\n .react-flow__node-default.selectable:focus,\n .react-flow__node-default.selectable:focus-visible,\n .react-flow__node-output.selectable.selected,\n .react-flow__node-output.selectable:focus,\n .react-flow__node-output.selectable:focus-visible,\n .react-flow__node-group.selectable.selected,\n .react-flow__node-group.selectable:focus,\n .react-flow__node-group.selectable:focus-visible {\n box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));\n }\n.react-flow__node-group {\n background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));\n}\n.react-flow__nodesselection-rect,\n.react-flow__selection {\n background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));\n border: var(--xy-selection-border, var(--xy-selection-border-default));\n}\n.react-flow__nodesselection-rect:focus,\n .react-flow__nodesselection-rect:focus-visible,\n .react-flow__selection:focus,\n .react-flow__selection:focus-visible {\n outline: none;\n }\n.react-flow__controls-button:hover {\n background: var(\n --xy-controls-button-background-color-hover-props,\n var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default))\n );\n color: var(\n --xy-controls-button-color-hover-props,\n var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default))\n );\n }\n.react-flow__controls-button:disabled {\n pointer-events: none;\n }\n.react-flow__controls-button:disabled svg {\n fill-opacity: 0.4;\n }\n.react-flow__controls-button:last-child {\n border-bottom: none;\n }\n.react-flow__resize-control {\n position: absolute;\n}\n.react-flow__resize-control.left,\n.react-flow__resize-control.right {\n cursor: ew-resize;\n}\n.react-flow__resize-control.top,\n.react-flow__resize-control.bottom {\n cursor: ns-resize;\n}\n.react-flow__resize-control.top.left,\n.react-flow__resize-control.bottom.right {\n cursor: nwse-resize;\n}\n.react-flow__resize-control.bottom.left,\n.react-flow__resize-control.top.right {\n cursor: nesw-resize;\n}\n/* handle styles */\n.react-flow__resize-control.handle {\n width: 4px;\n height: 4px;\n border: 1px solid #fff;\n border-radius: 1px;\n background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n transform: translate(-50%, -50%);\n}\n.react-flow__resize-control.handle.left {\n left: 0;\n top: 50%;\n}\n.react-flow__resize-control.handle.right {\n left: 100%;\n top: 50%;\n}\n.react-flow__resize-control.handle.top {\n left: 50%;\n top: 0;\n}\n.react-flow__resize-control.handle.bottom {\n left: 50%;\n top: 100%;\n}\n.react-flow__resize-control.handle.top.left {\n left: 0;\n}\n.react-flow__resize-control.handle.bottom.left {\n left: 0;\n}\n.react-flow__resize-control.handle.top.right {\n left: 100%;\n}\n.react-flow__resize-control.handle.bottom.right {\n left: 100%;\n}\n/* line styles */\n.react-flow__resize-control.line {\n border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n border-width: 0;\n border-style: solid;\n}\n.react-flow__resize-control.line.left,\n.react-flow__resize-control.line.right {\n width: 1px;\n transform: translate(-50%, 0);\n top: 0;\n height: 100%;\n}\n.react-flow__resize-control.line.left {\n left: 0;\n border-left-width: 1px;\n}\n.react-flow__resize-control.line.right {\n left: 100%;\n border-right-width: 1px;\n}\n.react-flow__resize-control.line.top,\n.react-flow__resize-control.line.bottom {\n height: 1px;\n transform: translate(0, -50%);\n left: 0;\n width: 100%;\n}\n.react-flow__resize-control.line.top {\n top: 0;\n border-top-width: 1px;\n}\n.react-flow__resize-control.line.bottom {\n border-bottom-width: 1px;\n top: 100%;\n}\n.react-flow__edge-textbg {\n fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));\n}\n.react-flow__edge-text {\n fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));\n}\n";
|
|
@@ -12844,7 +12852,7 @@ const Progress = styled.div `
|
|
|
12844
12852
|
transition: width 0.3s;
|
|
12845
12853
|
`;
|
|
12846
12854
|
const HeaderNode = memo(({ id: nodeId, data }) => {
|
|
12847
|
-
const { nodeWidth, title, icon: Icon,
|
|
12855
|
+
const { nodeWidth, title, icon: Icon, badge, badgeTooltip, isFetching, sources } = data;
|
|
12848
12856
|
const entityType = nodeId.split('-')[0];
|
|
12849
12857
|
const { isAwaitingInstrumentation, sourcesToCreate, sourcesCreated, sourcesToDelete, sourcesDeleted } = useInstrumentStore();
|
|
12850
12858
|
const isSourceAwaitingInstrumentation = entityType === ENTITY_TYPES.SOURCE && isAwaitingInstrumentation;
|
|
@@ -12882,7 +12890,7 @@ const HeaderNode = memo(({ id: nodeId, data }) => {
|
|
|
12882
12890
|
return (React.createElement(Container$e, { "$nodeWidth": nodeWidth, className: 'nowheel nodrag' },
|
|
12883
12891
|
entityType === ENTITY_TYPES.SOURCE && (React.createElement(SelectorWrapper, null,
|
|
12884
12892
|
React.createElement(Checkbox, { partiallyChecked: hasSelected && sources?.length !== totalSelectedSources, value: hasSelected && sources?.length === totalSelectedSources, onChange: onSelect, disabled: !sources?.length }))),
|
|
12885
|
-
React.createElement(IconTitleBadge, { icon: Icon, title: title, badge: isSourceAwaitingInstrumentation ? `${instrumentingPercent}%` :
|
|
12893
|
+
React.createElement(IconTitleBadge, { icon: Icon, title: title, badge: isSourceAwaitingInstrumentation ? `${instrumentingPercent}%` : badge, badgeTooltip: badgeTooltip, loading: isFetching && !isSourceAwaitingInstrumentation }),
|
|
12886
12894
|
React.createElement(Actions$1, { entityType: entityType }),
|
|
12887
12895
|
isSourceAwaitingInstrumentation && React.createElement(Progress, { percent: instrumentingPercent })));
|
|
12888
12896
|
});
|
|
@@ -13079,7 +13087,7 @@ const buildRuleNodes = ({ loading, entities, positions, unfilteredCount }) => {
|
|
|
13079
13087
|
nodeWidth: nodeWidth$4,
|
|
13080
13088
|
title: 'Instrumentation Rules',
|
|
13081
13089
|
icon: getEntityIcon(ENTITY_TYPES.INSTRUMENTATION_RULE),
|
|
13082
|
-
|
|
13090
|
+
badge: unfilteredCount,
|
|
13083
13091
|
isFetching: loading,
|
|
13084
13092
|
},
|
|
13085
13093
|
});
|
|
@@ -13159,7 +13167,7 @@ const buildActionNodes = ({ loading, entities, positions, unfilteredCount }) =>
|
|
|
13159
13167
|
nodeWidth: nodeWidth$3,
|
|
13160
13168
|
title: 'Actions',
|
|
13161
13169
|
icon: getEntityIcon(ENTITY_TYPES.ACTION),
|
|
13162
|
-
|
|
13170
|
+
badge: unfilteredCount,
|
|
13163
13171
|
isFetching: loading,
|
|
13164
13172
|
},
|
|
13165
13173
|
});
|
|
@@ -13239,13 +13247,14 @@ const mapToNodeData$1 = (entity) => {
|
|
|
13239
13247
|
faded: hasDisableds,
|
|
13240
13248
|
title: getEntityLabel(entity, ENTITY_TYPES.SOURCE, { extended: true }),
|
|
13241
13249
|
subTitle: `${entity.namespace} • ${entity.kind}`,
|
|
13242
|
-
|
|
13250
|
+
icons: getContainersIcons(entity.containers),
|
|
13243
13251
|
raw: entity,
|
|
13244
13252
|
};
|
|
13245
13253
|
};
|
|
13246
13254
|
const buildSourceNodes = ({ loading, entities, positions, unfilteredCount, containerHeight, onScroll }) => {
|
|
13247
13255
|
const nodes = [];
|
|
13248
13256
|
const position = positions[ENTITY_TYPES.SOURCE];
|
|
13257
|
+
const hasFiltersApplied = entities.length !== unfilteredCount;
|
|
13249
13258
|
nodes.push({
|
|
13250
13259
|
id: `${ENTITY_TYPES.SOURCE}-${NODE_TYPES.HEADER}`,
|
|
13251
13260
|
type: NODE_TYPES.HEADER,
|
|
@@ -13257,7 +13266,8 @@ const buildSourceNodes = ({ loading, entities, positions, unfilteredCount, conta
|
|
|
13257
13266
|
nodeWidth: nodeWidth$2,
|
|
13258
13267
|
title: 'Sources',
|
|
13259
13268
|
icon: getEntityIcon(ENTITY_TYPES.SOURCE),
|
|
13260
|
-
|
|
13269
|
+
badge: hasFiltersApplied ? `${entities.length}/${unfilteredCount}` : unfilteredCount,
|
|
13270
|
+
badgeTooltip: hasFiltersApplied ? 'Represents filtered amount, out of total amount' : undefined,
|
|
13261
13271
|
isFetching: loading,
|
|
13262
13272
|
sources: entities,
|
|
13263
13273
|
},
|
|
@@ -13394,7 +13404,7 @@ const buildDestinationNodes = ({ loading, entities, positions, unfilteredCount }
|
|
|
13394
13404
|
nodeWidth,
|
|
13395
13405
|
title: 'Destinations',
|
|
13396
13406
|
icon: getEntityIcon(ENTITY_TYPES.DESTINATION),
|
|
13397
|
-
|
|
13407
|
+
badge: unfilteredCount,
|
|
13398
13408
|
isFetching: loading,
|
|
13399
13409
|
},
|
|
13400
13410
|
});
|
|
@@ -15116,17 +15126,18 @@ const Describe$1 = ({ source, fetchDescribeSource }) => {
|
|
|
15116
15126
|
return (React.createElement(CenterThis, null,
|
|
15117
15127
|
React.createElement(FadeLoader, null)));
|
|
15118
15128
|
}
|
|
15119
|
-
return (React.createElement(FlexColumn, { "$gap": 12 }, describe.pods.
|
|
15129
|
+
return (React.createElement(FlexColumn, { "$gap": 12 }, !describe.pods?.length ? (React.createElement(CenterThis, null,
|
|
15130
|
+
React.createElement(NoDataFound, { subTitle: 'Check if you have any running pods and try again' }))) : (describe.pods.map(({ podName, nodeName, phase, containers }) => {
|
|
15120
15131
|
const podHasErrors = phase.status !== NOTIFICATION_TYPE.SUCCESS ||
|
|
15121
|
-
|
|
15122
|
-
|
|
15132
|
+
containers.findIndex(({ instrumentationInstances }) => instrumentationInstances.findIndex(({ healthy }) => healthy.status !== NOTIFICATION_TYPE.SUCCESS) !== -1) !== -1;
|
|
15133
|
+
const podStatus = podHasErrors ? NOTIFICATION_TYPE.ERROR : NOTIFICATION_TYPE.SUCCESS;
|
|
15134
|
+
const divider = { type: DATA_CARD_FIELD_TYPES.DIVIDER };
|
|
15135
|
+
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: [
|
|
15123
15136
|
{
|
|
15124
15137
|
type: DATA_CARD_FIELD_TYPES.COPY_TEXT,
|
|
15125
15138
|
value: `kubectl get pod ${podName.value} -n ${describe?.namespace?.value || source.namespace}`,
|
|
15126
15139
|
},
|
|
15127
|
-
|
|
15128
|
-
type: DATA_CARD_FIELD_TYPES.DIVIDER,
|
|
15129
|
-
},
|
|
15140
|
+
divider,
|
|
15130
15141
|
{
|
|
15131
15142
|
type: DATA_CARD_FIELD_TYPES.DESCRIBE_ROW,
|
|
15132
15143
|
value: JSON.stringify({
|
|
@@ -15138,9 +15149,7 @@ const Describe$1 = ({ source, fetchDescribeSource }) => {
|
|
|
15138
15149
|
},
|
|
15139
15150
|
}),
|
|
15140
15151
|
},
|
|
15141
|
-
|
|
15142
|
-
type: DATA_CARD_FIELD_TYPES.DIVIDER,
|
|
15143
|
-
},
|
|
15152
|
+
divider,
|
|
15144
15153
|
{
|
|
15145
15154
|
type: DATA_CARD_FIELD_TYPES.DESCRIBE_ROW,
|
|
15146
15155
|
value: JSON.stringify({
|
|
@@ -15152,9 +15161,7 @@ const Describe$1 = ({ source, fetchDescribeSource }) => {
|
|
|
15152
15161
|
},
|
|
15153
15162
|
}),
|
|
15154
15163
|
},
|
|
15155
|
-
|
|
15156
|
-
type: DATA_CARD_FIELD_TYPES.DIVIDER,
|
|
15157
|
-
},
|
|
15164
|
+
divider,
|
|
15158
15165
|
...containers.map((container) => {
|
|
15159
15166
|
return {
|
|
15160
15167
|
type: DATA_CARD_FIELD_TYPES.POD_CONTAINER,
|
|
@@ -15174,7 +15181,7 @@ const Describe$1 = ({ source, fetchDescribeSource }) => {
|
|
|
15174
15181
|
};
|
|
15175
15182
|
}),
|
|
15176
15183
|
] }));
|
|
15177
|
-
})));
|
|
15184
|
+
}))));
|
|
15178
15185
|
};
|
|
15179
15186
|
|
|
15180
15187
|
const buildCard = (source) => {
|
|
@@ -15649,7 +15656,7 @@ const SourceTable = ({ metrics, maxHeight, maxWidth }) => {
|
|
|
15649
15656
|
columnKey: 'checkbox-and-icon',
|
|
15650
15657
|
component: () => (React.createElement(FlexRow, { "$gap": 16 },
|
|
15651
15658
|
React.createElement(Checkbox, { disabled: isPending, value: isChecked, onChange: () => onSelectOne(source) }),
|
|
15652
|
-
React.createElement(IconGroup, {
|
|
15659
|
+
React.createElement(IconGroup, { icons: getContainersIcons(source.containers) }))),
|
|
15653
15660
|
},
|
|
15654
15661
|
{
|
|
15655
15662
|
columnKey: 'name',
|
|
@@ -15832,7 +15839,7 @@ const Describe = ({ fetchDescribeOdigos }) => {
|
|
|
15832
15839
|
]
|
|
15833
15840
|
: [];
|
|
15834
15841
|
return (React.createElement(React.Fragment, null,
|
|
15835
|
-
React.createElement(DataCard, { title: 'General Information', withExtend: true, data: [
|
|
15842
|
+
React.createElement(DataCard, { title: 'General Information', withExtend: true, initialExtended: true, data: [
|
|
15836
15843
|
{ title: describe?.odigosVersion?.name, value: describe?.odigosVersion?.value },
|
|
15837
15844
|
{ title: describe?.kubernetesVersion?.name, value: describe?.kubernetesVersion?.value },
|
|
15838
15845
|
{ title: describe?.installationMethod?.name, value: describe?.installationMethod?.value },
|
|
@@ -15949,4 +15956,4 @@ const ToggleDarkMode = () => {
|
|
|
15949
15956
|
React.createElement(Background, { "$darkMode": darkMode })));
|
|
15950
15957
|
};
|
|
15951
15958
|
|
|
15952
|
-
export { ActionDrawer, ActionForm, ActionModal, ActionTable, AwaitPipeline, ComputePlatformSelect, ComputePlatforms, ComputePlatformsActionsMenu, ConnectionStatusDropdown, DataFlow, DataFlowActionsMenu, DestinationDrawer, DestinationForm, DestinationModal, DestinationSelectionForm, DestinationTable, ErrorDropdown, InstrumentationRuleDrawer, InstrumentationRuleForm, InstrumentationRuleModal, InstrumentationRuleTable, KindDropdown, LanguageDropdown, MonitorDropdown, MultiSourceControl, NAV_ICON_IDS, NamespaceDropdown, NotificationManager, OverviewDrawer,
|
|
15959
|
+
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, NAV_ICON_IDS, NamespaceDropdown, NotificationManager, OverviewDrawer, SideNav, SlackInvite, SourceDrawer, SourceForm, SourceModal, SourceSelectionForm, SourceTable, SystemOverview, ToastList, ToggleDarkMode };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { Source } from '@/types';
|
|
2
|
-
export declare const getContainersIcons: (containers: Source["containers"]) =>
|
|
1
|
+
import type { Source, SVG } from '@/types';
|
|
2
|
+
export declare const getContainersIcons: (containers: Source["containers"]) => SVG[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { PLATFORM_TYPE, type SVG } from '@/types';
|
|
2
|
-
export declare const getPlatformIcon: (type
|
|
2
|
+
export declare const getPlatformIcon: (type?: PLATFORM_TYPE) => SVG;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { PLATFORM_TYPE } from '@/types';
|
|
2
|
-
export declare const getPlatformLabel: (type
|
|
2
|
+
export declare const getPlatformLabel: (type?: PLATFORM_TYPE) => string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { PROGRAMMING_LANGUAGES } from '@/types';
|
|
2
|
-
export declare const getProgrammingLanguageIcon: (language: PROGRAMMING_LANGUAGES) =>
|
|
1
|
+
import { PROGRAMMING_LANGUAGES, type SVG } from '@/types';
|
|
2
|
+
export declare const getProgrammingLanguageIcon: (language: PROGRAMMING_LANGUAGES) => SVG;
|
package/lib/functions.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getMonitorIcon, a as getProgrammingLanguageIcon, b as getStatusIcon, m as mapConditions, p as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, d as splitCamelString } from './index-
|
|
2
|
-
export { c as compareCondition, f as filterActions, a as filterDestinations, b as filterSources, d as formatBytes, g as getConditionsBooleans, h as getContainersIcons, e as getContainersInstrumentedCount, i as getEntityIcon, j as getEntityLabel, k as getMetricForEntity, l as getPlatformIcon, m as getPlatformLabel, n as getValueForRange, o as isOverTime, s as sleep } from './index-
|
|
1
|
+
export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getMonitorIcon, a as getProgrammingLanguageIcon, b as getStatusIcon, m as mapConditions, p as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, d as splitCamelString } from './index-Bc8gi9FH.js';
|
|
2
|
+
export { c as compareCondition, f as filterActions, a as filterDestinations, b as filterSources, d as formatBytes, g as getConditionsBooleans, h as getContainersIcons, e as getContainersInstrumentedCount, i as getEntityIcon, j as getEntityLabel, k as getMetricForEntity, l as getPlatformIcon, m as getPlatformLabel, n as getValueForRange, o as isOverTime, s as sleep } from './index-g6Twdelv.js';
|
|
3
3
|
import { INSTRUMENTATION_RULE_TYPE, ENTITY_TYPES } from './types.js';
|
|
4
|
-
export { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-
|
|
5
|
-
export { k as getEntityId, l as isTimeElapsed } from './index-
|
|
4
|
+
export { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-BumPE6cF.js';
|
|
5
|
+
export { k as getEntityId, l as isTimeElapsed } from './index-DIcomki-.js';
|
|
6
6
|
export { g as getIdFromSseTarget } from './index-BFct3S32.js';
|
|
7
7
|
export { i as isEmpty, s as safeJsonParse } from './index-BZS1ijMm.js';
|
|
8
8
|
import 'react';
|
|
9
9
|
import 'styled-components';
|
|
10
|
-
import './index-DLKEpJJm.js';
|
|
11
|
-
import './theme.js';
|
|
12
10
|
import './index-BGlk5VhF.js';
|
|
11
|
+
import './theme.js';
|
|
12
|
+
import './index-ixs381n-.js';
|
|
13
13
|
import './index-BjJpYtF1.js';
|
|
14
14
|
|
|
15
15
|
const cleanObjectEmptyStringsValues = (obj) => {
|
package/lib/hooks/useCopy.d.ts
CHANGED
package/lib/hooks.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { u as useActionFormData, a as useClickNode, b as useClickNotification, c as useDestinationFormData, d as useSourceFormData, e as useSourceSelectionFormData } from './useSourceSelectionFormData-
|
|
2
|
-
export { u as useContainerSize, a as useCopy, b as useGenericForm, c as useInstrumentationRuleFormData, d as useKeyDown, e as useOnClickOutside, f as useTimeAgo, g as useTransition } from './useTransition-
|
|
1
|
+
export { u as useActionFormData, a as useClickNode, b as useClickNotification, c as useDestinationFormData, d as useSourceFormData, e as useSourceSelectionFormData } from './useSourceSelectionFormData-BY6B70Kf.js';
|
|
2
|
+
export { u as useContainerSize, a as useCopy, b as useGenericForm, c as useInstrumentationRuleFormData, d as useKeyDown, e as useOnClickOutside, f as useTimeAgo, g as useTransition } from './useTransition-Dfxjcy-C.js';
|
|
3
3
|
import './types.js';
|
|
4
4
|
import 'react';
|
|
5
|
-
import './index-
|
|
5
|
+
import './index-DIcomki-.js';
|
|
6
6
|
import 'styled-components';
|
|
7
7
|
import './index-BZS1ijMm.js';
|
|
8
|
-
import './index-
|
|
9
|
-
import './index-
|
|
8
|
+
import './index-CZe2VX28.js';
|
|
9
|
+
import './index-BumPE6cF.js';
|
|
10
10
|
import './index-BGlk5VhF.js';
|
|
11
11
|
import './theme.js';
|
|
12
12
|
import './index-Cu2uHOuh.js';
|
|
@@ -7,6 +7,7 @@ export * from './edit-icon/index';
|
|
|
7
7
|
export * from './extend-arrow-icon/index';
|
|
8
8
|
export * from './filter-icon/index';
|
|
9
9
|
export * from './folder-icon/index';
|
|
10
|
+
export * from './image-error-icon/index';
|
|
10
11
|
export * from './key-icon/index';
|
|
11
12
|
export * from './list-icon/index';
|
|
12
13
|
export * from './no-data-icon/index';
|
package/lib/icons/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './overview-icon/index';
|
|
2
2
|
export * from './service-map-icon/index';
|
|
3
3
|
export * from './trace-view-icon/index';
|
|
4
|
+
export * from './connections-icon/index';
|
|
4
5
|
export * from './actions-icon/index';
|
|
5
6
|
export * from './destinations-icon/index';
|
|
6
7
|
export * from './rules-icon/index';
|