From b2bb48a2608eba1e0a4354f7b8aea1baecb9d751 Mon Sep 17 00:00:00 2001 From: Flaminel Date: Sat, 31 May 2025 00:54:25 +0300 Subject: [PATCH] try fix #2 --- .../queue-cleaner-settings.component.html | 504 +++++++++--------- .../queue-cleaner-settings.component.scss | 221 ++++++-- 2 files changed, 427 insertions(+), 298 deletions(-) diff --git a/code/UI/src/app/settings/queue-cleaner/queue-cleaner-settings.component.html b/code/UI/src/app/settings/queue-cleaner/queue-cleaner-settings.component.html index c815aebe..7b94ceaf 100644 --- a/code/UI/src/app/settings/queue-cleaner/queue-cleaner-settings.component.html +++ b/code/UI/src/app/settings/queue-cleaner/queue-cleaner-settings.component.html @@ -1,242 +1,266 @@ - -
- -
- -
- - When enabled, the queue cleaner will run according to the schedule -
-
- -
- -
- Every - - +
+
+

Queue Cleaner Settings

+
+ +
+
+ + +
+
+

Queue Cleaner Configuration

+ Configure automatic queue cleanup +
+
+ +
+
+
- - -
- How often the queue cleaner should run +
+ + +
+ +
+ + When enabled, the queue cleaner will run according to the schedule +
+
+ +
+ +
+ Every + + + + + +
+ How often the queue cleaner should run +
+ +
+ +
+ + When enabled, jobs will run one after another instead of in parallel +
+
+ +
+ +
+ + Path to the file containing ignored downloads +
+
+ + + + + +
+ +
+ + + Number of strikes before action is taken (0 to disable, min 3 to enable) +
+
+ +
+ +
+ + When enabled, private torrents will be ignored +
+
+ +
+ +
+ + When enabled, private torrents will be deleted +
+
+ +
+ +
+ + Patterns to ignore (e.g., *sample*) +
+
+
+ + + +
+ +
+ + + Number of strikes before action is taken (0 to disable, min 3 to enable) +
+
+ +
+ +
+ + When enabled, strikes will be reset if download progress is made +
+
+ +
+ +
+ + When enabled, private torrents will be ignored +
+
+ +
+ +
+ + When enabled, private torrents will be deleted +
+
+
+ + + +
+ +
+ + + Number of strikes before action is taken (0 to disable, min 3 to enable) +
+
+
+ + + +
+ +
+ + + Number of strikes before action is taken (0 to disable, min 3 to enable) +
+
+ +
+ +
+ + When enabled, strikes will be reset if download progress is made +
+
+ +
+ +
+ + When enabled, private torrents will be ignored +
+
+ +
+ +
+ + When enabled, private torrents will be deleted +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + + Maximum time allowed for slow downloads (in hours) +
+
+ +
+ +
+ + +
+
+
+
+ + + + +
+
- -
- -
- - When enabled, jobs will run one after another instead of in parallel -
-
- -
- -
- - Path to the file containing ignored downloads -
-
- - - - - -
- -
- - - Number of strikes before action is taken (0 to disable, min 3 to enable) -
-
- -
- -
- - When enabled, private torrents will be ignored -
-
- -
- -
- - When enabled, private torrents will be deleted -
-
- -
- -
- - Patterns to ignore (e.g., *sample*) -
-
-
- - - -
- -
- - - Number of strikes before action is taken (0 to disable, min 3 to enable) -
-
- -
- -
- - When enabled, strikes will be reset if download progress is made -
-
- -
- -
- - When enabled, private torrents will be ignored -
-
- -
- -
- - When enabled, private torrents will be deleted -
-
-
- - - -
- -
- - - Number of strikes before action is taken (0 to disable, min 3 to enable) -
-
-
- - - -
- -
- - - Number of strikes before action is taken (0 to disable, min 3 to enable) -
-
- -
- -
- - When enabled, strikes will be reset if download progress is made -
-
- -
- -
- - When enabled, private torrents will be ignored -
-
- -
- -
- - When enabled, private torrents will be deleted -
-
- -
- -
- - -
-
- -
- -
- - - Maximum time allowed for slow downloads (in hours) -
-
- -
- -
- - -
-
-
-
- - -
- - -
- - +
+
diff --git a/code/UI/src/app/settings/queue-cleaner/queue-cleaner-settings.component.scss b/code/UI/src/app/settings/queue-cleaner/queue-cleaner-settings.component.scss index e1587e82..ff1e05cf 100644 --- a/code/UI/src/app/settings/queue-cleaner/queue-cleaner-settings.component.scss +++ b/code/UI/src/app/settings/queue-cleaner/queue-cleaner-settings.component.scss @@ -1,71 +1,176 @@ /* Queue Cleaner Settings Styles */ -/* Form layout and structure */ -.field-row { - display: flex; - margin-bottom: 1.25rem; - align-items: flex-start; +.settings-container { + padding: 1.5rem; - &:last-child { - margin-bottom: 0; - } -} - -.field-label { - flex: 0 0 200px; - padding-top: 0.5rem; - font-weight: 500; -} - -.field-input { - flex: 1; - max-width: 600px; -} - -.form-helper-text { - display: block; - margin-top: 0.25rem; - color: #666; - font-size: 0.85rem; -} - -/* Schedule input specific styles */ -.schedule-input { - display: flex; - align-items: center; - gap: 0.5rem; - - .schedule-label { - font-weight: 500; - margin-right: 0.5rem; + h1 { + font-size: 1.5rem; + font-weight: 600; + color: var(--text-color); + margin-bottom: 0.5rem; } - .schedule-value { - width: 70px; - text-align: center; - } - - ::ng-deep .p-selectbutton { - .p-button { - padding: 0.5rem 0.75rem; + /* Card styles matching dashboard */ + ::ng-deep { + .settings-card { + height: 100%; + transition: transform 0.3s, box-shadow 0.3s; + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); + border: 1px solid var(--surface-border); + + &:hover { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + } + + .p-card-header { + padding: 0; + } + + .card-title { + font-size: 1.25rem; + font-weight: 600; + margin-bottom: 0.25rem; + } + + .card-subtitle { + color: var(--text-color-secondary); + font-size: 0.875rem; + } + + .p-card-body { + height: 100%; + display: flex; + flex-direction: column; + padding: 0; + } + + .p-card-content { + flex-grow: 1; + padding: 1.5rem; + height: 100%; + } + + /* Accordion disabled state */ + .p-accordion { + .p-accordion-tab.p-disabled { + opacity: 0.6; + + .p-accordion-header .p-accordion-header-link { + cursor: not-allowed; + color: var(--text-color-secondary); + } + } + } } } + + /* Form layout and structure */ + .field-row { + display: flex; + margin-bottom: 1.25rem; + align-items: flex-start; + + &:last-child { + margin-bottom: 0; + } + } + + .field-label { + flex: 0 0 200px; + padding-top: 0.5rem; + font-weight: 500; + } + + .field-input { + flex: 1; + max-width: 600px; + } + + .form-helper-text { + display: block; + margin-top: 0.25rem; + color: var(--text-color-secondary); + font-size: 0.85rem; + } + + /* Schedule input specific styles */ + .schedule-input { + display: flex; + align-items: center; + gap: 0.5rem; + + .schedule-label { + font-weight: 500; + margin-right: 0.5rem; + } + + .schedule-value { + width: 70px; + text-align: center; + } + + ::ng-deep .p-selectbutton { + .p-button { + padding: 0.5rem 0.75rem; + } + } + } + + /* Card footer styling */ + .card-footer { + border-top: 1px solid var(--surface-border); + padding-top: 1rem; + display: flex; + gap: 0.5rem; + + .p-button { + flex: 1; + + &:last-child { + flex: 0 0 auto; + } + } + } +} + +/* Header title container and status tag styles */ +.header-title-container { + display: flex; + flex-direction: column; + + h2 { + margin: 0; + line-height: 1.2; + } + + .card-subtitle { + margin-top: 0.25rem; + } } /* Responsive adjustments */ @media (max-width: 768px) { - .field-row { - flex-direction: column; - } - - .field-label { - flex: 0 0 auto; - margin-bottom: 0.5rem; - padding-top: 0; - } - - .field-input { - width: 100%; - max-width: 100%; + .settings-container { + padding: 1rem; + + .field-row { + flex-direction: column; + } + + .field-label { + flex: 0 0 auto; + margin-bottom: 0.5rem; + padding-top: 0; + } + + .field-input { + width: 100%; + max-width: 100%; + } + + .card-footer { + flex-direction: column; + } } }