([])
+
+ const getChartData = (t: SimpleTypeSummary) => ({
+ value: t.total,
+ name: t.type in GROUP_TYPES_DISPLAY ? GROUP_TYPES_DISPLAY[t.type as GroupTypesDisplay] : t.type,
+ color: t.type in GROUP_TYPES_COLORS ? GROUP_TYPES_COLORS[t.type as GroupTypesColors] : 'var(--defaultTypeColor)',
+ meta: { ...t }
+ })
+
+ useEffect(() => {
+ if (data) {
+ setMemoryData(totalMemory?.types?.map(getChartData) as ChartData[])
+ setKeysData(totalKeys?.types?.map(getChartData) as ChartData[])
+ }
+ }, [data])
+
+ if (loading && !totalMemory && !totalKeys) {
+ return (
+
+ )
+ }
+
+ if ((!totalMemory || memoryData.length === 0) && (!totalKeys || keysData.length === 0)) {
+ return null
+ }
+
+ const renderMemoryTooltip = (data: ChartData) => (
+
+
+ {data.name}:
+
+ {getPercentage(data.value, totalMemory?.total)}%
+
+ ( {formatBytes(data.value, 3, false)} )
+
+
+ )
+
+ const renderKeysTooltip = (data: ChartData) => (
+
+
+ {data.name}:
+
+ {getPercentage(data.value, totalKeys?.total)}%
+
+ ( {numberWithSpaces(data.value)} )
+
+
+ )
+
+ return (
+
+
+ SUMMARY PER DATA TYPE
+
+
+
+
+
+
+ Memory
+
+
+
+ {formatBytes(totalMemory?.total || 0, 3)}
+
+ )}
+ />
+
+
+
+
+ Keys
+
+
+
+ {numberWithSpaces(totalKeys?.total || 0)}
+
+ )}
+ />
+
+
+ )
+}
+
+export default SummaryPerData
diff --git a/redisinsight/ui/src/pages/databaseAnalysis/components/summary-per-data/index.ts b/redisinsight/ui/src/pages/databaseAnalysis/components/summary-per-data/index.ts
new file mode 100644
index 0000000000..997d27b633
--- /dev/null
+++ b/redisinsight/ui/src/pages/databaseAnalysis/components/summary-per-data/index.ts
@@ -0,0 +1,3 @@
+import SummaryPerData from './SummaryPerData'
+
+export default SummaryPerData
diff --git a/redisinsight/ui/src/pages/databaseAnalysis/components/summary-per-data/styles.module.scss b/redisinsight/ui/src/pages/databaseAnalysis/components/summary-per-data/styles.module.scss
new file mode 100644
index 0000000000..dc1833368e
--- /dev/null
+++ b/redisinsight/ui/src/pages/databaseAnalysis/components/summary-per-data/styles.module.scss
@@ -0,0 +1,59 @@
+.chartsWrapper {
+ background-color: var(--euiColorLightestShade);
+ border-radius: 16px;
+
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+ margin-bottom: 24px;
+ margin-top: 16px;
+ overflow: hidden;
+
+ &.loadingWrapper {
+ margin-top: 36px;
+ }
+
+ .preloaderCircle {
+ width: 180px;
+ height: 180px;
+ margin: 60px 0;
+ border-radius: 100%;
+ background-color: var(--separatorColor);
+ }
+
+ .chartCenter {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ }
+
+ .chartTitle {
+ display: flex;
+ align-items: center;
+
+ .icon {
+ margin-right: 10px;
+ }
+ }
+
+ .titleSeparator {
+ height: 1px;
+ border: 0;
+ background-color: var(--separatorColorLight);
+ margin: 6px 0;
+ width: 60px;
+ }
+
+ .centerCount {
+ margin-top: 2px;
+ font-weight: 500;
+ font-size: 14px;
+ }
+
+ .labelTooltip {
+ font-size: 12px;
+ .tooltipPercentage {
+ margin-right: 8px;
+ }
+ }
+}
diff --git a/redisinsight/ui/src/pages/databaseAnalysis/components/top-namespace-view/TopNamespaceView.tsx b/redisinsight/ui/src/pages/databaseAnalysis/components/top-namespace-view/TopNamespaceView.tsx
index 8db74f98da..f4e99b5d96 100644
--- a/redisinsight/ui/src/pages/databaseAnalysis/components/top-namespace-view/TopNamespaceView.tsx
+++ b/redisinsight/ui/src/pages/databaseAnalysis/components/top-namespace-view/TopNamespaceView.tsx
@@ -23,7 +23,7 @@ const TopNamespaceView = (props: Props) => {
return (
-
+
TOP NAMESPACES