From b4f9c58eb5960bc501eedf18e8be9132081e5df8 Mon Sep 17 00:00:00 2001 From: DCCONSTRUCTIONS Date: Mon, 27 Apr 2026 20:15:11 +0300 Subject: [PATCH] =?UTF-8?q?UI=20-=20=D0=9C=D0=95=D0=96=D0=9F=D0=A0=D0=9E?= =?UTF-8?q?=D0=95=D0=9A=D0=A2=D0=9D=D0=90=D0=AF=20=D0=9A=D0=9E=D0=9C=D0=9C?= =?UTF-8?q?=D0=A3=D0=9D=D0=98=D0=9A=D0=90=D0=A6=D0=98=D0=AF:=20=D0=B4?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D0=B9=D0=BD=20=D0=B2=D0=BA=D0=BB=D0=B0=D0=B4?= =?UTF-8?q?=D0=BA=D0=B8=20=D1=85=D1=80=D0=B0=D0=BD=D0=B8=D0=BB=D0=B8=D1=89?= =?UTF-8?q?=D0=B0=20=D0=B2=D0=BE=D1=80=D0=BA=D1=81=D0=BF=D0=B5=D0=B9=D1=81?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workspace/settings/storage-settings.tsx | 110 ++++++++++-------- 1 file changed, 60 insertions(+), 50 deletions(-) diff --git a/plane-src/apps/web/core/components/workspace/settings/storage-settings.tsx b/plane-src/apps/web/core/components/workspace/settings/storage-settings.tsx index 973fd61..c502c16 100644 --- a/plane-src/apps/web/core/components/workspace/settings/storage-settings.tsx +++ b/plane-src/apps/web/core/components/workspace/settings/storage-settings.tsx @@ -10,6 +10,8 @@ import useSWR from "swr"; // plane imports import type { IWorkspaceStorageProjectSummary } from "@plane/types"; import { cn } from "@plane/utils"; +// components +import { SettingsHeading } from "@/components/settings/heading"; // services import { WorkspaceService } from "@/services/workspace.service"; @@ -38,12 +40,12 @@ const StatCard = (props: { const { title, value, caption, icon: Icon, tone = "default" } = props; return ( -
+
{title}
0 ? Math.max((project.logical_size / maxSize) * 100, project.logical_size > 0 ? 3 : 0) : 0; return ( - - -
- {project.name} - {project.identifier} +
+
+ {project.name} + {project.identifier} +
+ {formatCount(project.file_count)} + {formatCount(project.blob_count)} +
+
+
- - {formatCount(project.file_count)} - {formatCount(project.blob_count)} - -
-
-
-
- {formatBytes(project.logical_size)} -
- - {formatBytes(project.physical_size)} - {formatBytes(project.dedup_savings)} - {formatCount(project.failed_upload_count)} - {formatCount(project.soft_deleted_count)} - + {formatBytes(project.logical_size)} +
+ {formatBytes(project.physical_size)} + {formatBytes(project.dedup_savings)} + 0}>{formatCount(project.failed_upload_count)} + {formatCount(project.soft_deleted_count)} +
); }; +const StorageValue = (props: { accent?: boolean; children: string; warning?: boolean }) => ( + + {props.children} + +); + +const ProjectStorageHeader = () => ( +
+ Проект + Файлы + Blob + Логический объем + Физический + Дедуп + Ошибки + Удалено +
+); + type TStorageSettingsContentProps = { workspaceSlug: string; }; @@ -101,24 +124,22 @@ export function StorageSettingsContent({ workspaceSlug }: TStorageSettingsConten const maxProjectSize = Math.max(...projects.map((project) => project.logical_size), 0); return ( -
-
-

Хранилище

-

- Контроль объема файлов, дедупликации и кандидатов на очистку по workspace и проектам. -

-
+
+ {isLoading && (
{Array.from({ length: 4 }).map((_, index) => ( -
+
))}
)} {error && ( -
+
Не удалось загрузить данные хранилища.
)} @@ -176,37 +197,26 @@ export function StorageSettingsContent({ workspaceSlug }: TStorageSettingsConten />
-
+

Проекты

Сортировка по логическому объему файлов.

-
+
{formatCount(projects.length)} проектов
- - - - - - - - - - - - - - +
+ +
{projects.map((project) => ( ))} -
-
ПроектФайлыBlobЛогический объемФизическийДедупОшибкиУдалено
+
+