From c0fe6cce48ca75d82d3ae1224d23be3dbc4fee28 Mon Sep 17 00:00:00 2001 From: smanylov Date: Tue, 28 Apr 2026 16:32:23 +0700 Subject: [PATCH] add tacking page --- src/app/[locale]/pages/tracking/page.tsx | 17 ++++ .../components/tanstak-table/TanstakTable.tsx | 8 +- src/app/styles/global-styles.scss | 1 + src/app/styles/tracking-statistic.scss | 87 +++++++++++++++++++ src/app/ui/dashboard/files-table.tsx | 7 +- src/app/ui/icons/icons.tsx | 18 +++- src/app/ui/navigation/navigation.json | 5 ++ .../ui/tracking-page/tracking-statistic.tsx | 76 ++++++++++++++++ src/i18n/messages/en.json | 6 +- src/i18n/messages/ru.json | 4 +- 10 files changed, 219 insertions(+), 10 deletions(-) create mode 100644 src/app/[locale]/pages/tracking/page.tsx create mode 100644 src/app/styles/tracking-statistic.scss create mode 100644 src/app/ui/tracking-page/tracking-statistic.tsx diff --git a/src/app/[locale]/pages/tracking/page.tsx b/src/app/[locale]/pages/tracking/page.tsx new file mode 100644 index 0000000..5031a43 --- /dev/null +++ b/src/app/[locale]/pages/tracking/page.tsx @@ -0,0 +1,17 @@ +'use server' + +import { TrackingStatistic } from '@/app/ui/tracking-page/tracking-statistic'; +import FilesTable from '@/app/ui/dashboard/files-table'; + +export default async function Page() { + const FILE_TYPE = "document"; + + return ( +
+ + +
+ ) +} \ No newline at end of file diff --git a/src/app/components/tanstak-table/TanstakTable.tsx b/src/app/components/tanstak-table/TanstakTable.tsx index bcc25d6..694f0d0 100644 --- a/src/app/components/tanstak-table/TanstakTable.tsx +++ b/src/app/components/tanstak-table/TanstakTable.tsx @@ -12,7 +12,7 @@ import { ColumnFiltersState, PaginationState } from '@tanstack/react-table'; -import {IconDoubleArrowRight, IconArrowRight, IconDoubleArrowLeft, IconArrowLeft, IconArrowUp, IconArrowDown, IconFilter, IconFileDownload, IconInfo, IconEye, IconCheck, IconImageFile, IconLink} from '@/app/ui/icons/icons'; +import { IconDoubleArrowRight, IconArrowRight, IconDoubleArrowLeft, IconArrowLeft, IconArrowUp, IconArrowDown, IconFilter, IconFileDownload, IconInfo, IconEye, IconCheck, IconImageFile, IconLink } from '@/app/ui/icons/icons'; import { useTranslations, useLocale } from 'next-intl'; import DropDownList from '@/app/components/DropDownList'; import { useQuery, useQueryClient } from '@tanstack/react-query'; @@ -76,7 +76,7 @@ const cutFileExtension = (fileName: string) => { return extension; } -export default function TanstakFilesTable({ fileType }: { fileType: string }) { +export default function TanstakFilesTable({ fileType, showFileLink }: { fileType: string, showFileLink?: boolean }) { const [sorting, setSorting] = useState([]); const [dateFilter, setDateFilter] = useState('month'); @@ -572,7 +572,7 @@ export default function TanstakFilesTable({ fileType }: { fileType: string }) { > - {row.original.fileType === 'document' && ( + {(showFileLink && row.original.fileType === 'document') && ( - + ) } \ No newline at end of file diff --git a/src/app/ui/icons/icons.tsx b/src/app/ui/icons/icons.tsx index 0962774..10f3113 100644 --- a/src/app/ui/icons/icons.tsx +++ b/src/app/ui/icons/icons.tsx @@ -258,7 +258,7 @@ export function IconFollowToLink() { export function IconFullScreen() { return ( - + ) } @@ -266,4 +266,20 @@ export function IconLink() { return ( ) +} + +export function IconPerson() { + return ( + + + + ) +} + +export function IconGlobe() { + return ( + + + + ) } \ No newline at end of file diff --git a/src/app/ui/navigation/navigation.json b/src/app/ui/navigation/navigation.json index 3ac85f9..185aa33 100644 --- a/src/app/ui/navigation/navigation.json +++ b/src/app/ui/navigation/navigation.json @@ -14,6 +14,11 @@ "href": "/pages/my-content", "img": "M20 6h-2.18c.11-.31.18-.65.18-1a2.996 2.996 0 0 0-5.5-1.65l-.5.67-.5-.68C10.96 2.54 10 2 9 2 7.34 2 6 3.34 6 5c0 .35.07.69.18 1H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-5-2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1z" }, + { + "name": "tracking", + "href": "/pages/tracking", + "img": "M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z" + }, { "name": "referral-program", "href": "/pages/refferals", diff --git a/src/app/ui/tracking-page/tracking-statistic.tsx b/src/app/ui/tracking-page/tracking-statistic.tsx new file mode 100644 index 0000000..11096d2 --- /dev/null +++ b/src/app/ui/tracking-page/tracking-statistic.tsx @@ -0,0 +1,76 @@ +import { IconLink, IconDocument, IconCheck, IconPerson, IconGlobe } from '@/app/ui/icons/icons'; +export function TrackingStatistic() { + return ( +
+
+
+
+ PDF Трекинг + +
+
+ Аналитика открытий защищённых PDF документов +
+
+
+
+
+
+ +
+
+ 33 +
+
+ Документов +
+
+
+
+ +
+ 103 +
+
+ Открытий +
+
+
+
+ +
+
+ 247 +
+
+ Верификаций +
+
+
+
+ +
+
+ 27 +
+
+ Уникальных IP +
+
+
+
+ +
+
+ 7 +
+
+ Стран +
+
+
+
+ ) +} \ No newline at end of file diff --git a/src/i18n/messages/en.json b/src/i18n/messages/en.json index 76619a0..0d29832 100644 --- a/src/i18n/messages/en.json +++ b/src/i18n/messages/en.json @@ -188,7 +188,8 @@ "table-description": "Table of all files", "protected-image": "Protected images", "protected-video": "Protected videos", - "protected-audio": "Protected audio", + "protected-audio": "Protected audios", + "protected-document": "Protected documents", "image-protected": "Images Protected", "video-protected": "Videos Protected", "audio-protected": "Audios Protected", @@ -449,7 +450,8 @@ "recent-cases": "Recent cases", "select-at-least-one-filter": "Select at least one filter", "select-document-to-upload": "Select document(s) to upload", - "uploading-id-images": "Uploading ID images" + "uploading-id-images": "Uploading ID images", + "tracking": "Tracking" }, "Login-register-form": { "and": "and", diff --git a/src/i18n/messages/ru.json b/src/i18n/messages/ru.json index ec8b534..dc3965e 100644 --- a/src/i18n/messages/ru.json +++ b/src/i18n/messages/ru.json @@ -189,6 +189,7 @@ "protected-image": "Защищенные изображения", "protected-video": "Защищенные видео", "protected-audio": "Защищенные аудио", + "protected-document": "Защищенные документы", "image-protected": "Изображений защищено", "video-protected": "Видео защищено", "audio-protected": "Аудио защищено", @@ -449,7 +450,8 @@ "recent-cases": "Недавние дела", "select-at-least-one-filter": "Выберите хотя бы один фильтр", "select-document-to-upload": "Выберите документ(ы) для загрузки", - "uploading-id-images": "Загрузка изображений удостоверения личности" + "uploading-id-images": "Загрузка изображений удостоверения личности", + "tracking": "Отслеживание" }, "Login-register-form": { "and": "и",