ydb-embedded-ui 8.21.0 → 8.22.1
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/dist/components/TenantNameWrapper/TenantNameWrapper.js +6 -6
- package/dist/components/TenantNameWrapper/TenantNameWrapper.js.map +1 -1
- package/dist/containers/AppWithClusters/ExtendedCluster/ExtendedCluster.js +8 -10
- package/dist/containers/AppWithClusters/ExtendedCluster/ExtendedCluster.js.map +1 -1
- package/dist/containers/AsideNavigation/AsideNavigation.js +8 -32
- package/dist/containers/AsideNavigation/AsideNavigation.js.map +1 -1
- package/dist/containers/AsideNavigation/InformationPopup/InformationPopup.js +1 -1
- package/dist/containers/AsideNavigation/InformationPopup/InformationPopup.js.map +1 -1
- package/dist/containers/AsideNavigation/hooks/useHotkeysPanel.d.ts +33 -0
- package/dist/containers/AsideNavigation/hooks/useHotkeysPanel.js +73 -0
- package/dist/containers/AsideNavigation/hooks/useHotkeysPanel.js.map +1 -0
- package/dist/containers/AsideNavigation/i18n/en.json +9 -2
- package/dist/containers/AsideNavigation/i18n/index.d.ts +1 -1
- package/dist/store/reducers/tenants/tenants.js +2 -3
- package/dist/store/reducers/tenants/tenants.js.map +1 -1
- package/dist/store/reducers/tenants/types.d.ts +0 -1
- package/dist/store/reducers/tenants/utils.d.ts +1 -1
- package/dist/store/reducers/tenants/utils.js +1 -11
- package/dist/store/reducers/tenants/utils.js.map +1 -1
- package/dist/types/additionalProps.d.ts +1 -1
- package/dist/types/api/tenant.d.ts +1 -3
- package/dist/types/api/tenant.js.map +1 -1
- package/dist/utils/__test__/prepareBackend.test.js +6 -30
- package/dist/utils/__test__/prepareBackend.test.js.map +1 -1
- package/dist/utils/additionalProps.d.ts +1 -1
- package/dist/utils/additionalProps.js +3 -3
- package/dist/utils/additionalProps.js.map +1 -1
- package/dist/utils/hooks/useAdditionalNodesProps.js +1 -4
- package/dist/utils/hooks/useAdditionalNodesProps.js.map +1 -1
- package/dist/utils/hooks/useAutoRefreshInterval.js +28 -8
- package/dist/utils/hooks/useAutoRefreshInterval.js.map +1 -1
- package/dist/utils/prepareBackend.d.ts +1 -3
- package/dist/utils/prepareBackend.js +6 -26
- package/dist/utils/prepareBackend.js.map +1 -1
- package/package.json +2 -2
- package/dist/containers/AsideNavigation/constants.d.ts +0 -8
- package/dist/containers/AsideNavigation/constants.js +0 -34
- package/dist/containers/AsideNavigation/constants.js.map +0 -1
- package/dist/containers/AsideNavigation/utils.d.ts +0 -1
- package/dist/containers/AsideNavigation/utils.js +0 -2
- package/dist/containers/AsideNavigation/utils.js.map +0 -1
@@ -6,17 +6,17 @@ import { EntityStatus } from '../EntityStatus/EntityStatus';
|
|
6
6
|
import { LinkWithIcon } from '../LinkWithIcon/LinkWithIcon';
|
7
7
|
import i18n from './i18n';
|
8
8
|
const getTenantBackend = (tenant, additionalTenantsProps) => {
|
9
|
-
var _a
|
9
|
+
var _a;
|
10
10
|
if (typeof (additionalTenantsProps === null || additionalTenantsProps === void 0 ? void 0 : additionalTenantsProps.prepareTenantBackend) !== 'function') {
|
11
11
|
return undefined;
|
12
12
|
}
|
13
|
-
let
|
14
|
-
const nodeIds = (
|
15
|
-
if (
|
13
|
+
let nodeId;
|
14
|
+
const nodeIds = (_a = tenant.NodeIds) !== null && _a !== void 0 ? _a : tenant.sharedNodeIds;
|
15
|
+
if (nodeIds && nodeIds.length > 0) {
|
16
16
|
const index = Math.floor(Math.random() * nodeIds.length);
|
17
|
-
|
17
|
+
nodeId = nodeIds[index].toString();
|
18
18
|
}
|
19
|
-
return additionalTenantsProps.prepareTenantBackend(
|
19
|
+
return additionalTenantsProps.prepareTenantBackend(nodeId);
|
20
20
|
};
|
21
21
|
export function TenantNameWrapper({ tenant, additionalTenantsProps }) {
|
22
22
|
var _a, _b;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TenantNameWrapper.js","sourceRoot":"","sources":["../../../src/components/TenantNameWrapper/TenantNameWrapper.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,cAAc,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAC,aAAa,EAAC,MAAM,qCAAqC,CAAC;AAGlE,OAAO,EAAC,6BAA6B,EAAC,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAE1D,OAAO,IAAI,MAAM,QAAQ,CAAC;AAO1B,MAAM,gBAAgB,GAAG,CACrB,MAAsB,EACtB,sBAA+C,EACjD,EAAE;;IACA,IAAI,OAAO,CAAA,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,oBAAoB,CAAA,KAAK,UAAU,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,
|
1
|
+
{"version":3,"file":"TenantNameWrapper.js","sourceRoot":"","sources":["../../../src/components/TenantNameWrapper/TenantNameWrapper.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,cAAc,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAC,aAAa,EAAC,MAAM,qCAAqC,CAAC;AAGlE,OAAO,EAAC,6BAA6B,EAAC,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAE1D,OAAO,IAAI,MAAM,QAAQ,CAAC;AAO1B,MAAM,gBAAgB,GAAG,CACrB,MAAsB,EACtB,sBAA+C,EACjD,EAAE;;IACA,IAAI,OAAO,CAAA,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,oBAAoB,CAAA,KAAK,UAAU,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,MAA0B,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,MAAM,CAAC,aAAa,CAAC;IACvD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,sBAAsB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,EAAC,MAAM,EAAE,sBAAsB,EAAyB;;IACtF,MAAM,0BAA0B,GAAG,6BAA6B,EAAE,CAAC;IAEnE,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,cAAc,GAAG,MAAA,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,iBAAiB,uEAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAG,MAAA,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,WAAW,uEAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAEpE,MAAM,kBAAkB,GACpB,CAAC,cAAc,IAAI,QAAQ,CAAC,IAAI,0BAA0B,CAAC,CAAC,CAAC,CACzD,KAAC,cAAc,IAAC,UAAU,kBACtB,KAAC,cAAc,CAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,YAC1C,MAAC,IAAI,IAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAC,MAAM,aACpB,cAAc,IAAI,CACf,KAAC,YAAY,IACT,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,EACpC,GAAG,EAAE,cAAc,GACrB,CACL,EACA,QAAQ,IAAI,CACT,KAAC,YAAY,IAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAI,CAClE,IACE,GACW,GACT,CACpB,CAAC,CAAC,CAAC,IAAI,CAAC;IAEb,OAAO,CACH,KAAC,YAAY,IACT,YAAY,EAAE,cAAc,EAC5B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAC5C,YAAY,EAAE,IAAI,EAClB,MAAM,EAAE,MAAM,CAAC,OAAO,EACtB,kBAAkB,EAAE,kBAAkB,EACtC,kBAAkB,QAClB,IAAI,EAAE,aAAa,CAAC;YAChB,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,OAAO;SACV,CAAC,GACJ,CACL,CAAC;AACN,CAAC"}
|
@@ -1,12 +1,13 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
2
|
import { ClipboardButton } from '@gravity-ui/uikit';
|
3
|
+
import { isNil } from 'lodash';
|
3
4
|
import { useClusterBaseInfo } from '../../../store/reducers/cluster/cluster';
|
4
5
|
import { cn } from '../../../utils/cn';
|
5
6
|
import { USE_CLUSTER_BALANCER_AS_BACKEND_KEY } from '../../../utils/constants';
|
6
7
|
import { useSetting } from '../../../utils/hooks';
|
7
8
|
import { useAdditionalNodesProps } from '../../../utils/hooks/useAdditionalNodesProps';
|
8
|
-
import { getCleanBalancerValue,
|
9
|
-
import {
|
9
|
+
import { getCleanBalancerValue, prepareBackendFromBalancer } from '../../../utils/parseBalancer';
|
10
|
+
import { getBackendFromBalancerAndNodeId } from '../../../utils/prepareBackend';
|
10
11
|
import './ExtendedCluster.scss';
|
11
12
|
const b = cn('extended-cluster');
|
12
13
|
const getAdditionalBalancerInfo = (balancer) => {
|
@@ -31,22 +32,19 @@ const getAdditionalClusterProps = ({ clusterName, monitoring, balancer, getMonit
|
|
31
32
|
};
|
32
33
|
const getAdditionalTenantsProps = ({ clusterName, monitoring, balancer, logging, useClusterBalancerAsBackend, getMonitoringLink, getLogsLink, }) => {
|
33
34
|
const additionalTenantsProps = {};
|
34
|
-
additionalTenantsProps.prepareTenantBackend = (
|
35
|
+
additionalTenantsProps.prepareTenantBackend = (nodeId) => {
|
35
36
|
var _a;
|
36
|
-
//
|
37
|
+
// Balancer value is used to create path, so it's necessary
|
37
38
|
if (!balancer) {
|
38
39
|
return undefined;
|
39
40
|
}
|
40
41
|
if (useClusterBalancerAsBackend) {
|
41
|
-
return
|
42
|
+
return prepareBackendFromBalancer(balancer);
|
42
43
|
}
|
43
|
-
if (
|
44
|
+
if (isNil(nodeId)) {
|
44
45
|
return undefined;
|
45
46
|
}
|
46
|
-
|
47
|
-
return getBackendFromNodeHost(nodeHostOrAddress, balancer);
|
48
|
-
}
|
49
|
-
return (_a = getBackendFromRawNodeData(nodeHostOrAddress, balancer, true)) !== null && _a !== void 0 ? _a : undefined;
|
47
|
+
return (_a = getBackendFromBalancerAndNodeId(nodeId, balancer)) !== null && _a !== void 0 ? _a : undefined;
|
50
48
|
};
|
51
49
|
if (monitoring && getMonitoringLink) {
|
52
50
|
additionalTenantsProps.getMonitoringLink = (dbName, dbType) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ExtendedCluster.js","sourceRoot":"","sources":["../../../../src/containers/AppWithClusters/ExtendedCluster/ExtendedCluster.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;
|
1
|
+
{"version":3,"file":"ExtendedCluster.js","sourceRoot":"","sources":["../../../../src/containers/AppWithClusters/ExtendedCluster/ExtendedCluster.tsx"],"names":[],"mappings":"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"}
|
@@ -1,15 +1,13 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
2
|
import React from 'react';
|
3
3
|
import { CircleQuestion, Gear, Person } from '@gravity-ui/icons';
|
4
|
-
import { AsideHeader, FooterItem
|
5
|
-
import { Hotkey } from '@gravity-ui/uikit';
|
6
|
-
import hotkeys from 'hotkeys-js';
|
4
|
+
import { AsideHeader, FooterItem } from '@gravity-ui/navigation';
|
7
5
|
import { useHistory } from 'react-router-dom';
|
8
6
|
import { cn } from '../../utils/cn';
|
9
7
|
import { ASIDE_HEADER_COMPACT_KEY } from '../../utils/constants';
|
10
8
|
import { useSetting } from '../../utils/hooks';
|
11
9
|
import { InformationPopup } from './InformationPopup';
|
12
|
-
import {
|
10
|
+
import { useHotkeysPanel } from './hooks/useHotkeysPanel';
|
13
11
|
import i18n from './i18n';
|
14
12
|
import userSecret from '../../assets/icons/user-secret.svg';
|
15
13
|
import ydbLogoIcon from '../../assets/icons/ydb.svg';
|
@@ -33,23 +31,6 @@ var Panel;
|
|
33
31
|
Panel["Information"] = "Information";
|
34
32
|
Panel["Hotkeys"] = "Hotkeys";
|
35
33
|
})(Panel || (Panel = {}));
|
36
|
-
/**
|
37
|
-
* HotkeysPanelWrapper creates a render cycle separation between mounting and visibility change.
|
38
|
-
* This is necessary for smooth animations as HotkeysPanel uses CSSTransition internally.
|
39
|
-
*
|
40
|
-
* When a component is both mounted and set to visible at once, CSSTransition can't
|
41
|
-
* properly sequence its transition classes (panel → panel-active) because it's already active when mounted
|
42
|
-
* and counts transition as it has already happened.
|
43
|
-
* This wrapper ensures the component mounts first, then sets visible=true in a subsequent render cycle
|
44
|
-
* to make transition actually happen.
|
45
|
-
*/
|
46
|
-
function HotkeysPanelWrapper({ visiblePanel, closePanel, }) {
|
47
|
-
const [visible, setVisible] = React.useState(false);
|
48
|
-
React.useEffect(() => {
|
49
|
-
setVisible(visiblePanel === Panel.Hotkeys);
|
50
|
-
}, [visiblePanel]);
|
51
|
-
return (_jsx(HotkeysPanel, { visible: visible, hotkeys: HOTKEYS, className: b('hotkeys-panel'), title: _jsxs("div", { className: b('hotkeys-panel-title'), children: [i18n('help-center.footer.shortcuts'), _jsx(Hotkey, { value: SHORTCUTS_HOTKEY })] }), onClose: closePanel }));
|
52
|
-
}
|
53
34
|
export function AsideNavigation(props) {
|
54
35
|
const history = useHistory();
|
55
36
|
const [visiblePanel, setVisiblePanel] = React.useState();
|
@@ -64,19 +45,14 @@ export function AsideNavigation(props) {
|
|
64
45
|
const closePanel = React.useCallback(() => {
|
65
46
|
setVisiblePanel(undefined);
|
66
47
|
}, []);
|
48
|
+
const { renderPanel: renderHotkeysPanel } = useHotkeysPanel({
|
49
|
+
isPanelVisible: visiblePanel === Panel.Hotkeys,
|
50
|
+
closePanel,
|
51
|
+
openPanel: openHotkeysPanel,
|
52
|
+
});
|
67
53
|
const renderInformationPopup = () => {
|
68
54
|
return _jsx(InformationPopup, { onKeyboardShortcutsClick: openHotkeysPanel });
|
69
55
|
};
|
70
|
-
React.useEffect(() => {
|
71
|
-
// Register hotkey for keyboard shortcuts
|
72
|
-
hotkeys(SHORTCUTS_HOTKEY, openHotkeysPanel);
|
73
|
-
// Add listener for custom event from Monaco editor
|
74
|
-
window.addEventListener('openKeyboardShortcutsPanel', openHotkeysPanel);
|
75
|
-
return () => {
|
76
|
-
hotkeys.unbind(SHORTCUTS_HOTKEY);
|
77
|
-
window.removeEventListener('openKeyboardShortcutsPanel', openHotkeysPanel);
|
78
|
-
};
|
79
|
-
}, [openHotkeysPanel]);
|
80
56
|
return (_jsx(React.Fragment, { children: _jsx(AsideHeader, { logo: {
|
81
57
|
text: 'YDB',
|
82
58
|
icon: ydbLogoIcon,
|
@@ -111,7 +87,7 @@ export function AsideNavigation(props) {
|
|
111
87
|
id: 'hotkeys',
|
112
88
|
visible: visiblePanel === Panel.Hotkeys,
|
113
89
|
keepMounted: true,
|
114
|
-
content: (
|
90
|
+
content: renderHotkeysPanel(),
|
115
91
|
},
|
116
92
|
], onClosePanel: closePanel }) }));
|
117
93
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"AsideNavigation.js","sourceRoot":"","sources":["../../../src/containers/AsideNavigation/AsideNavigation.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,cAAc,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAC,WAAW,EAAE,UAAU,
|
1
|
+
{"version":3,"file":"AsideNavigation.js","sourceRoot":"","sources":["../../../src/containers/AsideNavigation/AsideNavigation.tsx"],"names":[],"mappings":"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"}
|
@@ -4,7 +4,7 @@ import { Flex, Hotkey, Icon, Link, List, Text } from '@gravity-ui/uikit';
|
|
4
4
|
import { settingsManager } from '../../../services/settings';
|
5
5
|
import { cn } from '../../../utils/cn';
|
6
6
|
import { LANGUAGE_KEY } from '../../../utils/constants';
|
7
|
-
import { SHORTCUTS_HOTKEY } from '../
|
7
|
+
import { SHORTCUTS_HOTKEY } from '../hooks/useHotkeysPanel';
|
8
8
|
import i18n from '../i18n';
|
9
9
|
import './InformationPopup.scss';
|
10
10
|
const b = cn('information-popup');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"InformationPopup.js","sourceRoot":"","sources":["../../../../src/containers/AsideNavigation/InformationPopup/InformationPopup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAC,EAAE,EAAC,MAAM,mBAAmB,CAAC;AACrC,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAC,MAAM,
|
1
|
+
{"version":3,"file":"InformationPopup.js","sourceRoot":"","sources":["../../../../src/containers/AsideNavigation/InformationPopup/InformationPopup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAC,EAAE,EAAC,MAAM,mBAAmB,CAAC;AACrC,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,yBAAyB,CAAC;AAEjC,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,CAAC;AAMlC,MAAM,UAAU,gBAAgB,CAAC,EAAC,wBAAwB,EAAwB;IAC9E,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,qBAAqB,CAAC,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrF,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,2BAA2B,CAAC;IACrF,CAAC,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,aAC5B,eAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,aACrB,KAAC,IAAI,IAAC,OAAO,EAAC,aAAa,EAAC,KAAK,EAAC,SAAS,EAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,8BAE1D,EACP,cAAK,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,YAC/B,KAAC,IAAI,IACD,KAAK,EAAE;gCACH;oCACI,IAAI,EAAE,IAAI,CAAC,gCAAgC,CAAC;oCAC5C,GAAG,EAAE,oBAAoB,EAAE;iCAC9B;6BACJ,EACD,UAAU,EAAE,KAAK,EACjB,WAAW,EAAE,KAAK,EAClB,UAAU,EAAE,CAAC,EAAC,IAAI,EAAE,GAAG,EAAC,EAAE,EAAE,CAAC,CACzB,KAAC,IAAI,IACD,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,EACzB,GAAG,EAAC,UAAU,EACd,MAAM,EAAC,QAAQ,EACf,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,YAEjD,IAAI,GACF,CACV,EACD,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,GAC1B,GACA,IACJ,EAEN,cAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YACvB,MAAC,IAAI,IACD,cAAc,EAAC,eAAe,EAC9B,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAC9B,OAAO,EAAE,wBAAwB,aAEjC,MAAC,IAAI,IAAC,UAAU,EAAC,QAAQ,aACrB,cAAK,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,YAC/B,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,GAAI,GACtB,EACL,IAAI,CAAC,8BAA8B,CAAC,IAClC,EACP,KAAC,MAAM,IAAC,KAAK,EAAE,gBAAgB,GAAI,IAChC,GACL,IACJ,CACT,CAAC;AACN,CAAC"}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
export declare const isMac: () => boolean;
|
2
|
+
export declare const SHORTCUTS_HOTKEY: string;
|
3
|
+
export declare const HOTKEYS: {
|
4
|
+
title: string;
|
5
|
+
items: {
|
6
|
+
title: string;
|
7
|
+
value: string;
|
8
|
+
}[];
|
9
|
+
}[];
|
10
|
+
export interface HotkeysPanelProps {
|
11
|
+
visible: boolean;
|
12
|
+
closePanel: () => void;
|
13
|
+
}
|
14
|
+
/**
|
15
|
+
* HotkeysPanelWrapper creates a render cycle separation between mounting and visibility change.
|
16
|
+
* This is necessary for smooth animations as HotkeysPanel uses CSSTransition internally.
|
17
|
+
*
|
18
|
+
* When a component is both mounted and set to visible at once, CSSTransition can't
|
19
|
+
* properly sequence its transition classes (panel → panel-active) because it's already active when mounted
|
20
|
+
* and counts transition as it has already happened.
|
21
|
+
* This wrapper ensures the component mounts first, then sets visible=true in a subsequent render cycle
|
22
|
+
* to make transition actually happen.
|
23
|
+
*/
|
24
|
+
export declare const HotkeysPanelWrapper: ({ visible: propsVisible, closePanel }: HotkeysPanelProps) => import("react/jsx-runtime").JSX.Element;
|
25
|
+
interface UseHotkeysPanel {
|
26
|
+
isPanelVisible: boolean;
|
27
|
+
openPanel: () => void;
|
28
|
+
closePanel: () => void;
|
29
|
+
}
|
30
|
+
export declare const useHotkeysPanel: ({ isPanelVisible, openPanel, closePanel }: UseHotkeysPanel) => {
|
31
|
+
renderPanel: () => import("react/jsx-runtime").JSX.Element;
|
32
|
+
};
|
33
|
+
export {};
|
@@ -0,0 +1,73 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import React from 'react';
|
3
|
+
import { HotkeysPanel as UIKitHotkeysPanel } from '@gravity-ui/navigation';
|
4
|
+
import { Hotkey } from '@gravity-ui/uikit';
|
5
|
+
import hotkeys from 'hotkeys-js';
|
6
|
+
import { cn } from '../../../utils/cn';
|
7
|
+
import i18n from '../i18n';
|
8
|
+
const b = cn('kv-navigation');
|
9
|
+
export const isMac = () => navigator.platform.toUpperCase().includes('MAC');
|
10
|
+
export const SHORTCUTS_HOTKEY = isMac() ? 'cmd+K' : 'ctrl+K';
|
11
|
+
export const HOTKEYS = [
|
12
|
+
{
|
13
|
+
title: 'Query Editor',
|
14
|
+
items: [
|
15
|
+
{
|
16
|
+
title: i18n('hotkeys.execute-query'),
|
17
|
+
value: isMac() ? 'cmd+enter' : 'ctrl+enter',
|
18
|
+
},
|
19
|
+
{
|
20
|
+
title: i18n('hotkeys.execute-selected-query'),
|
21
|
+
value: isMac() ? 'cmd+shift+enter' : 'ctrl+shift+enter',
|
22
|
+
},
|
23
|
+
{
|
24
|
+
title: i18n('hotkeys.previous-query'),
|
25
|
+
value: isMac() ? 'cmd+arrowUp' : 'ctrl+arrowUp',
|
26
|
+
},
|
27
|
+
{
|
28
|
+
title: i18n('hotkeys.next-query'),
|
29
|
+
value: isMac() ? 'cmd+arrowDown' : 'ctrl+arrowDown',
|
30
|
+
},
|
31
|
+
{
|
32
|
+
title: i18n('hotkeys.save-query'),
|
33
|
+
value: isMac() ? 'cmd+s' : 'ctrl+s',
|
34
|
+
},
|
35
|
+
{
|
36
|
+
title: i18n('hotkeys.save-selected-query'),
|
37
|
+
value: isMac() ? 'cmd+shift+s' : 'ctrl+shift+s',
|
38
|
+
},
|
39
|
+
],
|
40
|
+
},
|
41
|
+
];
|
42
|
+
/**
|
43
|
+
* HotkeysPanelWrapper creates a render cycle separation between mounting and visibility change.
|
44
|
+
* This is necessary for smooth animations as HotkeysPanel uses CSSTransition internally.
|
45
|
+
*
|
46
|
+
* When a component is both mounted and set to visible at once, CSSTransition can't
|
47
|
+
* properly sequence its transition classes (panel → panel-active) because it's already active when mounted
|
48
|
+
* and counts transition as it has already happened.
|
49
|
+
* This wrapper ensures the component mounts first, then sets visible=true in a subsequent render cycle
|
50
|
+
* to make transition actually happen.
|
51
|
+
*/
|
52
|
+
export const HotkeysPanelWrapper = ({ visible: propsVisible, closePanel }) => {
|
53
|
+
const [visible, setVisible] = React.useState(false);
|
54
|
+
React.useEffect(() => {
|
55
|
+
setVisible(propsVisible);
|
56
|
+
}, [propsVisible]);
|
57
|
+
return (_jsx(UIKitHotkeysPanel, { visible: visible, hotkeys: HOTKEYS, className: b('hotkeys-panel'), title: _jsxs("div", { className: b('hotkeys-panel-title'), children: [i18n('hotkeys.title'), _jsx(Hotkey, { value: SHORTCUTS_HOTKEY })] }), onClose: closePanel }));
|
58
|
+
};
|
59
|
+
export const useHotkeysPanel = ({ isPanelVisible, openPanel, closePanel }) => {
|
60
|
+
React.useEffect(() => {
|
61
|
+
hotkeys(SHORTCUTS_HOTKEY, openPanel);
|
62
|
+
window.addEventListener('openKeyboardShortcutsPanel', openPanel);
|
63
|
+
return () => {
|
64
|
+
hotkeys.unbind(SHORTCUTS_HOTKEY);
|
65
|
+
window.removeEventListener('openKeyboardShortcutsPanel', openPanel);
|
66
|
+
};
|
67
|
+
}, [openPanel]);
|
68
|
+
const renderPanel = React.useCallback(() => _jsx(HotkeysPanelWrapper, { visible: isPanelVisible, closePanel: closePanel }), [isPanelVisible, closePanel]);
|
69
|
+
return {
|
70
|
+
renderPanel,
|
71
|
+
};
|
72
|
+
};
|
73
|
+
//# sourceMappingURL=useHotkeysPanel.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useHotkeysPanel.js","sourceRoot":"","sources":["../../../../src/containers/AsideNavigation/hooks/useHotkeysPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,YAAY,IAAI,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzC,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAC,EAAE,EAAC,MAAM,mBAAmB,CAAC;AACrC,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;AAE9B,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AAE7D,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB;QACI,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE;YACH;gBACI,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC;gBACpC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;aAC9C;YACD;gBACI,KAAK,EAAE,IAAI,CAAC,gCAAgC,CAAC;gBAC7C,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB;aAC1D;YACD;gBACI,KAAK,EAAE,IAAI,CAAC,wBAAwB,CAAC;gBACrC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;aAClD;YACD;gBACI,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC;gBACjC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB;aACtD;YACD;gBACI,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC;gBACjC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;aACtC;YACD;gBACI,KAAK,EAAE,IAAI,CAAC,6BAA6B,CAAC;gBAC1C,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;aAClD;SACJ;KACJ;CACJ,CAAC;AAOF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAoB,EAAE,EAAE;IAC1F,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,UAAU,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,CACH,KAAC,iBAAiB,IACd,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,CAAC,CAAC,eAAe,CAAC,EAC7B,KAAK,EACD,eAAK,SAAS,EAAE,CAAC,CAAC,qBAAqB,CAAC,aACnC,IAAI,CAAC,eAAe,CAAC,EACtB,KAAC,MAAM,IAAC,KAAK,EAAE,gBAAgB,GAAI,IACjC,EAEV,OAAO,EAAE,UAAU,GACrB,CACL,CAAC;AACN,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAC,cAAc,EAAE,SAAS,EAAE,UAAU,EAAkB,EAAE,EAAE;IACxF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAErC,MAAM,CAAC,gBAAgB,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;QAEjE,OAAO,GAAG,EAAE;YACR,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACjC,MAAM,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;QACxE,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACjC,GAAG,EAAE,CAAC,KAAC,mBAAmB,IAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,GAAI,EAC9E,CAAC,cAAc,EAAE,UAAU,CAAC,CAC/B,CAAC;IAEF,OAAO;QACH,WAAW;KACd,CAAC;AACN,CAAC,CAAC"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
{
|
2
|
-
"navigation-item.information": "
|
2
|
+
"navigation-item.information": "Information",
|
3
3
|
"navigation-item.settings": "Settings",
|
4
4
|
"navigation-item.account": "Account",
|
5
5
|
"help-center.header.title": "Documentation",
|
@@ -7,5 +7,12 @@
|
|
7
7
|
"help-center.footer.shortcuts": "Keyboard shortcuts",
|
8
8
|
"account.user": "YDB User",
|
9
9
|
"account.login": "Login",
|
10
|
-
"account.logout": "Logout"
|
10
|
+
"account.logout": "Logout",
|
11
|
+
"hotkeys.title": "Keyboard shortcuts",
|
12
|
+
"hotkeys.execute-query": "Execute query",
|
13
|
+
"hotkeys.execute-selected-query": "Execute selected query",
|
14
|
+
"hotkeys.previous-query": "Previous query",
|
15
|
+
"hotkeys.next-query": "Next query",
|
16
|
+
"hotkeys.save-query": "Save query",
|
17
|
+
"hotkeys.save-selected-query": "Save selected query"
|
11
18
|
}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
declare const _default: (key: "navigation-item.information" | "navigation-item.settings" | "navigation-item.account" | "help-center.header.title" | "help-center.item.documentation" | "help-center.footer.shortcuts" | "account.user" | "account.login" | "account.logout", params?: import("@gravity-ui/i18n").Params) => string;
|
1
|
+
declare const _default: (key: "navigation-item.information" | "navigation-item.settings" | "navigation-item.account" | "help-center.header.title" | "help-center.item.documentation" | "help-center.footer.shortcuts" | "account.user" | "account.login" | "account.logout" | "hotkeys.title" | "hotkeys.execute-query" | "hotkeys.execute-selected-query" | "hotkeys.previous-query" | "hotkeys.next-query" | "hotkeys.save-query" | "hotkeys.save-selected-query", params?: import("@gravity-ui/i18n").Params) => string;
|
2
2
|
export default _default;
|
@@ -16,15 +16,14 @@ export default slice.reducer;
|
|
16
16
|
export const tenantsApi = api.injectEndpoints({
|
17
17
|
endpoints: (build) => ({
|
18
18
|
getTenantsInfo: build.query({
|
19
|
-
queryFn: async ({ clusterName }, { signal
|
19
|
+
queryFn: async ({ clusterName }, { signal }) => {
|
20
20
|
try {
|
21
21
|
const response = window.api.meta
|
22
22
|
? await window.api.meta.getTenants(clusterName, { signal })
|
23
23
|
: await window.api.viewer.getTenants(clusterName, { signal });
|
24
24
|
let data;
|
25
25
|
if (Array.isArray(response.TenantInfo)) {
|
26
|
-
|
27
|
-
data = prepareTenants(response.TenantInfo, singleClusterMode);
|
26
|
+
data = prepareTenants(response.TenantInfo);
|
28
27
|
}
|
29
28
|
else {
|
30
29
|
data = [];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"tenants.js","sourceRoot":"","sources":["../../../../src/store/reducers/tenants/tenants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;
|
1
|
+
{"version":3,"file":"tenants.js","sourceRoot":"","sources":["../../../../src/store/reducers/tenants/tenants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAC,GAAG,EAAC,MAAM,QAAQ,CAAC;AAG3B,OAAO,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AAEvC,MAAM,YAAY,GAAiB,EAAC,WAAW,EAAE,EAAE,EAAC,CAAC;AAErD,MAAM,KAAK,GAAG,WAAW,CAAC;IACtB,IAAI,EAAE,SAAS;IACf,YAAY;IACZ,QAAQ,EAAE;QACN,cAAc,EAAE,CAAC,KAAK,EAAE,MAA6B,EAAE,EAAE;YACrD,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;QACvC,CAAC;KACJ;CACJ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,EAAC,cAAc,EAAC,GAAG,KAAK,CAAC,OAAO,CAAC;AAC9C,eAAe,KAAK,CAAC,OAAO,CAAC;AAE7B,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC;IAC1C,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnB,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,EAAC,WAAW,EAAyB,EAAE,EAAC,MAAM,EAAC,EAAE,EAAE;gBAC/D,IAAI,CAAC;oBACD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI;wBAC5B,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAC,MAAM,EAAC,CAAC;wBACzD,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,EAAC,MAAM,EAAC,CAAC,CAAC;oBAChE,IAAI,IAAsB,CAAC;oBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;wBACrC,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAC/C,CAAC;yBAAM,CAAC;wBACJ,IAAI,GAAG,EAAE,CAAC;oBACd,CAAC;oBACD,OAAO,EAAC,IAAI,EAAC,CAAC;gBAClB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,OAAO,EAAC,KAAK,EAAC,CAAC;gBACnB,CAAC;YACL,CAAC;YACD,YAAY,EAAE,CAAC,KAAK,CAAC;SACxB,CAAC;KACL,CAAC;IACF,gBAAgB,EAAE,OAAO;CAC5B,CAAC,CAAC"}
|
@@ -2,7 +2,6 @@ import type { TTenant } from '../../../types/api/tenant';
|
|
2
2
|
import type { ValueOf } from '../../../types/common';
|
3
3
|
import type { METRIC_STATUS } from './contants';
|
4
4
|
export interface PreparedTenant extends TTenant {
|
5
|
-
backend: string | undefined;
|
6
5
|
sharedTenantName: string | undefined;
|
7
6
|
sharedNodeIds: number[] | undefined;
|
8
7
|
controlPlaneName: string;
|
@@ -23,6 +23,6 @@ export declare const calculateTenantMetrics: (tenant?: TTenant) => {
|
|
23
23
|
blobStorageStats: TenantStorageStats[];
|
24
24
|
tabletStorageStats: TenantStorageStats[] | undefined;
|
25
25
|
};
|
26
|
-
export declare const prepareTenants: (tenants: TTenant[]
|
26
|
+
export declare const prepareTenants: (tenants: TTenant[]) => PreparedTenant[];
|
27
27
|
export declare function getMetricStatusFromUsage(usage?: number): "Unspecified" | "Good" | "Warning" | "Danger";
|
28
28
|
export declare const normalizeProgress: (progress: number) => number;
|
@@ -9,14 +9,6 @@ const getControlPlaneValue = (tenant) => {
|
|
9
9
|
const controlPlaneName = (_b = tenant.ControlPlane) === null || _b === void 0 ? void 0 : _b.name;
|
10
10
|
return controlPlaneName !== null && controlPlaneName !== void 0 ? controlPlaneName : defaultValue;
|
11
11
|
};
|
12
|
-
const getTenantBackend = (tenant) => {
|
13
|
-
var _a;
|
14
|
-
const node = tenant.Nodes ? tenant.Nodes[0] : {};
|
15
|
-
const address = node.Host && node.Endpoints
|
16
|
-
? (_a = node.Endpoints.find((endpoint) => endpoint.Name === 'http-mon')) === null || _a === void 0 ? void 0 : _a.Address
|
17
|
-
: undefined;
|
18
|
-
return node.Host ? `${node.Host}${address ? address : ''}` : undefined;
|
19
|
-
};
|
20
12
|
const calculatePoolsStats = (poolsStats) => {
|
21
13
|
if (!poolsStats) {
|
22
14
|
return undefined;
|
@@ -125,9 +117,8 @@ const calculateTenantEntities = (tenant) => {
|
|
125
117
|
const groupsCount = isNumeric(StorageGroups) ? Number(StorageGroups) : 0;
|
126
118
|
return { nodesCount, groupsCount };
|
127
119
|
};
|
128
|
-
export const prepareTenants = (tenants
|
120
|
+
export const prepareTenants = (tenants) => {
|
129
121
|
return tenants.map((tenant) => {
|
130
|
-
const backend = useNodeAsBackend ? getTenantBackend(tenant) : undefined;
|
131
122
|
const sharedDatabase = tenants.find((item) => item.Id === tenant.ResourceId);
|
132
123
|
const sharedTenantName = sharedDatabase === null || sharedDatabase === void 0 ? void 0 : sharedDatabase.Name;
|
133
124
|
const sharedNodeIds = sharedDatabase === null || sharedDatabase === void 0 ? void 0 : sharedDatabase.NodeIds;
|
@@ -136,7 +127,6 @@ export const prepareTenants = (tenants, useNodeAsBackend) => {
|
|
136
127
|
const { nodesCount, groupsCount } = calculateTenantEntities(tenant);
|
137
128
|
return {
|
138
129
|
...tenant,
|
139
|
-
backend,
|
140
130
|
sharedTenantName,
|
141
131
|
sharedNodeIds,
|
142
132
|
controlPlaneName,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/store/reducers/tenants/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,EAAC,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAC,wBAAwB,EAAE,yBAAyB,EAAC,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAGzC,MAAM,oBAAoB,GAAG,CAAC,MAAe,EAAE,EAAE;;IAC7C,MAAM,KAAK,GAAG,MAAA,MAAM,CAAC,IAAI,0CAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACnE,MAAM,gBAAgB,GAAG,MAAA,MAAM,CAAC,YAAY,0CAAE,IAAI,CAAC;IAEnD,OAAO,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,YAAY,CAAC;AAC5C,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/store/reducers/tenants/utils.ts"],"names":[],"mappings":"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"}
|
@@ -10,7 +10,7 @@ export interface AdditionalClusterProps {
|
|
10
10
|
links?: ClusterLink[];
|
11
11
|
}
|
12
12
|
export interface AdditionalTenantsProps {
|
13
|
-
prepareTenantBackend?: (
|
13
|
+
prepareTenantBackend?: (nodeId?: string | number) => string | undefined;
|
14
14
|
getMonitoringLink?: (name?: string, type?: ETenantType) => string | null;
|
15
15
|
getLogsLink?: (name?: string) => string | null;
|
16
16
|
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { EFlag } from './enums';
|
2
|
-
import type { TMemoryStats, TPoolStats
|
2
|
+
import type { TMemoryStats, TPoolStats } from './nodes';
|
3
3
|
import type { TTabletStateInfo } from './tablet';
|
4
4
|
/**
|
5
5
|
* endpoint: /viewer/json/tenants
|
@@ -42,7 +42,6 @@ export interface TTenant {
|
|
42
42
|
StorageAllocatedSize?: string;
|
43
43
|
/** uint64 */
|
44
44
|
StorageMinAvailableSize?: string;
|
45
|
-
Nodes?: TSystemStateInfo[];
|
46
45
|
/** uint64 */
|
47
46
|
MemoryUsed?: string;
|
48
47
|
/** uint64 */
|
@@ -52,7 +51,6 @@ export interface TTenant {
|
|
52
51
|
CoresUsed?: number;
|
53
52
|
/** uint64 */
|
54
53
|
StorageGroups?: string;
|
55
|
-
MonitoringEndpoint?: string;
|
56
54
|
ControlPlane?: ControlPlane;
|
57
55
|
StorageAllocatedLimit?: string;
|
58
56
|
DatabaseQuotas?: DatabaseQuotas;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../../src/types/api/tenant.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../../src/types/api/tenant.ts"],"names":[],"mappings":"AA2IA,MAAM,CAAN,IAAY,KAOX;AAPD,WAAY,KAAK;IACb,gDAAyC,CAAA;IACzC,8BAAuB,CAAA;IACvB,4BAAqB,CAAA;IACrB,8BAAuB,CAAA;IACvB,gDAAyC,CAAA;IACzC,oCAA6B,CAAA;AACjC,CAAC,EAPW,KAAK,KAAL,KAAK,QAOhB;AAED,MAAM,CAAN,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC5B,uFAAiE,CAAA;IACjE,uFAAiE,CAAA;IACjE,uFAAiE,CAAA;IACjE,yFAAmE,CAAA;IACnE,uFAAiE,CAAA;AACrE,CAAC,EANW,oBAAoB,KAApB,oBAAoB,QAM/B;AAuBD,MAAM,CAAN,IAAY,KAIX;AAJD,WAAY,KAAK;IACb,sBAAa,CAAA;IACb,oBAAW,CAAA;IACX,oBAAW,CAAA;AACf,CAAC,EAJW,KAAK,KAAL,KAAK,QAIhB"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { getBackendFromBalancerAndNodeId, prepareHost } from '../prepareBackend';
|
2
2
|
describe('prepareHost', () => {
|
3
3
|
test('should add u- prefix to cloud din nodes', () => {
|
4
4
|
const cloudDinNodeInitialHost = 'vm-cc8mco0j0snqehgh7r2a-ru-central1-c-nlmw-aniq.cc8mco0j0snqehgh7r2a.ydb.mdb.cloud-preprod.net';
|
@@ -8,36 +8,12 @@ describe('prepareHost', () => {
|
|
8
8
|
expect(prepareHost(commonNodeHost)).toBe(commonNodeHost);
|
9
9
|
});
|
10
10
|
});
|
11
|
-
describe('
|
12
|
-
test('should prepare correct backend
|
11
|
+
describe('getBackendFromBalancerAndNodeId', () => {
|
12
|
+
test('should prepare correct backend from balancer and node id', () => {
|
13
13
|
const balancer = 'https://viewer.ydb.ru:443/dev02.ydb.net:8765';
|
14
|
-
const
|
15
|
-
const result = 'https://viewer.ydb.ru:443/
|
16
|
-
expect(
|
17
|
-
});
|
18
|
-
});
|
19
|
-
describe('getBackendFromRawNodeData', () => {
|
20
|
-
test('should prepare correct backend value from raw node data', () => {
|
21
|
-
const balancer = 'https://viewer.ydb.ru:443/dev02.ydb.net:8765';
|
22
|
-
const node = {
|
23
|
-
Host: 'ydb-dev02-000.search.net',
|
24
|
-
Endpoints: [
|
25
|
-
{
|
26
|
-
Name: 'http-mon',
|
27
|
-
Address: ':8765',
|
28
|
-
},
|
29
|
-
{
|
30
|
-
Name: 'ic',
|
31
|
-
Address: ':19001',
|
32
|
-
},
|
33
|
-
{
|
34
|
-
Name: 'grpc',
|
35
|
-
Address: ':2135',
|
36
|
-
},
|
37
|
-
],
|
38
|
-
};
|
39
|
-
const result = 'https://viewer.ydb.ru:443/ydb-dev02-000.search.net:8765';
|
40
|
-
expect(getBackendFromRawNodeData(node, balancer)).toBe(result);
|
14
|
+
const nodeId = '50016';
|
15
|
+
const result = 'https://viewer.ydb.ru:443/dev02.ydb.net:8765/node/50016';
|
16
|
+
expect(getBackendFromBalancerAndNodeId(nodeId, balancer)).toBe(result);
|
41
17
|
});
|
42
18
|
});
|
43
19
|
//# sourceMappingURL=prepareBackend.test.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"prepareBackend.test.js","sourceRoot":"","sources":["../../../src/utils/__test__/prepareBackend.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
1
|
+
{"version":3,"file":"prepareBackend.test.js","sourceRoot":"","sources":["../../../src/utils/__test__/prepareBackend.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,+BAA+B,EAAE,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE/E,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,uBAAuB,GACzB,gGAAgG,CAAC;QACrG,MAAM,sBAAsB,GACxB,kGAAkG,CAAC;QAEvG,MAAM,cAAc,GAAG,uBAAuB,CAAC;QAE/C,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC1E,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AACH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC7C,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,QAAQ,GAAG,8CAA8C,CAAC;QAChE,MAAM,MAAM,GAAG,OAAO,CAAC;QACvB,MAAM,MAAM,GAAG,yDAAyD,CAAC;QAEzE,MAAM,CAAC,+BAA+B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
@@ -1,2 +1,2 @@
|
|
1
1
|
import type { AdditionalNodesProps } from '../types/additionalProps';
|
2
|
-
export declare const getAdditionalNodesProps: (balancer?: string | undefined
|
2
|
+
export declare const getAdditionalNodesProps: (balancer?: string | undefined) => AdditionalNodesProps;
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { backend } from '../store';
|
2
|
-
import {
|
3
|
-
export const getAdditionalNodesProps = (balancer = backend
|
2
|
+
import { getBackendFromBalancerAndNodeId } from './prepareBackend';
|
3
|
+
export const getAdditionalNodesProps = (balancer = backend) => {
|
4
4
|
return {
|
5
|
-
getNodeRef: (node
|
5
|
+
getNodeRef: (node) => getBackendFromBalancerAndNodeId(node === null || node === void 0 ? void 0 : node.NodeId, balancer !== null && balancer !== void 0 ? balancer : ''),
|
6
6
|
};
|
7
7
|
};
|
8
8
|
//# sourceMappingURL=additionalProps.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"additionalProps.js","sourceRoot":"","sources":["../../src/utils/additionalProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAC,
|
1
|
+
{"version":3,"file":"additionalProps.js","sourceRoot":"","sources":["../../src/utils/additionalProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAC,+BAA+B,EAAC,MAAM,kBAAkB,CAAC;AAEjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAQ,GAAG,OAAO,EAAwB,EAAE;IAChF,OAAO;QACH,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,+BAA+B,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC;KACtF,CAAC;AACN,CAAC,CAAC"}
|
@@ -1,14 +1,11 @@
|
|
1
1
|
import { useClusterBaseInfo } from '../../store/reducers/cluster/cluster';
|
2
2
|
import { getAdditionalNodesProps } from '../additionalProps';
|
3
|
-
import { USE_CLUSTER_BALANCER_AS_BACKEND_KEY } from '../constants';
|
4
|
-
import { useSetting } from './useSetting';
|
5
3
|
import { useTypedSelector } from './useTypedSelector';
|
6
4
|
/** For multi-cluster version */
|
7
5
|
export function useAdditionalNodesProps() {
|
8
6
|
const { balancer } = useClusterBaseInfo();
|
9
|
-
const [useClusterBalancerAsBackend] = useSetting(USE_CLUSTER_BALANCER_AS_BACKEND_KEY);
|
10
7
|
const singleClusterMode = useTypedSelector((state) => state.singleClusterMode);
|
11
|
-
const additionalNodesProps = getAdditionalNodesProps(balancer
|
8
|
+
const additionalNodesProps = getAdditionalNodesProps(balancer);
|
12
9
|
return singleClusterMode ? undefined : additionalNodesProps;
|
13
10
|
}
|
14
11
|
//# sourceMappingURL=useAdditionalNodesProps.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useAdditionalNodesProps.js","sourceRoot":"","sources":["../../../src/utils/hooks/useAdditionalNodesProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAC,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;
|
1
|
+
{"version":3,"file":"useAdditionalNodesProps.js","sourceRoot":"","sources":["../../../src/utils/hooks/useAdditionalNodesProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAC,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAEpD,gCAAgC;AAChC,MAAM,UAAU,uBAAuB;IACnC,MAAM,EAAC,QAAQ,EAAC,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAE/E,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAE/D,OAAO,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC;AAChE,CAAC"}
|
@@ -1,20 +1,40 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { AUTO_REFRESH_INTERVAL } from '../constants';
|
3
3
|
import { useSetting } from './useSetting';
|
4
|
+
const IMMEDIATE_UPDATE_INTERVAL = 1;
|
5
|
+
const DISABLED_INTERVAL = 0;
|
4
6
|
export function useAutoRefreshInterval() {
|
5
|
-
const [settingValue, setSettingValue] = useSetting(AUTO_REFRESH_INTERVAL,
|
6
|
-
const [effectiveInterval, setEffectiveInterval] = React.useState(document.visibilityState === 'visible' ? settingValue :
|
7
|
+
const [settingValue, setSettingValue] = useSetting(AUTO_REFRESH_INTERVAL, DISABLED_INTERVAL);
|
8
|
+
const [effectiveInterval, setEffectiveInterval] = React.useState(document.visibilityState === 'visible' ? settingValue : DISABLED_INTERVAL);
|
9
|
+
const lastHiddenTimeRef = React.useRef(null);
|
7
10
|
React.useEffect(() => {
|
8
|
-
// Update the effective interval when the setting changes
|
9
11
|
setEffectiveInterval(document.visibilityState === 'visible' ? settingValue : 0);
|
10
|
-
// Handle visibility change events
|
11
12
|
const handleVisibilityChange = () => {
|
12
|
-
|
13
|
+
const isVisible = document.visibilityState === 'visible';
|
14
|
+
if (isVisible) {
|
15
|
+
// If more than settingValue milliseconds have passed since the page was hidden,
|
16
|
+
// trigger an immediate update
|
17
|
+
const shouldTriggerImmediate = lastHiddenTimeRef.current &&
|
18
|
+
settingValue !== DISABLED_INTERVAL &&
|
19
|
+
Date.now() - lastHiddenTimeRef.current >= settingValue;
|
20
|
+
if (shouldTriggerImmediate) {
|
21
|
+
setEffectiveInterval(IMMEDIATE_UPDATE_INTERVAL);
|
22
|
+
setTimeout(() => {
|
23
|
+
setEffectiveInterval(settingValue);
|
24
|
+
}, 0);
|
25
|
+
}
|
26
|
+
else {
|
27
|
+
setEffectiveInterval(settingValue);
|
28
|
+
}
|
29
|
+
lastHiddenTimeRef.current = null;
|
30
|
+
}
|
31
|
+
else {
|
32
|
+
lastHiddenTimeRef.current = Date.now();
|
33
|
+
setEffectiveInterval(DISABLED_INTERVAL);
|
34
|
+
}
|
13
35
|
};
|
14
36
|
document.addEventListener('visibilitychange', handleVisibilityChange);
|
15
|
-
return () =>
|
16
|
-
document.removeEventListener('visibilitychange', handleVisibilityChange);
|
17
|
-
};
|
37
|
+
return () => document.removeEventListener('visibilitychange', handleVisibilityChange);
|
18
38
|
}, [settingValue]);
|
19
39
|
return [effectiveInterval, setSettingValue];
|
20
40
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useAutoRefreshInterval.js","sourceRoot":"","sources":["../../../src/utils/hooks/useAutoRefreshInterval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC,MAAM,UAAU,sBAAsB;IAClC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,UAAU,CAAC,qBAAqB,EAAE,
|
1
|
+
{"version":3,"file":"useAutoRefreshInterval.js","sourceRoot":"","sources":["../../../src/utils/hooks/useAutoRefreshInterval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,MAAM,UAAU,sBAAsB;IAClC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,UAAU,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;IAC7F,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAC5D,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAC5E,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IAE5D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,oBAAoB,CAAC,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhF,MAAM,sBAAsB,GAAG,GAAG,EAAE;YAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC;YACzD,IAAI,SAAS,EAAE,CAAC;gBACZ,gFAAgF;gBAChF,8BAA8B;gBAC9B,MAAM,sBAAsB,GACxB,iBAAiB,CAAC,OAAO;oBACzB,YAAY,KAAK,iBAAiB;oBAClC,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC,OAAO,IAAI,YAAY,CAAC;gBAE3D,IAAI,sBAAsB,EAAE,CAAC;oBACzB,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;oBAEhD,UAAU,CAAC,GAAG,EAAE;wBACZ,oBAAoB,CAAC,YAAY,CAAC,CAAC;oBACvC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACV,CAAC;qBAAM,CAAC;oBACJ,oBAAoB,CAAC,YAAY,CAAC,CAAC;gBACvC,CAAC;gBAED,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACJ,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;QACtE,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;IAC1F,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC"}
|
@@ -1,5 +1,3 @@
|
|
1
|
-
import type { NodeAddress } from '../types/additionalProps';
|
2
1
|
export declare const prepareHost: (host?: string) => string | undefined;
|
3
|
-
export declare const getBackendFromNodeHost: (nodeHost: string, balancer: string) => string;
|
4
2
|
/** For multi-cluster version */
|
5
|
-
export declare const
|
3
|
+
export declare const getBackendFromBalancerAndNodeId: (nodeId?: string | number, balancer?: string) => string | undefined;
|
@@ -1,34 +1,14 @@
|
|
1
|
-
import {
|
2
|
-
|
1
|
+
import { prepareBackendFromBalancer } from './parseBalancer';
|
2
|
+
import { valueIsDefined } from '.';
|
3
3
|
export const prepareHost = (host) => {
|
4
4
|
// add "u-" prefix to cloud din nodes
|
5
5
|
return (host === null || host === void 0 ? void 0 : host.startsWith('vm-')) ? `u-${host}` : host;
|
6
6
|
};
|
7
|
-
export const getBackendFromNodeHost = (nodeHost, balancer) => {
|
8
|
-
const preparedHost = prepareHost(nodeHost);
|
9
|
-
const proxy = parseBalancer(balancer).proxy;
|
10
|
-
if (proxy) {
|
11
|
-
return https + proxy + '/' + preparedHost;
|
12
|
-
}
|
13
|
-
return https + preparedHost;
|
14
|
-
};
|
15
7
|
/** For multi-cluster version */
|
16
|
-
export const
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
const preparedBalancer = removeViewerPathname(balancer);
|
21
|
-
return `${preparedBalancer}/node/${NodeId}`;
|
22
|
-
}
|
23
|
-
if (Host && Endpoints) {
|
24
|
-
const nodePort = (_a = Endpoints.find((endpoint) => endpoint.Name === 'http-mon')) === null || _a === void 0 ? void 0 : _a.Address;
|
25
|
-
if (!nodePort || !Host) {
|
26
|
-
return undefined;
|
27
|
-
}
|
28
|
-
const hostWithPort = Host + nodePort;
|
29
|
-
// Currently this func is used to get link to developerUI for specific node
|
30
|
-
// It's expected with / at the end (code in embedded version)
|
31
|
-
return getBackendFromNodeHost(hostWithPort, balancer);
|
8
|
+
export const getBackendFromBalancerAndNodeId = (nodeId, balancer) => {
|
9
|
+
if (valueIsDefined(nodeId) && valueIsDefined(balancer)) {
|
10
|
+
const preparedBalancer = prepareBackendFromBalancer(balancer);
|
11
|
+
return `${preparedBalancer}/node/${nodeId}`;
|
32
12
|
}
|
33
13
|
return undefined;
|
34
14
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"prepareBackend.js","sourceRoot":"","sources":["../../src/utils/prepareBackend.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"prepareBackend.js","sourceRoot":"","sources":["../../src/utils/prepareBackend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAAC,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAC,cAAc,EAAC,MAAM,GAAG,CAAC;AAEjC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAa,EAAE,EAAE;IACzC,qCAAqC;IACrC,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC,CAAC;AAEF,gCAAgC;AAChC,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,MAAwB,EAAE,QAAiB,EAAE,EAAE;IAC3F,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAC9D,OAAO,GAAG,gBAAgB,SAAS,MAAM,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "ydb-embedded-ui",
|
3
|
-
"version": "8.
|
3
|
+
"version": "8.22.1",
|
4
4
|
"files": [
|
5
5
|
"dist"
|
6
6
|
],
|
@@ -69,7 +69,7 @@
|
|
69
69
|
"build": "rm -rf build && DISABLE_ESLINT_PLUGIN=true CI=true react-app-rewired build",
|
70
70
|
"//build:embedded": "echo 'PUBLIC_URL is a setting for create-react-app. Embedded version is built and hosted as is on ydb servers, with no way of knowing the final URL pattern. PUBLIC_URL=. keeps paths to all static relative, allowing servers to handle them as needed'",
|
71
71
|
"build:embedded": "GENERATE_SOURCEMAP=false PUBLIC_URL=. REACT_APP_BACKEND=http://localhost:8765 REACT_APP_META_BACKEND=undefined npm run build",
|
72
|
-
"build:embedded:archive": "npm run build:embedded && mv build embedded-ui && zip -r embedded-ui.zip embedded-ui && rm -rf embedded-ui",
|
72
|
+
"build:embedded:archive": "npm run build:embedded && mv build embedded-ui && cp CHANGELOG.md embedded-ui/CHANGELOG.md && zip -r embedded-ui.zip embedded-ui && rm -rf embedded-ui",
|
73
73
|
"lint": "run-p lint:*",
|
74
74
|
"lint:js": "eslint --ext .js,.jsx,.ts,.tsx .",
|
75
75
|
"lint:styles": "stylelint 'src/**/*.{css,scss}'",
|
@@ -1,34 +0,0 @@
|
|
1
|
-
import { isMac } from './utils';
|
2
|
-
export const SHORTCUTS_HOTKEY = isMac() ? 'cmd+K' : 'ctrl+K';
|
3
|
-
export const HOTKEYS = [
|
4
|
-
{
|
5
|
-
title: 'Query Editor',
|
6
|
-
items: [
|
7
|
-
{
|
8
|
-
title: 'Execute query',
|
9
|
-
value: isMac() ? 'cmd+enter' : 'ctrl+enter',
|
10
|
-
},
|
11
|
-
{
|
12
|
-
title: 'Execute selected query',
|
13
|
-
value: isMac() ? 'cmd+shift+enter' : 'ctrl+shift+enter',
|
14
|
-
},
|
15
|
-
{
|
16
|
-
title: 'Previous query',
|
17
|
-
value: isMac() ? 'cmd+arrowUp' : 'ctrl+arrowUp',
|
18
|
-
},
|
19
|
-
{
|
20
|
-
title: 'Next query',
|
21
|
-
value: isMac() ? 'cmd+arrowDown' : 'ctrl+arrowDown',
|
22
|
-
},
|
23
|
-
{
|
24
|
-
title: 'Save query',
|
25
|
-
value: isMac() ? 'cmd+s' : 'ctrl+s',
|
26
|
-
},
|
27
|
-
{
|
28
|
-
title: 'Save selected query',
|
29
|
-
value: isMac() ? 'cmd+shift+s' : 'ctrl+shift+s',
|
30
|
-
},
|
31
|
-
],
|
32
|
-
},
|
33
|
-
];
|
34
|
-
//# sourceMappingURL=constants.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/containers/AsideNavigation/constants.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AAE7D,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB;QACI,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE;YACH;gBACI,KAAK,EAAE,eAAe;gBACtB,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;aAC9C;YACD;gBACI,KAAK,EAAE,wBAAwB;gBAC/B,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB;aAC1D;YACD;gBACI,KAAK,EAAE,gBAAgB;gBACvB,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;aAClD;YACD;gBACI,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB;aACtD;YACD;gBACI,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;aACtC;YACD;gBACI,KAAK,EAAE,qBAAqB;gBAC5B,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;aAClD;SACJ;KACJ;CACJ,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
export declare const isMac: () => boolean;
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/containers/AsideNavigation/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC"}
|