From 57c09acb3d6b9e0493f38fcacd2bc40ada077b1e Mon Sep 17 00:00:00 2001 From: Denozordec Date: Mon, 6 Apr 2026 21:34:03 +0700 Subject: [PATCH] feat: refine job detail UI with improved layout and scrolling capabilities. Enhance spacing and overflow handling for log entries and error messages, ensuring better readability and user experience. Integrate ScrollArea for log entries to manage overflow effectively. --- web/src/routes/operations/+page.svelte | 108 +++++++++++++------------ 1 file changed, 55 insertions(+), 53 deletions(-) diff --git a/web/src/routes/operations/+page.svelte b/web/src/routes/operations/+page.svelte index 47930b0..2ea1440 100644 --- a/web/src/routes/operations/+page.svelte +++ b/web/src/routes/operations/+page.svelte @@ -889,12 +889,12 @@ {@const jobReport = jobReportsById.get(job.job_id)} {@const logEntries = getJobLogEntries(detailedJob)} {@const logTotal = getJobLogTotal(detailedJob, logEntries)} -
+
{#if isDetailsLoading}

Догружаем свежие детали задачи…

{/if} -
-
+
+

job_id

{detailedJob.job_id}

@@ -916,63 +916,65 @@
{#if detailedJob.error} -
+

error

{detailedJob.error}

{/if} {#if logEntries.length > 0} -
+

Журнал обработки

{logEntries.length} записей, всего {logTotal} префиксов

-
- {#each logEntries as entry, idx (`${job.job_id}-${idx}`)} -
-

{entry.message}

-
-
- source - {entry.source} -
-
- kind - {entry.kind} -
-
- community - {entry.community} -
-
- prefixes - {entry.prefix_count} + +
+ {#each logEntries as entry, idx (`${job.job_id}-${idx}`)} +
+

{entry.message}

+
+
+ source + {entry.source} +
+
+ kind + {entry.kind} +
+
+ community + {entry.community} +
+
+ prefixes + {entry.prefix_count} +
+ {#if entry.sample && entry.sample.length > 0} +
+

sample

+ +
+ {#each entry.sample as sampleValue, sampleIdx (`${job.job_id}-${idx}-sample-${sampleIdx}`)} +

{sampleValue}

+ {/each} +
+
+
+ {/if}
- {#if entry.sample && entry.sample.length > 0} -
-

sample

- -
- {#each entry.sample as sampleValue, sampleIdx (`${job.job_id}-${idx}-sample-${sampleIdx}`)} -

{sampleValue}

- {/each} -
-
-
- {/if} -
- {/each} -
+ {/each} +
+
{/if} {#if isReportLoading}

Собираем подробный отчёт по источникам и агрегации…

{/if} {#if jobReport} -
+

Операции по модулю

@@ -985,20 +987,20 @@ {/if}
-
-
+
+

Агрегация

{jobReport.aggregationTotal} префиксов

-
+

Домены

{jobReport.domains.length}

-
+

ASN

{jobReport.asn.length}

-
+

CDN/IP Range

{jobReport.cdn.length}/{jobReport.ipRanges.length}

@@ -1013,8 +1015,8 @@
{/if} -
-
+
+

Домены: какой домен какие IP/префиксы вернул

{#each jobReport.domains as row (`${job.job_id}-domain-${row.source}`)} @@ -1028,7 +1030,7 @@ {/each}
-
+

ASN: сколько префиксов получено по AS

{#each jobReport.asn as row (`${job.job_id}-asn-${row.asn}`)} @@ -1041,7 +1043,7 @@ {/each}
-
+

CDN: из каждой ссылки полученные IP/префиксы

{#each jobReport.cdn as row (`${job.job_id}-cdn-${row.source}`)} @@ -1055,7 +1057,7 @@ {/each}
-
+

IP range: итог по статическим диапазонам

{#each jobReport.ipRanges as row (`${job.job_id}-ipr-${row.source}`)} @@ -1072,10 +1074,10 @@
{/if} -
+

Meta (raw JSON)

-
{JSON.stringify(detailedJob.meta ?? {}, null, 2)}
+
{JSON.stringify(detailedJob.meta ?? {}, null, 2)}