@ytsaurus/ui 1.25.0 → 1.26.0
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/build/cjs/server/configs/e2e/local.js +8 -0
- package/build/cjs/server/configs/e2e/local.js.map +1 -1
- package/build/cjs/shared/ui-settings.d.ts +19 -1
- package/build/cjs/shared/ui-settings.js.map +1 -1
- package/build/cjs/ui/UIFactory.d.ts +11 -2
- package/build/cjs/ui/UIFactory.js +8 -0
- package/build/cjs/ui/UIFactory.js.map +1 -1
- package/build/cjs/ui/components/Tabs/Tabs.d.ts +1 -1
- package/build/cjs/ui/components/Tabs/Tabs.js.map +1 -1
- package/build/cjs/ui/constants/system/tabs.d.ts +4 -0
- package/build/cjs/ui/constants/system/tabs.js +11 -0
- package/build/cjs/ui/constants/system/tabs.js.map +1 -0
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.js +2 -2
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.js.map +1 -1
- package/build/cjs/ui/pages/components/tabs/Versions/VersionSummary.css +10 -3
- package/build/cjs/ui/pages/components/tabs/Versions/VersionSummary.css.map +1 -1
- package/build/cjs/ui/pages/components/tabs/Versions/VersionSummary.d.ts +3 -1
- package/build/cjs/ui/pages/components/tabs/Versions/VersionSummary.js +24 -6
- package/build/cjs/ui/pages/components/tabs/Versions/VersionSummary.js.map +1 -1
- package/build/cjs/ui/pages/system/System/System.d.ts +10 -8
- package/build/cjs/ui/pages/system/System/System.js +56 -52
- package/build/cjs/ui/pages/system/System/System.js.map +1 -1
- package/build/cjs/ui/pages/system/System/SystemGeneralTab.d.ts +2 -0
- package/build/cjs/ui/pages/system/System/SystemGeneralTab.js +22 -0
- package/build/cjs/ui/pages/system/System/SystemGeneralTab.js.map +1 -0
- package/build/cjs/ui/pages/system/System/helpers/getSystemTabItems.d.ts +9 -0
- package/build/cjs/ui/pages/system/System/helpers/getSystemTabItems.js +41 -0
- package/build/cjs/ui/pages/system/System/helpers/getSystemTabItems.js.map +1 -0
- package/build/esm/server/configs/e2e/local.js +8 -0
- package/build/esm/server/configs/e2e/local.js.map +1 -1
- package/build/esm/shared/ui-settings.d.ts +19 -1
- package/build/esm/shared/ui-settings.js.map +1 -1
- package/build/esm/ui/UIFactory.d.ts +11 -2
- package/build/esm/ui/UIFactory.js +8 -0
- package/build/esm/ui/UIFactory.js.map +1 -1
- package/build/esm/ui/components/Tabs/Tabs.d.ts +1 -1
- package/build/esm/ui/components/Tabs/Tabs.js.map +1 -1
- package/build/esm/ui/constants/system/tabs.d.ts +4 -0
- package/build/esm/ui/constants/system/tabs.js +5 -0
- package/build/esm/ui/constants/system/tabs.js.map +1 -0
- package/build/esm/ui/containers/ClusterPage/ClusterPage.js +1 -1
- package/build/esm/ui/containers/ClusterPage/ClusterPage.js.map +1 -1
- package/build/esm/ui/pages/components/tabs/Versions/VersionSummary.css +10 -3
- package/build/esm/ui/pages/components/tabs/Versions/VersionSummary.css.map +1 -1
- package/build/esm/ui/pages/components/tabs/Versions/VersionSummary.d.ts +3 -1
- package/build/esm/ui/pages/components/tabs/Versions/VersionSummary.js +24 -6
- package/build/esm/ui/pages/components/tabs/Versions/VersionSummary.js.map +1 -1
- package/build/esm/ui/pages/components/tabs/Versions/VersionSummary.scss +15 -6
- package/build/esm/ui/pages/system/System/System.d.ts +10 -8
- package/build/esm/ui/pages/system/System/System.js +55 -52
- package/build/esm/ui/pages/system/System/System.js.map +1 -1
- package/build/esm/ui/pages/system/System/SystemGeneralTab.d.ts +2 -0
- package/build/esm/ui/pages/system/System/SystemGeneralTab.js +17 -0
- package/build/esm/ui/pages/system/System/SystemGeneralTab.js.map +1 -0
- package/build/esm/ui/pages/system/System/helpers/getSystemTabItems.d.ts +9 -0
- package/build/esm/ui/pages/system/System/helpers/getSystemTabItems.js +35 -0
- package/build/esm/ui/pages/system/System/helpers/getSystemTabItems.js.map +1 -0
- package/dist/public/build/assets-manifest.json +7 -7
- package/dist/public/build/css/{main.6f740a3e.css → main.2d05e225.css} +2 -2
- package/dist/public/build/css/main.2d05e225.css.map +1 -0
- package/dist/public/build/js/main.c18a9d22.js +3 -0
- package/dist/public/build/js/{main.ccbdcdf6.js.map → main.c18a9d22.js.map} +1 -1
- package/dist/public/build/manifest.json +4 -4
- package/dist/server/configs/e2e/local.js +8 -0
- package/dist/shared/ui-settings.d.ts +19 -1
- package/package.json +2 -2
- package/dist/public/build/css/main.6f740a3e.css.map +0 -1
- package/dist/public/build/js/main.ccbdcdf6.js +0 -3
- /package/dist/public/build/js/{main.ccbdcdf6.js.LICENSE.txt → main.c18a9d22.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_SystemGeneralTab","_UIFactory","_interopRequireDefault","_Tabs","_global","_reactRouter","_tabs","_getSystemTabItems","_global2","_reactRedux","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","Wrap","_ref","children","_jsx","className","System","exports","_ref2","match","cluster","useSelector","getCluster","systemMonitoringTab","UIFactory","getSystemMonitoringTab","items","useMemo","getSystemTabItems","url","tabSettings","SystemGeneralTab","_jsxs","Tabs","active","SystemTabs","GENERAL","size","UI_TAB_SIZE","routed","underline","Switch","Route","path","concat","component","MONITORING","Redirect","to"],"sources":["System.tsx"],"sourcesContent":["import React, {FC, PropsWithChildren, useMemo} from 'react';\nimport './System.scss';\nimport {SystemGeneralTab} from './SystemGeneralTab';\nimport UIFactory from '../../../UIFactory';\nimport Tabs from '../../../components/Tabs/Tabs';\nimport {UI_TAB_SIZE} from '../../../constants/global';\nimport {Redirect, Route, Switch} from 'react-router';\nimport {SystemTabs} from '../../../constants/system/tabs';\nimport {getSystemTabItems} from './helpers/getSystemTabItems';\nimport {getCluster} from '../../../store/selectors/global';\nimport {useSelector} from 'react-redux';\n\nconst Wrap: FC<PropsWithChildren> = ({children}) => {\n return (\n <div className=\"elements-page__content\">\n <div className={'elements-main-section system'}>{children}</div>\n </div>\n );\n};\n\ntype Props = {\n match: {\n path: string;\n url: string;\n };\n};\n\nexport const System: FC<Props> = ({match}) => {\n const cluster = useSelector(getCluster);\n const systemMonitoringTab = UIFactory.getSystemMonitoringTab();\n\n const items = useMemo(() => {\n return getSystemTabItems({url: match.url, tabSettings: systemMonitoringTab, cluster});\n }, [match.url, systemMonitoringTab, cluster]);\n\n if (!systemMonitoringTab) {\n return (\n <Wrap>\n <SystemGeneralTab />\n </Wrap>\n );\n }\n\n return (\n <Wrap>\n <Tabs items={items} active={SystemTabs.GENERAL} size={UI_TAB_SIZE} routed underline />\n <Switch>\n <Route path={`${match.path}/${SystemTabs.GENERAL}`} component={SystemGeneralTab} />\n {'component' in systemMonitoringTab && (\n <Route\n path={`${match.path}/${SystemTabs.MONITORING}`}\n component={systemMonitoringTab.component}\n />\n )}\n <Redirect to={`${match.path}/${SystemTabs.GENERAL}`} />\n </Switch>\n </Wrap>\n );\n};\n"],"mappings":"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"}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.SystemGeneralTab = void 0;
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
8
|
+
var _Resources = _interopRequireDefault(require("../Resources/Resources"));
|
9
|
+
var _Masters = _interopRequireDefault(require("../Masters/Masters"));
|
10
|
+
var _SchedulersAndAgents = _interopRequireDefault(require("../SchedulersAndAgents/SchedulersAndAgents"));
|
11
|
+
var _Chunks = _interopRequireDefault(require("../Chunks/Chunks"));
|
12
|
+
var _Proxies = _interopRequireDefault(require("../Proxies/Proxies"));
|
13
|
+
var _RpcProxies = _interopRequireDefault(require("../RpcProxies/RpcProxies"));
|
14
|
+
var _Nodes = _interopRequireDefault(require("../Nodes/Nodes"));
|
15
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17
|
+
var SystemGeneralTab = exports.SystemGeneralTab = function SystemGeneralTab() {
|
18
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
19
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Resources.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Masters.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_SchedulersAndAgents.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Chunks.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Proxies.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_RpcProxies.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Nodes.default, {})]
|
20
|
+
});
|
21
|
+
};
|
22
|
+
// #sourceMappingURL=SystemGeneralTab.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_Resources","_Masters","_SchedulersAndAgents","_Chunks","_Proxies","_RpcProxies","_Nodes","_jsxRuntime","obj","__esModule","default","SystemGeneralTab","exports","_jsxs","_Fragment","children","_jsx","Resources","Masters","SchedulersAndAgents","Chunks","Proxies","RpcProxies","Nodes"],"sources":["SystemGeneralTab.tsx"],"sourcesContent":["import React, {FC} from 'react';\nimport Resources from '../Resources/Resources';\nimport Masters from '../Masters/Masters';\nimport SchedulersAndAgents from '../SchedulersAndAgents/SchedulersAndAgents';\nimport Chunks from '../Chunks/Chunks';\nimport Proxies from '../Proxies/Proxies';\nimport RpcProxies from '../RpcProxies/RpcProxies';\nimport Nodes from '../Nodes/Nodes';\n\nexport const SystemGeneralTab: FC = () => {\n return (\n <>\n <Resources />\n <Masters />\n <SchedulersAndAgents />\n <Chunks />\n <Proxies />\n <RpcProxies />\n <Nodes />\n </>\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,oBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,OAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,QAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,WAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,MAAA,GAAAR,sBAAA,CAAAC,OAAA;AAAmC,IAAAQ,WAAA,GAAAR,OAAA;AAAA,SAAAD,uBAAAU,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE5B,IAAMG,gBAAoB,GAAAC,OAAA,CAAAD,gBAAA,GAAG,SAAvBA,gBAAoBA,CAAA,EAAS;EACtC,oBACI,IAAAE,gBAAA,EAAAC,oBAAA;IAAAC,QAAA,gBACI,IAAAC,eAAA,EAACC,kBAAS,IAAE,CAAC,eACb,IAAAD,eAAA,EAACE,gBAAO,IAAE,CAAC,eACX,IAAAF,eAAA,EAACG,4BAAmB,IAAE,CAAC,eACvB,IAAAH,eAAA,EAACI,eAAM,IAAE,CAAC,eACV,IAAAJ,eAAA,EAACK,gBAAO,IAAE,CAAC,eACX,IAAAL,eAAA,EAACM,mBAAU,IAAE,CAAC,eACd,IAAAN,eAAA,EAACO,cAAK,IAAE,CAAC;EAAA,CACX,CAAC;AAEX,CAAC"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { TabItem } from '../../../../components/Tabs/Tabs';
|
2
|
+
import { UIFactory } from '../../../../UIFactory';
|
3
|
+
type Props = (data: {
|
4
|
+
url: string;
|
5
|
+
tabSettings: ReturnType<UIFactory['getSystemMonitoringTab']>;
|
6
|
+
cluster: string;
|
7
|
+
}) => TabItem[];
|
8
|
+
export declare const getSystemTabItems: Props;
|
9
|
+
export {};
|
@@ -0,0 +1,41 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.getSystemTabItems = void 0;
|
7
|
+
var _tabs = require("../../../../constants/system/tabs");
|
8
|
+
var _format = require("../../../../utils/format");
|
9
|
+
var getSystemTabItems = exports.getSystemTabItems = function getSystemTabItems(_ref) {
|
10
|
+
var url = _ref.url,
|
11
|
+
tabSettings = _ref.tabSettings,
|
12
|
+
cluster = _ref.cluster;
|
13
|
+
if (!tabSettings) return [];
|
14
|
+
var result = [{
|
15
|
+
value: _tabs.SystemTabs.GENERAL,
|
16
|
+
text: 'General',
|
17
|
+
url: "".concat(url, "/").concat(_tabs.SystemTabs.GENERAL),
|
18
|
+
show: true
|
19
|
+
}];
|
20
|
+
if ('urlTemplate' in tabSettings) {
|
21
|
+
result.push({
|
22
|
+
value: 'link',
|
23
|
+
text: tabSettings.title || 'Monitoring',
|
24
|
+
show: true,
|
25
|
+
url: (0, _format.formatByParams)(tabSettings.urlTemplate, {
|
26
|
+
ytCluster: cluster
|
27
|
+
}),
|
28
|
+
routed: false,
|
29
|
+
external: true
|
30
|
+
});
|
31
|
+
} else {
|
32
|
+
result.push({
|
33
|
+
value: _tabs.SystemTabs.MONITORING,
|
34
|
+
text: tabSettings.title || 'Monitoring',
|
35
|
+
url: "".concat(url, "/").concat(_tabs.SystemTabs.MONITORING),
|
36
|
+
show: true
|
37
|
+
});
|
38
|
+
}
|
39
|
+
return result;
|
40
|
+
};
|
41
|
+
// #sourceMappingURL=getSystemTabItems.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_tabs","require","_format","getSystemTabItems","exports","_ref","url","tabSettings","cluster","result","value","SystemTabs","GENERAL","text","concat","show","push","title","formatByParams","urlTemplate","ytCluster","routed","external","MONITORING"],"sources":["getSystemTabItems.ts"],"sourcesContent":["import {TabItem} from '../../../../components/Tabs/Tabs';\nimport {SystemTabs} from '../../../../constants/system/tabs';\nimport {UIFactory} from '../../../../UIFactory';\nimport {formatByParams} from '../../../../utils/format';\n\ntype Props = (data: {\n url: string;\n tabSettings: ReturnType<UIFactory['getSystemMonitoringTab']>;\n cluster: string;\n}) => TabItem[];\n\nexport const getSystemTabItems: Props = ({url, tabSettings, cluster}) => {\n if (!tabSettings) return [];\n\n const result: TabItem[] = [\n {\n value: SystemTabs.GENERAL,\n text: 'General',\n url: `${url}/${SystemTabs.GENERAL}`,\n show: true,\n },\n ];\n\n if ('urlTemplate' in tabSettings) {\n result.push({\n value: 'link',\n text: tabSettings.title || 'Monitoring',\n show: true,\n url: formatByParams(tabSettings.urlTemplate, {ytCluster: cluster}),\n routed: false,\n external: true,\n });\n } else {\n result.push({\n value: SystemTabs.MONITORING,\n text: tabSettings.title || 'Monitoring',\n url: `${url}/${SystemTabs.MONITORING}`,\n show: true,\n });\n }\n\n return result;\n};\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAQO,IAAME,iBAAwB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,SAA3BA,iBAAwBA,CAAAE,IAAA,EAAoC;EAAA,IAA/BC,GAAG,GAAAD,IAAA,CAAHC,GAAG;IAAEC,WAAW,GAAAF,IAAA,CAAXE,WAAW;IAAEC,OAAO,GAAAH,IAAA,CAAPG,OAAO;EAC/D,IAAI,CAACD,WAAW,EAAE,OAAO,EAAE;EAE3B,IAAME,MAAiB,GAAG,CACtB;IACIC,KAAK,EAAEC,gBAAU,CAACC,OAAO;IACzBC,IAAI,EAAE,SAAS;IACfP,GAAG,KAAAQ,MAAA,CAAKR,GAAG,OAAAQ,MAAA,CAAIH,gBAAU,CAACC,OAAO,CAAE;IACnCG,IAAI,EAAE;EACV,CAAC,CACJ;EAED,IAAI,aAAa,IAAIR,WAAW,EAAE;IAC9BE,MAAM,CAACO,IAAI,CAAC;MACRN,KAAK,EAAE,MAAM;MACbG,IAAI,EAAEN,WAAW,CAACU,KAAK,IAAI,YAAY;MACvCF,IAAI,EAAE,IAAI;MACVT,GAAG,EAAE,IAAAY,sBAAc,EAACX,WAAW,CAACY,WAAW,EAAE;QAACC,SAAS,EAAEZ;MAAO,CAAC,CAAC;MAClEa,MAAM,EAAE,KAAK;MACbC,QAAQ,EAAE;IACd,CAAC,CAAC;EACN,CAAC,MAAM;IACHb,MAAM,CAACO,IAAI,CAAC;MACRN,KAAK,EAAEC,gBAAU,CAACY,UAAU;MAC5BV,IAAI,EAAEN,WAAW,CAACU,KAAK,IAAI,YAAY;MACvCX,GAAG,KAAAQ,MAAA,CAAKR,GAAG,OAAAQ,MAAA,CAAIH,gBAAU,CAACY,UAAU,CAAE;MACtCR,IAAI,EAAE;IACV,CAAC,CAAC;EACN;EAEA,OAAON,MAAM;AACjB,CAAC"}
|
@@ -26,6 +26,14 @@ var e2eConfig = {
|
|
26
26
|
title: 'My monitoring',
|
27
27
|
urlTemplate: 'https://my.monitoring.service/operations?cluster={ytCluster}&id={ytOperationId}&pool={ytPool}&tree={ytPoolTree}&from={fromTimeMs}&to={toTimeMs}'
|
28
28
|
},
|
29
|
+
systemMonitoring: {
|
30
|
+
title: 'My monitoring',
|
31
|
+
urlTemplate: 'https://my.monitoring.service/system?cluster={ytCluster}'
|
32
|
+
},
|
33
|
+
componentVersionsMonitoring: {
|
34
|
+
title: 'My monitoring',
|
35
|
+
urlTemplate: 'https://my.monitoring.service/component-versions?cluster={ytCluster}'
|
36
|
+
},
|
29
37
|
reShortNameFromAddress: '(?<shortname>^(loca)).*(?<suffix>:\\d\\d\\d)',
|
30
38
|
reShortNameFromTabletNodeAddress: '(?<shortname>^(local))[^:]+(?<suffix>:\\d\\d)',
|
31
39
|
reUnipikaAllowTaggedSources: ['^https://yastatic\\.net/'],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["common","e2eConfig","uiSettings","newTableReplicasCount","uploadTableMaxSize","uploadTableUseLocalmode","queryTrackerStage","directDownload","docsBaseUrl","process","env","YT_DOCS_BASE_URL","schedulingMonitoring","title","urlTemplate","accountsMonitoring","bundlesMonitoring","operationsMonitoring","reShortNameFromAddress","reShortNameFromTabletNodeAddress","reUnipikaAllowTaggedSources","hideReferrerUrl","defaultUserSettingsOverrides","_objectSpread","_objectSpread2","_defineProperty","localmodeClusterConfig","urls","icon","icon2x","iconbig","externalProxy"],"sources":["local.ts"],"sourcesContent":["import {AppConfig} from '@gravity-ui/nodekit';\nimport common from '../common';\n\nconst e2eConfig: Partial<AppConfig> = {\n uiSettings: {\n newTableReplicasCount: 1,\n uploadTableMaxSize: 50 * 1024 * 1024,\n uploadTableUseLocalmode: true,\n queryTrackerStage: 'testing',\n directDownload: false,\n docsBaseUrl: process.env.YT_DOCS_BASE_URL || 'https://ytsaurus.tech/docs/en',\n schedulingMonitoring: {\n title: 'My monitoring',\n urlTemplate:\n 'https://monitoring-service.my-domain.com/d/DB-id?var-pool={ytPool}&var-cluster={ytCluster}&var-tree={ytPoolTree}',\n },\n accountsMonitoring: {\n title: 'My monitoring',\n urlTemplate:\n 'https://my.monitoring.service/accounts?cluster={ytCluster}&account={ytAccount}',\n },\n bundlesMonitoring: {\n title: 'My monitoring',\n urlTemplate:\n 'https://my.monitoring.service/bundles?cluster={ytCluster}&bundle={ytTabletCellBundle}',\n },\n operationsMonitoring: {\n title: 'My monitoring',\n urlTemplate:\n 'https://my.monitoring.service/operations?cluster={ytCluster}&id={ytOperationId}&pool={ytPool}&tree={ytPoolTree}&from={fromTimeMs}&to={toTimeMs}',\n },\n\n reShortNameFromAddress: '(?<shortname>^(loca)).*(?<suffix>:\\\\d\\\\d\\\\d)',\n reShortNameFromTabletNodeAddress: '(?<shortname>^(local))[^:]+(?<suffix>:\\\\d\\\\d)',\n\n reUnipikaAllowTaggedSources: ['^https://yastatic\\\\.net/'],\n hideReferrerUrl: 'https://h.yandex-team.ru/',\n },\n\n defaultUserSettingsOverrides: {\n ...common.defaultUserSettingsOverrides,\n ['global::navigation::useSmartSort']: false,\n ['global::development::yqlTypes']: true,\n },\n\n localmodeClusterConfig: {\n urls: {\n icon: 'https://yastatic.net/s3/cloud/yt/static/freeze/assets/images/ui.bab31938.jpg',\n icon2x: 'https://yastatic.net/s3/cloud/yt/static/freeze/assets/images/ui-2x.38d49f78.jpg',\n iconbig:\n 'https://yastatic.net/s3/cloud/yt/static/freeze/assets/images/ui-big.44e3fa56.jpg',\n },\n externalProxy: 'external.proxy.my',\n },\n};\n\nexport default e2eConfig;\n"],"mappings":";;;AACA,OAAOA,MAAM,MAAM,WAAW;AAE9B,IAAMC,SAA6B,GAAG;EAClCC,UAAU,EAAE;IACRC,qBAAqB,EAAE,CAAC;IACxBC,kBAAkB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IACpCC,uBAAuB,EAAE,IAAI;IAC7BC,iBAAiB,EAAE,SAAS;IAC5BC,cAAc,EAAE,KAAK;IACrBC,WAAW,EAAEC,OAAO,CAACC,GAAG,CAACC,gBAAgB,IAAI,+BAA+B;IAC5EC,oBAAoB,EAAE;MAClBC,KAAK,EAAE,eAAe;MACtBC,WAAW,EACP;IACR,CAAC;IACDC,kBAAkB,EAAE;MAChBF,KAAK,EAAE,eAAe;MACtBC,WAAW,EACP;IACR,CAAC;IACDE,iBAAiB,EAAE;MACfH,KAAK,EAAE,eAAe;MACtBC,WAAW,EACP;IACR,CAAC;IACDG,oBAAoB,EAAE;MAClBJ,KAAK,EAAE,eAAe;MACtBC,WAAW,EACP;IACR,CAAC;
|
1
|
+
{"version":3,"names":["common","e2eConfig","uiSettings","newTableReplicasCount","uploadTableMaxSize","uploadTableUseLocalmode","queryTrackerStage","directDownload","docsBaseUrl","process","env","YT_DOCS_BASE_URL","schedulingMonitoring","title","urlTemplate","accountsMonitoring","bundlesMonitoring","operationsMonitoring","systemMonitoring","componentVersionsMonitoring","reShortNameFromAddress","reShortNameFromTabletNodeAddress","reUnipikaAllowTaggedSources","hideReferrerUrl","defaultUserSettingsOverrides","_objectSpread","_objectSpread2","_defineProperty","localmodeClusterConfig","urls","icon","icon2x","iconbig","externalProxy"],"sources":["local.ts"],"sourcesContent":["import {AppConfig} from '@gravity-ui/nodekit';\nimport common from '../common';\n\nconst e2eConfig: Partial<AppConfig> = {\n uiSettings: {\n newTableReplicasCount: 1,\n uploadTableMaxSize: 50 * 1024 * 1024,\n uploadTableUseLocalmode: true,\n queryTrackerStage: 'testing',\n directDownload: false,\n docsBaseUrl: process.env.YT_DOCS_BASE_URL || 'https://ytsaurus.tech/docs/en',\n schedulingMonitoring: {\n title: 'My monitoring',\n urlTemplate:\n 'https://monitoring-service.my-domain.com/d/DB-id?var-pool={ytPool}&var-cluster={ytCluster}&var-tree={ytPoolTree}',\n },\n accountsMonitoring: {\n title: 'My monitoring',\n urlTemplate:\n 'https://my.monitoring.service/accounts?cluster={ytCluster}&account={ytAccount}',\n },\n bundlesMonitoring: {\n title: 'My monitoring',\n urlTemplate:\n 'https://my.monitoring.service/bundles?cluster={ytCluster}&bundle={ytTabletCellBundle}',\n },\n operationsMonitoring: {\n title: 'My monitoring',\n urlTemplate:\n 'https://my.monitoring.service/operations?cluster={ytCluster}&id={ytOperationId}&pool={ytPool}&tree={ytPoolTree}&from={fromTimeMs}&to={toTimeMs}',\n },\n systemMonitoring: {\n title: 'My monitoring',\n urlTemplate: 'https://my.monitoring.service/system?cluster={ytCluster}',\n },\n componentVersionsMonitoring: {\n title: 'My monitoring',\n urlTemplate: 'https://my.monitoring.service/component-versions?cluster={ytCluster}',\n },\n\n reShortNameFromAddress: '(?<shortname>^(loca)).*(?<suffix>:\\\\d\\\\d\\\\d)',\n reShortNameFromTabletNodeAddress: '(?<shortname>^(local))[^:]+(?<suffix>:\\\\d\\\\d)',\n\n reUnipikaAllowTaggedSources: ['^https://yastatic\\\\.net/'],\n hideReferrerUrl: 'https://h.yandex-team.ru/',\n },\n\n defaultUserSettingsOverrides: {\n ...common.defaultUserSettingsOverrides,\n ['global::navigation::useSmartSort']: false,\n ['global::development::yqlTypes']: true,\n },\n\n localmodeClusterConfig: {\n urls: {\n icon: 'https://yastatic.net/s3/cloud/yt/static/freeze/assets/images/ui.bab31938.jpg',\n icon2x: 'https://yastatic.net/s3/cloud/yt/static/freeze/assets/images/ui-2x.38d49f78.jpg',\n iconbig:\n 'https://yastatic.net/s3/cloud/yt/static/freeze/assets/images/ui-big.44e3fa56.jpg',\n },\n externalProxy: 'external.proxy.my',\n },\n};\n\nexport default e2eConfig;\n"],"mappings":";;;AACA,OAAOA,MAAM,MAAM,WAAW;AAE9B,IAAMC,SAA6B,GAAG;EAClCC,UAAU,EAAE;IACRC,qBAAqB,EAAE,CAAC;IACxBC,kBAAkB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IACpCC,uBAAuB,EAAE,IAAI;IAC7BC,iBAAiB,EAAE,SAAS;IAC5BC,cAAc,EAAE,KAAK;IACrBC,WAAW,EAAEC,OAAO,CAACC,GAAG,CAACC,gBAAgB,IAAI,+BAA+B;IAC5EC,oBAAoB,EAAE;MAClBC,KAAK,EAAE,eAAe;MACtBC,WAAW,EACP;IACR,CAAC;IACDC,kBAAkB,EAAE;MAChBF,KAAK,EAAE,eAAe;MACtBC,WAAW,EACP;IACR,CAAC;IACDE,iBAAiB,EAAE;MACfH,KAAK,EAAE,eAAe;MACtBC,WAAW,EACP;IACR,CAAC;IACDG,oBAAoB,EAAE;MAClBJ,KAAK,EAAE,eAAe;MACtBC,WAAW,EACP;IACR,CAAC;IACDI,gBAAgB,EAAE;MACdL,KAAK,EAAE,eAAe;MACtBC,WAAW,EAAE;IACjB,CAAC;IACDK,2BAA2B,EAAE;MACzBN,KAAK,EAAE,eAAe;MACtBC,WAAW,EAAE;IACjB,CAAC;IAEDM,sBAAsB,EAAE,8CAA8C;IACtEC,gCAAgC,EAAE,+CAA+C;IAEjFC,2BAA2B,EAAE,CAAC,0BAA0B,CAAC;IACzDC,eAAe,EAAE;EACrB,CAAC;EAEDC,4BAA4B,EAAAC,aAAA,CAAAA,aAAA,KACrBzB,MAAM,CAACwB,4BAA4B,QAAAE,cAAA,OAAAC,eAAA,CAAAD,cAAA,EACrC,kCAAkC,EAAG,KAAK,GAAAC,eAAA,CAAAD,cAAA,EAC1C,+BAA+B,EAAG,IAAI,GAAAA,cAAA,EAC1C;EAEDE,sBAAsB,EAAE;IACpBC,IAAI,EAAE;MACFC,IAAI,EAAE,8EAA8E;MACpFC,MAAM,EAAE,iFAAiF;MACzFC,OAAO,EACH;IACR,CAAC;IACDC,aAAa,EAAE;EACnB;AACJ,CAAC;AAED,eAAehC,SAAS"}
|
@@ -61,12 +61,30 @@ export interface UISettings {
|
|
61
61
|
* chytMonitoring.urlTemplate supports following parameters:
|
62
62
|
* - {ytCluster}
|
63
63
|
* - {chytAlias}
|
64
|
-
* All the parameters are optional and
|
64
|
+
* All the parameters are optional and they are replaced with corresponding values
|
65
65
|
* @example {
|
66
66
|
* urlTemplate: `https://my.monitoring.service/chyt?cluster={ytCluster}&alias={chytAlias}`
|
67
67
|
* }
|
68
68
|
*/
|
69
69
|
chytMonitoring?: UISettingsMonitoring;
|
70
|
+
/**
|
71
|
+
* systemMonitoring.urlTemplate supports following parameters:
|
72
|
+
* - {ytCluster}
|
73
|
+
* All the parameters are optional and they are replaced with corresponding values
|
74
|
+
* @example {
|
75
|
+
* urlTemplate: 'https://my.monitoring.service/system?cluster={ytCluster}'
|
76
|
+
* }
|
77
|
+
*/
|
78
|
+
systemMonitoring?: UISettingsMonitoring;
|
79
|
+
/**
|
80
|
+
* componentVersionsMonitoring.urlTemplate supports following parameters:
|
81
|
+
* - {ytCluster}
|
82
|
+
* All the parameters are optional and they are replaced with corresponding values
|
83
|
+
* @example {
|
84
|
+
* urlTemplate: 'https://my.monitoring.service/component-versions?cluster={ytCluster}'
|
85
|
+
* }
|
86
|
+
*/
|
87
|
+
componentVersionsMonitoring?: UISettingsMonitoring;
|
70
88
|
/**
|
71
89
|
* Allows to define regular expression to extract hash-part from version of node by named group 'hash'
|
72
90
|
* @example reHashFromNodeVersion: '[^~]+(?<hash>[^+]+)'
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["uiSettingFromEnv","uploadTableExcelBaseUrl","process","env","YTFRONT_UPLOAD_EXCEL_BASE_URL","exportTableBaseUrl","YTFRONT_EXPORT_EXCEL_BASE_URL","jupyterBasePath","YTFRONT_JUPYTER_BASE_URL"],"sources":["ui-settings.ts"],"sourcesContent":["export interface UISettings {\n accessLogBasePath?: string;\n accountsUsageBasePath?: string;\n docsBaseUrl?: string;\n jupyterBasePath?: string;\n\n newTableReplicasCount: number;\n\n uploadTableMaxSize: number;\n uploadTableUseLocalmode?: boolean;\n\n uploadTableExcelBaseUrl?: string;\n exportTableBaseUrl?: string;\n\n directDownload?: boolean;\n\n trackerBaseUrl?: string;\n trackerQuoteRequestQueue?: string;\n trackerAdminRequestQueue?: string;\n\n reportBugUrl?: string;\n\n datalensBaseUrl?: string;\n datalensAllowedCluster?: Array<string>;\n\n announcesMailListUrl?: string;\n\n sslCertFixUrl?: string;\n queryTrackerStage?: string;\n queryTrackerCluster?: string;\n\n oauthTokenUrl?: string;\n\n defaultFontType?: keyof Required<UISettings>['fontTypes'];\n\n fontTypes?: Record<string, {regular: string; monospace: string}>;\n\n /**\n * The option denies to create pools with `<Root>` parent from UI.\n */\n schedulingDenyRootAsParent?: boolean;\n\n /**\n * schedulingMonitoring.urlTemplate supports following parameters: {ytCluster}, {ytPool}, {ytPoolTree}.\n * All the parameters are optional and they are replaced with corresponding values.\n * @example {urlTemplate: 'https://my.monitoring.service/scheduling?cluster={ytCluster}&pool={ytPool}&poolTree={ytPoolTree}'}\n */\n schedulingMonitoring?: UISettingsMonitoring;\n\n /**\n * accountsMonitoring.urlTemplate supports following parameters: {ytCluster}, {ytAccount}\n * All the parameters are optional and they are replaced with corresponding values.\n * @example {urlTemplate: 'https://my.monitoring.service/accounts?cluster={ytCluster}&account={ytAccount}'}\n */\n accountsMonitoring?: UISettingsMonitoring;\n\n /**\n * bundlesMonitoring.urlTemplate supports following parameters: {ytCluster}, {ytTabletCellBundle}\n * All the parameters are optional and they are replaced with corresponding values.\n * @example {urlTemplate: 'https://my.monitoring.service/bundles?cluster={ytCluster}&account={ytTabletCellBundle}'}\n */\n bundlesMonitoring?: UISettingsMonitoring;\n\n /**\n * operationsMonitoring.urlTemplate supports following parameters:\n * {ytCluster}, {ytOperationId}, {ytPool}, {ytPoolTree}, {ytSlotIndex}, {fromTimeMs}, {toTimeMs}\n * All the parameters are optional and they are replaced with corresponding values.\n * @example {\n * urlTemplate:\n * 'https://my.monitoring.service/operations?cluster={ytCluster}&operationId={ytOperationId}&pool={ytPool}&tree={ytPoolTree}&slot={ytSlotIndex}&from={fromTimeMs}&to={toTimeMs}'\n * }\n */\n operationsMonitoring?: UISettingsMonitoring;\n\n /**\n * chytMonitoring.urlTemplate supports following parameters:\n * - {ytCluster}\n * - {chytAlias}\n * All the parameters are optional and
|
1
|
+
{"version":3,"names":["uiSettingFromEnv","uploadTableExcelBaseUrl","process","env","YTFRONT_UPLOAD_EXCEL_BASE_URL","exportTableBaseUrl","YTFRONT_EXPORT_EXCEL_BASE_URL","jupyterBasePath","YTFRONT_JUPYTER_BASE_URL"],"sources":["ui-settings.ts"],"sourcesContent":["export interface UISettings {\n accessLogBasePath?: string;\n accountsUsageBasePath?: string;\n docsBaseUrl?: string;\n jupyterBasePath?: string;\n\n newTableReplicasCount: number;\n\n uploadTableMaxSize: number;\n uploadTableUseLocalmode?: boolean;\n\n uploadTableExcelBaseUrl?: string;\n exportTableBaseUrl?: string;\n\n directDownload?: boolean;\n\n trackerBaseUrl?: string;\n trackerQuoteRequestQueue?: string;\n trackerAdminRequestQueue?: string;\n\n reportBugUrl?: string;\n\n datalensBaseUrl?: string;\n datalensAllowedCluster?: Array<string>;\n\n announcesMailListUrl?: string;\n\n sslCertFixUrl?: string;\n queryTrackerStage?: string;\n queryTrackerCluster?: string;\n\n oauthTokenUrl?: string;\n\n defaultFontType?: keyof Required<UISettings>['fontTypes'];\n\n fontTypes?: Record<string, {regular: string; monospace: string}>;\n\n /**\n * The option denies to create pools with `<Root>` parent from UI.\n */\n schedulingDenyRootAsParent?: boolean;\n\n /**\n * schedulingMonitoring.urlTemplate supports following parameters: {ytCluster}, {ytPool}, {ytPoolTree}.\n * All the parameters are optional and they are replaced with corresponding values.\n * @example {urlTemplate: 'https://my.monitoring.service/scheduling?cluster={ytCluster}&pool={ytPool}&poolTree={ytPoolTree}'}\n */\n schedulingMonitoring?: UISettingsMonitoring;\n\n /**\n * accountsMonitoring.urlTemplate supports following parameters: {ytCluster}, {ytAccount}\n * All the parameters are optional and they are replaced with corresponding values.\n * @example {urlTemplate: 'https://my.monitoring.service/accounts?cluster={ytCluster}&account={ytAccount}'}\n */\n accountsMonitoring?: UISettingsMonitoring;\n\n /**\n * bundlesMonitoring.urlTemplate supports following parameters: {ytCluster}, {ytTabletCellBundle}\n * All the parameters are optional and they are replaced with corresponding values.\n * @example {urlTemplate: 'https://my.monitoring.service/bundles?cluster={ytCluster}&account={ytTabletCellBundle}'}\n */\n bundlesMonitoring?: UISettingsMonitoring;\n\n /**\n * operationsMonitoring.urlTemplate supports following parameters:\n * {ytCluster}, {ytOperationId}, {ytPool}, {ytPoolTree}, {ytSlotIndex}, {fromTimeMs}, {toTimeMs}\n * All the parameters are optional and they are replaced with corresponding values.\n * @example {\n * urlTemplate:\n * 'https://my.monitoring.service/operations?cluster={ytCluster}&operationId={ytOperationId}&pool={ytPool}&tree={ytPoolTree}&slot={ytSlotIndex}&from={fromTimeMs}&to={toTimeMs}'\n * }\n */\n operationsMonitoring?: UISettingsMonitoring;\n\n /**\n * chytMonitoring.urlTemplate supports following parameters:\n * - {ytCluster}\n * - {chytAlias}\n * All the parameters are optional and they are replaced with corresponding values\n * @example {\n * urlTemplate: `https://my.monitoring.service/chyt?cluster={ytCluster}&alias={chytAlias}`\n * }\n */\n chytMonitoring?: UISettingsMonitoring;\n\n /**\n * systemMonitoring.urlTemplate supports following parameters:\n * - {ytCluster}\n * All the parameters are optional and they are replaced with corresponding values\n * @example {\n * urlTemplate: 'https://my.monitoring.service/system?cluster={ytCluster}'\n * }\n */\n systemMonitoring?: UISettingsMonitoring;\n\n /**\n * componentVersionsMonitoring.urlTemplate supports following parameters:\n * - {ytCluster}\n * All the parameters are optional and they are replaced with corresponding values\n * @example {\n * urlTemplate: 'https://my.monitoring.service/component-versions?cluster={ytCluster}'\n * }\n */\n componentVersionsMonitoring?: UISettingsMonitoring;\n\n /**\n * Allows to define regular expression to extract hash-part from version of node by named group 'hash'\n * @example reHashFromNodeVersion: '[^~]+(?<hash>[^+]+)'\n */\n reHashFromNodeVersion?: string;\n\n /**\n * Allows to define regular expression to extract short-name from full address of host by named group 'shortname'.\n * Also it supports optional named group 'suffix' that will pe appended to shortname as is.\n * @example reShortNameFromAddress: '(?<shortname>.*)((\\\\.msk\\\\.my-domain\\\\.ru)|(\\\\.vla\\\\.my-domain\\\\.net))'\n * @example reShortNameFromAddress: '(?<shortname>.*)((\\\\.msk\\\\.my-domain\\\\.ru)|(\\\\.vla\\\\.my-domain\\\\.net))'\n */\n reShortNameFromAddress?: string;\n\n /**\n * Allows to override behavior of `reShortNameFromAddress` for tablet/bundles/cells specific parts of UI.\n * @example reShortNameFromTabletNodeAddress: '(?<shortname>[^-]+-[^-]+).*'\n */\n reShortNameFromTabletNodeAddress?: string;\n\n /**\n * Allows to define array of regexps for allowed urls of TaggedType of unipika to display media-content (audio/video/images).\n * If there are no matched items in the array the TaggedType-item will be displayed as a json-object.\n * @expamle\n * reUnipikaAllowTaggedSources: [\n * \"https:\\\\/\\\\/image\\\\.bank\\\\.my\\\\/fruits\\\\/\",\n * \"https:\\\\/\\\\/image\\\\.bank\\\\.my\\\\/vegetables\\\\/\"\n * ]\n */\n reUnipikaAllowTaggedSources: Array<string>;\n\n /**\n * Allows to define service for removing 'Referer' header for url-s on a page.\n *\n * See `@gravity-ui/unipika v3.0.0` details in [CHANGELOG.md](https://github.com/gravity-ui/unipika/blob/main/CHANGELOG.md).\n */\n hideReferrerUrl?: string;\n}\n\nexport interface UISettingsMonitoring {\n urlTemplate: string;\n title?: string;\n}\n\nexport const uiSettingFromEnv: Partial<UISettings> = {\n uploadTableExcelBaseUrl: process.env.YTFRONT_UPLOAD_EXCEL_BASE_URL,\n exportTableBaseUrl: process.env.YTFRONT_EXPORT_EXCEL_BASE_URL,\n jupyterBasePath: process.env.YTFRONT_JUPYTER_BASE_URL,\n};\n"],"mappings":"AAqJA,OAAO,IAAMA,gBAAqC,GAAG;EACjDC,uBAAuB,EAAEC,OAAO,CAACC,GAAG,CAACC,6BAA6B;EAClEC,kBAAkB,EAAEH,OAAO,CAACC,GAAG,CAACG,6BAA6B;EAC7DC,eAAe,EAAEL,OAAO,CAACC,GAAG,CAACK;AACjC,CAAC"}
|
@@ -18,6 +18,7 @@ import { Props as RoleActionsProps } from './containers/ACL/RoleActions';
|
|
18
18
|
import { PERMISSIONS_SETTINGS } from './constants/acl';
|
19
19
|
import { PreparedAclSubject } from './utils/acl/acl-types';
|
20
20
|
import { PreparedRole } from './utils/acl';
|
21
|
+
import { UISettingsMonitoring } from '../shared/ui-settings';
|
21
22
|
type HeaderItemOrPage = {
|
22
23
|
href: string;
|
23
24
|
pageId?: undefined;
|
@@ -39,7 +40,7 @@ export interface UIFactoryClusterPageInfo {
|
|
39
40
|
title: string;
|
40
41
|
pageId: string;
|
41
42
|
svgIcon?: SVGIconData;
|
42
|
-
reducers?: Record<string, Reducer
|
43
|
+
reducers?: Record<string, Reducer<any, any>>;
|
43
44
|
reactComponent: React.ComponentType<any>;
|
44
45
|
topRowComponent?: React.ComponentType<any>;
|
45
46
|
urlMapping?: Record<string, PathParameters>;
|
@@ -49,7 +50,7 @@ export interface ExternalSchemaDescriptionResponse {
|
|
49
50
|
externalSchema?: Map<string, ExternalSchemaDescription>;
|
50
51
|
}
|
51
52
|
export interface ReducersAndUrlMapping {
|
52
|
-
reducers?: Record<string, Reducer
|
53
|
+
reducers?: Record<string, Reducer<any, any>>;
|
53
54
|
urlMapping?: Record<string, PathParameters>;
|
54
55
|
}
|
55
56
|
export interface SchedulingExtraTab {
|
@@ -105,6 +106,14 @@ export interface UIFactory {
|
|
105
106
|
isEphemeral?: boolean | undefined;
|
106
107
|
};
|
107
108
|
}): Array<SchedulingExtraTab>;
|
109
|
+
getSystemMonitoringTab(): {
|
110
|
+
title?: string;
|
111
|
+
urlTemplate: string;
|
112
|
+
} | {
|
113
|
+
title?: string;
|
114
|
+
component: React.ComponentType<any>;
|
115
|
+
} | undefined;
|
116
|
+
getVersionMonitoringLink(cluster: string): UISettingsMonitoring | undefined;
|
108
117
|
getMonitoringForAccounts(): undefined | {
|
109
118
|
component: React.ComponentType<{
|
110
119
|
cluster: string;
|
@@ -66,6 +66,14 @@ var uiFactory = {
|
|
66
66
|
urlTemplate: urlTemplate
|
67
67
|
}];
|
68
68
|
},
|
69
|
+
getSystemMonitoringTab: function getSystemMonitoringTab() {
|
70
|
+
if (!(uiSettings !== null && uiSettings !== void 0 && uiSettings.systemMonitoring)) return undefined;
|
71
|
+
return uiSettings.systemMonitoring;
|
72
|
+
},
|
73
|
+
getVersionMonitoringLink: function getVersionMonitoringLink() {
|
74
|
+
if (!(uiSettings !== null && uiSettings !== void 0 && uiSettings.componentVersionsMonitoring)) return undefined;
|
75
|
+
return uiSettings.componentVersionsMonitoring;
|
76
|
+
},
|
69
77
|
getMonitoringForAccounts: function getMonitoringForAccounts() {
|
70
78
|
var _uiSettings$accountsM;
|
71
79
|
if (!(uiSettings !== null && uiSettings !== void 0 && (_uiSettings$accountsM = uiSettings.accountsMonitoring) !== null && _uiSettings$accountsM !== void 0 && _uiSettings$accountsM.urlTemplate)) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","AppNavigationPageLayout","defaultAclApi","SupportComponent","YTUserSuggest","docsUrls","YTSubjectSuggest","RoleActions","OperationDetailMonitorLinks","PERMISSIONS_SETTINGS","uiSettings","YT","jsx","_jsx","experimentalPages","uiFactory","getClusterAppearance","cluster","_YT$clusters","clusters","urls","isWatchMen","makeUrlForUserName","_ref","login","concat","makeUrlForTransferTask","undefined","makeUrlForNodeIO","makeUrlForTabletCellBundleDashboard","makeUrlForMonitoringDescriptor","makeUrlForUserDashboard","getExtaClusterPages","getExtraRootPages","getExtraReducersAndUrlMapping","getSchedulingExtraTabs","_uiSettings$schedulin","schedulingMonitoring","urlTemplate","_uiSettings$schedulin2","_uiSettings$schedulin3","title","name","getMonitoringForAccounts","_uiSettings$accountsM","accountsMonitoring","_uiSettings$accountsM2","getMonitoringForBundle","_uiSettings$bundlesMo","bundlesMonitoring","_uiSettings$bundlesMo2","getMonitoringForOperation","params","_uiSettings$operation","_params$pools","operationsMonitoring","_uiSettings$operation2","hasPoolParameter","indexOf","pools","length","component","getMonitorComponentForJob","getMonitoringComponentForChyt","_uiSettings$chytMonit","_ref2","chytMonitoring","getStatisticsComponentForAccount","getStatisticsComponentForBundle","renderNavigationExtraActions","renderSchedulingLastDayMaximum","renderComponentsNodeCardTop","getExtraMetaTableItemsForComponentsNode","getExtraMetaTableItemsForPool","getExtraMetaTableItemsForBundle","getComponentsNodeDashboardUrl","renderTransferQuotaNoticeForPool","renderTransferQuotaNoticeForAccount","renderTopRowExtraControlsForAccount","renderTopRowExtraControlsForPool","renderTopRowExtraControlsForBundle","renderAccountsTableItemExtraControls","renderSchedulingTableItemExtraControls","renderBundlesTableItemExtraControls","renderControlAbcService","makeSupportContent","_x","makeContent","reportBugUrl","getComponentForConsumerMetrics","getComonentForQueueMetrics","renderTableCellBundleEditorNotice","getNodeDeployUrl","getNodeNannyUrl","renderAppNavigation","props","_objectSpread","createNotificationUrl","wrapApp","app","externalSchemaDescriptionSetup","load","_cluster","_path","Promise","resolve","getAclApi","renderAclSubjectsSuggestControl","renderRolesLink","getExternalSettings","renderUserSuggest","getExperimentalPages","getAllowedExperimentalPages","getComponentForAclRoleActions","getAclPermissionsSettings","onChytAliasSqlClick","configureUIFactoryItem","k","redefinition","configureUIFactory","overrides","_forEach","_v","key","Proxy","set","Error","isAbcAllowed","abc","onChange","value","id","slug","Boolean"],"sources":["UIFactory.tsx"],"sourcesContent":["import {SVGIconData} from '@gravity-ui/uikit/build/esm/components/Icon/types';\nimport {MetaTableItem} from './components/MetaTable/MetaTable';\nimport _ from 'lodash';\nimport React from 'react';\nimport {Reducer} from 'redux';\nimport {PathParameters} from './store/location';\nimport {TabletBundle} from './store/reducers/tablet_cell_bundles';\nimport {PoolInfo} from './store/selectors/scheduling/scheduling-pools';\nimport {ClusterConfig, ClusterUiConfig} from '../shared/yt-types';\nimport {ClusterAppearance} from './appearance';\nimport AppNavigationPageLayout, {\n AppNavigationProps,\n} from './containers/AppNavigation/AppNavigationPageLayout';\nimport {ExternalSchemaDescription} from './pages/navigation/tabs/Schema/ExternalDescription/ExternalDescription';\nimport {AclApi, defaultAclApi} from './utils/acl/external-acl-api';\nimport {SubjectsControlProps} from './containers/ACL/SubjectsControl/SubjectsControl';\nimport {SettingsPage} from './containers/SettingsPanel/settings-description';\nimport {SupportComponent} from './containers/SupportComponent/SupportComponent';\nimport {UserSuggestProps} from './containers/UserSuggest/UserSuggest';\nimport {YTUserSuggest} from './containers/UserSuggest/YTUserSuggest';\nimport {DocsUrls, docsUrls} from './constants/docsUrls';\nimport {YTSubjectSuggest} from './containers/ACL/SubjectsControl/YTSubjectSuggest';\nimport RoleActions, {Props as RoleActionsProps} from './containers/ACL/RoleActions';\nimport OperationDetailMonitorLinks from './pages/operations/OperationDetail/tabs/monitor/OperationDetailsMonitorLinks';\nimport {PERMISSIONS_SETTINGS} from './constants/acl';\nimport {uiSettings} from './config/ui-settings';\nimport YT from './config/yt-config';\nimport {PreparedAclSubject} from './utils/acl/acl-types';\nimport {PreparedRole} from './utils/acl';\n\ntype HeaderItemOrPage =\n | {\n href: string;\n\n pageId?: undefined;\n reactComponent?: undefined;\n reducers?: undefined;\n urlMapping?: undefined;\n }\n | {\n pageId?: string;\n reactComponent?: React.ComponentType<any>; // used as component for <Route ... component={reactComponent} />\n reducers?: Record<string, Reducer>;\n urlMapping?: Record<string, PathParameters>;\n\n href?: undefined;\n };\n\nexport type UIFactoryRootPageInfo = HeaderItemOrPage & {\n title: string;\n getVisible?: () => Promise<boolean>;\n};\n\nexport interface UIFactoryClusterPageInfo {\n title: string;\n pageId: string; // also used as urlMatch for <Route path={`/:cluster/${pageId}`} ... />\n svgIcon?: SVGIconData;\n reducers?: Record<string, Reducer>;\n reactComponent: React.ComponentType<any>; // used as component for <Route ... component={reactComponent} />\n topRowComponent?: React.ComponentType<any>; // used as component for <Route ... component={topRowComponent} />\n urlMapping?: Record<string, PathParameters>;\n}\n\nexport interface ExternalSchemaDescriptionResponse {\n url?: string;\n externalSchema?: Map<string, ExternalSchemaDescription>;\n}\n\nexport interface ReducersAndUrlMapping {\n reducers?: Record<string, Reducer>;\n urlMapping?: Record<string, PathParameters>;\n}\n\nexport interface SchedulingExtraTab {\n name: string;\n title?: string;\n component?: React.ComponentType<any>;\n /**\n * Allows to redefine link of corresponding tab\n * Example: https://grafana.mydomain.com?var-pool={ytPool}&var-tree={ytPoolTree}&var-cluster={ytCluster}\n */\n urlTemplate?: string;\n}\n\nexport interface OperationMonitoringTabProps {\n cluster: string;\n operation: {\n id: string;\n startTime?: string;\n finishTime?: string;\n pools?: Array<{pool: string; tree: string; slotIndex?: number}>;\n };\n}\n\nexport type AclRoleActionsType = Partial<Omit<PreparedAclSubject | PreparedRole, 'type'>> & {\n type?: string;\n};\n\nexport interface UIFactory {\n getClusterAppearance(cluster?: string): undefined | ClusterAppearance;\n\n isWatchMen(login: string): boolean;\n\n makeUrlForUserName({cluster, login}: {cluster: string; login: string}): string | undefined;\n makeUrlForTransferTask(operation: unknown): string | undefined;\n makeUrlForNodeIO(cluster: string, host?: string): string | undefined;\n makeUrlForTabletCellBundleDashboard(cluster: string, bundle: string): string | undefined;\n makeUrlForMonitoringDescriptor(\n cluster: string,\n timeRange: {from: string; to?: string},\n monitoring_descriptor?: string,\n ): string | undefined;\n makeUrlForUserDashboard(cluster: string, user: string): string | undefined;\n\n getExtaClusterPages(): Array<UIFactoryClusterPageInfo>;\n getExtraRootPages(): Array<UIFactoryRootPageInfo>;\n\n getExtraReducersAndUrlMapping(): undefined | ReducersAndUrlMapping;\n getSchedulingExtraTabs(params: {\n cluster: string;\n pool: string;\n tree: string;\n extraOptions: {\n isRoot?: boolean;\n isEphemeral?: boolean | undefined;\n };\n }): Array<SchedulingExtraTab>;\n\n getMonitoringForAccounts():\n | undefined\n | {\n component: React.ComponentType<{cluster: string; account: string}>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitoringForBundle():\n | undefined\n | {\n component: React.ComponentType<{\n cluster: string;\n tablet_cell_bundle: string;\n bundleData: any;\n }>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitoringForOperation(params: OperationMonitoringTabProps['operation']):\n | undefined\n | {\n component: React.ComponentType<OperationMonitoringTabProps>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitorComponentForJob():\n | undefined\n | React.ComponentType<{\n cluster: string;\n job_descriptor: string;\n from?: number;\n to?: number;\n }>;\n\n getMonitoringComponentForChyt():\n | undefined\n | {\n component?: React.ComponentType<{cluster: string; alias: string}>;\n urlTemplate?: string;\n title?: string;\n };\n\n getStatisticsComponentForAccount():\n | undefined\n | React.ComponentType<{\n cluster: string;\n account: string;\n accountSubtreeAllNames: Array<string>;\n theme: string;\n }>;\n\n getStatisticsComponentForBundle():\n | undefined\n | React.ComponentType<{cluster: string; bundle: string; theme: string}>;\n\n renderNavigationExtraActions(params: {\n className?: string;\n cluster: string;\n path: string;\n type: string;\n attributes: unknown;\n }): React.ReactNode;\n\n renderSchedulingLastDayMaximum(props: {\n className?: string;\n cluster: string;\n tree: string;\n title?: string;\n sensor: 'max_operation_count' | 'max_running_operation_count';\n format?(sensorValue?: number): string;\n current?: {value: string; title: string};\n showHint?: boolean;\n showAsLink?: boolean;\n }): React.ReactNode;\n\n renderComponentsNodeCardTop(props: {\n className?: string;\n clusterConfig: ClusterConfig;\n host: string;\n physicalHost: string;\n }): React.ReactNode;\n\n getComponentsNodeDashboardUrl(props: {cluster: string; host: string}): {\n url?: string;\n title?: string;\n };\n\n renderTransferQuotaNoticeForPool(props: {\n className?: string;\n pool?: PoolInfo;\n parentPool?: PoolInfo;\n clusterUiConfig?: ClusterUiConfig;\n isTopLevel?: boolean;\n }): React.ReactNode;\n\n renderTransferQuotaNoticeForAccount(props: {\n className?: string;\n isTopLevel?: boolean;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForAccount(props: {\n className?: string;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForPool(props: {\n itemClassName?: string;\n pool?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForBundle(props: {\n itemClassName?: string;\n bundle?: TabletBundle;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n getExtraMetaTableItemsForComponentsNode(props: {\n clusterConfig: ClusterConfig;\n host: string;\n physicalHost: string;\n }): undefined | Array<MetaTableItem>;\n\n getExtraMetaTableItemsForPool(props: {\n pool: PoolInfo;\n clusterUiConfig?: ClusterUiConfig;\n }): undefined | Array<MetaTableItem>;\n\n getExtraMetaTableItemsForBundle(props: {\n bundle: TabletBundle;\n clusterUiConfig: ClusterUiConfig;\n }): undefined | Array<MetaTableItem>;\n\n renderAccountsTableItemExtraControls(props: {\n itemClassName?: string;\n cluster: string;\n account: string;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderSchedulingTableItemExtraControls(props: {\n itemClassName?: string;\n cluster: string;\n pool: unknown;\n clusterUiConfig: ClusterUiConfig;\n }): React.ReactNode;\n\n renderBundlesTableItemExtraControls(props: {\n itemClassName?: string;\n bundle?: TabletBundle;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderControlAbcService<T extends {slug: string; id?: number}>(props: {\n className?: string;\n value?: T;\n onChange: (v?: T) => void;\n placeholder?: string;\n disabled?: boolean;\n }): React.ReactNode;\n\n makeSupportContent(\n params: {login: string; cluster?: string; buttonToWrap?: React.ReactNode},\n makeContent: (params: {\n supportContent?: React.ReactNode;\n onSupportClick: () => void;\n }) => React.ReactNode,\n ): React.ReactNode;\n\n getComponentForConsumerMetrics():\n | undefined\n | React.ComponentType<{\n cluster: string;\n path: string;\n targetQueue?: string;\n }>;\n\n getComonentForQueueMetrics(): undefined | React.ComponentType<{cluster: string; path: string}>;\n\n renderTableCellBundleEditorNotice(props: {\n bundleData?: {$attributes: unknown};\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n getNodeDeployUrl(ypCluster?: string, podId?: string): string | undefined;\n getNodeNannyUrl(params: {\n pod_id?: string;\n nanny_service?: string;\n yp_cluster?: string;\n }): string | undefined;\n\n renderAppNavigation(props: AppNavigationProps): React.ReactElement;\n\n createNotificationUrl(clusterConfig?: ClusterConfig): string | undefined;\n\n wrapApp(app: React.ReactElement): React.ReactElement;\n\n externalSchemaDescriptionSetup: {\n columns?: Record<keyof ExternalSchemaDescription['glossaryEntity'], string>;\n load(cluster: string, path: string): Promise<ExternalSchemaDescriptionResponse>;\n };\n\n getAclApi(): AclApi;\n\n renderAclSubjectsSuggestControl(props: SubjectsControlProps): React.ReactNode;\n\n renderRolesLink(params: {cluster: string; login: string; className?: string}): React.ReactNode;\n\n getExternalSettings(params: {\n cluster: string;\n login: string;\n isAdmin: boolean;\n }): Array<SettingsPage>;\n\n renderUserSuggest(props: UserSuggestProps): React.ReactNode;\n\n yqlWidgetSetup?: {\n renderButton(props: {className?: string; isSplit?: string}): React.ReactNode;\n renderWidget(props: {cluster: string; path: string; attributes: unknown}): React.ReactNode;\n renderYqlOperationLink(yqlOperationId: string): React.ReactNode;\n };\n\n getExperimentalPages(): string[];\n getAllowedExperimentalPages(login: string): Promise<Array<string>>;\n\n docsUrls: DocsUrls;\n\n getComponentForAclRoleActions(): undefined | React.ComponentType<RoleActionsProps>;\n\n getAclPermissionsSettings(): typeof PERMISSIONS_SETTINGS;\n\n onChytAliasSqlClick(params: {alias: string; cluster: string}): void;\n}\n\nconst experimentalPages: string[] = [];\n\nconst uiFactory: UIFactory = {\n getClusterAppearance(cluster) {\n return YT.clusters[cluster!]?.urls;\n },\n isWatchMen() {\n return false;\n },\n makeUrlForUserName({cluster, login}: {cluster?: string; login: string}) {\n return `/${cluster}/users?filter=${login}`;\n },\n makeUrlForTransferTask() {\n return undefined;\n },\n makeUrlForNodeIO() {\n return undefined;\n },\n makeUrlForTabletCellBundleDashboard() {\n return undefined;\n },\n makeUrlForMonitoringDescriptor() {\n return undefined;\n },\n makeUrlForUserDashboard() {\n return undefined;\n },\n\n getExtaClusterPages() {\n return [];\n },\n getExtraRootPages() {\n return [];\n },\n\n getExtraReducersAndUrlMapping() {\n return undefined;\n },\n\n getSchedulingExtraTabs() {\n if (!uiSettings.schedulingMonitoring?.urlTemplate) {\n return [];\n }\n\n const {urlTemplate, title = 'Monitoring'} = uiSettings.schedulingMonitoring;\n\n return [\n {\n name: 'monitoring',\n title,\n urlTemplate,\n },\n ];\n },\n getMonitoringForAccounts() {\n if (!uiSettings?.accountsMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.accountsMonitoring;\n return {urlTemplate, title};\n },\n getMonitoringForBundle() {\n if (!uiSettings.bundlesMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.bundlesMonitoring;\n return {urlTemplate, title};\n },\n getMonitoringForOperation(params) {\n if (!uiSettings.operationsMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.operationsMonitoring;\n\n const hasPoolParameter =\n urlTemplate.indexOf('{ytPool}') !== -1 || urlTemplate.indexOf('{ytPoolTree}') !== -1;\n\n if (hasPoolParameter && params.pools?.length! > 1) {\n return {component: OperationDetailMonitorLinks};\n }\n\n return {urlTemplate, title};\n },\n getMonitorComponentForJob() {\n return undefined;\n },\n getMonitoringComponentForChyt() {\n const {urlTemplate, title} = uiSettings.chytMonitoring ?? {};\n if (!urlTemplate) {\n return undefined;\n }\n\n return {urlTemplate, title};\n },\n getStatisticsComponentForAccount() {\n return undefined;\n },\n getStatisticsComponentForBundle() {\n return undefined;\n },\n\n renderNavigationExtraActions() {\n return null;\n },\n\n renderSchedulingLastDayMaximum() {\n return undefined;\n },\n\n renderComponentsNodeCardTop() {\n return undefined;\n },\n\n getExtraMetaTableItemsForComponentsNode() {\n return undefined;\n },\n\n getExtraMetaTableItemsForPool() {\n return undefined;\n },\n\n getExtraMetaTableItemsForBundle() {\n return undefined;\n },\n\n getComponentsNodeDashboardUrl() {\n return {};\n },\n\n renderTransferQuotaNoticeForPool() {\n return undefined;\n },\n\n renderTransferQuotaNoticeForAccount() {\n return undefined;\n },\n\n renderTopRowExtraControlsForAccount() {\n return undefined;\n },\n\n renderTopRowExtraControlsForPool() {\n return undefined;\n },\n\n renderTopRowExtraControlsForBundle() {\n return undefined;\n },\n\n renderAccountsTableItemExtraControls() {\n return undefined;\n },\n\n renderSchedulingTableItemExtraControls() {\n return undefined;\n },\n\n renderBundlesTableItemExtraControls() {\n return undefined;\n },\n\n renderControlAbcService() {\n return undefined;\n },\n\n makeSupportContent(_x, makeContent) {\n const {reportBugUrl} = uiSettings;\n if (!reportBugUrl) {\n return undefined;\n }\n\n return <SupportComponent makeContent={makeContent} />;\n },\n\n getComponentForConsumerMetrics() {\n return undefined;\n },\n\n getComonentForQueueMetrics() {\n return undefined;\n },\n\n renderTableCellBundleEditorNotice() {\n return undefined;\n },\n\n getNodeDeployUrl() {\n return undefined;\n },\n\n getNodeNannyUrl() {\n return undefined;\n },\n\n renderAppNavigation(props) {\n return <AppNavigationPageLayout {...props} />;\n },\n\n createNotificationUrl() {\n return undefined;\n },\n\n wrapApp(app) {\n return app;\n },\n\n externalSchemaDescriptionSetup: {\n load(_cluster: string, _path: string) {\n return Promise.resolve({});\n },\n },\n\n getAclApi() {\n return defaultAclApi;\n },\n\n renderAclSubjectsSuggestControl(props) {\n return <YTSubjectSuggest {...props} />;\n },\n\n renderRolesLink() {\n return undefined;\n },\n\n getExternalSettings() {\n return [];\n },\n\n renderUserSuggest(props) {\n return <YTUserSuggest {...props} />;\n },\n\n getExperimentalPages() {\n return experimentalPages;\n },\n\n getAllowedExperimentalPages() {\n return Promise.resolve([]);\n },\n\n docsUrls: docsUrls,\n\n getComponentForAclRoleActions() {\n return RoleActions;\n },\n\n getAclPermissionsSettings() {\n return PERMISSIONS_SETTINGS;\n },\n\n onChytAliasSqlClick() {},\n};\n\nfunction configureUIFactoryItem<K extends keyof UIFactory>(k: K, redefinition: UIFactory[K]) {\n uiFactory[k] = redefinition;\n}\n\nexport function configureUIFactory(overrides: Partial<UIFactory>) {\n _.forEach(overrides, (_v, k) => {\n const key = k as keyof UIFactory;\n configureUIFactoryItem(key, overrides[key]!);\n });\n}\n\nexport default new Proxy(uiFactory, {\n set: () => {\n throw new Error('Use configureUIFactory(...) method instead of direct modifications');\n },\n});\n\nexport function isAbcAllowed() {\n const abc = uiFactory.renderControlAbcService({\n onChange: () => {},\n value: {id: 123, slug: '123'},\n });\n return Boolean(abc);\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["React","AppNavigationPageLayout","defaultAclApi","SupportComponent","YTUserSuggest","docsUrls","YTSubjectSuggest","RoleActions","OperationDetailMonitorLinks","PERMISSIONS_SETTINGS","uiSettings","YT","jsx","_jsx","experimentalPages","uiFactory","getClusterAppearance","cluster","_YT$clusters","clusters","urls","isWatchMen","makeUrlForUserName","_ref","login","concat","makeUrlForTransferTask","undefined","makeUrlForNodeIO","makeUrlForTabletCellBundleDashboard","makeUrlForMonitoringDescriptor","makeUrlForUserDashboard","getExtaClusterPages","getExtraRootPages","getExtraReducersAndUrlMapping","getSchedulingExtraTabs","_uiSettings$schedulin","schedulingMonitoring","urlTemplate","_uiSettings$schedulin2","_uiSettings$schedulin3","title","name","getSystemMonitoringTab","systemMonitoring","getVersionMonitoringLink","componentVersionsMonitoring","getMonitoringForAccounts","_uiSettings$accountsM","accountsMonitoring","_uiSettings$accountsM2","getMonitoringForBundle","_uiSettings$bundlesMo","bundlesMonitoring","_uiSettings$bundlesMo2","getMonitoringForOperation","params","_uiSettings$operation","_params$pools","operationsMonitoring","_uiSettings$operation2","hasPoolParameter","indexOf","pools","length","component","getMonitorComponentForJob","getMonitoringComponentForChyt","_uiSettings$chytMonit","_ref2","chytMonitoring","getStatisticsComponentForAccount","getStatisticsComponentForBundle","renderNavigationExtraActions","renderSchedulingLastDayMaximum","renderComponentsNodeCardTop","getExtraMetaTableItemsForComponentsNode","getExtraMetaTableItemsForPool","getExtraMetaTableItemsForBundle","getComponentsNodeDashboardUrl","renderTransferQuotaNoticeForPool","renderTransferQuotaNoticeForAccount","renderTopRowExtraControlsForAccount","renderTopRowExtraControlsForPool","renderTopRowExtraControlsForBundle","renderAccountsTableItemExtraControls","renderSchedulingTableItemExtraControls","renderBundlesTableItemExtraControls","renderControlAbcService","makeSupportContent","_x","makeContent","reportBugUrl","getComponentForConsumerMetrics","getComonentForQueueMetrics","renderTableCellBundleEditorNotice","getNodeDeployUrl","getNodeNannyUrl","renderAppNavigation","props","_objectSpread","createNotificationUrl","wrapApp","app","externalSchemaDescriptionSetup","load","_cluster","_path","Promise","resolve","getAclApi","renderAclSubjectsSuggestControl","renderRolesLink","getExternalSettings","renderUserSuggest","getExperimentalPages","getAllowedExperimentalPages","getComponentForAclRoleActions","getAclPermissionsSettings","onChytAliasSqlClick","configureUIFactoryItem","k","redefinition","configureUIFactory","overrides","_forEach","_v","key","Proxy","set","Error","isAbcAllowed","abc","onChange","value","id","slug","Boolean"],"sources":["UIFactory.tsx"],"sourcesContent":["import {SVGIconData} from '@gravity-ui/uikit/build/esm/components/Icon/types';\nimport {MetaTableItem} from './components/MetaTable/MetaTable';\nimport _ from 'lodash';\nimport React from 'react';\nimport {Reducer} from 'redux';\nimport {PathParameters} from './store/location';\nimport {TabletBundle} from './store/reducers/tablet_cell_bundles';\nimport {PoolInfo} from './store/selectors/scheduling/scheduling-pools';\nimport {ClusterConfig, ClusterUiConfig} from '../shared/yt-types';\nimport {ClusterAppearance} from './appearance';\nimport AppNavigationPageLayout, {\n AppNavigationProps,\n} from './containers/AppNavigation/AppNavigationPageLayout';\nimport {ExternalSchemaDescription} from './pages/navigation/tabs/Schema/ExternalDescription/ExternalDescription';\nimport {AclApi, defaultAclApi} from './utils/acl/external-acl-api';\nimport {SubjectsControlProps} from './containers/ACL/SubjectsControl/SubjectsControl';\nimport {SettingsPage} from './containers/SettingsPanel/settings-description';\nimport {SupportComponent} from './containers/SupportComponent/SupportComponent';\nimport {UserSuggestProps} from './containers/UserSuggest/UserSuggest';\nimport {YTUserSuggest} from './containers/UserSuggest/YTUserSuggest';\nimport {DocsUrls, docsUrls} from './constants/docsUrls';\nimport {YTSubjectSuggest} from './containers/ACL/SubjectsControl/YTSubjectSuggest';\nimport RoleActions, {Props as RoleActionsProps} from './containers/ACL/RoleActions';\nimport OperationDetailMonitorLinks from './pages/operations/OperationDetail/tabs/monitor/OperationDetailsMonitorLinks';\nimport {PERMISSIONS_SETTINGS} from './constants/acl';\nimport {uiSettings} from './config/ui-settings';\nimport YT from './config/yt-config';\nimport {PreparedAclSubject} from './utils/acl/acl-types';\nimport {PreparedRole} from './utils/acl';\nimport {UISettingsMonitoring} from '../shared/ui-settings';\n\ntype HeaderItemOrPage =\n | {\n href: string;\n\n pageId?: undefined;\n reactComponent?: undefined;\n reducers?: undefined;\n urlMapping?: undefined;\n }\n | {\n pageId?: string;\n reactComponent?: React.ComponentType<any>; // used as component for <Route ... component={reactComponent} />\n reducers?: Record<string, Reducer>;\n urlMapping?: Record<string, PathParameters>;\n\n href?: undefined;\n };\n\nexport type UIFactoryRootPageInfo = HeaderItemOrPage & {\n title: string;\n getVisible?: () => Promise<boolean>;\n};\n\nexport interface UIFactoryClusterPageInfo {\n title: string;\n pageId: string; // also used as urlMatch for <Route path={`/:cluster/${pageId}`} ... />\n svgIcon?: SVGIconData;\n reducers?: Record<string, Reducer<any, any>>;\n reactComponent: React.ComponentType<any>; // used as component for <Route ... component={reactComponent} />\n topRowComponent?: React.ComponentType<any>; // used as component for <Route ... component={topRowComponent} />\n urlMapping?: Record<string, PathParameters>;\n}\n\nexport interface ExternalSchemaDescriptionResponse {\n url?: string;\n externalSchema?: Map<string, ExternalSchemaDescription>;\n}\n\nexport interface ReducersAndUrlMapping {\n reducers?: Record<string, Reducer<any, any>>;\n urlMapping?: Record<string, PathParameters>;\n}\n\nexport interface SchedulingExtraTab {\n name: string;\n title?: string;\n component?: React.ComponentType<any>;\n /**\n * Allows to redefine link of corresponding tab\n * Example: https://grafana.mydomain.com?var-pool={ytPool}&var-tree={ytPoolTree}&var-cluster={ytCluster}\n */\n urlTemplate?: string;\n}\n\nexport interface OperationMonitoringTabProps {\n cluster: string;\n operation: {\n id: string;\n startTime?: string;\n finishTime?: string;\n pools?: Array<{pool: string; tree: string; slotIndex?: number}>;\n };\n}\n\nexport type AclRoleActionsType = Partial<Omit<PreparedAclSubject | PreparedRole, 'type'>> & {\n type?: string;\n};\n\nexport interface UIFactory {\n getClusterAppearance(cluster?: string): undefined | ClusterAppearance;\n\n isWatchMen(login: string): boolean;\n\n makeUrlForUserName({cluster, login}: {cluster: string; login: string}): string | undefined;\n makeUrlForTransferTask(operation: unknown): string | undefined;\n makeUrlForNodeIO(cluster: string, host?: string): string | undefined;\n makeUrlForTabletCellBundleDashboard(cluster: string, bundle: string): string | undefined;\n makeUrlForMonitoringDescriptor(\n cluster: string,\n timeRange: {from: string; to?: string},\n monitoring_descriptor?: string,\n ): string | undefined;\n makeUrlForUserDashboard(cluster: string, user: string): string | undefined;\n\n getExtaClusterPages(): Array<UIFactoryClusterPageInfo>;\n getExtraRootPages(): Array<UIFactoryRootPageInfo>;\n\n getExtraReducersAndUrlMapping(): undefined | ReducersAndUrlMapping;\n getSchedulingExtraTabs(params: {\n cluster: string;\n pool: string;\n tree: string;\n extraOptions: {\n isRoot?: boolean;\n isEphemeral?: boolean | undefined;\n };\n }): Array<SchedulingExtraTab>;\n getSystemMonitoringTab():\n | {\n title?: string;\n urlTemplate: string;\n }\n | {\n title?: string;\n component: React.ComponentType<any>;\n }\n | undefined;\n getVersionMonitoringLink(cluster: string): UISettingsMonitoring | undefined;\n\n getMonitoringForAccounts():\n | undefined\n | {\n component: React.ComponentType<{cluster: string; account: string}>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitoringForBundle():\n | undefined\n | {\n component: React.ComponentType<{\n cluster: string;\n tablet_cell_bundle: string;\n bundleData: any;\n }>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitoringForOperation(params: OperationMonitoringTabProps['operation']):\n | undefined\n | {\n component: React.ComponentType<OperationMonitoringTabProps>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitorComponentForJob():\n | undefined\n | React.ComponentType<{\n cluster: string;\n job_descriptor: string;\n from?: number;\n to?: number;\n }>;\n\n getMonitoringComponentForChyt():\n | undefined\n | {\n component?: React.ComponentType<{cluster: string; alias: string}>;\n urlTemplate?: string;\n title?: string;\n };\n\n getStatisticsComponentForAccount():\n | undefined\n | React.ComponentType<{\n cluster: string;\n account: string;\n accountSubtreeAllNames: Array<string>;\n theme: string;\n }>;\n\n getStatisticsComponentForBundle():\n | undefined\n | React.ComponentType<{cluster: string; bundle: string; theme: string}>;\n\n renderNavigationExtraActions(params: {\n className?: string;\n cluster: string;\n path: string;\n type: string;\n attributes: unknown;\n }): React.ReactNode;\n\n renderSchedulingLastDayMaximum(props: {\n className?: string;\n cluster: string;\n tree: string;\n title?: string;\n sensor: 'max_operation_count' | 'max_running_operation_count';\n format?(sensorValue?: number): string;\n current?: {value: string; title: string};\n showHint?: boolean;\n showAsLink?: boolean;\n }): React.ReactNode;\n\n renderComponentsNodeCardTop(props: {\n className?: string;\n clusterConfig: ClusterConfig;\n host: string;\n physicalHost: string;\n }): React.ReactNode;\n\n getComponentsNodeDashboardUrl(props: {cluster: string; host: string}): {\n url?: string;\n title?: string;\n };\n\n renderTransferQuotaNoticeForPool(props: {\n className?: string;\n pool?: PoolInfo;\n parentPool?: PoolInfo;\n clusterUiConfig?: ClusterUiConfig;\n isTopLevel?: boolean;\n }): React.ReactNode;\n\n renderTransferQuotaNoticeForAccount(props: {\n className?: string;\n isTopLevel?: boolean;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForAccount(props: {\n className?: string;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForPool(props: {\n itemClassName?: string;\n pool?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForBundle(props: {\n itemClassName?: string;\n bundle?: TabletBundle;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n getExtraMetaTableItemsForComponentsNode(props: {\n clusterConfig: ClusterConfig;\n host: string;\n physicalHost: string;\n }): undefined | Array<MetaTableItem>;\n\n getExtraMetaTableItemsForPool(props: {\n pool: PoolInfo;\n clusterUiConfig?: ClusterUiConfig;\n }): undefined | Array<MetaTableItem>;\n\n getExtraMetaTableItemsForBundle(props: {\n bundle: TabletBundle;\n clusterUiConfig: ClusterUiConfig;\n }): undefined | Array<MetaTableItem>;\n\n renderAccountsTableItemExtraControls(props: {\n itemClassName?: string;\n cluster: string;\n account: string;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderSchedulingTableItemExtraControls(props: {\n itemClassName?: string;\n cluster: string;\n pool: unknown;\n clusterUiConfig: ClusterUiConfig;\n }): React.ReactNode;\n\n renderBundlesTableItemExtraControls(props: {\n itemClassName?: string;\n bundle?: TabletBundle;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderControlAbcService<T extends {slug: string; id?: number}>(props: {\n className?: string;\n value?: T;\n onChange: (v?: T) => void;\n placeholder?: string;\n disabled?: boolean;\n }): React.ReactNode;\n\n makeSupportContent(\n params: {login: string; cluster?: string; buttonToWrap?: React.ReactNode},\n makeContent: (params: {\n supportContent?: React.ReactNode;\n onSupportClick: () => void;\n }) => React.ReactNode,\n ): React.ReactNode;\n\n getComponentForConsumerMetrics():\n | undefined\n | React.ComponentType<{\n cluster: string;\n path: string;\n targetQueue?: string;\n }>;\n\n getComonentForQueueMetrics(): undefined | React.ComponentType<{cluster: string; path: string}>;\n\n renderTableCellBundleEditorNotice(props: {\n bundleData?: {$attributes: unknown};\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n getNodeDeployUrl(ypCluster?: string, podId?: string): string | undefined;\n getNodeNannyUrl(params: {\n pod_id?: string;\n nanny_service?: string;\n yp_cluster?: string;\n }): string | undefined;\n\n renderAppNavigation(props: AppNavigationProps): React.ReactElement;\n\n createNotificationUrl(clusterConfig?: ClusterConfig): string | undefined;\n\n wrapApp(app: React.ReactElement): React.ReactElement;\n\n externalSchemaDescriptionSetup: {\n columns?: Record<keyof ExternalSchemaDescription['glossaryEntity'], string>;\n load(cluster: string, path: string): Promise<ExternalSchemaDescriptionResponse>;\n };\n\n getAclApi(): AclApi;\n\n renderAclSubjectsSuggestControl(props: SubjectsControlProps): React.ReactNode;\n\n renderRolesLink(params: {cluster: string; login: string; className?: string}): React.ReactNode;\n\n getExternalSettings(params: {\n cluster: string;\n login: string;\n isAdmin: boolean;\n }): Array<SettingsPage>;\n\n renderUserSuggest(props: UserSuggestProps): React.ReactNode;\n\n yqlWidgetSetup?: {\n renderButton(props: {className?: string; isSplit?: string}): React.ReactNode;\n renderWidget(props: {cluster: string; path: string; attributes: unknown}): React.ReactNode;\n renderYqlOperationLink(yqlOperationId: string): React.ReactNode;\n };\n\n getExperimentalPages(): string[];\n getAllowedExperimentalPages(login: string): Promise<Array<string>>;\n\n docsUrls: DocsUrls;\n\n getComponentForAclRoleActions(): undefined | React.ComponentType<RoleActionsProps>;\n\n getAclPermissionsSettings(): typeof PERMISSIONS_SETTINGS;\n\n onChytAliasSqlClick(params: {alias: string; cluster: string}): void;\n}\n\nconst experimentalPages: string[] = [];\n\nconst uiFactory: UIFactory = {\n getClusterAppearance(cluster) {\n return YT.clusters[cluster!]?.urls;\n },\n isWatchMen() {\n return false;\n },\n makeUrlForUserName({cluster, login}: {cluster?: string; login: string}) {\n return `/${cluster}/users?filter=${login}`;\n },\n makeUrlForTransferTask() {\n return undefined;\n },\n makeUrlForNodeIO() {\n return undefined;\n },\n makeUrlForTabletCellBundleDashboard() {\n return undefined;\n },\n makeUrlForMonitoringDescriptor() {\n return undefined;\n },\n makeUrlForUserDashboard() {\n return undefined;\n },\n\n getExtaClusterPages() {\n return [];\n },\n getExtraRootPages() {\n return [];\n },\n\n getExtraReducersAndUrlMapping() {\n return undefined;\n },\n\n getSchedulingExtraTabs() {\n if (!uiSettings.schedulingMonitoring?.urlTemplate) {\n return [];\n }\n\n const {urlTemplate, title = 'Monitoring'} = uiSettings.schedulingMonitoring;\n\n return [\n {\n name: 'monitoring',\n title,\n urlTemplate,\n },\n ];\n },\n getSystemMonitoringTab() {\n if (!uiSettings?.systemMonitoring) return undefined;\n return uiSettings.systemMonitoring;\n },\n getVersionMonitoringLink() {\n if (!uiSettings?.componentVersionsMonitoring) return undefined;\n return uiSettings.componentVersionsMonitoring;\n },\n getMonitoringForAccounts() {\n if (!uiSettings?.accountsMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.accountsMonitoring;\n return {urlTemplate, title};\n },\n getMonitoringForBundle() {\n if (!uiSettings.bundlesMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.bundlesMonitoring;\n return {urlTemplate, title};\n },\n getMonitoringForOperation(params) {\n if (!uiSettings.operationsMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.operationsMonitoring;\n\n const hasPoolParameter =\n urlTemplate.indexOf('{ytPool}') !== -1 || urlTemplate.indexOf('{ytPoolTree}') !== -1;\n\n if (hasPoolParameter && params.pools?.length! > 1) {\n return {component: OperationDetailMonitorLinks};\n }\n\n return {urlTemplate, title};\n },\n getMonitorComponentForJob() {\n return undefined;\n },\n getMonitoringComponentForChyt() {\n const {urlTemplate, title} = uiSettings.chytMonitoring ?? {};\n if (!urlTemplate) {\n return undefined;\n }\n\n return {urlTemplate, title};\n },\n getStatisticsComponentForAccount() {\n return undefined;\n },\n getStatisticsComponentForBundle() {\n return undefined;\n },\n\n renderNavigationExtraActions() {\n return null;\n },\n\n renderSchedulingLastDayMaximum() {\n return undefined;\n },\n\n renderComponentsNodeCardTop() {\n return undefined;\n },\n\n getExtraMetaTableItemsForComponentsNode() {\n return undefined;\n },\n\n getExtraMetaTableItemsForPool() {\n return undefined;\n },\n\n getExtraMetaTableItemsForBundle() {\n return undefined;\n },\n\n getComponentsNodeDashboardUrl() {\n return {};\n },\n\n renderTransferQuotaNoticeForPool() {\n return undefined;\n },\n\n renderTransferQuotaNoticeForAccount() {\n return undefined;\n },\n\n renderTopRowExtraControlsForAccount() {\n return undefined;\n },\n\n renderTopRowExtraControlsForPool() {\n return undefined;\n },\n\n renderTopRowExtraControlsForBundle() {\n return undefined;\n },\n\n renderAccountsTableItemExtraControls() {\n return undefined;\n },\n\n renderSchedulingTableItemExtraControls() {\n return undefined;\n },\n\n renderBundlesTableItemExtraControls() {\n return undefined;\n },\n\n renderControlAbcService() {\n return undefined;\n },\n\n makeSupportContent(_x, makeContent) {\n const {reportBugUrl} = uiSettings;\n if (!reportBugUrl) {\n return undefined;\n }\n\n return <SupportComponent makeContent={makeContent} />;\n },\n\n getComponentForConsumerMetrics() {\n return undefined;\n },\n\n getComonentForQueueMetrics() {\n return undefined;\n },\n\n renderTableCellBundleEditorNotice() {\n return undefined;\n },\n\n getNodeDeployUrl() {\n return undefined;\n },\n\n getNodeNannyUrl() {\n return undefined;\n },\n\n renderAppNavigation(props) {\n return <AppNavigationPageLayout {...props} />;\n },\n\n createNotificationUrl() {\n return undefined;\n },\n\n wrapApp(app) {\n return app;\n },\n\n externalSchemaDescriptionSetup: {\n load(_cluster: string, _path: string) {\n return Promise.resolve({});\n },\n },\n\n getAclApi() {\n return defaultAclApi;\n },\n\n renderAclSubjectsSuggestControl(props) {\n return <YTSubjectSuggest {...props} />;\n },\n\n renderRolesLink() {\n return undefined;\n },\n\n getExternalSettings() {\n return [];\n },\n\n renderUserSuggest(props) {\n return <YTUserSuggest {...props} />;\n },\n\n getExperimentalPages() {\n return experimentalPages;\n },\n\n getAllowedExperimentalPages() {\n return Promise.resolve([]);\n },\n\n docsUrls: docsUrls,\n\n getComponentForAclRoleActions() {\n return RoleActions;\n },\n\n getAclPermissionsSettings() {\n return PERMISSIONS_SETTINGS;\n },\n\n onChytAliasSqlClick() {},\n};\n\nfunction configureUIFactoryItem<K extends keyof UIFactory>(k: K, redefinition: UIFactory[K]) {\n uiFactory[k] = redefinition;\n}\n\nexport function configureUIFactory(overrides: Partial<UIFactory>) {\n _.forEach(overrides, (_v, k) => {\n const key = k as keyof UIFactory;\n configureUIFactoryItem(key, overrides[key]!);\n });\n}\n\nexport default new Proxy(uiFactory, {\n set: () => {\n throw new Error('Use configureUIFactory(...) method instead of direct modifications');\n },\n});\n\nexport function isAbcAllowed() {\n const abc = uiFactory.renderControlAbcService({\n onChange: () => {},\n value: {id: 123, slug: '123'},\n });\n return Boolean(abc);\n}\n"],"mappings":"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"}
|
@@ -13,7 +13,7 @@ interface Props<ValueT extends string = string> {
|
|
13
13
|
routedPreserveLocation?: boolean;
|
14
14
|
exactNavLink?: boolean;
|
15
15
|
}
|
16
|
-
interface TabItem<ValueT extends string = string> {
|
16
|
+
export interface TabItem<ValueT extends string = string> {
|
17
17
|
value: ValueT;
|
18
18
|
text?: React.ReactNode;
|
19
19
|
counter?: number;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","NavLink","block","partition_","Hotkey","Link","Icon","action","makeRoutedURL","jsxs","_jsxs","jsx","_jsx","b","Tabs","_React$Component","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","key","value","render","className","props","children","renderList","renderUnderline","renderCounter","item","size","counter","renderHotkey","hotkey","settings","renderNavLink","to","routedPreserveLocation","url","exact","exactNavLink","text","renderLink","_this$props","active","onTabChange","onTabClick","evt","clickHandler","makeEntryClickHandler","show","theme","onClick","external","awesome","renderTab","_item$routed","_this$props2","routed","useRoutedLink","title","_this","_this$props3","items","layout","_partition_","_partition_2","_slicedToArray","regularItems","externalItems","map","_this$props4","underline","Component","defaultProps","TabsHorizontal","_objectSpread"],"sources":["Tabs.tsx"],"sourcesContent":["import React from 'react';\nimport {NavLink} from 'react-router-dom';\nimport block from 'bem-cn-lite';\nimport partition_ from 'lodash/partition';\n\nimport Hotkey, {HotkeyProps} from '../Hotkey/Hotkey';\nimport Link from '../Link/Link';\nimport Icon from '../Icon/Icon';\n\nimport action from '../action/action';\nimport {makeRoutedURL} from '../../store/location';\n\nimport './Tabs.scss';\n\nconst b = block('tabs');\n\ninterface Props<ValueT extends string = string> {\n className?: string;\n\n items: Array<TabItem<ValueT>>;\n active?: ValueT;\n onTabChange: (value: ValueT) => void;\n layout?: 'horizontal' | 'vertical';\n size?: 's' | 'm' | 'l';\n underline?: boolean;\n routed?: boolean;\n routedPreserveLocation?: boolean;\n exactNavLink?: boolean;\n}\n\ninterface TabItem<ValueT extends string = string> {\n value: ValueT;\n\n text?: React.ReactNode;\n counter?: number;\n show?: boolean;\n title?: string;\n url?: string;\n routed?: boolean;\n external?: boolean;\n\n hotkey?: HotkeyProps['settings'];\n}\n\nclass Tabs<ValueT extends string = string> extends React.Component<Props<ValueT>> {\n static defaultProps: Partial<Props> = {\n underline: false,\n routed: false,\n layout: 'horizontal',\n };\n\n render() {\n const {className} = this.props;\n\n return (\n <div className={b(null, className)}>\n {this.renderList()}\n {this.renderUnderline()}\n </div>\n );\n }\n\n renderCounter(item: TabItem<ValueT>) {\n const {size} = this.props;\n const className = b('tab-counter', {size});\n return (\n typeof item.counter !== 'undefined' && <span className={className}>{item.counter}</span>\n );\n }\n\n renderHotkey(item: TabItem<ValueT>) {\n return item.hotkey && <Hotkey settings={item.hotkey} />;\n }\n\n renderNavLink(item: TabItem<ValueT>) {\n const to = !this.props.routedPreserveLocation\n ? item.url\n : () => {\n return makeRoutedURL(item.url!);\n };\n\n return (\n <NavLink to={to!} exact={this.props.exactNavLink}>\n {item.text}\n </NavLink>\n );\n }\n\n renderLink(item: TabItem<ValueT>) {\n const {active, onTabChange} = this.props;\n const onTabClick = (evt: React.MouseEvent<Element, MouseEvent>) => {\n const clickHandler = action.makeEntryClickHandler(evt, onTabChange);\n clickHandler(item.value);\n };\n\n return (\n item.show && (\n <Link\n theme={item.value === active ? 'primary' : 'secondary'}\n onClick={onTabClick}\n url={item.url}\n >\n {item.text}\n {item.external && (\n <Icon className={b('external-icon')} awesome=\"external-link\" />\n )}\n </Link>\n )\n );\n }\n\n renderTab(item: TabItem<ValueT>) {\n const {size, active, routed} = this.props;\n\n const className = b('tab', {\n size,\n active: !routed && item.value === active && 'yes',\n });\n\n const useRoutedLink = item.routed ?? routed;\n\n return (\n item.show && (\n <li key={item.value} title={item.title} className={className}>\n {useRoutedLink ? this.renderNavLink(item) : this.renderLink(item)}\n {this.renderCounter(item)}\n {this.renderHotkey(item)}\n </li>\n )\n );\n }\n\n renderList() {\n const {items, layout} = this.props;\n\n const className = b('list', {layout});\n\n const [regularItems, externalItems] = partition_(items, (item) => !item.external);\n\n return (\n <ul className={className}>\n {regularItems.map((item) => {\n return this.renderTab(item);\n })}\n {externalItems.map((item) => {\n return this.renderTab(item);\n })}\n </ul>\n );\n }\n\n renderUnderline() {\n const className = b('underline');\n\n const {underline, layout} = this.props;\n\n return underline && layout === 'horizontal' && <div className={className} />;\n }\n}\n\nexport function TabsHorizontal<ValueT extends string = string>(props: Props<ValueT>) {\n return <Tabs {...props} layout={'horizontal'} />;\n}\n\nexport default Tabs;\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["React","NavLink","block","partition_","Hotkey","Link","Icon","action","makeRoutedURL","jsxs","_jsxs","jsx","_jsx","b","Tabs","_React$Component","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","key","value","render","className","props","children","renderList","renderUnderline","renderCounter","item","size","counter","renderHotkey","hotkey","settings","renderNavLink","to","routedPreserveLocation","url","exact","exactNavLink","text","renderLink","_this$props","active","onTabChange","onTabClick","evt","clickHandler","makeEntryClickHandler","show","theme","onClick","external","awesome","renderTab","_item$routed","_this$props2","routed","useRoutedLink","title","_this","_this$props3","items","layout","_partition_","_partition_2","_slicedToArray","regularItems","externalItems","map","_this$props4","underline","Component","defaultProps","TabsHorizontal","_objectSpread"],"sources":["Tabs.tsx"],"sourcesContent":["import React from 'react';\nimport {NavLink} from 'react-router-dom';\nimport block from 'bem-cn-lite';\nimport partition_ from 'lodash/partition';\n\nimport Hotkey, {HotkeyProps} from '../Hotkey/Hotkey';\nimport Link from '../Link/Link';\nimport Icon from '../Icon/Icon';\n\nimport action from '../action/action';\nimport {makeRoutedURL} from '../../store/location';\n\nimport './Tabs.scss';\n\nconst b = block('tabs');\n\ninterface Props<ValueT extends string = string> {\n className?: string;\n\n items: Array<TabItem<ValueT>>;\n active?: ValueT;\n onTabChange: (value: ValueT) => void;\n layout?: 'horizontal' | 'vertical';\n size?: 's' | 'm' | 'l';\n underline?: boolean;\n routed?: boolean;\n routedPreserveLocation?: boolean;\n exactNavLink?: boolean;\n}\n\nexport interface TabItem<ValueT extends string = string> {\n value: ValueT;\n\n text?: React.ReactNode;\n counter?: number;\n show?: boolean;\n title?: string;\n url?: string;\n routed?: boolean;\n external?: boolean;\n\n hotkey?: HotkeyProps['settings'];\n}\n\nclass Tabs<ValueT extends string = string> extends React.Component<Props<ValueT>> {\n static defaultProps: Partial<Props> = {\n underline: false,\n routed: false,\n layout: 'horizontal',\n };\n\n render() {\n const {className} = this.props;\n\n return (\n <div className={b(null, className)}>\n {this.renderList()}\n {this.renderUnderline()}\n </div>\n );\n }\n\n renderCounter(item: TabItem<ValueT>) {\n const {size} = this.props;\n const className = b('tab-counter', {size});\n return (\n typeof item.counter !== 'undefined' && <span className={className}>{item.counter}</span>\n );\n }\n\n renderHotkey(item: TabItem<ValueT>) {\n return item.hotkey && <Hotkey settings={item.hotkey} />;\n }\n\n renderNavLink(item: TabItem<ValueT>) {\n const to = !this.props.routedPreserveLocation\n ? item.url\n : () => {\n return makeRoutedURL(item.url!);\n };\n\n return (\n <NavLink to={to!} exact={this.props.exactNavLink}>\n {item.text}\n </NavLink>\n );\n }\n\n renderLink(item: TabItem<ValueT>) {\n const {active, onTabChange} = this.props;\n const onTabClick = (evt: React.MouseEvent<Element, MouseEvent>) => {\n const clickHandler = action.makeEntryClickHandler(evt, onTabChange);\n clickHandler(item.value);\n };\n\n return (\n item.show && (\n <Link\n theme={item.value === active ? 'primary' : 'secondary'}\n onClick={onTabClick}\n url={item.url}\n >\n {item.text}\n {item.external && (\n <Icon className={b('external-icon')} awesome=\"external-link\" />\n )}\n </Link>\n )\n );\n }\n\n renderTab(item: TabItem<ValueT>) {\n const {size, active, routed} = this.props;\n\n const className = b('tab', {\n size,\n active: !routed && item.value === active && 'yes',\n });\n\n const useRoutedLink = item.routed ?? routed;\n\n return (\n item.show && (\n <li key={item.value} title={item.title} className={className}>\n {useRoutedLink ? this.renderNavLink(item) : this.renderLink(item)}\n {this.renderCounter(item)}\n {this.renderHotkey(item)}\n </li>\n )\n );\n }\n\n renderList() {\n const {items, layout} = this.props;\n\n const className = b('list', {layout});\n\n const [regularItems, externalItems] = partition_(items, (item) => !item.external);\n\n return (\n <ul className={className}>\n {regularItems.map((item) => {\n return this.renderTab(item);\n })}\n {externalItems.map((item) => {\n return this.renderTab(item);\n })}\n </ul>\n );\n }\n\n renderUnderline() {\n const className = b('underline');\n\n const {underline, layout} = this.props;\n\n return underline && layout === 'horizontal' && <div className={className} />;\n }\n}\n\nexport function TabsHorizontal<ValueT extends string = string>(props: Props<ValueT>) {\n return <Tabs {...props} layout={'horizontal'} />;\n}\n\nexport default Tabs;\n"],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["SystemTabs","GENERAL","MONITORING"],"sources":["tabs.ts"],"sourcesContent":["export const SystemTabs = {\n GENERAL: 'general',\n MONITORING: 'monitoring',\n};\n"],"mappings":"AAAA,OAAO,IAAMA,UAAU,GAAG;EACtBC,OAAO,EAAE,SAAS;EAClBC,UAAU,EAAE;AAChB,CAAC"}
|
@@ -14,7 +14,7 @@ import Components from '../../pages/components/Components/Components';
|
|
14
14
|
import Operations from '../../pages/operations/Operations/Operations';
|
15
15
|
import Accounts from '../../pages/accounts/Accounts/Accounts';
|
16
16
|
import Dashboard from '../../pages/dashboard/Dashboard/Dashboard';
|
17
|
-
import System from '../../pages/system/System/System';
|
17
|
+
import { System } from '../../pages/system/System/System';
|
18
18
|
import Navigation from '../../pages/navigation/Navigation/Navigation';
|
19
19
|
import PathViewer from '../../pages/path-viewer/PathViewer';
|
20
20
|
import Tablet from '../../pages/tablet/Tablet';
|