ydb-embedded-ui 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +8 -0
- package/README.md +28 -0
- package/dist/HOCS/WithSearch/WithSearch.js +26 -0
- package/dist/HOCS/index.js +1 -0
- package/dist/assets/icons/bug.svg +1 -0
- package/dist/assets/icons/close.svg +1 -0
- package/dist/assets/icons/control-menu-button.svg +1 -0
- package/dist/assets/icons/databases.svg +3 -0
- package/dist/assets/icons/dots.svg +1 -0
- package/dist/assets/icons/server.svg +1 -0
- package/dist/assets/icons/settings-with-dot.svg +1 -0
- package/dist/assets/icons/settings.svg +1 -0
- package/dist/assets/icons/signIn.svg +1 -0
- package/dist/assets/icons/signOut.svg +1 -0
- package/dist/assets/icons/star.svg +1 -0
- package/dist/assets/icons/storage.svg +1 -0
- package/dist/assets/icons/support.svg +1 -0
- package/dist/assets/icons/user-check.svg +1 -0
- package/dist/assets/icons/user-secret.svg +1 -0
- package/dist/assets/icons/ydb.svg +4 -0
- package/dist/components/AsideNavigation/AsideHeader.scss +148 -0
- package/dist/components/AsideNavigation/AsideHeader.tsx +388 -0
- package/dist/components/AsideNavigation/AsideHeaderFooterItem/AsideHeaderFooterItem.scss +82 -0
- package/dist/components/AsideNavigation/AsideHeaderFooterItem/AsideHeaderFooterItem.tsx +138 -0
- package/dist/components/AsideNavigation/AsideHeaderFooterSlot/AsideHeaderFooterSlot.tsx +33 -0
- package/dist/components/AsideNavigation/AsideHeaderFooterSlot/SlotsContext.tsx +49 -0
- package/dist/components/AsideNavigation/AsideHeaderTooltip/AsideHeaderTooltip.scss +16 -0
- package/dist/components/AsideNavigation/AsideHeaderTooltip/AsideHeaderTooltip.tsx +37 -0
- package/dist/components/AsideNavigation/CompositeBar/CompositeBar.scss +108 -0
- package/dist/components/AsideNavigation/CompositeBar/CompositeBar.tsx +282 -0
- package/dist/components/AsideNavigation/Content/Content.tsx +35 -0
- package/dist/components/AsideNavigation/Drawer/Drawer.scss +76 -0
- package/dist/components/AsideNavigation/Drawer/Drawer.tsx +134 -0
- package/dist/components/AsideNavigation/Drawer/index.ts +1 -0
- package/dist/components/AsideNavigation/Logo/Logo.scss +44 -0
- package/dist/components/AsideNavigation/Logo/Logo.tsx +82 -0
- package/dist/components/AsideNavigation/Settings/README.md +92 -0
- package/dist/components/AsideNavigation/Settings/Settings.scss +113 -0
- package/dist/components/AsideNavigation/Settings/Settings.tsx +270 -0
- package/dist/components/AsideNavigation/Settings/SettingsMenu/SettingsMenu.scss +70 -0
- package/dist/components/AsideNavigation/Settings/SettingsMenu/SettingsMenu.tsx +141 -0
- package/dist/components/AsideNavigation/Settings/SettingsSearch/SettingsSearch.tsx +57 -0
- package/dist/components/AsideNavigation/Settings/collect-settings.ts +156 -0
- package/dist/components/AsideNavigation/Settings/filter-settings.ts +38 -0
- package/dist/components/AsideNavigation/Settings/helpers.ts +39 -0
- package/dist/components/AsideNavigation/Settings/i18n/en.json +5 -0
- package/dist/components/AsideNavigation/Settings/i18n/index.ts +11 -0
- package/dist/components/AsideNavigation/Settings/i18n/ru.json +5 -0
- package/dist/components/AsideNavigation/Settings/index.ts +1 -0
- package/dist/components/AsideNavigation/constants.ts +28 -0
- package/dist/components/AsideNavigation/helpers.ts +34 -0
- package/dist/components/AsideNavigation/i18n/en.json +4 -0
- package/dist/components/AsideNavigation/i18n/index.ts +11 -0
- package/dist/components/AsideNavigation/i18n/ru.json +4 -0
- package/dist/components/AsideNavigation/icons.ts +32 -0
- package/dist/components/AsideNavigation/types.ts +23 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.js +25 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.scss +4 -0
- package/dist/components/ClusterInfo/ClusterInfo.scss +65 -0
- package/dist/components/ClusterInfo/ClusterInfo.tsx +157 -0
- package/dist/components/Collapse/Collapse.js +84 -0
- package/dist/components/Collapse/Collapse.scss +70 -0
- package/dist/components/CriticalActionDialog/CriticalActionDialog.js +53 -0
- package/dist/components/CriticalActionDialog/CriticalActionDialog.scss +31 -0
- package/dist/components/EmptyState/EmptyState.js +48 -0
- package/dist/components/EmptyState/EmptyState.scss +70 -0
- package/dist/components/EntityStatus/EntityStatus.js +96 -0
- package/dist/components/EntityStatus/EntityStatus.scss +81 -0
- package/dist/components/FullGroupViewer/FullGroupViewer.js +149 -0
- package/dist/components/FullGroupViewer/FullGroupViewer.scss +32 -0
- package/dist/components/FullNodeViewer/FullNodeViewer.js +108 -0
- package/dist/components/FullNodeViewer/FullNodeViewer.scss +78 -0
- package/dist/components/GroupTreeViewer/GroupTreeViewer.js +86 -0
- package/dist/components/GroupTreeViewer/GroupTreeViewer.scss +17 -0
- package/dist/components/GroupViewer/GroupViewer.js +100 -0
- package/dist/components/GroupViewer/GroupViewer.scss +41 -0
- package/dist/components/Hotkey/Hotkey.js +102 -0
- package/dist/components/Icon/Icon.js +26 -0
- package/dist/components/InfoViewer/InfoViewer.js +47 -0
- package/dist/components/InfoViewer/InfoViewer.scss +48 -0
- package/dist/components/InternalLink/InternalLink.js +15 -0
- package/dist/components/NodesViewer/NodesViewer.js +183 -0
- package/dist/components/NodesViewer/NodesViewer.scss +66 -0
- package/dist/components/PDiskViewer/PDiskViewer.js +80 -0
- package/dist/components/PDiskViewer/PDiskViewer.scss +40 -0
- package/dist/components/Pagination/Pagination.js +63 -0
- package/dist/components/Pagination/Pagination.scss +25 -0
- package/dist/components/PoolBar/PoolBar.js +52 -0
- package/dist/components/PoolBar/PoolBar.scss +40 -0
- package/dist/components/PoolUsage/PoolUsage.js +54 -0
- package/dist/components/PoolUsage/PoolUsage.scss +65 -0
- package/dist/components/PoolsGraph/PoolsGraph.js +33 -0
- package/dist/components/PoolsGraph/PoolsGraph.scss +3 -0
- package/dist/components/ProblemFilter/ProblemFilter.js +24 -0
- package/dist/components/ProgressViewer/ProgressViewer.js +92 -0
- package/dist/components/ProgressViewer/ProgressViewer.scss +84 -0
- package/dist/components/SplitPane/SplitPane.js +368 -0
- package/dist/components/SplitPane/SplitPane.scss +107 -0
- package/dist/components/SplitPane/index.js +3 -0
- package/dist/components/Tablet/Tablet.js +61 -0
- package/dist/components/Tablet/Tablet.scss +49 -0
- package/dist/components/TabletsStatistic/TabletsStatistic.js +58 -0
- package/dist/components/TabletsStatistic/TabletsStatistic.scss +41 -0
- package/dist/components/TabletsViewer/TabletsViewer.js +44 -0
- package/dist/components/TabletsViewer/TabletsViewer.scss +37 -0
- package/dist/components/Tag/Tag.js +14 -0
- package/dist/components/Tag/Tag.scss +17 -0
- package/dist/components/Tags/Tags.js +36 -0
- package/dist/components/Tags/Tags.scss +5 -0
- package/dist/components/TenantOverview/TenantOverview.js +148 -0
- package/dist/components/TenantOverview/TenantOverview.scss +75 -0
- package/dist/components/TreeView/TreeView.js +60 -0
- package/dist/components/TreeView/TreeView.scss +30 -0
- package/dist/components/TruncatedQuery/TruncatedQuery.js +26 -0
- package/dist/components/TruncatedQuery/TruncatedQuery.scss +12 -0
- package/dist/containers/App/App.js +67 -0
- package/dist/containers/App/App.scss +154 -0
- package/dist/containers/App/Content.js +109 -0
- package/dist/containers/App/TipPopup/TipPopup.js +66 -0
- package/dist/containers/App/TipPopup/TipPopup.scss +42 -0
- package/dist/containers/AppIcons/AppIcons.js +477 -0
- package/dist/containers/AsideNavigation/AsideNavigation.scss +43 -0
- package/dist/containers/AsideNavigation/AsideNavigation.tsx +228 -0
- package/dist/containers/Authentication/Authentication.scss +37 -0
- package/dist/containers/Authentication/Authentication.tsx +89 -0
- package/dist/containers/Cluster/Cluster.js +168 -0
- package/dist/containers/Cluster/Cluster.scss +52 -0
- package/dist/containers/Group/Group.js +97 -0
- package/dist/containers/Group/Group.scss +6 -0
- package/dist/containers/Header/Header.js +88 -0
- package/dist/containers/Header/Header.scss +72 -0
- package/dist/containers/Header/Host/Host.js +66 -0
- package/dist/containers/Header/Host/Host.scss +43 -0
- package/dist/containers/Heatmap/Heatmap.js +246 -0
- package/dist/containers/Heatmap/Heatmap.scss +94 -0
- package/dist/containers/Heatmap/HeatmapCanvas/HeatmapCanvas.js +167 -0
- package/dist/containers/Heatmap/Histogram/Histogram.js +108 -0
- package/dist/containers/Heatmap/Histogram/Histogram.scss +49 -0
- package/dist/containers/Heatmap/util.js +110 -0
- package/dist/containers/Node/Node.js +184 -0
- package/dist/containers/Node/Node.scss +34 -0
- package/dist/containers/Node/NodePages.js +13 -0
- package/dist/containers/Nodes/Nodes.js +193 -0
- package/dist/containers/Nodes/Nodes.scss +50 -0
- package/dist/containers/Pdisk/Pdisk.js +159 -0
- package/dist/containers/Pdisk/Pdisk.scss +40 -0
- package/dist/containers/Pool/Pool.js +169 -0
- package/dist/containers/Pool/Pool.scss +32 -0
- package/dist/containers/ReduxTooltip/ReduxTooltip.js +108 -0
- package/dist/containers/ReduxTooltip/ReduxTooltip.scss +67 -0
- package/dist/containers/StorageV2/DiskStateProgressBar/DiskStateProgressBar.scss +81 -0
- package/dist/containers/StorageV2/DiskStateProgressBar/DiskStateProgressBar.tsx +56 -0
- package/dist/containers/StorageV2/Pdisk/Pdisk.scss +32 -0
- package/dist/containers/StorageV2/Pdisk/Pdisk.tsx +167 -0
- package/dist/containers/StorageV2/Storage.js +249 -0
- package/dist/containers/StorageV2/Storage.scss +57 -0
- package/dist/containers/StorageV2/StorageFilter/StorageFilter.js +39 -0
- package/dist/containers/StorageV2/StorageGroups/StorageGroups.scss +26 -0
- package/dist/containers/StorageV2/StorageGroups/StorageGroups.tsx +234 -0
- package/dist/containers/StorageV2/StorageNodes/StorageNodes.scss +30 -0
- package/dist/containers/StorageV2/StorageNodes/StorageNodes.tsx +135 -0
- package/dist/containers/StorageV2/Vdisk/Vdisk.js +250 -0
- package/dist/containers/StorageV2/Vdisk/Vdisk.scss +32 -0
- package/dist/containers/Tablet/Tablet.js +453 -0
- package/dist/containers/Tablet/Tablet.scss +88 -0
- package/dist/containers/Tablets/Tablets.js +306 -0
- package/dist/containers/Tablets/Tablets.scss +77 -0
- package/dist/containers/TabletsFilters/TabletsFilters.js +412 -0
- package/dist/containers/TabletsFilters/TabletsFilters.scss +104 -0
- package/dist/containers/Tenant/Acl/Acl.js +149 -0
- package/dist/containers/Tenant/Acl/Acl.scss +34 -0
- package/dist/containers/Tenant/Compute/Compute.js +110 -0
- package/dist/containers/Tenant/Compute/Compute.scss +6 -0
- package/dist/containers/Tenant/Describe/Describe.js +81 -0
- package/dist/containers/Tenant/Describe/Describe.scss +25 -0
- package/dist/containers/Tenant/Healthcheck/Healthcheck.js +116 -0
- package/dist/containers/Tenant/Healthcheck/Healthcheck.scss +64 -0
- package/dist/containers/Tenant/Healthcheck/IssuesViewer/IssueViewer.scss +164 -0
- package/dist/containers/Tenant/Healthcheck/IssuesViewer/IssuesViewer.js +185 -0
- package/dist/containers/Tenant/Network/Network.js +341 -0
- package/dist/containers/Tenant/Network/Network.scss +145 -0
- package/dist/containers/Tenant/Network/NodeNetwork/NodeNetwork.js +71 -0
- package/dist/containers/Tenant/Network/NodeNetwork/NodeNetwork.scss +52 -0
- package/dist/containers/Tenant/Preview/Preview.js +169 -0
- package/dist/containers/Tenant/Preview/Preview.scss +20 -0
- package/dist/containers/Tenant/QueryEditor/QueryEditor.js +649 -0
- package/dist/containers/Tenant/QueryEditor/QueryEditor.scss +71 -0
- package/dist/containers/Tenant/QueryEditor/QueryExplain/QueryExplain.js +168 -0
- package/dist/containers/Tenant/QueryEditor/QueryExplain/QueryExplain.scss +42 -0
- package/dist/containers/Tenant/QueryEditor/QueryResult/QueryResult.js +58 -0
- package/dist/containers/Tenant/QueryEditor/QueryResult/QueryResult.scss +24 -0
- package/dist/containers/Tenant/QueryEditor/SaveQuery/SaveQuery.js +171 -0
- package/dist/containers/Tenant/QueryEditor/SaveQuery/SaveQuery.scss +51 -0
- package/dist/containers/Tenant/QueryEditor/SavedQueries/SavedQueries.js +156 -0
- package/dist/containers/Tenant/QueryEditor/SavedQueries/SavedQueries.scss +82 -0
- package/dist/containers/Tenant/Schema/HotKeys/HotKeys.js +149 -0
- package/dist/containers/Tenant/Schema/HotKeys/HotKeys.scss +48 -0
- package/dist/containers/Tenant/Schema/Info/Info.js +84 -0
- package/dist/containers/Tenant/Schema/Info/Info.scss +3 -0
- package/dist/containers/Tenant/Schema/SchemaInfoViewer/SchemaInfoViewer.js +67 -0
- package/dist/containers/Tenant/Schema/SchemaInfoViewer/SchemaInfoViewer.scss +21 -0
- package/dist/containers/Tenant/Schema/SchemaMain/SchemaMain.js +439 -0
- package/dist/containers/Tenant/Schema/SchemaMain/SchemaMain.scss +90 -0
- package/dist/containers/Tenant/Schema/SchemaNode/SchemaNode.js +150 -0
- package/dist/containers/Tenant/Schema/SchemaNode/SchemaNode.scss +41 -0
- package/dist/containers/Tenant/Schema/SchemaPages.js +56 -0
- package/dist/containers/Tenant/Schema/SchemaTree/SchemaTree.js +115 -0
- package/dist/containers/Tenant/Schema/SchemaTree/SchemaTree.scss +13 -0
- package/dist/containers/Tenant/Schema/SchemaViewer/SchemaViewer.js +63 -0
- package/dist/containers/Tenant/Schema/SchemaViewer/SchemaViewer.scss +28 -0
- package/dist/containers/Tenant/Tenant.js +199 -0
- package/dist/containers/Tenant/Tenant.scss +94 -0
- package/dist/containers/Tenant/TenantPages.js +35 -0
- package/dist/containers/Tenant/TopQueries/TopQueries.js +184 -0
- package/dist/containers/Tenant/TopQueries/TopQueries.scss +53 -0
- package/dist/containers/Tenant/TopShards/TopShards.js +171 -0
- package/dist/containers/Tenant/TopShards/TopShards.scss +23 -0
- package/dist/containers/Tenants/Tenants.js +375 -0
- package/dist/containers/Tenants/Tenants.scss +73 -0
- package/dist/containers/UserSettings/UserSettings.tsx +57 -0
- package/dist/containers/Vdisk/Vdisk.js +160 -0
- package/dist/containers/Vdisk/Vdisk.scss +40 -0
- package/dist/containers/VdiskPdiskNode/VdiskPdiskNode.js +528 -0
- package/dist/containers/VdiskPdiskNode/VdiskPdiskNode.scss +60 -0
- package/dist/contexts/HistoryContext.ts +6 -0
- package/dist/index.css +11 -0
- package/dist/index.js +28 -0
- package/dist/index.test.js +5 -0
- package/dist/react-app-env.d.ts +1 -0
- package/dist/reportWebVitals.js +13 -0
- package/dist/routes.js +40 -0
- package/dist/services/api.js +224 -0
- package/dist/setupTests.js +5 -0
- package/dist/store/index.js +61 -0
- package/dist/store/reducers/authentication.js +77 -0
- package/dist/store/reducers/cluster.js +52 -0
- package/dist/store/reducers/clusterInfo.js +48 -0
- package/dist/store/reducers/clusterNodes.js +70 -0
- package/dist/store/reducers/describe.js +45 -0
- package/dist/store/reducers/executeQuery.js +158 -0
- package/dist/store/reducers/executeTopQueries.js +69 -0
- package/dist/store/reducers/explainQuery.js +174 -0
- package/dist/store/reducers/group.js +49 -0
- package/dist/store/reducers/healthcheckInfo.js +45 -0
- package/dist/store/reducers/heatmap.js +105 -0
- package/dist/store/reducers/host.js +44 -0
- package/dist/store/reducers/hotKeys.js +57 -0
- package/dist/store/reducers/index.js +78 -0
- package/dist/store/reducers/network.js +45 -0
- package/dist/store/reducers/node.js +42 -0
- package/dist/store/reducers/nodes.js +58 -0
- package/dist/store/reducers/olapStats.js +74 -0
- package/dist/store/reducers/pdisk.js +51 -0
- package/dist/store/reducers/pool.js +42 -0
- package/dist/store/reducers/preview.js +73 -0
- package/dist/store/reducers/schema.js +95 -0
- package/dist/store/reducers/schemaAcl.js +44 -0
- package/dist/store/reducers/settings.js +76 -0
- package/dist/store/reducers/shardsWorkload.js +75 -0
- package/dist/store/reducers/storage.js +280 -0
- package/dist/store/reducers/tablet.js +94 -0
- package/dist/store/reducers/tablets.js +90 -0
- package/dist/store/reducers/tabletsFilters.js +126 -0
- package/dist/store/reducers/tenant.js +76 -0
- package/dist/store/reducers/tenants.js +61 -0
- package/dist/store/reducers/tooltip.js +64 -0
- package/dist/store/reducers/vdisk.js +49 -0
- package/dist/store/state-url-mapping.js +133 -0
- package/dist/store/utils.js +55 -0
- package/dist/styles/mixins.scss +254 -0
- package/dist/styles/react-treeview.scss +45 -0
- package/dist/types/assets.d.ts +12 -0
- package/dist/types/react-list.d.ts +4 -0
- package/dist/types/window.d.ts +33 -0
- package/dist/utils/actionsConstants.js +4 -0
- package/dist/utils/constants.js +126 -0
- package/dist/utils/getNodesColumns.js +156 -0
- package/dist/utils/i18n/i18n.ts +7 -0
- package/dist/utils/i18n/index.ts +1 -0
- package/dist/utils/index.js +136 -0
- package/dist/utils/monaco.js +69 -0
- package/dist/utils/prepareQueryExplain.ts +101 -0
- package/dist/utils/tooltip.js +197 -0
- package/dist/utils/utils.js +75 -0
- package/package.json +89 -0
@@ -0,0 +1,154 @@
|
|
1
|
+
@import url('https://fonts.googleapis.com/css2?family=Rubik&display=swap');
|
2
|
+
@import '../../styles/mixins.scss';
|
3
|
+
|
4
|
+
* {
|
5
|
+
box-sizing: border-box;
|
6
|
+
}
|
7
|
+
|
8
|
+
html,
|
9
|
+
body,
|
10
|
+
#root {
|
11
|
+
overflow: auto;
|
12
|
+
|
13
|
+
box-sizing: border-box;
|
14
|
+
height: 100%;
|
15
|
+
margin: 0;
|
16
|
+
padding: 0;
|
17
|
+
}
|
18
|
+
|
19
|
+
:root {
|
20
|
+
--color-status-green-solid-100: rgb(59, 201, 53);
|
21
|
+
--color-status-green-solid-70: rgba(59, 201, 53, 0.7);
|
22
|
+
|
23
|
+
--color-status-yellow-solid-100: rgb(255, 219, 77);
|
24
|
+
--color-status-yellow-solid-70: rgba(255, 219, 77, 0.7);
|
25
|
+
|
26
|
+
--color-status-red-solid-100: rgb(255, 4, 0);
|
27
|
+
--color-status-red-solid-70: rgba(255, 4, 0, 0.7);
|
28
|
+
|
29
|
+
--color-status-gray-solid-100: rgb(107, 131, 153);
|
30
|
+
--color-status-gray-solid-70: rgba(107, 131, 153, 0.7);
|
31
|
+
|
32
|
+
--color-status-orange-solid-100: rgb(255, 165, 0);
|
33
|
+
--color-status-orange-solid-70: rgba(255, 165, 0, 0.7);
|
34
|
+
|
35
|
+
--color-status-blue-solid-70: #2a87f4;
|
36
|
+
}
|
37
|
+
|
38
|
+
.yc-select__label {
|
39
|
+
font-weight: 600;
|
40
|
+
}
|
41
|
+
|
42
|
+
.nv-aside-header__pane-container {
|
43
|
+
height: 100%;
|
44
|
+
}
|
45
|
+
|
46
|
+
.nv-aside-header__content {
|
47
|
+
display: flex;
|
48
|
+
overflow: auto;
|
49
|
+
flex-direction: column;
|
50
|
+
|
51
|
+
height: 100%;
|
52
|
+
}
|
53
|
+
|
54
|
+
.loader {
|
55
|
+
@include loader();
|
56
|
+
}
|
57
|
+
|
58
|
+
.app {
|
59
|
+
height: 100%;
|
60
|
+
|
61
|
+
&__main {
|
62
|
+
overflow: auto;
|
63
|
+
@include flex-container();
|
64
|
+
}
|
65
|
+
|
66
|
+
.data-table__head-row {
|
67
|
+
background: var(--yc-color-base-background);
|
68
|
+
}
|
69
|
+
|
70
|
+
.data-table__th {
|
71
|
+
border: none;
|
72
|
+
}
|
73
|
+
.data-table__td {
|
74
|
+
vertical-align: middle;
|
75
|
+
|
76
|
+
border: none;
|
77
|
+
border-top: 1px solid var(--yc-color-line-generic);
|
78
|
+
}
|
79
|
+
.data-table__td {
|
80
|
+
height: 0px;
|
81
|
+
}
|
82
|
+
@include flex-container();
|
83
|
+
}
|
84
|
+
|
85
|
+
.error {
|
86
|
+
display: flex;
|
87
|
+
align-items: center;
|
88
|
+
justify-content: center;
|
89
|
+
|
90
|
+
margin: 2px;
|
91
|
+
padding: 2px;
|
92
|
+
|
93
|
+
text-align: center;
|
94
|
+
|
95
|
+
color: var(--yc-color-text-danger);
|
96
|
+
|
97
|
+
border-color: var(--yc-color-text-danger);
|
98
|
+
}
|
99
|
+
|
100
|
+
.tree-view_item {
|
101
|
+
/* stylelint-disable-next-line declaration-no-important*/
|
102
|
+
cursor: default !important;
|
103
|
+
}
|
104
|
+
|
105
|
+
.tree-view_children {
|
106
|
+
margin-left: 25px;
|
107
|
+
}
|
108
|
+
|
109
|
+
.tree-view_arrow {
|
110
|
+
padding: 2px;
|
111
|
+
|
112
|
+
transform: rotate(90deg);
|
113
|
+
|
114
|
+
line-height: 0.8;
|
115
|
+
}
|
116
|
+
|
117
|
+
.tree-view_arrow-collapsed {
|
118
|
+
transform: rotate(0deg);
|
119
|
+
}
|
120
|
+
|
121
|
+
.tree-view_arrow:after {
|
122
|
+
content: '❯';
|
123
|
+
|
124
|
+
font-size: var(--yc-text-body2-font-size);
|
125
|
+
}
|
126
|
+
|
127
|
+
.data-table__row:hover .entity-status__clipboard-button {
|
128
|
+
visibility: visible;
|
129
|
+
}
|
130
|
+
|
131
|
+
.no-problem {
|
132
|
+
min-width: 325px;
|
133
|
+
height: 200px;
|
134
|
+
|
135
|
+
background-image: url('data:image/webp;base64,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');
|
136
|
+
background-repeat: no-repeat;
|
137
|
+
background-position: left;
|
138
|
+
background-size: contain;
|
139
|
+
}
|
140
|
+
|
141
|
+
.yc-root .data-table_highlight-rows .data-table__row:hover {
|
142
|
+
background: var(--yc-color-base-simple-hover);
|
143
|
+
}
|
144
|
+
|
145
|
+
.yc-table-column-setup__item {
|
146
|
+
/* stylelint-disable-next-line declaration-no-important*/
|
147
|
+
padding: 0 8px 0 32px !important;
|
148
|
+
/* stylelint-disable-next-line declaration-no-important*/
|
149
|
+
cursor: pointer !important;
|
150
|
+
}
|
151
|
+
|
152
|
+
.app_embedded {
|
153
|
+
font-family: 'Rubik', sans-serif;
|
154
|
+
}
|
@@ -0,0 +1,109 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import {Switch, Route, Redirect, Router} from 'react-router-dom';
|
3
|
+
import cn from 'bem-cn-lite';
|
4
|
+
import {connect} from 'react-redux';
|
5
|
+
|
6
|
+
import {ThemeProvider} from '@yandex-cloud/uikit';
|
7
|
+
|
8
|
+
import routes, {createHref} from '../../routes';
|
9
|
+
|
10
|
+
import Cluster, {CLUSTER_PAGES} from '../Cluster/Cluster';
|
11
|
+
import Tenant from '../Tenant/Tenant';
|
12
|
+
import Node from '../Node/Node';
|
13
|
+
import Pdisk from '../Pdisk/Pdisk';
|
14
|
+
import Group from '../Group/Group';
|
15
|
+
import VdiskPdiskNode from '../VdiskPdiskNode/VdiskPdiskNode';
|
16
|
+
import Pool from '../Pool/Pool';
|
17
|
+
import Tablet from '../Tablet/Tablet';
|
18
|
+
import TabletsFilters from '../TabletsFilters/TabletsFilters';
|
19
|
+
import ReduxTooltip from '../ReduxTooltip/ReduxTooltip';
|
20
|
+
import Header from '../Header/Header';
|
21
|
+
import AppIcons from '../AppIcons/AppIcons';
|
22
|
+
|
23
|
+
import {getSettingValue} from '../../store/reducers/settings';
|
24
|
+
import {THEME_KEY} from '../../utils/constants';
|
25
|
+
|
26
|
+
import './App.scss';
|
27
|
+
import PropTypes from 'prop-types';
|
28
|
+
import HistoryContext from '../../contexts/HistoryContext';
|
29
|
+
import Authentication from '../Authentication/Authentication';
|
30
|
+
|
31
|
+
const b = cn('app');
|
32
|
+
|
33
|
+
export function Content(props) {
|
34
|
+
const {singleClusterMode} = props;
|
35
|
+
const isClustersPage =
|
36
|
+
location.pathname.includes('/clusters') ||
|
37
|
+
(!singleClusterMode && location.pathname === '/');
|
38
|
+
|
39
|
+
const renderRoute = () => {
|
40
|
+
const {children: customRoutes} = props;
|
41
|
+
return (
|
42
|
+
customRoutes || (
|
43
|
+
<Switch>
|
44
|
+
<Route path={routes.cluster} component={Cluster} />
|
45
|
+
<Route path={routes.tenant} component={Tenant} />
|
46
|
+
<Route path={routes.pdisk} component={Pdisk} />
|
47
|
+
<Route path={routes.vdisk} component={VdiskPdiskNode} />
|
48
|
+
<Route path={routes.node} component={Node} />
|
49
|
+
<Route path={routes.group} component={Group} />
|
50
|
+
<Route path={routes.pool} component={Pool} />
|
51
|
+
<Route path={routes.tablet} component={Tablet} />
|
52
|
+
<Route path={routes.tabletsFilters} component={TabletsFilters} />
|
53
|
+
<Redirect
|
54
|
+
to={createHref(routes.cluster, {
|
55
|
+
activeTab: CLUSTER_PAGES.tenants.id,
|
56
|
+
})}
|
57
|
+
/>
|
58
|
+
</Switch>
|
59
|
+
)
|
60
|
+
);
|
61
|
+
};
|
62
|
+
return (
|
63
|
+
<React.Fragment>
|
64
|
+
{!isClustersPage && <Header />}
|
65
|
+
<main className={b('main')}>{renderRoute()}</main>
|
66
|
+
<ReduxTooltip />
|
67
|
+
<AppIcons />
|
68
|
+
</React.Fragment>
|
69
|
+
);
|
70
|
+
}
|
71
|
+
|
72
|
+
Content.propTypes = {
|
73
|
+
singleClusterMode: PropTypes.bool,
|
74
|
+
children: PropTypes.node,
|
75
|
+
};
|
76
|
+
|
77
|
+
function ContentWrapper(props) {
|
78
|
+
const {theme, singleClusterMode, isAuthenticated} = props;
|
79
|
+
return (
|
80
|
+
<HistoryContext.Consumer>
|
81
|
+
{(history) => (
|
82
|
+
<Router history={history}>
|
83
|
+
<ThemeProvider theme={theme}>
|
84
|
+
<div className={!singleClusterMode ? b() : b({embedded: true})}>
|
85
|
+
{isAuthenticated ? props.children : <Authentication />}
|
86
|
+
</div>
|
87
|
+
</ThemeProvider>
|
88
|
+
</Router>
|
89
|
+
)}
|
90
|
+
</HistoryContext.Consumer>
|
91
|
+
);
|
92
|
+
}
|
93
|
+
|
94
|
+
ContentWrapper.propTypes = {
|
95
|
+
theme: PropTypes.string,
|
96
|
+
singleClusterMode: PropTypes.bool,
|
97
|
+
isAuthenticated: PropTypes.bool,
|
98
|
+
children: PropTypes.node,
|
99
|
+
};
|
100
|
+
|
101
|
+
function mapStateToProps(state) {
|
102
|
+
return {
|
103
|
+
theme: getSettingValue(state, THEME_KEY),
|
104
|
+
isAuthenticated: state.authentication.isAuthenticated,
|
105
|
+
singleClusterMode: state.singleClusterMode,
|
106
|
+
};
|
107
|
+
}
|
108
|
+
|
109
|
+
export default connect(mapStateToProps)(ContentWrapper);
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import {useState, useEffect} from 'react';
|
2
|
+
import cn from 'bem-cn-lite';
|
3
|
+
|
4
|
+
import {Button, Icon, Popup} from '@yandex-cloud/uikit';
|
5
|
+
import closeIcon from '../../../assets/icons/close.svg';
|
6
|
+
|
7
|
+
import {DATA_QA_TUNE_COLUMNS_POPUP} from '../../../utils/constants';
|
8
|
+
|
9
|
+
import './TipPopup.scss';
|
10
|
+
|
11
|
+
const b = cn('km-tip-popup');
|
12
|
+
|
13
|
+
const DATA = {
|
14
|
+
[DATA_QA_TUNE_COLUMNS_POPUP]: {
|
15
|
+
id: 1,
|
16
|
+
title: 'New feature: column selector',
|
17
|
+
description: 'Now you can easily tune columns visibility! 🚀',
|
18
|
+
},
|
19
|
+
};
|
20
|
+
|
21
|
+
function TipPopup({dbChangePopupVisibility, dataAttribute, initialIsPopupVisible}) {
|
22
|
+
const [isPopupVisible, setIsPopupVisible] = useState(initialIsPopupVisible ?? true);
|
23
|
+
const [anchor, setAnchor] = useState(null);
|
24
|
+
|
25
|
+
useEffect(() => {
|
26
|
+
const interval = setInterval(() => {
|
27
|
+
const anchor = document.querySelector(`[data-qa='${dataAttribute}']`);
|
28
|
+
if (anchor) {
|
29
|
+
setAnchor(anchor);
|
30
|
+
clearInterval(interval);
|
31
|
+
}
|
32
|
+
}, 200);
|
33
|
+
return () => {
|
34
|
+
clearInterval(interval);
|
35
|
+
};
|
36
|
+
}, []);
|
37
|
+
|
38
|
+
const onClosePopupClick = () => {
|
39
|
+
dbChangePopupVisibility(false);
|
40
|
+
setIsPopupVisible(false);
|
41
|
+
};
|
42
|
+
|
43
|
+
const tipData = DATA[dataAttribute];
|
44
|
+
|
45
|
+
return tipData && anchor ? (
|
46
|
+
<Popup
|
47
|
+
className={b('wrapper')}
|
48
|
+
anchorRef={{current: anchor}}
|
49
|
+
open={isPopupVisible}
|
50
|
+
placement={['bottom-end']}
|
51
|
+
hasArrow
|
52
|
+
>
|
53
|
+
<div className={b()}>
|
54
|
+
<div className={b('title')}>{tipData.title}</div>
|
55
|
+
<div className={b('content')}>{tipData.description}</div>
|
56
|
+
<div className={b('cross-icon-wrapper')}>
|
57
|
+
<Button view="clear" onClick={onClosePopupClick}>
|
58
|
+
<Icon data={closeIcon} size={10} className={b('cross-icon')} />
|
59
|
+
</Button>
|
60
|
+
</div>
|
61
|
+
</div>
|
62
|
+
</Popup>
|
63
|
+
) : null;
|
64
|
+
}
|
65
|
+
|
66
|
+
export default TipPopup;
|
@@ -0,0 +1,42 @@
|
|
1
|
+
.km-tip-popup {
|
2
|
+
background-color: var(--yc-color-base-background);
|
3
|
+
z-index: 1;
|
4
|
+
max-width: 250px;
|
5
|
+
border-radius: 4px;
|
6
|
+
padding: 16px 20px 20px 16px;
|
7
|
+
font-size: 13px;
|
8
|
+
line-height: 18px;
|
9
|
+
color: var(--yc-color-text-primary);
|
10
|
+
position: relative;
|
11
|
+
|
12
|
+
&__wrapper {
|
13
|
+
border-radius: 4px;
|
14
|
+
border: 1px solid var(--yc-color-text-info) !important;
|
15
|
+
|
16
|
+
.popup2__tail {
|
17
|
+
border: 1px solid var(--yc-color-text-info) !important;
|
18
|
+
background-color: var(--yc-color-base-background);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
&__cross-icon-wrapper {
|
23
|
+
position: absolute;
|
24
|
+
top: 16px;
|
25
|
+
right: 12px;
|
26
|
+
}
|
27
|
+
|
28
|
+
&__cross-icon {
|
29
|
+
color: var(--yc-color-text-secondary);
|
30
|
+
}
|
31
|
+
|
32
|
+
&__title {
|
33
|
+
font-size: 17px;
|
34
|
+
line-height: 24px;
|
35
|
+
margin-bottom: 8px;
|
36
|
+
padding-right: 36px;
|
37
|
+
}
|
38
|
+
|
39
|
+
&__content {
|
40
|
+
color: var(--yc-color-text-complementary);
|
41
|
+
}
|
42
|
+
}
|