This commit is contained in:
Mateusz Gruszczyński
2026-04-14 18:38:52 +02:00
parent 56f9b6c3f3
commit 08c8cbbc7d
5 changed files with 135 additions and 105 deletions

View File

@@ -3,20 +3,36 @@
[title]="routerItem?.name || ('routers.detailTitle' | translate)"
[subtitle]="subtitle"
>
<div header-actions class="header-actions-row">
<div header-actions class="header-actions-row router-header-actions router-header-actions--desktop">
<button pButton type="button" severity="secondary" icon="pi pi-pencil" [label]="'common.edit' | translate" (click)="openEdit()"></button>
<button *ngIf="!isSwitchos" pButton type="button" icon="pi pi-upload" [label]="'routers.exportOne' | translate" [loading]="exporting" [disabled]="routerItem?.disable_all_backups || routerItem?.disable_export_backups" (click)="runExport()"></button>
<button pButton type="button" severity="secondary" icon="pi pi-database" [label]="(isSwitchos ? 'routers.downloadSwitchBackup' : 'routers.binaryOne') | translate" [loading]="runningBinary" [disabled]="routerItem?.disable_all_backups || routerItem?.disable_binary_backups" (click)="runBinary()"></button>
<button pButton type="button" severity="info" icon="pi pi-wifi" [label]="'routers.testConnection' | translate" [loading]="testing" (click)="testConnection()"></button>
<button pButton type="button" severity="danger" icon="pi pi-trash" [label]="'routers.deleteDevice' | translate" [loading]="deletingRouter" (click)="deleteRouter()"></button>
</div>
<div header-actions class="router-header-actions router-header-actions--mobile">
<details class="mobile-actions-menu">
<summary>
<i class="pi pi-ellipsis-v"></i>
<span>{{ 'common.actions' | translate }}</span>
</summary>
<div class="mobile-actions-menu__list">
<button pButton type="button" severity="secondary" icon="pi pi-pencil" [label]="'common.edit' | translate" (click)="openEdit()"></button>
<button *ngIf="!isSwitchos" pButton type="button" icon="pi pi-upload" [label]="'routers.exportOne' | translate" [loading]="exporting" [disabled]="routerItem?.disable_all_backups || routerItem?.disable_export_backups" (click)="runExport()"></button>
<button pButton type="button" severity="secondary" icon="pi pi-database" [label]="(isSwitchos ? 'routers.downloadSwitchBackup' : 'routers.binaryOne') | translate" [loading]="runningBinary" [disabled]="routerItem?.disable_all_backups || routerItem?.disable_binary_backups" (click)="runBinary()"></button>
<button pButton type="button" severity="info" icon="pi pi-wifi" [label]="'routers.testConnection' | translate" [loading]="testing" (click)="testConnection()"></button>
<button pButton type="button" severity="danger" icon="pi pi-trash" [label]="'routers.deleteDevice' | translate" [loading]="deletingRouter" (click)="deleteRouter()"></button>
</div>
</details>
</div>
</app-page-header>
<div class="stats-grid compact-grid">
<app-stat-card [label]="'routers.deviceType' | translate" [value]="deviceTypeLabel" [hint]="'routers.listSubtitle' | translate" [tag]="'routers.fleetTag' | translate" severity="info" icon="pi pi-sitemap" iconClass="icon-blue"></app-stat-card>
<app-stat-card [label]="'routers.binaryLabel' | translate" [value]="binaryBackups.length" [hint]="'routers.binaryLabelHint' | translate" [tag]="'files.binaryType' | translate" severity="warn" icon="pi pi-database" iconClass="icon-amber"></app-stat-card>
<app-stat-card [label]="'routers.connectionLabel' | translate" [value]="connectionStateLabel" [hint]="'routers.connectionLabelHint' | translate" [tag]="'routers.probeTag' | translate" severity="info" icon="pi pi-bolt" iconClass="icon-blue"></app-stat-card>
<app-stat-card [label]="'routers.sshUser' | translate" [value]="routerItem?.effective_username || '-'" [hint]="'routers.sshUserHint' | translate" [tag]="'routers.accessTag' | translate" severity="secondary" icon="pi pi-user" iconClass="icon-violet"></app-stat-card>
<app-stat-card [label]="'routers.deviceType' | translate" [value]="deviceTypeLabel" [hint]="'routers.listSubtitle' | translate" severity="info" icon="pi pi-sitemap" iconClass="icon-blue"></app-stat-card>
<app-stat-card [label]="'routers.binaryLabel' | translate" [value]="binaryBackups.length" [hint]="'routers.binaryLabelHint' | translate" severity="warn" icon="pi pi-database" iconClass="icon-amber"></app-stat-card>
<app-stat-card [label]="'routers.connectionLabel' | translate" [value]="connectionStateLabel" [hint]="'routers.connectionLabelHint' | translate" severity="info" icon="pi pi-bolt" iconClass="icon-blue"></app-stat-card>
<app-stat-card [label]="'routers.sshUser' | translate" [value]="routerItem?.effective_username || '-'" [hint]="'routers.sshUserHint' | translate" severity="secondary" icon="pi pi-user" iconClass="icon-violet"></app-stat-card>
</div>
<div class="dashboard-grid router-detail-grid router-detail-grid--inspection">
@@ -58,7 +74,6 @@
<strong>{{ 'routers.disableAllBackups' | translate }}</strong>
<small>{{ 'routers.disableAllBackupsHint' | translate }}</small>
</span>
<span class="device-toggle__state">{{ (settingsForm.controls.disable_all_backups.value ? 'common.enabled' : 'common.disabled') | translate }}</span>
</label>
<label class="device-toggle" *ngIf="!isSwitchos" [class.is-active]="settingsForm.controls.disable_export_backups.value">
<input type="checkbox" formControlName="disable_export_backups" />
@@ -68,7 +83,6 @@
<strong>{{ 'routers.disableExports' | translate }}</strong>
<small>{{ 'routers.disableExportsHint' | translate }}</small>
</span>
<span class="device-toggle__state">{{ (settingsForm.controls.disable_export_backups.value ? 'common.enabled' : 'common.disabled') | translate }}</span>
</label>
<label class="device-toggle" [class.is-active]="settingsForm.controls.disable_binary_backups.value">
<input type="checkbox" formControlName="disable_binary_backups" />
@@ -78,7 +92,6 @@
<strong>{{ 'routers.disableBinaryBackups' | translate }}</strong>
<small>{{ 'routers.disableBinaryBackupsHint' | translate }}</small>
</span>
<span class="device-toggle__state">{{ (settingsForm.controls.disable_binary_backups.value ? 'common.enabled' : 'common.disabled') | translate }}</span>
</label>
<label class="device-toggle" [class.is-active]="settingsForm.controls.disable_ping.value">
<input type="checkbox" formControlName="disable_ping" />
@@ -88,7 +101,6 @@
<strong>{{ 'routers.disablePing' | translate }}</strong>
<small>{{ 'routers.disablePingHint' | translate }}</small>
</span>
<span class="device-toggle__state">{{ (settingsForm.controls.disable_ping.value ? 'common.enabled' : 'common.disabled') | translate }}</span>
</label>
</div>
<div class="dialog-actions device-settings-actions">

View File

@@ -196,27 +196,25 @@
<small>{{ 'settings.notificationsSubtitle' | translate }}</small>
</summary>
<div class="settings-collapse__body">
<div class="settings-toggle-grid">
<div class="settings-toggle">
<div>
<div class="device-settings-stack settings-device-toggles">
<label class="device-toggle" [class.is-active]="form.controls.smtp_notifications_enabled.value">
<input type="checkbox" formControlName="smtp_notifications_enabled" />
<span class="device-toggle__switch" aria-hidden="true"></span>
<span class="device-toggle__icon"><i class="pi pi-envelope"></i></span>
<span class="device-toggle__content">
<strong>{{ 'settings.smtpEnabled' | translate }}</strong>
<small>{{ 'settings.smtpEnabledHint' | translate }}</small>
</div>
<div class="choice-toggle" role="group" [attr.aria-label]="'settings.smtpEnabled' | translate">
<button type="button" class="choice-toggle__btn" [class.is-active]="form.controls.smtp_notifications_enabled.value" (click)="setBooleanSetting('smtp_notifications_enabled', true)">{{ 'common.enabled' | translate }}</button>
<button type="button" class="choice-toggle__btn" [class.is-active]="!form.controls.smtp_notifications_enabled.value" (click)="setBooleanSetting('smtp_notifications_enabled', false)">{{ 'common.disabled' | translate }}</button>
</div>
</div>
<div class="settings-toggle">
<div>
</span>
</label>
<label class="device-toggle" [class.is-active]="form.controls.notify_failures_only.value">
<input type="checkbox" formControlName="notify_failures_only" />
<span class="device-toggle__switch" aria-hidden="true"></span>
<span class="device-toggle__icon"><i class="pi pi-bell"></i></span>
<span class="device-toggle__content">
<strong>{{ 'settings.failuresOnly' | translate }}</strong>
<small>{{ 'settings.failuresOnlyHint' | translate }}</small>
</div>
<div class="choice-toggle" role="group" [attr.aria-label]="'settings.failuresOnly' | translate">
<button type="button" class="choice-toggle__btn" [class.is-active]="form.controls.notify_failures_only.value" (click)="setBooleanSetting('notify_failures_only', true)">{{ 'common.enabled' | translate }}</button>
<button type="button" class="choice-toggle__btn" [class.is-active]="!form.controls.notify_failures_only.value" (click)="setBooleanSetting('notify_failures_only', false)">{{ 'common.disabled' | translate }}</button>
</div>
</div>
</span>
</label>
</div>
<div class="form-grid-2">
<span class="form-field">

View File

@@ -79,13 +79,13 @@
"dashboard": {
"title": "Dashbord",
"eyebrow": "hjem / dashbord",
"subtitle": "Oversikt over backuper, eksportfiler og operativ aktivitet på ett sted.",
"exportAll": "Eksporter alle",
"subtitle": "Oversikt over backuper, exportfiler og operativ aktivitet på ett sted.",
"exportAll": "Exporter alle",
"binaryAll": "Binær backup",
"managedRouters": "Enheter",
"managedRoutersHint": "Alle administrerte enheter",
"inventoryTag": "Flåte",
"exportsCard": "Eksporter",
"exportsCard": "Exporter",
"exportsHint": "Lesbare konfigurasjonsøyeblikksbilder",
"textTag": "Tekst",
"binaryCard": "Binære backuper",
@@ -117,7 +117,7 @@
"weeklyActivityHint": "Nye backuper opprettet denne uken",
"busiestRouterLabel": "Mest aktive ruter",
"routerSnapshotsHint": "{{count}} øyeblikksbilder i repositoryet",
"exportShareLabel": "Eksportandel",
"exportShareLabel": "Exportandel",
"activityTodayLabel": "Hendelser i dag",
"noneLabel": "Ingen",
"activityTodayHint": "Oppføringer opprettet i dag",
@@ -125,7 +125,7 @@
"storageViewCapacity": "Kapasitet",
"storageViewCapacityHint": "Disk, repositorybruk og ledig plass vist på samme skala.",
"storageViewMix": "Backuptyper",
"storageViewMixHint": "Fordeling av alle kopier mellom teksteksporter og binære backuper.",
"storageViewMixHint": "Fordeling av alle kopier mellom tekstexporter og binære backuper.",
"storageViewActivity": "7-dagers aktivitet",
"storageViewActivityHint": "Antall nye backuper opprettet de siste sju dagene.",
"storageViewRouters": "Topp-rutere",
@@ -173,11 +173,11 @@
"saveRouter": "Lagre enhet",
"profileEyebrow": "ruterprofil",
"detailSubtitle": "Enhetsoperasjoner og backuphistorikk",
"exportOne": "Eksport",
"exportOne": "Export",
"binaryOne": "Binær",
"testConnection": "Test tilkobling",
"deleteRouter": "Slett enhet",
"exportsLabel": "Eksporter",
"exportsLabel": "Exporter",
"exportsLabelHint": "Tekstbaserte øyeblikksbilder",
"binaryLabel": "Binære backuper",
"binaryLabelHint": "Gjenopprettingsbilder",
@@ -197,22 +197,22 @@
"lastError": "Siste feil",
"deviceStatusManualHint": "Automatiske kontroller bruker intervallet fra innstillingene. Manuell test er fortsatt tilgjengelig.",
"noConnection": "Ingen lagret tilkoblingstest ennå. Kjør en manuell test eller aktiver automatiske kontroller i innstillingene.",
"previewTitle": "Forhåndsvisning av eksport",
"previewSubtitle": "Sist åpnet eksportfil.",
"noPreview": "Velg en eksportfil for å se innholdet.",
"previewTitle": "Forhåndsvisning av export",
"previewSubtitle": "Sist åpnet exportfil.",
"noPreview": "Velg en exportfil for å se innholdet.",
"diffTitle": "Siste diff",
"diffSubtitle": "Forskjell mot nyeste eksport.",
"exportsTableTitle": "Eksporter",
"diffSubtitle": "Forskjell mot nyeste export.",
"exportsTableTitle": "Exporter",
"exportsTableSubtitle": "Lesbare RouterOS-øyeblikksbilder.",
"binaryTableTitle": "Binære backuper",
"binaryTableSubtitle": "Filer klare for gjenoppretting av enheten.",
"summaryKeyAccess": "med nøkkelbasert tilgang",
"summaryPasswordAccess": "med passordtilgang",
"previewModalHint": "Sist åpnet eksport er tilgjengelig i en modal.",
"previewModalHint": "Sist åpnet export er tilgjengelig i en modal.",
"openPreviewModal": "Åpne forhåndsvisning",
"diffModalHint": "Sist lastede diff er tilgjengelig i en modal.",
"openDiffModal": "Åpne diff",
"noDiff": "Velg en eksport og kjør diff for å se siste sammenligning.",
"noDiff": "Velg en export og kjør diff for å se siste sammenligning.",
"routeros": "RouterOS",
"switchos": "SwitchOS",
"deviceType": "Enhetstype",
@@ -246,7 +246,7 @@
"selected": "Valgte",
"selectedHint": "Klare for massehandlinger",
"batchTag": "Batch",
"exportsCard": "Eksporter",
"exportsCard": "Exporter",
"exportsHint": "Konfigurasjonsøyeblikksbilder",
"binaryCard": "Binære backuper",
"binaryHint": "Gjenopprettingsbilder",
@@ -269,17 +269,17 @@
"tableTitle": "Repositorytabell",
"tableSubtitle": "Artefakter tilgjengelige for nedlasting, e-post og gjenoppretting.",
"compareHint": "Velg nøyaktig to .rsc-filer for å sammenligne dem.",
"compareSelected": "Sammenlign valgte eksporter",
"compareSelected": "Sammenlign valgte exporter",
"fileColumn": "Fil",
"typeColumn": "Type",
"routerColumn": "Enhet",
"createdColumn": "Opprettet",
"actionsColumn": "Handlinger",
"checksum": "Checksum",
"exportType": "Eksport",
"exportType": "Export",
"binaryType": "Binær backup",
"previewDialogTitle": "Forhåndsvisning av eksport",
"diffDialogTitle": "Eksportdiff",
"previewDialogTitle": "Forhåndsvisning av export",
"diffDialogTitle": "Exportdiff",
"openHtmlDiff": "Åpne HTML-diff",
"sizeColumn": "Størrelse",
"compareColumn": "Sammenlign",
@@ -296,9 +296,9 @@
"minutesAgo": "{{value}} min siden",
"hoursAgo": "{{value}} t siden",
"daysAgo": "{{value}} d siden",
"compareTitle": "Sammenligning av eksporter",
"compareTitle": "Sammenligning av exporter",
"compareSubtitle": "Velg to .rsc-filer og start diff uten å grave gjennom hele tabellen.",
"exportPoolLabel": "eksporter klare for sammenligning",
"exportPoolLabel": "exporter klare for sammenligning",
"compareSelectionHint": "Velg en eldre og en nyere fil",
"compareReadySameRouter": "Par klart · ruter {{router}}",
"compareReadyMixedRouters": "Par klart · blandede rutere"
@@ -315,10 +315,10 @@
"logRetentionDays": "Dager for loggretensjon",
"retentionCron": "Retensjons-cron",
"automationTitle": "Automatisering",
"automationSubtitle": "Tidsplaner for eksport, binære jobber, retensjon og tilkoblingskontroller.",
"enableAutoExport": "Aktiver automatisk eksport",
"enableAutoExportHint": "Kjør eksportjobber med cron-reglene nedenfor.",
"exportCron": "Eksport-cron",
"automationSubtitle": "Tidsplaner for export, binære jobber, retensjon og tilkoblingskontroller.",
"enableAutoExport": "Aktiver automatisk export",
"enableAutoExportHint": "Kjør exportjobber med cron-reglene nedenfor.",
"exportCron": "Export-cron",
"binaryCron": "Binær-cron",
"notificationsTitle": "Varsler",
"notificationsSubtitle": "SMTP- og Pushover-konfigurasjon.",
@@ -362,12 +362,12 @@
"statusEnabled": "På",
"statusDisabled": "Av",
"noNextRun": "Ingen neste kjøring planlagt",
"exportScheduleTitle": "Teksteksporter",
"exportScheduleTitle": "Tekstexporter",
"binaryScheduleTitle": "Binære backuper",
"automationPlannerTitle": "Jobbplanlegger",
"automationPlannerSubtitle": "Hver jobb har sin egen plan, så eksport, binær backup og retensjon kan kjøre i separate vinduer.",
"automationPlannerSubtitle": "Hver jobb har sin egen plan, så export, binær backup og retensjon kan kjøre i separate vinduer.",
"automationPlannerTag": "Fleksible vinduer",
"exportPlannerHint": "Bestem når lesbare teksteksporter skal opprettes. Av-modus stopper automatiseringen helt.",
"exportPlannerHint": "Bestem når lesbare tekstexporter skal opprettes. Av-modus stopper automatiseringen helt.",
"binaryPlannerHint": "Separat vindu for fulle binære backuper når du trenger gjenopprettingspunkter.",
"retentionPlannerHint": "Retensjon rydder gamle backuper og logger etter sin egen plan.",
"connectionTestsTitle": "Automatiske tilkoblingstester",
@@ -387,7 +387,7 @@
"sshKeyClearNotice": "Den lagrede delte SSH-nøkkelen blir fjernet når du lagrer.",
"sshRevealPasswordRequired": "Skriv inn gjeldende passord for å vise SSH-nøkkelen.",
"sshRevealPasswordInvalid": "Passordet som ble brukt for å vise SSH-nøkkelen er ugyldig.",
"schedulerAutoExportLabel": "Automatiske eksporter",
"schedulerAutoExportLabel": "Automatiske exporter",
"schedulerBinaryLabel": "Binære backuper",
"schedulerRetentionLabel": "Retensjonsrydding",
"schedulerConnectionLabel": "Tilkoblingskontroller",
@@ -410,7 +410,7 @@
"logs": {
"title": "Logger",
"eyebrow": "driftshistorikk",
"subtitle": "Revider de siste eksport-, gjenopprettings- og vedlikeholdshendelsene.",
"subtitle": "Revider de siste export-, gjenopprettings- og vedlikeholdshendelsene.",
"daysPlaceholder": "dager",
"deleteOlderThan": "Slett eldre enn",
"entriesLabel": "Oppføringer",
@@ -430,19 +430,19 @@
"success": "Ferdig",
"info": "Info",
"error": "Feil",
"exportPreviewLoaded": "Forhåndsvisning av eksport lastet.",
"exportPreviewLoaded": "Forhåndsvisning av export lastet.",
"backupSentEmail": "Backup sendt på e-post.",
"binaryUploaded": "Binær backup lastet opp til ruteren.",
"backupDeleted": "Backup slettet.",
"selectedBackupsDeleted": "Valgte backuper slettet.",
"diffLoaded": "Diff lastet.",
"archivePrepared": "Arkiv klargjort.",
"exportedRouters": "Eksport fullført for {{count}} rutere.",
"exportedRouters": "Export fullført for {{count}} rutere.",
"binaryCompletedRouters": "Binær backup fullført for {{count}} rutere.",
"routerCreated": "Ruter opprettet.",
"routerUpdated": "Ruter oppdatert.",
"routerDeleted": "Ruter slettet.",
"exportCreated": "Eksport opprettet.",
"exportCreated": "Export opprettet.",
"binaryCreated": "Binær backup opprettet.",
"connectionSuccessful": "Tilkobling vellykket.",
"connectionFailed": "Tilkoblingstesten mislyktes.",
@@ -481,9 +481,9 @@
},
"diffConfigs": {
"title": "Konfig-diff",
"eyebrow": "eksportsammenligning",
"eyebrow": "exportsammenligning",
"subtitle": "Egen side for enklere sammenligning av RouterOS-konfigurasjoner.",
"exportsCard": "Eksporter for diff",
"exportsCard": "Exporter for diff",
"exportsCardHint": ".rsc-filer i valgt område",
"scopeCard": "Område",
"scopeCardHint": "Valgt ruter eller hele flåten",
@@ -495,8 +495,8 @@
"lastDiffCardHint": "Sist åpnet filpar",
"lastDiffTag": "Historikk",
"workspaceTitle": "Sammenligningsflate",
"workspaceSubtitle": "Velg ruter, sett eldre og nyere eksport, og åpne diff i modal.",
"tableTitle": "Eksporter å velge fra",
"workspaceSubtitle": "Velg ruter, sett eldre og nyere export, og åpne diff i modal.",
"tableTitle": "Exporter å velge fra",
"tableSubtitle": "Rask tildeling av eldre og nyere filer med forhåndsvisning på samme side.",
"waitingTag": "Venter",
"noneSelected": "Ingen"

View File

@@ -79,13 +79,13 @@
"dashboard": {
"title": "Dashboard",
"eyebrow": "strona główna / dashboard",
"subtitle": "Przegląd backupów, eksportów i aktywności operacyjnej w jednym miejscu.",
"exportAll": "Eksportuj wszystko",
"subtitle": "Przegląd backupów, ekspoexportówrtów i aktywności operacyjnej w jednym miejscu.",
"exportAll": "Exportuj wszystko",
"binaryAll": "Backup binarny",
"managedRouters": "Urządzenia",
"managedRoutersHint": "Wszystkie zarządzane urządzenia",
"inventoryTag": "Flota",
"exportsCard": "Eksporty",
"exportsCard": "Exporty",
"exportsHint": "Czytelne snapshoty konfiguracji",
"textTag": "Tekst",
"binaryCard": "Backupy binarne",
@@ -117,7 +117,7 @@
"weeklyActivityHint": "Nowe backupy z ostatniego tygodnia",
"busiestRouterLabel": "Najaktywniejsze urządzenie",
"routerSnapshotsHint": "{{count}} snapshotów w repozytorium",
"exportShareLabel": "Udział eksportów",
"exportShareLabel": "Udział exportów",
"activityTodayLabel": "Zdarzenia dzisiaj",
"noneLabel": "Brak",
"activityTodayHint": "Wpisy z bieżącego dnia",
@@ -125,7 +125,7 @@
"storageViewCapacity": "Pojemność",
"storageViewCapacityHint": "Widok dysku, zajętości repozytorium i wolnego miejsca w jednej skali.",
"storageViewMix": "Typy backupów",
"storageViewMixHint": "Podział wszystkich kopii na eksporty tekstowe i backupy binarne.",
"storageViewMixHint": "Podział wszystkich kopii na exporty tekstowe i backupy binarne.",
"storageViewActivity": "Aktywność 7 dni",
"storageViewActivityHint": "Liczba nowych backupów z ostatnich siedmiu dni.",
"storageViewRouters": "Top urządzenia",
@@ -173,16 +173,16 @@
"saveRouter": "Zapisz urządzenie",
"profileEyebrow": "profil urządzenia",
"detailSubtitle": "Operacje urządzenia i historia backupów",
"exportOne": "Eksport",
"exportOne": "Export",
"binaryOne": "Backup",
"testConnection": "Test połączenia",
"deleteRouter": "Usuń urządzenie",
"exportsLabel": "Eksporty",
"exportsLabel": "Exporty",
"exportsLabelHint": "Tekstowe snapshoty",
"binaryLabel": "Backupy binarne",
"binaryLabelHint": "Obrazy odzyskiwania",
"connectionLabel": "Połączenie",
"connectionLabelHint": "Status z ostatniego automatycznego lub ręcznego testu połączenia",
"connectionLabelHint": "Status automatycznego lub ręcznego testu połączenia",
"probeTag": "Test",
"accessTag": "Dostęp",
"sshUserHint": "Efektywny login urządzenia",
@@ -193,12 +193,12 @@
"version": "Wersja",
"uptime": "Uptime",
"noConnection": "Brak zapisanego testu połączenia. Uruchom test ręczny albo włącz testy automatyczne w ustawieniach.",
"previewTitle": "Podgląd eksportu",
"previewSubtitle": "Ostatnio otwarty plik eksportu.",
"noPreview": "Wybierz plik eksportu, aby zobaczyć jego zawartość.",
"previewTitle": "Podgląd exportu",
"previewSubtitle": "Ostatnio otwarty plik exportu.",
"noPreview": "Wybierz plik exportu, aby zobaczyć jego zawartość.",
"diffTitle": "Ostatni diff",
"diffSubtitle": "Różnice względem najnowszego eksportu.",
"exportsTableTitle": "Eksporty",
"diffSubtitle": "Różnice względem najnowszego exportu.",
"exportsTableTitle": "Exporty",
"exportsTableSubtitle": "Czytelne snapshoty RouterOS.",
"binaryTableTitle": "Backupy binarne",
"binaryTableSubtitle": "Pliki binarne i kopie SwitchOS.",
@@ -208,11 +208,11 @@
"lastTestAt": "Ostatni test",
"lastError": "Ostatni błąd",
"deviceStatusManualHint": "Automatyczne testy używają interwału z ustawień. Ręczny test nadal jest dostępny.",
"previewModalHint": "Ostatnio otwarty eksport jest dostępny w modalu.",
"previewModalHint": "Ostatnio otwarty export jest dostępny w modalu.",
"openPreviewModal": "Otwórz podgląd",
"diffModalHint": "Ostatnio załadowany diff jest dostępny w modalu.",
"openDiffModal": "Otwórz diff",
"noDiff": "Wybierz eksport i uruchom diff, aby zobaczyć ostatnie porównanie.",
"noDiff": "Wybierz export i uruchom diff, aby zobaczyć ostatnie porównanie.",
"routeros": "RouterOS",
"switchos": "SwitchOS",
"deviceType": "Typ urządzenia",
@@ -236,16 +236,16 @@
"switchDialogSubtitle": "Ustaw endpoint SwitchOS i opcjonalne poświadczenia lokalne lub domyślne z ustawień.",
"backupPolicy": "Kopie",
"backupSettingsTitle": "Ustawienia kopii",
"backupSettingsHint": "Steruj osobno eksportem, backupem binarnym i pingiem dla tego urządzenia.",
"backupSettingsHint": "Steruj osobno exportem, backupem binarnym i pingiem dla tego urządzenia.",
"deleteDevice": "Usuń urządzenie",
"disableAllBackupsHint": "Jednym przełącznikiem blokuje wszystkie typy kopii i automatycznie zaznacza opcje poniżej.",
"disableExportsHint": "Wyłącza tylko eksporty tekstowe i zostawia backup binarny bez zmian.",
"disableBinaryBackupsHint": "Wyłącza tylko backupy binarne i nie rusza eksportów tekstowych.",
"disableExportsHint": "Wyłącza tylko exporty tekstowe i zostawia backup binarny bez zmian.",
"disableBinaryBackupsHint": "Wyłącza tylko backupy binarne i nie rusza exportów tekstowych.",
"disablePing": "Wyłącz ping do urządzenia",
"disablePingHint": "Wyłącza sprawdzanie dostępności pingiem na liście urządzeń.",
"pingDisabled": "Ping wyłączony",
"disableAllBackups": "Wyłącz wszystkie kopie dla tego urządzenia",
"disableExports": "Wyłącz eksporty",
"disableExports": "Wyłącz exporty",
"disableBinaryBackups": "Wyłącz kopie binarne",
"backupsDisabledAll": "Wszystkie kopie wyłączone",
"ping": "Ping",
@@ -264,7 +264,7 @@
"selected": "Zaznaczone",
"selectedHint": "Gotowe do akcji zbiorczych",
"batchTag": "Batch",
"exportsCard": "Eksporty",
"exportsCard": "Exporty",
"exportsHint": "Snapshoty konfiguracji",
"binaryCard": "Backupy binarne",
"binaryHint": "Obrazy odzyskiwania",
@@ -287,17 +287,17 @@
"tableTitle": "Tabela repozytorium",
"tableSubtitle": "Artefakty dostępne do pobrania, wysyłki e-mail i przywracania.",
"compareHint": "Zaznacz dokładnie dwa pliki .rsc, aby je porównać.",
"compareSelected": "Porównaj zaznaczone eksporty",
"compareSelected": "Porównaj zaznaczone exporty",
"fileColumn": "Plik",
"typeColumn": "Typ",
"routerColumn": "Urządzenie",
"createdColumn": "Utworzono",
"actionsColumn": "Akcje",
"checksum": "Checksum",
"exportType": "Eksport",
"exportType": "Export",
"binaryType": "Backup binarny",
"previewDialogTitle": "Podgląd eksportu",
"diffDialogTitle": "Diff eksportów",
"previewDialogTitle": "Podgląd exportu",
"diffDialogTitle": "Diff exportów",
"openHtmlDiff": "Otwórz HTML diff",
"sizeColumn": "Rozmiar",
"compareColumn": "Porównanie",
@@ -314,9 +314,9 @@
"minutesAgo": "{{value}} min temu",
"hoursAgo": "{{value}} godz. temu",
"daysAgo": "{{value}} dni temu",
"compareTitle": "Porównanie eksportów",
"compareTitle": "Porównanie exportów",
"compareSubtitle": "Wybierz dwa pliki .rsc i uruchom diff bez przewijania całej tabeli.",
"exportPoolLabel": "eksportów gotowych do porównania",
"exportPoolLabel": "exportów gotowych do porównania",
"compareSelectionHint": "Wybierz starszy i nowszy plik",
"compareReadySameRouter": "Para gotowa · urządzenie {{router}}",
"compareReadyMixedRouters": "Para gotowa · różne urządzenia"
@@ -333,10 +333,10 @@
"logRetentionDays": "Dni retencji logów",
"retentionCron": "Cron retencji",
"automationTitle": "Automatyzacja",
"automationSubtitle": "Harmonogramy eksportów, backupów binarnych, retencji i testów połączeń.",
"enableAutoExport": "Włącz auto eksport",
"enableAutoExportHint": "Uruchamiaj zadania eksportu według reguł cron poniżej.",
"exportCron": "Cron eksportu",
"automationSubtitle": "Harmonogramy exportów, backupów binarnych, retencji i testów połączeń.",
"enableAutoExport": "Włącz auto export",
"enableAutoExportHint": "Uruchamiaj zadania ekspexport według reguł cron poniżej.",
"exportCron": "Cron exportów",
"binaryCron": "Cron backupu binarnego",
"notificationsTitle": "Powiadomienia",
"notificationsSubtitle": "Konfiguracja dostarczania SMTP i Pushover.",
@@ -379,12 +379,12 @@
"statusEnabled": "Aktywny",
"statusDisabled": "Wyłączony",
"noNextRun": "Brak zaplanowanego uruchomienia",
"exportScheduleTitle": "Eksporty tekstowe",
"exportScheduleTitle": "Exporty tekstowe",
"binaryScheduleTitle": "Backupy binarne",
"automationPlannerTitle": "Planer zadań",
"automationPlannerSubtitle": "Każde zadanie ma osobny harmonogram, więc możesz osobno ustawić eksport, backup binarny i retencję.",
"automationPlannerSubtitle": "Każde zadanie ma osobny harmonogram, więc możesz osobno ustawić export, backup binarny i retencję.",
"automationPlannerTag": "Elastyczne okna",
"exportPlannerHint": "Ustaw kiedy mają powstawać czytelne eksporty tekstowe. Tryb Wyłączony całkowicie zatrzymuje automat.",
"exportPlannerHint": "Ustaw kiedy mają powstawać czytelne exporty tekstowe. Tryb Wyłączony całkowicie zatrzymuje automat.",
"binaryPlannerHint": "Oddzielne okno dla pełnych backupów binarnych, gdy potrzebujesz punktów odtworzenia.",
"retentionPlannerHint": "Retencja czyści stare backupy i logi według osobnego planu.",
"connectionTestsTitle": "Automatyczne testy połączeń",
@@ -405,7 +405,7 @@
"globalSshPrivateKeyHiddenPlaceholder": "Zapisany klucz jest ukryty. Wpisz hasło powyżej, aby go zobaczyć, albo wklej tutaj nowy klucz, aby go podmienić.",
"sshRevealPasswordRequired": "Wpisz aktualne hasło, aby podejrzeć klucz SSH.",
"sshRevealPasswordInvalid": "Hasło użyte do podejrzenia klucza SSH jest nieprawidłowe.",
"schedulerAutoExportLabel": "Automatyczne eksporty",
"schedulerAutoExportLabel": "Automatyczne exporty",
"schedulerBinaryLabel": "Backupy binarne",
"schedulerRetentionLabel": "Czyszczenie retencji",
"schedulerConnectionLabel": "Testy połączeń",
@@ -428,7 +428,7 @@
"logs": {
"title": "Logi",
"eyebrow": "historia operacyjna",
"subtitle": "Przeglądaj ostatnie zdarzenia eksportu, przywracania i utrzymania.",
"subtitle": "Przeglądaj ostatnie zdarzenia exportu, przywracania i utrzymania.",
"daysPlaceholder": "dni",
"deleteOlderThan": "Usuń starsze niż",
"entriesLabel": "Wpisy",
@@ -448,19 +448,19 @@
"success": "Gotowe",
"info": "Informacja",
"error": "Błąd",
"exportPreviewLoaded": "Załadowano podgląd eksportu.",
"exportPreviewLoaded": "Załadowano podgląd exportu.",
"backupSentEmail": "Backup został wysłany e-mailem.",
"binaryUploaded": "Backup binarny został wysłany na urządzenie.",
"backupDeleted": "Backup został usunięty.",
"selectedBackupsDeleted": "Wybrane backupy zostały usunięte.",
"diffLoaded": "Załadowano diff.",
"archivePrepared": "Archiwum zostało przygotowane.",
"exportedRouters": "Wykonano eksport dla {{count}} urządzeń.",
"exportedRouters": "Wykonano export dla {{count}} urządzeń.",
"binaryCompletedRouters": "Wykonano backup binarny dla {{count}} urządzeń.",
"routerCreated": "Urządzenie zostało dodane.",
"routerUpdated": "Urządzenie zostało zaktualizowane.",
"routerDeleted": "Urządzenie zostało usunięte.",
"exportCreated": "Eksport został utworzony.",
"exportCreated": "Export został utworzony.",
"binaryCreated": "Backup binarny został utworzony.",
"connectionSuccessful": "Połączenie zakończone powodzeniem.",
"settingsSaved": "Ustawienia zostały zapisane.",
@@ -499,9 +499,9 @@
},
"diffConfigs": {
"title": "Diff konfiguracji",
"eyebrow": "porównanie eksportów",
"eyebrow": "porównanie exportów",
"subtitle": "Dedykowany widok do wygodnego porównywania konfiguracji RouterOS.",
"exportsCard": "Eksporty do diffu",
"exportsCard": "Exporty do diffu",
"exportsCardHint": "Pliki .rsc w bieżącym zakresie",
"scopeCard": "Zakres",
"scopeCardHint": "Wybrane urządzenie lub cała flota",
@@ -513,8 +513,8 @@
"lastDiffCardHint": "Ostatnio otwarta para plików",
"lastDiffTag": "Historia",
"workspaceTitle": "Stanowisko porównawcze",
"workspaceSubtitle": "Wybierz urządzenie, ustaw starszy i nowszy eksport, a potem otwórz diff w modalu.",
"tableTitle": "Eksporty do wyboru",
"workspaceSubtitle": "Wybierz urządzenie, ustaw starszy i nowszy export, a potem otwórz diff w modalu.",
"tableTitle": "Eporty do wyboru",
"tableSubtitle": "Szybkie przypisanie starszego i nowszego pliku oraz podgląd bez opuszczania strony.",
"waitingTag": "Czeka",
"noneSelected": "Brak"

View File

@@ -3467,3 +3467,23 @@ body.dark-theme .device-toggle.is-active{background:linear-gradient(135deg,color
.device-toggle{grid-template-columns:auto auto auto minmax(0,1fr);align-items:start;}
.device-toggle__state{grid-column:2 / -1;justify-self:start;}
}
.router-header-actions--mobile{display:none;}
.mobile-actions-menu{position:relative;}
.mobile-actions-menu summary{display:inline-flex;align-items:center;gap:10px;list-style:none;cursor:pointer;padding:10px 14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--border-color) 82%, transparent);background:color-mix(in srgb,var(--surface-2) 92%, transparent);color:var(--text-main);font-weight:700;box-shadow:var(--shadow-sm);}
.mobile-actions-menu summary::-webkit-details-marker{display:none;}
.mobile-actions-menu[open] summary{border-color:color-mix(in srgb,var(--accent) 36%, var(--border-color));}
.mobile-actions-menu__list{position:absolute;right:0;top:calc(100% + 10px);z-index:20;display:grid;gap:10px;min-inline-size:min(320px,calc(100vw - 32px));padding:12px;border-radius:18px;border:1px solid color-mix(in srgb,var(--border-color) 82%, transparent);background:color-mix(in srgb,var(--surface-1) 96%, transparent);box-shadow:var(--shadow-lg);backdrop-filter:blur(14px);}
.mobile-actions-menu__list .p-button{width:100%;justify-content:flex-start;}
.settings-device-toggles{margin-bottom:18px;}
.settings-device-toggles .device-toggle{grid-template-columns:auto auto auto minmax(0,1fr);}
.settings-device-toggles .device-toggle__content{padding-right:0;}
@media (max-width: 768px){
.router-header-actions--desktop{display:none;}
.router-header-actions--mobile{display:block;width:100%;}
.mobile-actions-menu{width:100%;}
.mobile-actions-menu summary{margin-left:auto;}
.mobile-actions-menu__list{position:static;right:auto;top:auto;min-inline-size:0;width:100%;margin-top:10px;}
}