diff --git a/src/app/constants/invalid-date.ts b/src/app/constants/invalid-date.ts new file mode 100644 index 00000000000..94b2ff6bfd5 --- /dev/null +++ b/src/app/constants/invalid-date.ts @@ -0,0 +1,3 @@ +import { marker as T } from '@biesbjerg/ngx-translate-extract-marker'; + +export const invalidDate = T('Invalid Date'); diff --git a/src/app/enums/dataset.enum.ts b/src/app/enums/dataset.enum.ts index 4d2d8435177..bfb2e99f205 100644 --- a/src/app/enums/dataset.enum.ts +++ b/src/app/enums/dataset.enum.ts @@ -104,9 +104,3 @@ export const datasetPresetLabels = new Map([ [DatasetPreset.Apps, T('Apps')], [DatasetPreset.Multiprotocol, T('Multiprotocol')], ]); - -export enum DatasetXattr { - Inherit = 'INHERIT', - On = 'ON', - Sa = 'SA', -} diff --git a/src/app/helpers/operators/options.operators.ts b/src/app/helpers/operators/options.operators.ts index 0414e6c7639..e3233c046a0 100644 --- a/src/app/helpers/operators/options.operators.ts +++ b/src/app/helpers/operators/options.operators.ts @@ -10,7 +10,9 @@ import { MapOption, Option } from 'app/interfaces/option.interface'; */ export function choicesToOptions(): OperatorFunction { return map((choices) => { - return Object.entries(choices).map(([value, label]) => ({ label, value })); + return Object.entries(choices).map( + ([value, label]) => ({ label, value }), + ); }); } diff --git a/src/app/interfaces/api/api-call-directory.interface.ts b/src/app/interfaces/api/api-call-directory.interface.ts index 97a62787411..b2814a1d22f 100644 --- a/src/app/interfaces/api/api-call-directory.interface.ts +++ b/src/app/interfaces/api/api-call-directory.interface.ts @@ -877,6 +877,7 @@ export interface ApiCallDirectory { 'vm.device.delete': { params: [number, VmDeviceDelete?]; response: boolean }; 'vm.device.disk_choices': { params: void; response: Choices }; 'vm.device.get_pci_ids_for_gpu_isolation': { params: [string]; response: string[] }; + 'system.advanced.get_gpu_pci_choices': { params: void; response: Choices }; 'vm.device.nic_attach_choices': { params: void; response: Choices }; 'vm.device.passthrough_device_choices': { params: void; response: Record }; 'vm.device.query': { params: QueryParams; response: VmDevice[] }; diff --git a/src/app/interfaces/dataset.interface.ts b/src/app/interfaces/dataset.interface.ts index ef028a4b7d2..0c78c3e0280 100644 --- a/src/app/interfaces/dataset.interface.ts +++ b/src/app/interfaces/dataset.interface.ts @@ -10,7 +10,6 @@ import { DatasetSync, DatasetType, DatasetVolumeBlockSize, - DatasetXattr, } from 'app/enums/dataset.enum'; import { DeduplicationSetting } from 'app/enums/deduplication-setting.enum'; import { EncryptionKeyFormat } from 'app/enums/encryption-key-format.enum'; @@ -60,7 +59,6 @@ export interface Dataset { share_type: ZfsProperty; special_small_block_size: ZfsProperty; sync: ZfsProperty; - xattr: ZfsProperty; checksum: ZfsProperty; // Absent if extra.retrieve_children is false @@ -118,7 +116,6 @@ export interface DatasetCreate { aclmode?: AclMode; acltype?: DatasetAclType; share_type?: DatasetPreset; - xattr?: DatasetXattr; encryption_options?: { generate_key?: boolean; pbkdf2iters?: number; @@ -159,7 +156,6 @@ export interface DatasetUpdate { recordsize?: WithInherit; aclmode?: AclMode; acltype?: DatasetAclType; - xattr?: DatasetXattr; user_properties?: Record; create_ancestors?: boolean; user_properties_update?: { key: string; value: string; remove?: boolean }[]; diff --git a/src/app/interfaces/smart-test-progress-ui.interface.ts b/src/app/interfaces/smart-test-progress-ui.interface.ts new file mode 100644 index 00000000000..b7f720a786d --- /dev/null +++ b/src/app/interfaces/smart-test-progress-ui.interface.ts @@ -0,0 +1,12 @@ +import { SmartTestType } from 'app/enums/smart-test-type.enum'; +import { ApiTimestamp } from 'app/interfaces/api-date.interface'; + +export interface SmartTestProgressUi { + diskName: string; + diskIdentifier: string; + wsError: unknown; + progressPercentage: number; + finished: boolean; + esimatedEnd: ApiTimestamp; + type: SmartTestType; +} diff --git a/src/app/interfaces/smart-test-progress.interface.ts b/src/app/interfaces/smart-test-progress.interface.ts index fae1fc65ae8..397a3a8aba6 100644 --- a/src/app/interfaces/smart-test-progress.interface.ts +++ b/src/app/interfaces/smart-test-progress.interface.ts @@ -1,5 +1,3 @@ export interface SmartTestProgressUpdate { - progress: { - percent: number; - }; + progress: number; } diff --git a/src/app/interfaces/storage.interface.ts b/src/app/interfaces/storage.interface.ts index a5209794459..318a1733fb1 100644 --- a/src/app/interfaces/storage.interface.ts +++ b/src/app/interfaces/storage.interface.ts @@ -120,7 +120,6 @@ export interface ZfsProperties { version: ZfsProperty; volsize: ZfsProperty; written: ZfsProperty; - xattr: ZfsProperty; } export interface TemperatureAgg { diff --git a/src/app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component.html b/src/app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component.html index 644787db15c..b6418bf5852 100644 --- a/src/app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component.html +++ b/src/app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component.html @@ -1,4 +1,5 @@ {{ date }} diff --git a/src/app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component.ts b/src/app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component.ts index 562239d70be..3816c40536b 100644 --- a/src/app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component.ts +++ b/src/app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component.ts @@ -3,6 +3,7 @@ import { MatTooltip } from '@angular/material/tooltip'; import { TranslateService } from '@ngx-translate/core'; import { isValid } from 'date-fns'; import { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz'; +import { invalidDate } from 'app/constants/invalid-date'; import { formatDistanceToNowShortened } from 'app/helpers/format-distance-to-now-shortened'; import { ColumnComponent, Column } from 'app/modules/ix-table/interfaces/column-component.class'; import { FormatDateTimePipe } from 'app/modules/pipes/format-date-time/format-datetime.pipe'; @@ -41,6 +42,10 @@ export class IxCellRelativeDateComponent extends ColumnComponent { return this.machineTime < this.value || this.machineTime > this.value; } + get isInvalidDate(): boolean { + return this.translate.instant(this.date) === this.translate.instant(invalidDate); + } + get date(): string { if (!this.value) { return this.translate.instant('N/A'); diff --git a/src/app/modules/pipes/format-date-time/format-datetime.pipe.ts b/src/app/modules/pipes/format-date-time/format-datetime.pipe.ts index f90f0fcc9a1..038c937461b 100644 --- a/src/app/modules/pipes/format-date-time/format-datetime.pipe.ts +++ b/src/app/modules/pipes/format-date-time/format-datetime.pipe.ts @@ -3,8 +3,10 @@ import { } from '@angular/core'; import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy'; import { Actions, ofType } from '@ngrx/effects'; +import { TranslateService } from '@ngx-translate/core'; import { format } from 'date-fns-tz'; import { distinctUntilChanged } from 'rxjs'; +import { invalidDate } from 'app/constants/invalid-date'; import { WINDOW } from 'app/helpers/window.helper'; import { localizationFormSubmitted } from 'app/store/preferences/preferences.actions'; @@ -21,6 +23,7 @@ export class FormatDateTimePipe implements PipeTransform { constructor( private actions$: Actions, private cdr: ChangeDetectorRef, + private translate: TranslateService, @Inject(WINDOW) private window: Window, ) { this.checkFormatsFromLocalStorage(); @@ -89,7 +92,7 @@ export class FormatDateTimePipe implements PipeTransform { } return format(localDate, `${this.dateFormat} ${this.timeFormat}`); } catch { - return 'Invalid date'; + return this.translate.instant(invalidDate); } } } diff --git a/src/app/pages/data-protection/cloud-backup/cloud-backup-card/cloud-backup-card.component.spec.ts b/src/app/pages/data-protection/cloud-backup/cloud-backup-card/cloud-backup-card.component.spec.ts index 219a7b42d49..ffe50e7fbac 100644 --- a/src/app/pages/data-protection/cloud-backup/cloud-backup-card/cloud-backup-card.component.spec.ts +++ b/src/app/pages/data-protection/cloud-backup/cloud-backup-card/cloud-backup-card.component.spec.ts @@ -23,6 +23,8 @@ import { } from 'app/pages/data-protection/cloud-backup/cloud-backup-form/cloud-backup-form.component'; import { IxChainedSlideInService } from 'app/services/ix-chained-slide-in.service'; import { WebSocketService } from 'app/services/ws.service'; +import { selectPreferences } from 'app/store/preferences/preferences.selectors'; +import { selectSystemConfigState } from 'app/store/system-config/system-config.selectors'; describe('CloudBackupCardComponent', () => { let spectator: Spectator; @@ -68,6 +70,14 @@ describe('CloudBackupCardComponent', () => { }), provideMockStore({ selectors: [ + { + selector: selectSystemConfigState, + value: {}, + }, + { + selector: selectPreferences, + value: {}, + }, { selector: selectJobs, value: [{ diff --git a/src/app/pages/data-protection/cloud-backup/cloud-backup-card/cloud-backup-card.component.ts b/src/app/pages/data-protection/cloud-backup/cloud-backup-card/cloud-backup-card.component.ts index ea8c078f1c9..2b92191c96a 100644 --- a/src/app/pages/data-protection/cloud-backup/cloud-backup-card/cloud-backup-card.component.ts +++ b/src/app/pages/data-protection/cloud-backup/cloud-backup-card/cloud-backup-card.component.ts @@ -14,7 +14,6 @@ import { import { RequiresRolesDirective } from 'app/directives/requires-roles/requires-roles.directive'; import { JobState } from 'app/enums/job-state.enum'; import { Role } from 'app/enums/role.enum'; -import { formatDistanceToNowShortened } from 'app/helpers/format-distance-to-now-shortened'; import { tapOnce } from 'app/helpers/operators/tap-once.operator'; import { WINDOW } from 'app/helpers/window.helper'; import { CloudBackup, CloudBackupUpdate } from 'app/interfaces/cloud-backup.interface'; @@ -26,6 +25,7 @@ import { IxIconComponent } from 'app/modules/ix-icon/ix-icon.component'; import { AsyncDataProvider } from 'app/modules/ix-table/classes/async-data-provider/async-data-provider'; import { IxTableComponent } from 'app/modules/ix-table/components/ix-table/ix-table.component'; import { actionsColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-actions/ix-cell-actions.component'; +import { relativeDateColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component'; import { stateButtonColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-state-button/ix-cell-state-button.component'; import { textColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-text/ix-cell-text.component'; import { @@ -96,14 +96,9 @@ export class CloudBackupCardComponent implements OnInit { getJob: (row) => row.job, cssClass: 'state-button', }), - textColumn({ + relativeDateColumn({ title: this.translate.instant('Last Run'), - getValue: (row) => { - if (row.job?.time_finished) { - return formatDistanceToNowShortened(row.job?.time_finished.$date); - } - return this.translate.instant('N/A'); - }, + getValue: (row) => row.job?.time_finished?.$date, }), actionsColumn({ cssClass: 'wide-actions', diff --git a/src/app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component.spec.ts b/src/app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component.spec.ts index de03de32009..d3d5883a5ad 100644 --- a/src/app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component.spec.ts +++ b/src/app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component.spec.ts @@ -26,7 +26,8 @@ import { import { CloudBackupListComponent } from 'app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component'; import { IxChainedSlideInService } from 'app/services/ix-chained-slide-in.service'; import { WebSocketService } from 'app/services/ws.service'; -import { selectAdvancedConfig, selectSystemConfigState } from 'app/store/system-config/system-config.selectors'; +import { selectPreferences } from 'app/store/preferences/preferences.selectors'; +import { selectSystemConfigState } from 'app/store/system-config/system-config.selectors'; describe('CloudBackupListComponent', () => { let spectator: Spectator; @@ -84,7 +85,7 @@ describe('CloudBackupListComponent', () => { value: {}, }, { - selector: selectAdvancedConfig, + selector: selectPreferences, value: {}, }, { diff --git a/src/app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component.ts b/src/app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component.ts index f225f318f86..db28da61b17 100644 --- a/src/app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component.ts +++ b/src/app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component.ts @@ -15,7 +15,6 @@ import { RequiresRolesDirective } from 'app/directives/requires-roles/requires-r import { UiSearchDirective } from 'app/directives/ui-search.directive'; import { JobState } from 'app/enums/job-state.enum'; import { Role } from 'app/enums/role.enum'; -import { formatDistanceToNowShortened } from 'app/helpers/format-distance-to-now-shortened'; import { tapOnce } from 'app/helpers/operators/tap-once.operator'; import { WINDOW } from 'app/helpers/window.helper'; import { CloudBackup, CloudBackupUpdate } from 'app/interfaces/cloud-backup.interface'; @@ -27,6 +26,7 @@ import { iconMarker } from 'app/modules/ix-icon/icon-marker.util'; import { AsyncDataProvider } from 'app/modules/ix-table/classes/async-data-provider/async-data-provider'; import { IxTableComponent } from 'app/modules/ix-table/components/ix-table/ix-table.component'; import { actionsColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-actions/ix-cell-actions.component'; +import { relativeDateColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component'; import { stateButtonColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-state-button/ix-cell-state-button.component'; import { textColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-text/ix-cell-text.component'; import { @@ -106,14 +106,9 @@ export class CloudBackupListComponent implements OnInit { getJob: (row) => row.job, cssClass: 'state-button', }), - textColumn({ + relativeDateColumn({ title: this.translate.instant('Last Run'), - getValue: (row) => { - if (row.job?.time_finished) { - return formatDistanceToNowShortened(row.job?.time_finished.$date); - } - return this.translate.instant('N/A'); - }, + getValue: (row) => row.job?.time_finished?.$date, }), actionsColumn({ cssClass: 'wide-actions', diff --git a/src/app/pages/data-protection/cloudsync/cloudsync-list/cloudsync-list.component.ts b/src/app/pages/data-protection/cloudsync/cloudsync-list/cloudsync-list.component.ts index 7e60f7e0f3b..5c21e1b03f2 100644 --- a/src/app/pages/data-protection/cloudsync/cloudsync-list/cloudsync-list.component.ts +++ b/src/app/pages/data-protection/cloudsync/cloudsync-list/cloudsync-list.component.ts @@ -14,7 +14,6 @@ import { RequiresRolesDirective } from 'app/directives/requires-roles/requires-r import { UiSearchDirective } from 'app/directives/ui-search.directive'; import { JobState } from 'app/enums/job-state.enum'; import { Role } from 'app/enums/role.enum'; -import { formatDistanceToNowShortened } from 'app/helpers/format-distance-to-now-shortened'; import { tapOnce } from 'app/helpers/operators/tap-once.operator'; import { helptextCloudSync } from 'app/helptext/data-protection/cloudsync/cloudsync'; import { CloudSyncTask, CloudSyncTaskUi } from 'app/interfaces/cloud-sync-task.interface'; @@ -25,6 +24,7 @@ import { SearchInput1Component } from 'app/modules/forms/search-input1/search-in import { IxIconComponent } from 'app/modules/ix-icon/ix-icon.component'; import { AsyncDataProvider } from 'app/modules/ix-table/classes/async-data-provider/async-data-provider'; import { IxTableComponent } from 'app/modules/ix-table/components/ix-table/ix-table.component'; +import { relativeDateColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component'; import { stateButtonColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-state-button/ix-cell-state-button.component'; import { textColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-text/ix-cell-text.component'; import { yesNoColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-yes-no/ix-cell-yes-no.component'; @@ -124,27 +124,20 @@ export class CloudSyncListComponent implements OnInit { propertyName: 'frequency', getValue: (task) => this.taskService.getTaskCronDescription(scheduleToCrontab(task.schedule)), }), - textColumn({ + relativeDateColumn({ title: this.translate.instant('Next Run'), hidden: true, getValue: (task) => { if (task.enabled) { - return task.schedule - ? formatDistanceToNowShortened(this.taskService.getTaskNextTime(scheduleToCrontab(task.schedule))) - : this.translate.instant('N/A'); + return this.taskService.getTaskNextTime(scheduleToCrontab(task.schedule)); } return this.translate.instant('Disabled'); }, }), - textColumn({ + relativeDateColumn({ title: this.translate.instant('Last Run'), hidden: true, - getValue: (task) => { - if (task.job?.time_finished?.$date) { - return formatDistanceToNowShortened(task.job?.time_finished?.$date); - } - return this.translate.instant('N/A'); - }, + getValue: (task) => task.job?.time_finished?.$date, }), stateButtonColumn({ title: this.translate.instant('State'), diff --git a/src/app/pages/data-protection/replication/replication-list/replication-list.component.spec.ts b/src/app/pages/data-protection/replication/replication-list/replication-list.component.spec.ts index 837494e7579..62ff208be95 100644 --- a/src/app/pages/data-protection/replication/replication-list/replication-list.component.spec.ts +++ b/src/app/pages/data-protection/replication/replication-list/replication-list.component.spec.ts @@ -39,6 +39,7 @@ import { ReplicationRestoreDialogComponent } from 'app/pages/data-protection/rep import { DownloadService } from 'app/services/download.service'; import { IxChainedSlideInService } from 'app/services/ix-chained-slide-in.service'; import { WebSocketService } from 'app/services/ws.service'; +import { selectPreferences } from 'app/store/preferences/preferences.selectors'; import { selectSystemConfigState } from 'app/store/system-config/system-config.selectors'; const tasks = [{ @@ -135,6 +136,10 @@ describe('ReplicationListComponent', () => { selector: selectSystemConfigState, value: {}, }, + { + selector: selectPreferences, + value: {}, + }, ], }), mockWebSocket([ diff --git a/src/app/pages/data-protection/replication/replication-list/replication-list.component.ts b/src/app/pages/data-protection/replication/replication-list/replication-list.component.ts index ab734e26c92..61afabb8613 100644 --- a/src/app/pages/data-protection/replication/replication-list/replication-list.component.ts +++ b/src/app/pages/data-protection/replication/replication-list/replication-list.component.ts @@ -12,7 +12,6 @@ import { RequiresRolesDirective } from 'app/directives/requires-roles/requires-r import { UiSearchDirective } from 'app/directives/ui-search.directive'; import { JobState } from 'app/enums/job-state.enum'; import { Role } from 'app/enums/role.enum'; -import { formatDistanceToNowShortened } from 'app/helpers/format-distance-to-now-shortened'; import { Job } from 'app/interfaces/job.interface'; import { ReplicationTask } from 'app/interfaces/replication-task.interface'; import { DialogService } from 'app/modules/dialog/dialog.service'; @@ -21,6 +20,7 @@ import { SearchInput1Component } from 'app/modules/forms/search-input1/search-in import { IxIconComponent } from 'app/modules/ix-icon/ix-icon.component'; import { AsyncDataProvider } from 'app/modules/ix-table/classes/async-data-provider/async-data-provider'; import { IxTableComponent } from 'app/modules/ix-table/components/ix-table/ix-table.component'; +import { relativeDateColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component'; import { stateButtonColumn, } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-state-button/ix-cell-state-button.component'; @@ -137,14 +137,9 @@ export class ReplicationListComponent implements OnInit { propertyName: 'auto', hidden: true, }), - textColumn({ + relativeDateColumn({ title: this.translate.instant('Last Run'), - getValue: (row) => { - if (row.state?.datetime?.$date) { - return formatDistanceToNowShortened(row.state?.datetime?.$date); - } - return this.translate.instant('N/A'); - }, + getValue: (row) => row.state?.datetime?.$date, }), stateButtonColumn({ title: this.translate.instant('State'), diff --git a/src/app/pages/data-protection/smart-task/smart-task-card/smart-task-card.component.ts b/src/app/pages/data-protection/smart-task/smart-task-card/smart-task-card.component.ts index 6f0e51430ae..21f65f04ac5 100644 --- a/src/app/pages/data-protection/smart-task/smart-task-card/smart-task-card.component.ts +++ b/src/app/pages/data-protection/smart-task/smart-task-card/smart-task-card.component.ts @@ -87,7 +87,7 @@ export class SmartTaskCardComponent implements OnInit { }), relativeDateColumn({ title: this.translate.instant(helptextSmart.smartlist_column_next_run), - getValue: (row) => this.taskService.getTaskNextTime(row.cron_schedule) as unknown, + getValue: (row) => this.taskService.getTaskNextTime(row.cron_schedule), }), actionsColumn({ actions: [ diff --git a/src/app/pages/data-protection/smart-task/smart-task-list/smart-task-list.component.ts b/src/app/pages/data-protection/smart-task/smart-task-list/smart-task-list.component.ts index 6fe540512dc..913e3741770 100644 --- a/src/app/pages/data-protection/smart-task/smart-task-list/smart-task-list.component.ts +++ b/src/app/pages/data-protection/smart-task/smart-task-list/smart-task-list.component.ts @@ -93,7 +93,7 @@ export class SmartTaskListComponent implements OnInit { relativeDateColumn({ title: this.translate.instant(helptextSmart.smartlist_column_next_run), propertyName: 'next_run', - getValue: (row) => this.taskService.getTaskNextTime(row.cron_schedule) as unknown, + getValue: (row) => this.taskService.getTaskNextTime(row.cron_schedule), }), actionsColumn({ actions: [ diff --git a/src/app/pages/data-protection/snapshot-task/snapshot-task-list/snapshot-task-list.component.ts b/src/app/pages/data-protection/snapshot-task/snapshot-task-list/snapshot-task-list.component.ts index 1f90f2ef140..e5b465a4184 100644 --- a/src/app/pages/data-protection/snapshot-task/snapshot-task-list/snapshot-task-list.component.ts +++ b/src/app/pages/data-protection/snapshot-task/snapshot-task-list/snapshot-task-list.component.ts @@ -12,7 +12,6 @@ import { import { RequiresRolesDirective } from 'app/directives/requires-roles/requires-roles.directive'; import { UiSearchDirective } from 'app/directives/ui-search.directive'; import { Role } from 'app/enums/role.enum'; -import { formatDistanceToNowShortened } from 'app/helpers/format-distance-to-now-shortened'; import { PeriodicSnapshotTaskUi } from 'app/interfaces/periodic-snapshot-task.interface'; import { DialogService } from 'app/modules/dialog/dialog.service'; import { EmptyService } from 'app/modules/empty/empty.service'; @@ -20,6 +19,7 @@ import { SearchInput1Component } from 'app/modules/forms/search-input1/search-in import { IxIconComponent } from 'app/modules/ix-icon/ix-icon.component'; import { AsyncDataProvider } from 'app/modules/ix-table/classes/async-data-provider/async-data-provider'; import { IxTableComponent } from 'app/modules/ix-table/components/ix-table/ix-table.component'; +import { relativeDateColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component'; import { stateButtonColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-state-button/ix-cell-state-button.component'; import { textColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-text/ix-cell-text.component'; import { IxTableBodyComponent } from 'app/modules/ix-table/components/ix-table-body/ix-table-body.component'; @@ -110,27 +110,20 @@ export class SnapshotTaskListComponent implements OnInit { propertyName: 'frequency', getValue: (row) => this.taskService.getTaskCronDescription(scheduleToCrontab(row.schedule)), }), - textColumn({ + relativeDateColumn({ hidden: true, title: this.translate.instant('Next Run'), getValue: (task) => { if (task.enabled) { - return task.schedule - ? formatDistanceToNowShortened(this.taskService.getTaskNextTime(scheduleToCrontab(task.schedule))) - : this.translate.instant('N/A'); + return this.taskService.getTaskNextTime(scheduleToCrontab(task.schedule)); } return this.translate.instant('Disabled'); }, }), - textColumn({ + relativeDateColumn({ title: this.translate.instant('Last Run'), hidden: true, - getValue: (row) => { - if (row.state?.datetime?.$date) { - return formatDistanceToNowShortened(row.state?.datetime?.$date); - } - return this.translate.instant('N/A'); - }, + getValue: (row) => row.state?.datetime?.$date, }), textColumn({ title: this.translate.instant('Keep snapshot for'), diff --git a/src/app/pages/reports-dashboard/components/report/report.component.ts b/src/app/pages/reports-dashboard/components/report/report.component.ts index 7f221693d42..010dd6b24de 100644 --- a/src/app/pages/reports-dashboard/components/report/report.component.ts +++ b/src/app/pages/reports-dashboard/components/report/report.component.ts @@ -20,6 +20,7 @@ import { import { delay, distinctUntilChanged, filter, skipWhile, throttleTime, } from 'rxjs/operators'; +import { invalidDate } from 'app/constants/invalid-date'; import { oneDayMillis, oneHourMillis } from 'app/constants/time.constant'; import { toggleMenuDuration } from 'app/constants/toggle-menu-duration'; import { EmptyType } from 'app/enums/empty-type.enum'; @@ -240,7 +241,7 @@ export class ReportComponent implements OnInit, OnChanges { formatTime(stamp: number): string { const result = this.formatDateTimePipe.transform(new Date(stamp)); - return result.toLowerCase() !== 'invalid date' ? result : null; + return result.toLowerCase() !== invalidDate.toLowerCase() ? result : null; } onZoomChange(interval: number[]): void { diff --git a/src/app/pages/storage/modules/devices/components/smart-info-card/smart-info-card.component.spec.ts b/src/app/pages/storage/modules/devices/components/smart-info-card/smart-info-card.component.spec.ts index 5b5bdf24624..a6b205dfef0 100644 --- a/src/app/pages/storage/modules/devices/components/smart-info-card/smart-info-card.component.spec.ts +++ b/src/app/pages/storage/modules/devices/components/smart-info-card/smart-info-card.component.spec.ts @@ -117,6 +117,7 @@ describe('SmartInfoCardComponent', () => { selectedDisks: [disk], diskIdsWithSmart: ['disk-1'], }, + width: '600px', }, ); }); diff --git a/src/app/pages/storage/modules/devices/components/smart-info-card/smart-info-card.component.ts b/src/app/pages/storage/modules/devices/components/smart-info-card/smart-info-card.component.ts index 6688c8f3ef7..416bcd4395f 100644 --- a/src/app/pages/storage/modules/devices/components/smart-info-card/smart-info-card.component.ts +++ b/src/app/pages/storage/modules/devices/components/smart-info-card/smart-info-card.component.ts @@ -89,6 +89,7 @@ export class SmartInfoCardComponent implements OnChanges { selectedDisks: [disk], diskIdsWithSmart: [disk.identifier], } as ManualTestDialogParams, + width: '600px', }); testDialog .afterClosed() diff --git a/src/app/pages/storage/modules/disks/components/disk-list/disk-list.component.spec.ts b/src/app/pages/storage/modules/disks/components/disk-list/disk-list.component.spec.ts index df1fb4c697f..a06441da72e 100644 --- a/src/app/pages/storage/modules/disks/components/disk-list/disk-list.component.spec.ts +++ b/src/app/pages/storage/modules/disks/components/disk-list/disk-list.component.spec.ts @@ -182,6 +182,7 @@ describe('DiskListComponent', () => { selectedDisks: [fakeDisk], diskIdsWithSmart: [fakeDisk.identifier], }, + width: '600px', }); }); diff --git a/src/app/pages/storage/modules/disks/components/disk-list/disk-list.component.ts b/src/app/pages/storage/modules/disks/components/disk-list/disk-list.component.ts index 590176a753d..a0c0153f387 100644 --- a/src/app/pages/storage/modules/disks/components/disk-list/disk-list.component.ts +++ b/src/app/pages/storage/modules/disks/components/disk-list/disk-list.component.ts @@ -228,6 +228,7 @@ export class DiskListComponent implements OnInit { selectedDisks: this.prepareDisks(disks), diskIdsWithSmart: Object.keys(this.smartDiskChoices), } as ManualTestDialogParams, + width: '600px', }); } @@ -295,8 +296,9 @@ export class DiskListComponent implements OnInit { private prepareDisks(disks: DiskUi[]): Disk[] { return disks.map((disk) => { - delete disk.selected; - return disk as Disk; + const newDisk = { ...disk }; + delete newDisk.selected; + return newDisk as Disk; }); } } diff --git a/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.html b/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.html index 0f30b47d3b1..f93c725401d 100644 --- a/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.html +++ b/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.html @@ -1,94 +1,80 @@

{{ 'Manual S.M.A.R.T. Test' | translate }}

-@if (!hasStartedTests) { +
- @if (supportedDisks.length) { -
{{ 'Run manual test on disks:' }}
+ @if (selectedDisksWithSmartSupport.length) { + @if (isSubmitted()) { +
{{ 'Running manual test(s) on disk(s):' }}
+ } @else { +
{{ 'Run manual test(s) on disk(s):' }}
+ }
    - @for (disk of supportedDisks; track disk) { -
  • {{ disk.name }} ({{ disk.serial }})
  • + @for (disk of selectedDisksWithSmartSupport; track disk.name) { + }
} - @if (unsupportedDisks.length) { + @if (selectedDisksWithoutSmartSupport.length) {
{{ 'These disks do not support S.M.A.R.T. tests:' | translate }}
    - @for (disk of unsupportedDisks; track disk) { -
  • {{ disk.name }} ({{ disk.serial }})
  • + @for (disk of selectedDisksWithoutSmartSupport; track disk) { +
  • +
    + {{ disk.name }} ({{ disk.serial }}) +
    +
  • }
}
- - + @if (!isSubmitted()) { + + } - - - - -
-} @else { -
- @if (!endedTests) { -
-
+ @if (!isSubmitted()) { + - smart.test.progress - - {{ progressTotalPercent || 0 | percent: '1.2-2' }} - -
- -
- } - -
- @for (test of startedTests; track test) { -
-

{{ test.disk }}

- @if (test.expected_result_time) { -
- {{ 'Expected Finished Time:' | translate }} - {{ test.expected_result_time.$date | formatDateTime }} -
- } @else { -
{{ test.error }}
- } -
+ ixTest="start-test" + [disabled]="form.invalid || !selectedDisksWithSmartSupport.length" + > + {{ 'Start' | translate }} + + } @else { + } -
- - + -
-} + + diff --git a/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.scss b/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.scss index 760c9f72e22..4c8a7b8751c 100644 --- a/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.scss +++ b/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.scss @@ -3,9 +3,10 @@ } .disks-list { + margin-bottom: 20px; max-height: 50vh; overflow: auto; - width: 320px; + padding-right: 20px; } .started-tests { diff --git a/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.spec.ts b/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.spec.ts index f3bac0feae8..5a5fbecf44b 100644 --- a/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.spec.ts +++ b/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.spec.ts @@ -14,6 +14,7 @@ import { Disk } from 'app/interfaces/disk.interface'; import { ManualSmartTest } from 'app/interfaces/smart-test.interface'; import { DialogService } from 'app/modules/dialog/dialog.service'; import { IxFormHarness } from 'app/modules/forms/ix-forms/testing/ix-form.harness'; +import { IxTestProgressRowComponent } from 'app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component'; import { WebSocketService } from 'app/services/ws.service'; import { ManualTestDialogComponent, ManualTestDialogParams } from './manual-test-dialog.component'; @@ -59,12 +60,10 @@ describe('ManualTestDialogComponent', () => { }); it('shows list of disks that support SMART', () => { - const supportedMessage = spectator.query(byText('Run manual test on disks:')); + const supportedDisks = spectator.queryAll('h4'); - const supportedDisks = supportedMessage.nextElementSibling; - - expect(supportedDisks).toHaveText('sda (Serial 1)'); - expect(supportedDisks).toHaveText('sdb (Serial 2)'); + expect(supportedDisks[0]).toHaveText('sda (Serial 1)'); + expect(supportedDisks[1]).toHaveText('sdb (Serial 2)'); }); it('shows list of disks that do not support SMART', () => { @@ -92,18 +91,8 @@ describe('ManualTestDialogComponent', () => { { identifier: 'ID2', type: SmartTestType.Short }, ]], ); - const tests = spectator.queryAll('.started-tests .test'); - - expect(tests[0]).toHaveDescendantWithText({ - selector: '.device-name', - text: 'sda', - }); - expect(tests[0]).toHaveText('1970-01-20 04:37:18'); - expect(tests[1]).toHaveDescendantWithText({ - selector: '.device-name', - text: 'sdb', - }); - expect(tests[1]).toHaveText('Disk is on fire.'); + const progressComponents = spectator.queryAll(IxTestProgressRowComponent); + expect(progressComponents).toHaveLength(2); }); }); diff --git a/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.ts b/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.ts index 0735b54b552..fdd8d7e05f2 100644 --- a/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.ts +++ b/src/app/pages/storage/modules/disks/components/manual-test-dialog/manual-test-dialog.component.ts @@ -1,6 +1,7 @@ import { PercentPipe } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, + signal, } from '@angular/core'; import { FormBuilder, ReactiveFormsModule } from '@angular/forms'; import { MatButton } from '@angular/material/button'; @@ -10,22 +11,16 @@ import { import { MatProgressBar } from '@angular/material/progress-bar'; import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { TranslateService, TranslateModule } from '@ngx-translate/core'; -import { - map, of, takeWhile, -} from 'rxjs'; +import { of } from 'rxjs'; import { RequiresRolesDirective } from 'app/directives/requires-roles/requires-roles.directive'; -import { IncomingApiMessageType } from 'app/enums/api-message-type.enum'; import { Role } from 'app/enums/role.enum'; import { SmartTestType } from 'app/enums/smart-test-type.enum'; -import { IncomingWebSocketMessage } from 'app/interfaces/api-message.interface'; import { Disk } from 'app/interfaces/disk.interface'; -import { ManualSmartTest } from 'app/interfaces/smart-test.interface'; -import { DialogService } from 'app/modules/dialog/dialog.service'; import { FormActionsComponent } from 'app/modules/forms/ix-forms/components/form-actions/form-actions.component'; import { IxSelectComponent } from 'app/modules/forms/ix-forms/components/ix-select/ix-select.component'; import { FormatDateTimePipe } from 'app/modules/pipes/format-date-time/format-datetime.pipe'; import { TestDirective } from 'app/modules/test-id/test.directive'; -import { ErrorHandlerService } from 'app/services/error-handler.service'; +import { IxTestProgressRowComponent } from 'app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component'; import { WebSocketService } from 'app/services/ws.service'; export interface ManualTestDialogParams { @@ -53,6 +48,7 @@ export interface ManualTestDialogParams { TranslateModule, FormatDateTimePipe, PercentPipe, + IxTestProgressRowComponent, ], }) export class ManualTestDialogComponent { @@ -60,6 +56,9 @@ export class ManualTestDialogComponent { type: [SmartTestType.Long], }); + isSubmitted = signal(false); + startedTests = signal(false); + testTypes$ = of([ { label: this.translate.instant('LONG'), @@ -79,33 +78,27 @@ export class ManualTestDialogComponent { }, ]); - supportedDisks: Disk[] = []; - unsupportedDisks: Disk[] = []; - startedTests: ManualSmartTest[] = []; + selectedDisksWithSmartSupport: (Disk & { error: string })[] = []; + selectedDisksWithoutSmartSupport: Disk[] = []; endedTests = false; progressTotalPercent = 0; - get hasStartedTests(): boolean { - return Boolean(this.startedTests.length); - } - protected readonly Role = Role; constructor( - private ws: WebSocketService, private formBuilder: FormBuilder, private translate: TranslateService, - private dialogService: DialogService, - private errorHandler: ErrorHandlerService, - private cdr: ChangeDetectorRef, @Inject(MAT_DIALOG_DATA) private params: ManualTestDialogParams, public dialogRef: MatDialogRef, + private ws: WebSocketService, + private cdr: ChangeDetectorRef, ) { this.setDisksBySupport(); } onSubmit(): void { - const params = this.supportedDisks.map((disk) => ({ + this.isSubmitted.set(true); + const params = this.selectedDisksWithSmartSupport.map((disk) => ({ identifier: disk.identifier, type: this.form.value.type, })); @@ -114,34 +107,17 @@ export class ManualTestDialogComponent { .pipe(untilDestroyed(this)) .subscribe({ next: (startedTests) => { - this.startedTests = startedTests; - this.ws.subscribe('smart.test.progress').pipe( - map((event) => event.fields), - takeWhile((result) => { - const condition = result - && (result as unknown as IncomingWebSocketMessage).msg === IncomingApiMessageType.NoSub; - this.endedTests = condition; - return !condition; - }), - untilDestroyed(this), - ).subscribe({ - next: (result) => { - if (result?.progress) { - this.progressTotalPercent = result.progress.percent / 100; - } - this.cdr.markForCheck(); - }, - complete: () => { - this.cdr.markForCheck(); - }, + const disksWithErrors = startedTests.filter( + (test) => test.error, + ).map( + (test) => ({ disk: test.disk, error: test.error }), + ); + this.selectedDisksWithSmartSupport = this.selectedDisksWithSmartSupport.map((disk) => { + disk.error = disksWithErrors.find((errorDisk) => errorDisk.disk === disk.name)?.error; + return disk; }); - - this.cdr.markForCheck(); - }, - error: (error: unknown) => { - this.dialogRef.close(); - this.dialogService.error(this.errorHandler.parseError(error)); this.cdr.markForCheck(); + this.startedTests.set(true); }, }); } @@ -150,9 +126,9 @@ export class ManualTestDialogComponent { this.params.selectedDisks.forEach((disk) => { const isSmartSupported = this.params.diskIdsWithSmart.includes(disk.identifier); if (isSmartSupported) { - this.supportedDisks.push(disk); + this.selectedDisksWithSmartSupport.push({ ...disk, error: null }); } else { - this.unsupportedDisks.push(disk); + this.selectedDisksWithoutSmartSupport.push(disk); } }); } diff --git a/src/app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component.html b/src/app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component.html new file mode 100644 index 00000000000..5ba3bb3367b --- /dev/null +++ b/src/app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component.html @@ -0,0 +1,31 @@ +
+
+ +

{{ disk().name + ' (' + disk().serial + ')' }}

+ @if (test().wsError || testStartError()) { + + {{ 'View logs' | translate }} + + } +
+ @if (test().wsError || testStartError()) { + + } @else if (test().finished) { + + } + @if (loading() && !test().finished && !(test().wsError || testStartError())) { +
+ +
+ } +
+ +
\ No newline at end of file diff --git a/src/app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component.scss b/src/app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component.scss new file mode 100644 index 00000000000..417831fe4b1 --- /dev/null +++ b/src/app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component.scss @@ -0,0 +1,52 @@ +.list-item { + display: list-item; + margin-bottom: 10px; +} + +.disk-title { + direction: row; + display: flex; + justify-content: space-between; + margin-bottom: 2px; + width: 100%; +} + +.disk-name { + align-items: center; + display: flex; + width: fit-content; + + a { + margin-left: 5px; + } + + h4 { + margin-right: 10px; + white-space: nowrap; + } +} + +.link { + color: var(--primary); + cursor: pointer; + text-decoration: underline; +} + +.red-icon { + color: var(--red); +} + +.green-icon { + color: var(--green); +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + width: 50%; +} + +mat-progress-bar { + height: 2px; +} diff --git a/src/app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component.spec.ts b/src/app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component.spec.ts new file mode 100644 index 00000000000..964caa86174 --- /dev/null +++ b/src/app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component.spec.ts @@ -0,0 +1,186 @@ +import { MatProgressBar } from '@angular/material/progress-bar'; +import { mockProvider, Spectator, createComponentFactory } from '@ngneat/spectator/jest'; +import { of } from 'rxjs'; +import { MockWebSocketService } from 'app/core/testing/classes/mock-websocket.service'; +import { mockWebSocket } from 'app/core/testing/utils/mock-websocket.utils'; +import { IncomingApiMessageType } from 'app/enums/api-message-type.enum'; +import { SmartTestType } from 'app/enums/smart-test-type.enum'; +import { Disk } from 'app/interfaces/disk.interface'; +import { SmartTestProgressUpdate } from 'app/interfaces/smart-test-progress.interface'; +import { DialogService } from 'app/modules/dialog/dialog.service'; +import { IxIconComponent } from 'app/modules/ix-icon/ix-icon.component'; +import { TestDirective } from 'app/modules/test-id/test.directive'; +import { IxTestProgressRowComponent } from 'app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component'; +import { ErrorHandlerService } from 'app/services/error-handler.service'; + +describe('IxTestProgressRowComponent', () => { + let spectator: Spectator; + + const createComponent = createComponentFactory({ + component: IxTestProgressRowComponent, + imports: [ + IxIconComponent, + MatProgressBar, + TestDirective, + ], + providers: [ + mockProvider(DialogService, { + info: jest.fn(() => of(true)), + error: jest.fn(() => of(true)), + }), + mockProvider(ErrorHandlerService), + mockWebSocket(), + ], + }); + + describe('Before tests started', () => { + beforeEach(() => { + spectator = createComponent({ + props: { + disk: { name: 'sdd', serial: 'serial', identifier: 'identifier' } as Disk, + loading: false, + testType: SmartTestType.Short, + testStartError: null, + testStarted: false, + }, + }); + }); + + it('shows disk name', () => { + const h4 = spectator.query('h4'); + expect(h4.textContent).toBe('sdd (serial)'); + }); + + it('doesnt show progress bar', () => { + const progressBar = spectator.query(MatProgressBar); + expect(progressBar).toBeFalsy(); + }); + + it('doesnt show error or success icons', () => { + const ixIcons = spectator.queryAll(IxIconComponent); + + expect(ixIcons.length).toBeFalsy(); + }); + + it('doesnt show view logs link', () => { + const link = spectator.query('a'); + expect(link).toBeFalsy(); + }); + }); + + describe('After tests started', () => { + beforeEach(() => { + spectator = createComponent({ + props: { + disk: { name: 'sdd', serial: 'serial', identifier: 'identifier' } as Disk, + loading: true, + testType: SmartTestType.Short, + testStartError: null, + testStarted: true, + }, + }); + }); + + it('shows disk name', () => { + const h4 = spectator.query('h4'); + expect(h4.textContent).toBe('sdd (serial)'); + }); + + it('shows progress bar', () => { + const progressBar = spectator.query(MatProgressBar); + expect(progressBar).toBeTruthy(); + }); + + it('doesnt show error or success icons', () => { + const ixIcons = spectator.queryAll(IxIconComponent); + + expect(ixIcons.length).toBeFalsy(); + }); + + it('show view logs link', () => { + const link = spectator.query('a'); + expect(link).toBeFalsy(); + }); + + it('shows progress change', () => { + const websocketMock = spectator.inject(MockWebSocketService); + websocketMock.emitSubscribeEvent({ + msg: IncomingApiMessageType.Added, + collection: 'smart.test.progerss:sdd', + fields: { + progress: 15, + } as SmartTestProgressUpdate, + }); + + spectator.detectChanges(); + + const progressBar = spectator.query(MatProgressBar); + expect(progressBar.value).toBe(15); + }); + + it('shows success icon when test is done', () => { + const websocketMock = spectator.inject(MockWebSocketService); + websocketMock.emitSubscribeEvent({ + msg: IncomingApiMessageType.Added, + collection: 'smart.test.progerss:sdd', + fields: { + progress: 15, + } as SmartTestProgressUpdate, + }); + spectator.detectChanges(); + websocketMock.emitSubscribeEvent({ + msg: IncomingApiMessageType.Added, + collection: 'smart.test.progerss:sdd', + fields: { + progress: null, + } as SmartTestProgressUpdate, + }); + spectator.detectChanges(); + + const progressBar = spectator.query(MatProgressBar); + expect(progressBar).toBeFalsy(); + + const icons = spectator.queryAll(IxIconComponent); + expect(icons).toHaveLength(1); + expect(icons[0].name()).toBe('check_circle'); + + const link = spectator.query('a'); + expect(link).toBeFalsy(); + }); + }); + + describe('After tests started as failed', () => { + beforeEach(() => { + spectator = createComponent({ + props: { + disk: { name: 'sdd', serial: 'serial', identifier: 'identifier' } as Disk, + loading: true, + testType: SmartTestType.Short, + testStartError: 'Error', + testStarted: true, + }, + }); + }); + + it('shows logs link and error icon', () => { + const icons = spectator.queryAll(IxIconComponent); + expect(icons).toHaveLength(1); + expect(icons[0].name()).toBe('error'); + + const link = spectator.query('a'); + expect(link).toBeTruthy(); + expect(link.textContent).toBe(' View logs '); + }); + + it('shows dialog info with error log', () => { + const link = spectator.query('a'); + link.dispatchEvent(new Event('click')); + + expect(spectator.inject(DialogService).info).toHaveBeenCalledWith( + 'SHORT S.M.A.R.T. Test Logs: sdd', + 'Error', + true, + ); + }); + }); +}); diff --git a/src/app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component.ts b/src/app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component.ts new file mode 100644 index 00000000000..7684b80d2b1 --- /dev/null +++ b/src/app/pages/storage/modules/disks/components/manual-test-dialog/test-progress-row/test-progress-row.component.ts @@ -0,0 +1,145 @@ +import { + ChangeDetectionStrategy, Component, effect, input, OnInit, signal, +} from '@angular/core'; +import { MatProgressBar } from '@angular/material/progress-bar'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; +import { TranslateModule, TranslateService } from '@ngx-translate/core'; +import { + catchError, EMPTY, map, Observable, Subscription, takeWhile, tap, +} from 'rxjs'; +import { IncomingApiMessageType } from 'app/enums/api-message-type.enum'; +import { SmartTestType } from 'app/enums/smart-test-type.enum'; +import { Disk } from 'app/interfaces/disk.interface'; +import { SmartTestProgressUi } from 'app/interfaces/smart-test-progress-ui.interface'; +import { SmartTestProgressUpdate } from 'app/interfaces/smart-test-progress.interface'; +import { DialogService } from 'app/modules/dialog/dialog.service'; +import { IxIconComponent } from 'app/modules/ix-icon/ix-icon.component'; +import { TestDirective } from 'app/modules/test-id/test.directive'; +import { ErrorHandlerService } from 'app/services/error-handler.service'; +import { WebSocketService } from 'app/services/ws.service'; + +@UntilDestroy() +@Component({ + selector: 'ix-test-progress-row', + templateUrl: './test-progress-row.component.html', + styleUrl: './test-progress-row.component.scss', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + IxIconComponent, + MatProgressBar, + TranslateModule, + TestDirective, + ], +}) +export class IxTestProgressRowComponent implements OnInit { + disk = input.required(); + testType = input.required(); + loading = input.required(); + testStartError = input.required(); + testStarted = input.required(); + + testSubscription: Subscription; + + readonly subscribeTestEffect = effect(() => { + const testStarted = this.testStarted(); + const testStartError = this.testStartError(); + if (testStarted && !testStartError) { + this.subscribeToTest(); + } + }); + + test = signal(undefined); + + constructor( + private dialogService: DialogService, + private errorHandler: ErrorHandlerService, + private translate: TranslateService, + private ws: WebSocketService, + ) {} + + ngOnInit(): void { + this.test.set({ + diskName: this.disk().name, + type: this.testType(), + diskIdentifier: this.disk().identifier, + wsError: null, + finished: false, + progressPercentage: null, + esimatedEnd: null, + }); + } + + private subscribeToTest(): void { + if (this.testSubscription) { + return; + } + this.testSubscription = this.getTestUpdateSubscriber().pipe( + catchError((error: unknown) => { + this.test.set({ + ...this.test(), + wsError: error, + }); + return EMPTY; + }), + untilDestroyed(this), + ).subscribe(); + } + + protected showLogs(): void { + const test = this.test(); + if (test.wsError) { + this.dialogService.error(this.errorHandler.parseError(test.wsError)); + return; + } + this.dialogService.info( + this.translate.instant(`${test.type} S.M.A.R.T. Test Logs: ${test.diskName}`), + this.testStartError(), + true, + ); + } + + private getTestUpdateSubscriber(): Observable { + const diskName = this.disk().name; + return this.ws.subscribe(`smart.test.progress:${diskName}`).pipe( + catchError((error: unknown) => { + this.test.set({ + ...this.test(), + wsError: error, + }); + return EMPTY; + }), + takeWhile((result) => { + const isNoSubMsg = result && result.msg === IncomingApiMessageType.NoSub; + const testProgress = this.test().progressPercentage; + let isProgressing = true; + if (result.fields.progress == null) { + isProgressing = false; + } else if (testProgress == null) { + isProgressing = true; + } else if (testProgress < result.fields.progress) { + isProgressing = true; + } else { + isProgressing = false; + } + if (isNoSubMsg || !isProgressing) { + this.test.set({ + ...this.test(), + finished: true, + }); + } + return !isNoSubMsg && isProgressing; + }), + map((apiEvent) => apiEvent.fields), + tap((progressUpdate) => { + if (progressUpdate?.progress == null) { + return; + } + this.test.set({ + ...this.test(), + progressPercentage: progressUpdate.progress, + }); + }), + ); + } +} diff --git a/src/app/pages/system/advanced/cron/cron-card/cron-card.component.spec.ts b/src/app/pages/system/advanced/cron/cron-card/cron-card.component.spec.ts index f072be1ea24..bce19376020 100644 --- a/src/app/pages/system/advanced/cron/cron-card/cron-card.component.spec.ts +++ b/src/app/pages/system/advanced/cron/cron-card/cron-card.component.spec.ts @@ -5,6 +5,7 @@ import { Spectator } from '@ngneat/spectator'; import { createComponentFactory, mockProvider } from '@ngneat/spectator/jest'; import { provideMockStore } from '@ngrx/store/testing'; import { of } from 'rxjs'; +import { invalidDate } from 'app/constants/invalid-date'; import { mockAuth } from 'app/core/testing/utils/mock-auth.utils'; import { mockWebSocket, mockCall } from 'app/core/testing/utils/mock-websocket.utils'; import { DialogService } from 'app/modules/dialog/dialog.service'; @@ -76,8 +77,7 @@ describe('CronCardComponent', () => { }), mockProvider(LocaleService), mockProvider(TaskService, { - getTaskNextTime: jest.fn(() => new Date(new Date().getTime() + (25 * 60 * 60 * 1000))), - getTaskNextRun: jest.fn(() => 'in about 10 hours'), + getTaskNextTime: jest.fn(() => invalidDate), }), mockProvider(AdvancedSettingsService, { showFirstTimeWarningIfNeeded: jest.fn(() => of(true)), @@ -95,7 +95,7 @@ describe('CronCardComponent', () => { it('should show table rows', async () => { const expectedRows = [ ['Users', 'Command', 'Description', 'Schedule', 'Enabled', 'Next Run', ''], - ['root', "echo 'Hello World'", 'test', '0 0 * * *', 'Yes', 'in 1 day', ''], + ['root', "echo 'Hello World'", 'test', '0 0 * * *', 'Yes', 'Invalid Date', ''], ]; const cells = await table.getCellTexts(); diff --git a/src/app/pages/system/advanced/cron/cron-list/cron-list.component.ts b/src/app/pages/system/advanced/cron/cron-list/cron-list.component.ts index 3dda9d1d005..7a51c3d467d 100644 --- a/src/app/pages/system/advanced/cron/cron-list/cron-list.component.ts +++ b/src/app/pages/system/advanced/cron/cron-list/cron-list.component.ts @@ -12,12 +12,12 @@ import { import { RequiresRolesDirective } from 'app/directives/requires-roles/requires-roles.directive'; import { UiSearchDirective } from 'app/directives/ui-search.directive'; import { Role } from 'app/enums/role.enum'; -import { formatDistanceToNowShortened } from 'app/helpers/format-distance-to-now-shortened'; import { DialogService } from 'app/modules/dialog/dialog.service'; import { EmptyService } from 'app/modules/empty/empty.service'; import { SearchInput1Component } from 'app/modules/forms/search-input1/search-input1.component'; import { AsyncDataProvider } from 'app/modules/ix-table/classes/async-data-provider/async-data-provider'; import { IxTableComponent } from 'app/modules/ix-table/components/ix-table/ix-table.component'; +import { relativeDateColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-relative-date/ix-cell-relative-date.component'; import { textColumn } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-text/ix-cell-text.component'; import { IxTableBodyComponent } from 'app/modules/ix-table/components/ix-table-body/ix-table-body.component'; import { IxTableColumnsSelectorComponent } from 'app/modules/ix-table/components/ix-table-columns-selector/ix-table-columns-selector.component'; @@ -96,14 +96,12 @@ export class CronListComponent implements OnInit { propertyName: 'enabled', getValue: (task) => (task.enabled ? this.translate.instant('Yes') : this.translate.instant('No')), }), - textColumn({ + relativeDateColumn({ title: this.translate.instant('Next Run'), hidden: true, getValue: (task) => { if (task.enabled) { - return task.schedule - ? formatDistanceToNowShortened(this.taskService.getTaskNextTime(scheduleToCrontab(task.schedule))) - : this.translate.instant('N/A'); + return this.taskService.getTaskNextTime(scheduleToCrontab(task.schedule)); } return this.translate.instant('Disabled'); }, diff --git a/src/app/pages/system/advanced/isolated-gpus/isolated-gpus-form/isolated-gpus-form.component.spec.ts b/src/app/pages/system/advanced/isolated-gpus/isolated-gpus-form/isolated-gpus-form.component.spec.ts index db7c715579f..254bdc4c91a 100644 --- a/src/app/pages/system/advanced/isolated-gpus/isolated-gpus-form/isolated-gpus-form.component.spec.ts +++ b/src/app/pages/system/advanced/isolated-gpus/isolated-gpus-form/isolated-gpus-form.component.spec.ts @@ -43,6 +43,10 @@ describe('IsolatedGpuPcisFormComponent', () => { }), mockWebSocket([ mockCall('system.advanced.update_gpu_pci_ids'), + mockCall('system.advanced.get_gpu_pci_choices', { + 'Fake HD Graphics [0000:00:01.0]': '0000:00:01.0', + 'Intel Corporation HD Graphics 510 [0000:00:02.0]': '0000:00:02.0', + }), ]), mockProvider(SystemGeneralService), mockProvider(IxChainedSlideInService, { @@ -76,14 +80,14 @@ describe('IsolatedGpuPcisFormComponent', () => { const values = await form.getValues(); expect(values).toEqual({ - GPUs: ['Intel Corporation HD Graphics 510'], + GPUs: ['Intel Corporation HD Graphics 510 [0000:00:02.0]'], }); }); it('saves updated settings when Save is pressed', async () => { const form = await loader.getHarness(IxFormHarness); await form.fillForm({ - GPUs: 'Fake HD Graphics', + GPUs: 'Fake HD Graphics [0000:00:01.0]', }); const saveButton = await loader.getHarness(MatButtonHarness.with({ text: 'Save' })); diff --git a/src/app/pages/system/advanced/isolated-gpus/isolated-gpus-form/isolated-gpus-form.component.ts b/src/app/pages/system/advanced/isolated-gpus/isolated-gpus-form/isolated-gpus-form.component.ts index ddd1f327a82..9086e217228 100644 --- a/src/app/pages/system/advanced/isolated-gpus/isolated-gpus-form/isolated-gpus-form.component.ts +++ b/src/app/pages/system/advanced/isolated-gpus/isolated-gpus-form/isolated-gpus-form.component.ts @@ -7,7 +7,7 @@ import { MatCard, MatCardContent } from '@angular/material/card'; import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { Store } from '@ngrx/store'; import { TranslateService, TranslateModule } from '@ngx-translate/core'; -import { take } from 'rxjs'; +import { map, take } from 'rxjs'; import { RequiresRolesDirective } from 'app/directives/requires-roles/requires-roles.directive'; import { Role } from 'app/enums/role.enum'; import { FormActionsComponent } from 'app/modules/forms/ix-forms/components/form-actions/form-actions.component'; @@ -18,7 +18,6 @@ import { IxModalHeader2Component } from 'app/modules/forms/ix-forms/components/i import { FormErrorHandlerService } from 'app/modules/forms/ix-forms/services/form-error-handler.service'; import { SnackbarService } from 'app/modules/snackbar/services/snackbar.service'; import { TestDirective } from 'app/modules/test-id/test.directive'; -import { GpuService } from 'app/services/gpu/gpu.service'; import { IsolatedGpuValidatorService } from 'app/services/gpu/isolated-gpu-validator.service'; import { WebSocketService } from 'app/services/ws.service'; import { AppState } from 'app/store'; @@ -55,7 +54,11 @@ export class IsolatedGpusFormComponent implements OnInit { asyncValidators: [this.gpuValidator.validateGpu], }), }); - readonly options$ = this.gpuService.getGpuOptions(); + readonly options$ = this.ws.call('system.advanced.get_gpu_pci_choices').pipe(map((choices) => { + return Object.entries(choices).map( + ([value, label]) => ({ value: label, label: value }), + ); + })); constructor( protected ws: WebSocketService, @@ -64,7 +67,6 @@ export class IsolatedGpusFormComponent implements OnInit { private cdr: ChangeDetectorRef, private store$: Store, private gpuValidator: IsolatedGpuValidatorService, - private gpuService: GpuService, private snackbar: SnackbarService, private chainedRef: ChainedRef, ) { } diff --git a/src/app/pages/vm/vm-edit-form/vm-edit-form.component.spec.ts b/src/app/pages/vm/vm-edit-form/vm-edit-form.component.spec.ts index 079df523baa..a4a4e53b16e 100644 --- a/src/app/pages/vm/vm-edit-form/vm-edit-form.component.spec.ts +++ b/src/app/pages/vm/vm-edit-form/vm-edit-form.component.spec.ts @@ -79,15 +79,24 @@ describe('VmEditFormComponent', () => { }), mockCall('vm.update'), mockCall('vm.device.get_pci_ids_for_gpu_isolation', ['10DE:1401']), + mockCall('system.advanced.update_gpu_pci_ids'), + mockCall('system.advanced.get_gpu_pci_choices', { + 'GeForce [0000:02:00.0]': '0000:02:00.0', + 'Intel Arc [0000:03:00.0]': '0000:03:00.0', + }), ]), mockAuth(), mockProvider(DialogService), mockProvider(GpuService, { - getGpuOptions: () => of([ - { label: 'GeForce', value: '0000:02:00.0' }, - { label: 'Intel Arc', value: '0000:03:00.0' }, - ]), - getAllGpus: () => of([ + getGpuOptions: jest.fn(() => of([ + { label: 'GeForce [0000:02:00.0]', value: '0000:02:00.0' }, + { label: 'Intel Arc [0000:03:00.0]', value: '0000:03:00.0' }, + ])), + addIsolatedGpuPciIds: jest.fn(() => of({})), + getIsolatedGpuPciIds: jest.fn(() => of([ + '0000:02:00.0', + ])), + getAllGpus: jest.fn(() => of([ { addr: { pci_slot: '0000:02:00.0', @@ -112,8 +121,7 @@ describe('VmEditFormComponent', () => { }, ], }, - ]), - addIsolatedGpuPciIds: jest.fn(() => of(undefined)), + ])), }), mockProvider(VmGpuService, { updateVmGpus: jest.fn(() => of(undefined)), @@ -166,7 +174,7 @@ describe('VmEditFormComponent', () => { 'Hide from MSR': false, 'Ensure Display Device': true, - GPUs: ['GeForce'], + GPUs: ['GeForce [0000:02:00.0]'], }); }); @@ -244,13 +252,15 @@ describe('VmEditFormComponent', () => { it('updates GPU devices when form is edited and saved', async () => { await form.fillForm({ - GPUs: ['Intel Arc'], + GPUs: ['Intel Arc [0000:03:00.0]'], }); const saveButton = await loader.getHarness(MatButtonHarness.with({ text: 'Save' })); await saveButton.click(); - expect(spectator.inject(VmGpuService).updateVmGpus).toHaveBeenCalledWith(existingVm, ['0000:03:00.0', '10DE:1401']); - expect(spectator.inject(GpuService).addIsolatedGpuPciIds).toHaveBeenCalledWith(['0000:03:00.0', '10DE:1401']); + expect(spectator.inject(GpuService).addIsolatedGpuPciIds).toHaveBeenCalledWith( + ['0000:03:00.0'], + ); + expect(spectator.inject(VmGpuService).updateVmGpus).toHaveBeenCalledWith(existingVm, ['0000:03:00.0']); }); }); diff --git a/src/app/pages/vm/vm-edit-form/vm-edit-form.component.ts b/src/app/pages/vm/vm-edit-form/vm-edit-form.component.ts index 7f9f7604a16..a418fd86c64 100644 --- a/src/app/pages/vm/vm-edit-form/vm-edit-form.component.ts +++ b/src/app/pages/vm/vm-edit-form/vm-edit-form.component.ts @@ -7,7 +7,7 @@ import { MatCard, MatCardContent } from '@angular/material/card'; import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { TranslateService, TranslateModule } from '@ngx-translate/core'; import { - Observable, forkJoin, map, of, switchMap, + Observable, forkJoin, of, switchMap, } from 'rxjs'; import { MiB } from 'app/constants/bytes.constant'; import { RequiresRolesDirective } from 'app/directives/requires-roles/requires-roles.directive'; @@ -163,20 +163,13 @@ export class VmEditFormComponent implements OnInit { } const gpusIds = this.form.value.gpus; - - const pciIdsRequests$ = gpusIds.map((gpu) => { - return this.ws.call('vm.device.get_pci_ids_for_gpu_isolation', [gpu]); - }); - let updateVmRequest$: Observable; - if (pciIdsRequests$.length) { - updateVmRequest$ = forkJoin(pciIdsRequests$).pipe( - map((pciIds) => pciIds.flat()), - switchMap((pciIds) => forkJoin([ + if (gpusIds.length) { + updateVmRequest$ = this.gpuService.addIsolatedGpuPciIds(gpusIds).pipe( + switchMap(() => forkJoin([ this.ws.call('vm.update', [this.existingVm.id, vmPayload as VirtualMachineUpdate]), - this.vmGpuService.updateVmGpus(this.existingVm, gpusIds.concat(pciIds)), - this.gpuService.addIsolatedGpuPciIds(gpusIds.concat(pciIds)), + this.vmGpuService.updateVmGpus(this.existingVm, gpusIds), ])), ); } else { diff --git a/src/app/pages/vm/vm-wizard/steps/6-gpu-step/gpu-step.component.spec.ts b/src/app/pages/vm/vm-wizard/steps/6-gpu-step/gpu-step.component.spec.ts index 25e338ac451..56287411396 100644 --- a/src/app/pages/vm/vm-wizard/steps/6-gpu-step/gpu-step.component.spec.ts +++ b/src/app/pages/vm/vm-wizard/steps/6-gpu-step/gpu-step.component.spec.ts @@ -4,6 +4,7 @@ import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { ReactiveFormsModule } from '@angular/forms'; import { createComponentFactory, mockProvider, Spectator } from '@ngneat/spectator/jest'; import { of } from 'rxjs'; +import { mockCall, mockWebSocket } from 'app/core/testing/utils/mock-websocket.utils'; import { IxFormHarness } from 'app/modules/forms/ix-forms/testing/ix-form.harness'; import { GpuStepComponent } from 'app/pages/vm/vm-wizard/steps/6-gpu-step/gpu-step.component'; import { GpuService } from 'app/services/gpu/gpu.service'; @@ -23,13 +24,19 @@ describe('GpuStepComponent', () => { CdkStepper, mockProvider(GpuService, { getGpuOptions: () => of([ - { label: 'GeForce GTX 1080', value: '0000:03:00.0' }, - { label: 'GeForce GTX 1080 Ti', value: '0000:04:00.0' }, + { label: 'GeForce GTX 1080 [0000:03:00.0]', value: '0000:03:00.0' }, + { label: 'GeForce GTX 1080 Ti [0000:04:00.0]', value: '0000:04:00.0' }, ]), }), mockProvider(IsolatedGpuValidatorService, { validateGpu: () => of(null), }), + mockWebSocket([ + mockCall('system.advanced.get_gpu_pci_choices', { + 'GeForce GTX 1080 [0000:03:00.0]': '0000:03:00.0', + 'GeForce GTX 1080 Ti [0000:04:00.0]': '0000:04:00.0', + }), + ]), ], }); @@ -43,7 +50,7 @@ describe('GpuStepComponent', () => { await form.fillForm({ 'Hide from MSR': true, 'Ensure Display Device': true, - GPUs: ['GeForce GTX 1080 Ti'], + GPUs: ['GeForce GTX 1080 Ti [0000:04:00.0]'], }); } diff --git a/src/app/pages/vm/vm-wizard/steps/6-gpu-step/gpu-step.component.ts b/src/app/pages/vm/vm-wizard/steps/6-gpu-step/gpu-step.component.ts index acc1f5ca96c..aaba19f1c43 100644 --- a/src/app/pages/vm/vm-wizard/steps/6-gpu-step/gpu-step.component.ts +++ b/src/app/pages/vm/vm-wizard/steps/6-gpu-step/gpu-step.component.ts @@ -46,8 +46,8 @@ export class GpuStepComponent implements SummaryProvider { constructor( private formBuilder: FormBuilder, private gpuValidator: IsolatedGpuValidatorService, - private gpuService: GpuService, private translate: TranslateService, + private gpuService: GpuService, ) {} getSummary(): SummarySection { diff --git a/src/app/pages/vm/vm-wizard/vm-wizard.component.spec.ts b/src/app/pages/vm/vm-wizard/vm-wizard.component.spec.ts index cd46f144785..b96f99a909e 100644 --- a/src/app/pages/vm/vm-wizard/vm-wizard.component.spec.ts +++ b/src/app/pages/vm/vm-wizard/vm-wizard.component.spec.ts @@ -94,12 +94,21 @@ describe('VmWizardComponent', () => { eno2: 'eno2', }), mockCall('vm.device.get_pci_ids_for_gpu_isolation', ['10DE:1401']), + mockCall('system.advanced.update_gpu_pci_ids'), + mockCall('system.advanced.get_gpu_pci_choices', { + 'GeForce GTX 1080 [0000:03:00.0]': '0000:03:00.0', + 'GeForce GTX 1070 [0000:02:00.0]': '0000:02:00.0', + }), ]), mockProvider(GpuService, { getGpuOptions: () => of([ - { label: 'GeForce GTX 1080', value: '0000:03:00.0' }, + { label: 'GeForce GTX 1080 [0000:03:00.0]', value: '0000:03:00.0' }, + { label: 'GeForce GTX 1070 [0000:02:00.0]', value: '0000:02:00.0' }, ]), - addIsolatedGpuPciIds: jest.fn(() => of(undefined)), + addIsolatedGpuPciIds: jest.fn(() => of({})), + getIsolatedGpuPciIds: jest.fn(() => of([ + '0000:02:00.0', + ])), }), mockProvider(FilesystemService, { getFilesystemNodeProvider: jest.fn(), @@ -165,7 +174,7 @@ describe('VmWizardComponent', () => { await updateStepHarnesses(); await form.fillForm({ - GPUs: ['GeForce GTX 1080'], + GPUs: ['GeForce GTX 1080 [0000:03:00.0]'], }); await nextButton.click(); } @@ -319,8 +328,10 @@ describe('VmWizardComponent', () => { web: true, }, }]); - expect(spectator.inject(VmGpuService).updateVmGpus).toHaveBeenCalledWith({ id: 4 }, ['0000:03:00.0', '10DE:1401']); - expect(spectator.inject(GpuService).addIsolatedGpuPciIds).toHaveBeenCalledWith(['0000:03:00.0', '10DE:1401']); + expect(spectator.inject(GpuService).addIsolatedGpuPciIds).toHaveBeenCalledWith( + ['0000:03:00.0'], + ); + expect(spectator.inject(VmGpuService).updateVmGpus).toHaveBeenCalledWith({ id: 4 }, ['0000:03:00.0']); expect(spectator.inject(IxSlideInRef).close).toHaveBeenCalled(); }); }); diff --git a/src/app/pages/vm/vm-wizard/vm-wizard.component.ts b/src/app/pages/vm/vm-wizard/vm-wizard.component.ts index 3295751eb9e..b14d3d778f7 100644 --- a/src/app/pages/vm/vm-wizard/vm-wizard.component.ts +++ b/src/app/pages/vm/vm-wizard/vm-wizard.component.ts @@ -12,7 +12,7 @@ import { pick } from 'lodash-es'; import { forkJoin, Observable, of, switchMap, } from 'rxjs'; -import { catchError, defaultIfEmpty, map } from 'rxjs/operators'; +import { catchError, defaultIfEmpty } from 'rxjs/operators'; import { GiB, MiB } from 'app/constants/bytes.constant'; import { RequiresRolesDirective } from 'app/directives/requires-roles/requires-roles.directive'; import { Role } from 'app/enums/role.enum'; @@ -285,17 +285,9 @@ export class VmWizardComponent implements OnInit { private getGpuRequests(vm: VirtualMachine): Observable { const gpusIds = this.gpuForm.gpus as unknown as string[]; - const pciIdsRequests$ = gpusIds.map((gpu) => { - return this.ws.call('vm.device.get_pci_ids_for_gpu_isolation', [gpu]); - }); - - return forkJoin(pciIdsRequests$).pipe( + return this.gpuService.addIsolatedGpuPciIds(gpusIds).pipe( defaultIfEmpty([]), - map((pciIds) => pciIds.flat()), - switchMap((pciIds) => forkJoin([ - this.vmGpuService.updateVmGpus(vm, gpusIds.concat(pciIds)), - this.gpuService.addIsolatedGpuPciIds(gpusIds.concat(pciIds)), - ])), + switchMap(() => this.vmGpuService.updateVmGpus(vm, gpusIds)), ); } diff --git a/src/app/services/gpu/gpu-service.spec.ts b/src/app/services/gpu/gpu-service.spec.ts index 2a23c8aa1c2..40c152e3105 100644 --- a/src/app/services/gpu/gpu-service.spec.ts +++ b/src/app/services/gpu/gpu-service.spec.ts @@ -1,4 +1,5 @@ import { createServiceFactory, SpectatorService } from '@ngneat/spectator/jest'; +import { Store } from '@ngrx/store'; import { provideMockStore } from '@ngrx/store/testing'; import { firstValueFrom } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; @@ -9,6 +10,7 @@ import { AdvancedConfig } from 'app/interfaces/advanced-config.interface'; import { Device } from 'app/interfaces/device.interface'; import { GpuService } from 'app/services/gpu/gpu.service'; import { WebSocketService } from 'app/services/ws.service'; +import { advancedConfigUpdated } from 'app/store/system-config/system-config.actions'; import { selectAdvancedConfig } from 'app/store/system-config/system-config.selectors'; describe('GpuService', () => { @@ -35,6 +37,10 @@ describe('GpuService', () => { mockWebSocket([ mockCall('system.advanced.update_gpu_pci_ids'), mockCall('device.get_info', allGpus), + mockCall('system.advanced.get_gpu_pci_choices', { + 'GeForce [0000:01:00.0]': '0000:01:00.0', + 'Radeon [0000:02:00.0]': '0000:02:00.0', + }), ]), provideMockStore({ selectors: [ @@ -65,10 +71,12 @@ describe('GpuService', () => { describe('getGpuOptions', () => { it('returns an observable with a list of options for GPU select', async () => { + const store$ = spectator.inject(Store); + jest.spyOn(store$, 'dispatch'); const options = await firstValueFrom(spectator.service.getGpuOptions()); expect(options).toEqual([ - { label: 'GeForce', value: '0000:01:00.0' }, - { label: 'Radeon', value: '0000:02:00.0' }, + { label: 'GeForce [0000:01:00.0]', value: '0000:01:00.0' }, + { label: 'Radeon [0000:02:00.0]', value: '0000:02:00.0' }, ]); }); }); @@ -94,12 +102,15 @@ describe('GpuService', () => { describe('addIsolatedGpuPciIds', () => { it('adds new ids of new isolated gpu devices in addition to ones that were previously isolated', async () => { + const store$ = spectator.inject(Store); + jest.spyOn(store$, 'dispatch'); await firstValueFrom(spectator.service.addIsolatedGpuPciIds(['0000:01:00.0'])); expect(spectator.inject(WebSocketService).call).toHaveBeenCalledWith( 'system.advanced.update_gpu_pci_ids', [['0000:02:00.0', '0000:01:00.0']], ); + expect(spectator.inject(Store).dispatch).toHaveBeenCalledWith(advancedConfigUpdated()); }); it('does nothing when new gpu has already been isolated', () => { diff --git a/src/app/services/gpu/gpu.service.ts b/src/app/services/gpu/gpu.service.ts index 2ee0b62a3c5..06df3103e96 100644 --- a/src/app/services/gpu/gpu.service.ts +++ b/src/app/services/gpu/gpu.service.ts @@ -5,12 +5,14 @@ import { } from 'rxjs'; import { map, shareReplay, switchMap, take, + tap, } from 'rxjs/operators'; import { DeviceType } from 'app/enums/device-type.enum'; import { Device } from 'app/interfaces/device.interface'; import { Option } from 'app/interfaces/option.interface'; import { WebSocketService } from 'app/services/ws.service'; import { AppState } from 'app/store'; +import { advancedConfigUpdated } from 'app/store/system-config/system-config.actions'; import { waitForAdvancedConfig } from 'app/store/system-config/system-config.selectors'; @Injectable({ @@ -41,12 +43,11 @@ export class GpuService { } getGpuOptions(): Observable { - return this.getAllGpus().pipe( - map((gpus) => { - return gpus.map((gpu) => ({ - label: gpu.description, - value: gpu.addr.pci_slot, - })); + return this.ws.call('system.advanced.get_gpu_pci_choices').pipe( + map((choices) => { + return Object.entries(choices).map( + ([value, label]) => ({ value: label, label: value }), + ); }), ); } @@ -83,8 +84,11 @@ export class GpuService { return EMPTY; } - return this.ws.call('system.advanced.update_gpu_pci_ids', [Array.from(newIsolatedGpuIds)]); + return this.ws.call('system.advanced.update_gpu_pci_ids', [Array.from(newIsolatedGpuIds)]).pipe( + tap(() => this.store$.dispatch(advancedConfigUpdated())), + ); }), + ); } } diff --git a/src/app/services/task.service.ts b/src/app/services/task.service.ts index 8ff42e72174..271f805f566 100644 --- a/src/app/services/task.service.ts +++ b/src/app/services/task.service.ts @@ -3,6 +3,7 @@ import { TranslateService } from '@ngx-translate/core'; import * as cronParser from 'cron-parser'; import { Options as CronOptions } from 'cronstrue/dist/options'; import cronstrue from 'cronstrue/i18n'; +import { invalidDate } from 'app/constants/invalid-date'; import { formatDistanceToNowShortened } from 'app/helpers/format-distance-to-now-shortened'; import { Option } from 'app/interfaces/option.interface'; import { LocaleService } from 'app/services/locale.service'; @@ -125,26 +126,34 @@ export class TaskService { } getTaskNextRun(scheduleExpression: string): string { - const schedule = cronParser.parseExpression(scheduleExpression, { - iterator: true, - tz: this.localeService.timezone, - }); + try { + const schedule = cronParser.parseExpression(scheduleExpression, { + iterator: true, + tz: this.localeService.timezone, + }); - const date = schedule?.next()?.value?.toDate(); - if (!date) { - return this.translate.instant('N/A'); - } + const date = schedule?.next()?.value?.toDate(); + if (!date) { + return this.translate.instant('N/A'); + } - return formatDistanceToNowShortened(date); + return formatDistanceToNowShortened(date); + } catch { + return this.translate.instant(invalidDate); + } } - getTaskNextTime(scheduleExpression: string): Date { - const schedule = cronParser.parseExpression(scheduleExpression, { - iterator: true, - tz: this.localeService.timezone, - }); + getTaskNextTime(scheduleExpression: string): Date | string { + try { + const schedule = cronParser.parseExpression(scheduleExpression, { + iterator: true, + tz: this.localeService.timezone, + }); - return schedule.next().value.toDate(); + return schedule.next().value.toDate(); + } catch { + return this.translate.instant(invalidDate); + } } /** diff --git a/src/app/services/ws.service.ts b/src/app/services/ws.service.ts index 700c94b296e..0c0f753f819 100644 --- a/src/app/services/ws.service.ts +++ b/src/app/services/ws.service.ts @@ -103,15 +103,15 @@ export class WebSocketService { ) as Observable>>; } - subscribe(method: K): Observable> { - if (this.eventSubscribers.has(method)) { - return this.eventSubscribers.get(method); + subscribe(method: K | `${K}:${string}`): Observable> { + if (this.eventSubscribers.has(method as K)) { + return this.eventSubscribers.get(method as K); } const observable$ = new Observable((trigger: Subscriber>) => { - const subscription = this.wsManager.buildSubscriber>(method).subscribe(trigger); + const subscription = this.wsManager.buildSubscriber>(method as K).subscribe(trigger); return () => { subscription.unsubscribe(); - this.eventSubscribers.delete(method); + this.eventSubscribers.delete(method as K); }; }).pipe( switchMap((apiEvent) => { @@ -126,7 +126,7 @@ export class WebSocketService { takeUntil(this.clearSubscriptions$), ); - this.eventSubscribers.set(method, observable$); + this.eventSubscribers.set(method as K, observable$); return observable$; } diff --git a/src/assets/i18n/af.json b/src/assets/i18n/af.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/af.json +++ b/src/assets/i18n/af.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/ar.json b/src/assets/i18n/ar.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/ar.json +++ b/src/assets/i18n/ar.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/ast.json b/src/assets/i18n/ast.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/ast.json +++ b/src/assets/i18n/ast.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/az.json b/src/assets/i18n/az.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/az.json +++ b/src/assets/i18n/az.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/be.json b/src/assets/i18n/be.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/be.json +++ b/src/assets/i18n/be.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/bg.json b/src/assets/i18n/bg.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/bg.json +++ b/src/assets/i18n/bg.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/bn.json b/src/assets/i18n/bn.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/bn.json +++ b/src/assets/i18n/bn.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/br.json b/src/assets/i18n/br.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/br.json +++ b/src/assets/i18n/br.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/bs.json b/src/assets/i18n/bs.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/bs.json +++ b/src/assets/i18n/bs.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/ca.json b/src/assets/i18n/ca.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/ca.json +++ b/src/assets/i18n/ca.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/cs.json b/src/assets/i18n/cs.json index d30b5dce31f..435a3033377 100644 --- a/src/assets/i18n/cs.json +++ b/src/assets/i18n/cs.json @@ -628,6 +628,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1342,7 +1343,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -1752,6 +1752,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -3975,6 +3976,7 @@ "VMware Sync": "", "VMware: Extent block size 512b, TPC enabled, no Xen compat mode, SSD speed": "", "Validate effective ACL": "", + "View logs": "", "WARNING: A failover will temporarily interrupt system services.": "", "WARNING: Adding data VDEVs with different numbers of disks is not recommended.": "", "WARNING: Based on the pool topology, {size} is the minimum recommended record size. Choosing a smaller size can reduce system performance.": "", diff --git a/src/assets/i18n/cy.json b/src/assets/i18n/cy.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/cy.json +++ b/src/assets/i18n/cy.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/da.json b/src/assets/i18n/da.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/da.json +++ b/src/assets/i18n/da.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index e40e2e3660a..938d2f76525 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -693,6 +693,7 @@ "Content Commitment": "", "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", + "Continue in background": "", "Continue with the upgrade": "", "Contract Type": "", "Control": "", @@ -1224,7 +1225,6 @@ "Expand Row": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export All Keys": "", "Export Config": "", @@ -1581,6 +1581,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid Pod name": "", "Invalid cron expression": "", "Invalid format or character": "", @@ -3461,6 +3462,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/dsb.json b/src/assets/i18n/dsb.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/dsb.json +++ b/src/assets/i18n/dsb.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/el.json b/src/assets/i18n/el.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/el.json +++ b/src/assets/i18n/el.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/en-au.json b/src/assets/i18n/en-au.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/en-au.json +++ b/src/assets/i18n/en-au.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/en-gb.json b/src/assets/i18n/en-gb.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/en-gb.json +++ b/src/assets/i18n/en-gb.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/eo.json b/src/assets/i18n/eo.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/eo.json +++ b/src/assets/i18n/eo.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/es-ar.json b/src/assets/i18n/es-ar.json index 2fed1aeff46..03526e105bf 100644 --- a/src/assets/i18n/es-ar.json +++ b/src/assets/i18n/es-ar.json @@ -489,6 +489,7 @@ "Container Read": "", "Container Shell": "", "Container Write": "", + "Continue in background": "", "Continue with the upgrade": "", "Contract Type": "", "Control": "", @@ -892,7 +893,6 @@ "Exit": "", "Exited": "", "Expand": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -1146,6 +1146,7 @@ "Intermediate CA": "", "Internal": "", "Internal CA": "", + "Invalid Date": "", "Invalid Pod name": "", "Invalid cron expression": "", "Invalid format or character": "", @@ -2667,6 +2668,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/es-co.json b/src/assets/i18n/es-co.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/es-co.json +++ b/src/assets/i18n/es-co.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/es-mx.json b/src/assets/i18n/es-mx.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/es-mx.json +++ b/src/assets/i18n/es-mx.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/es-ni.json b/src/assets/i18n/es-ni.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/es-ni.json +++ b/src/assets/i18n/es-ni.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/es-ve.json b/src/assets/i18n/es-ve.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/es-ve.json +++ b/src/assets/i18n/es-ve.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 531cd393c72..0e98bad1415 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -874,6 +874,7 @@ "Content Commitment": "", "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1623,7 +1624,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2059,6 +2059,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4378,6 +4379,7 @@ "Vendor ID": "", "Verbose Logging": "", "View Enclosure": "", + "View logs": "", "WARNING: A failover will temporarily interrupt system services.": "", "WARNING: Adding data VDEVs with different numbers of disks is not recommended.": "", "WARNING: Based on the pool topology, {size} is the minimum recommended record size. Choosing a smaller size can reduce system performance.": "", diff --git a/src/assets/i18n/et.json b/src/assets/i18n/et.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/et.json +++ b/src/assets/i18n/et.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/eu.json b/src/assets/i18n/eu.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/eu.json +++ b/src/assets/i18n/eu.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/fa.json b/src/assets/i18n/fa.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/fa.json +++ b/src/assets/i18n/fa.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/fi.json b/src/assets/i18n/fi.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/fi.json +++ b/src/assets/i18n/fi.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index d5d3cb87105..012c770363a 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -127,6 +127,7 @@ "Container Read": "", "Container Shell": "", "Container Write": "", + "Continue in background": "", "Contract Type": "", "Controller": "", "Controller Type": "", @@ -318,6 +319,7 @@ "Insensitive": "", "Inspect VDEVs": "", "Install via YAML": "", + "Invalid Date": "", "Invisible": "", "Ipmi": "", "Isolated GPU PCI Ids": "", @@ -834,6 +836,7 @@ "Vdevs spans enclosure": "", "Vendor ID": "", "Verbose Logging": "", + "View logs": "", "Virtual Machine": "", "Voltage": "", "Warnings": "", @@ -2492,7 +2495,6 @@ "Expand pool ": "Étendre le volume ", "Expand pool to fit all available disk space.": "Étendre le volume pour qu'il puisse s'adapter à tout l'espace disque disponible.", "Expander Status": "Statut de l'expandeur", - "Expected Finished Time:": "Heure de fin prévue :", "Export": "Exporter", "Export Password Secret Seed": "Exporter la valeur secrète du mot de passe", "Export Read Only": "Exporter en lecture seule", diff --git a/src/assets/i18n/fy.json b/src/assets/i18n/fy.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/fy.json +++ b/src/assets/i18n/fy.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/ga.json b/src/assets/i18n/ga.json index 2b1676ad871..29555e5bd31 100644 --- a/src/assets/i18n/ga.json +++ b/src/assets/i18n/ga.json @@ -28,6 +28,7 @@ "Container ID": "", "Container Logs": "", "Container Shell": "", + "Continue in background": "", "Controller": "", "Controls": "", "Crashed": "", @@ -56,6 +57,7 @@ "Incoming / Outgoing network traffic": "", "Install NVIDIA Drivers": "", "Install via YAML": "", + "Invalid Date": "", "LBA of First Error": "", "Languages other than English are provided by the community and may be incomplete. Learn how to contribute.": "", "Latest version": "", @@ -99,6 +101,7 @@ "VMware: Extent block size 512b, TPC enabled, no Xen compat mode, SSD speed": "", "Validate effective ACL": "", "View Logs": "", + "View logs": "", "Volume Mounts": "", "Waiting for standby controller": "", "We encountered an issue while applying the new network changes. Unfortunately, we were unable to reconnect to the system after the changes were implemented. As a result, we have restored the previous network configuration to ensure continued connectivity.": "", @@ -1860,7 +1863,6 @@ "Expand pool ": "Leathnaigh linn snámha ", "Expand pool to fit all available disk space.": "Leathnaigh an linn snámha chun gach spás diosca atá ar fáil a fheistiú.", "Expander Status": "Stádas Leathnaithe", - "Expected Finished Time:": "Am Críochnaithe a bhfuiltear ag súil leis:", "Expiration Date": "Dáta Éaga", "Export": "Easpórtáil", "Export All Keys": "Easpórtáil Gach Eochracha", diff --git a/src/assets/i18n/gd.json b/src/assets/i18n/gd.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/gd.json +++ b/src/assets/i18n/gd.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/gl.json b/src/assets/i18n/gl.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/gl.json +++ b/src/assets/i18n/gl.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/he.json b/src/assets/i18n/he.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/he.json +++ b/src/assets/i18n/he.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/hi.json b/src/assets/i18n/hi.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/hi.json +++ b/src/assets/i18n/hi.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/hr.json b/src/assets/i18n/hr.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/hr.json +++ b/src/assets/i18n/hr.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/hsb.json b/src/assets/i18n/hsb.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/hsb.json +++ b/src/assets/i18n/hsb.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/hu.json b/src/assets/i18n/hu.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/hu.json +++ b/src/assets/i18n/hu.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/ia.json b/src/assets/i18n/ia.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/ia.json +++ b/src/assets/i18n/ia.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/id.json b/src/assets/i18n/id.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/id.json +++ b/src/assets/i18n/id.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/io.json b/src/assets/i18n/io.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/io.json +++ b/src/assets/i18n/io.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/is.json b/src/assets/i18n/is.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/is.json +++ b/src/assets/i18n/is.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 781299d652c..4f45f1845db 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -842,6 +842,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1592,7 +1593,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2069,6 +2069,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -3614,6 +3615,7 @@ "Var": "", "Vdev": "", "Vdevs spans enclosure": "", + "View logs": "", "WARNING: Adding data VDEVs with different numbers of disks is not recommended.": "", "Wait to start VM until SPICE client connects.": "", "Watch List": "", diff --git a/src/assets/i18n/ja.json b/src/assets/i18n/ja.json index fb4c81a9dbc..218aedd8053 100644 --- a/src/assets/i18n/ja.json +++ b/src/assets/i18n/ja.json @@ -798,6 +798,7 @@ "Containers": "", "Content Commitment": "", "Contents of the uploaded Service Account JSON file.": "", + "Continue in background": "", "Continue with the upgrade": "", "Contract Type": "", "Control": "", @@ -1514,7 +1515,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -1963,6 +1963,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4293,6 +4294,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/ka.json b/src/assets/i18n/ka.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/ka.json +++ b/src/assets/i18n/ka.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/kk.json b/src/assets/i18n/kk.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/kk.json +++ b/src/assets/i18n/kk.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/km.json b/src/assets/i18n/km.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/km.json +++ b/src/assets/i18n/km.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/kn.json b/src/assets/i18n/kn.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/kn.json +++ b/src/assets/i18n/kn.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/ko.json b/src/assets/i18n/ko.json index 6757a0042ed..fb9e081e7d4 100644 --- a/src/assets/i18n/ko.json +++ b/src/assets/i18n/ko.json @@ -537,6 +537,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1357,7 +1358,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -1834,6 +1834,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4360,6 +4361,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/lb.json b/src/assets/i18n/lb.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/lb.json +++ b/src/assets/i18n/lb.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/lt.json b/src/assets/i18n/lt.json index 49338c6559a..bfe7cc9f25c 100644 --- a/src/assets/i18n/lt.json +++ b/src/assets/i18n/lt.json @@ -955,6 +955,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1775,7 +1776,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2252,6 +2252,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4775,6 +4776,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/lv.json b/src/assets/i18n/lv.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/lv.json +++ b/src/assets/i18n/lv.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/mk.json b/src/assets/i18n/mk.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/mk.json +++ b/src/assets/i18n/mk.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/ml.json b/src/assets/i18n/ml.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/ml.json +++ b/src/assets/i18n/ml.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/mn.json b/src/assets/i18n/mn.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/mn.json +++ b/src/assets/i18n/mn.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/mr.json b/src/assets/i18n/mr.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/mr.json +++ b/src/assets/i18n/mr.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/my.json b/src/assets/i18n/my.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/my.json +++ b/src/assets/i18n/my.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/nb.json b/src/assets/i18n/nb.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/nb.json +++ b/src/assets/i18n/nb.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/ne.json b/src/assets/i18n/ne.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/ne.json +++ b/src/assets/i18n/ne.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/nl.json b/src/assets/i18n/nl.json index 2fa2cfb6cec..6c1e906dcc0 100644 --- a/src/assets/i18n/nl.json +++ b/src/assets/i18n/nl.json @@ -235,6 +235,7 @@ "Container ID": "", "Container Logs": "", "Container Shell": "", + "Continue in background": "", "Contract Type": "", "Controller": "", "Controller Type": "", @@ -430,7 +431,6 @@ "Exec": "", "Exit": "", "Exited": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export All Keys": "", "Export Config": "", @@ -539,6 +539,7 @@ "Install via YAML": "", "Integrate Snapshots with VMware": "", "Internal": "", + "Invalid Date": "", "Ipmi": "", "Isolated GPU Devices Settings": "", "Issue": "", @@ -1178,6 +1179,7 @@ "View More": "", "View Netdata": "", "View Release Notes": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/nn.json b/src/assets/i18n/nn.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/nn.json +++ b/src/assets/i18n/nn.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/os.json b/src/assets/i18n/os.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/os.json +++ b/src/assets/i18n/os.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/pa.json b/src/assets/i18n/pa.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/pa.json +++ b/src/assets/i18n/pa.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/pl.json b/src/assets/i18n/pl.json index 8eedbfd3a6b..d09b93a1f56 100644 --- a/src/assets/i18n/pl.json +++ b/src/assets/i18n/pl.json @@ -915,6 +915,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1728,7 +1729,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2204,6 +2204,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4706,6 +4707,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/pt-br.json b/src/assets/i18n/pt-br.json index c3be58843b0..5436ef0a95c 100644 --- a/src/assets/i18n/pt-br.json +++ b/src/assets/i18n/pt-br.json @@ -902,6 +902,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1722,7 +1723,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2198,6 +2198,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4724,6 +4725,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/pt.json b/src/assets/i18n/pt.json index 444dfb73270..503a7c857df 100644 --- a/src/assets/i18n/pt.json +++ b/src/assets/i18n/pt.json @@ -402,6 +402,7 @@ "Containers": "", "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", + "Continue in background": "", "Contract Type": "", "Controller": "", "Controller Type": "", @@ -893,7 +894,6 @@ "Exited": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export All Keys": "", "Export Config": "", @@ -1204,6 +1204,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid Pod name": "", "Invalid cron expression": "", "Invalid format or character": "", @@ -2984,6 +2985,7 @@ "View More": "", "View Netdata": "", "View Release Notes": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/ro.json b/src/assets/i18n/ro.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/ro.json +++ b/src/assets/i18n/ro.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/ru.json b/src/assets/i18n/ru.json index aea59bde0f6..8cbe97667f7 100644 --- a/src/assets/i18n/ru.json +++ b/src/assets/i18n/ru.json @@ -566,6 +566,7 @@ "Container Write": "", "Containers": "", "Content Commitment": "", + "Continue in background": "", "Continue with the upgrade": "", "Contract Type": "", "Controller": "", @@ -1057,7 +1058,6 @@ "Expand": "", "Expand Row": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -1325,6 +1325,7 @@ "Internal CA": "", "Internal Certificate": "", "Internetwork control": "", + "Invalid Date": "", "Invalid Pod name": "", "Invalid cron expression": "", "Invalid file": "", @@ -3083,6 +3084,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/sk.json b/src/assets/i18n/sk.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/sk.json +++ b/src/assets/i18n/sk.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/sl.json b/src/assets/i18n/sl.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/sl.json +++ b/src/assets/i18n/sl.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/sq.json b/src/assets/i18n/sq.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/sq.json +++ b/src/assets/i18n/sq.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/sr-latn.json b/src/assets/i18n/sr-latn.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/sr-latn.json +++ b/src/assets/i18n/sr-latn.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/sr.json b/src/assets/i18n/sr.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/sr.json +++ b/src/assets/i18n/sr.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/strings.json b/src/assets/i18n/strings.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/strings.json +++ b/src/assets/i18n/strings.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/sv.json b/src/assets/i18n/sv.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/sv.json +++ b/src/assets/i18n/sv.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/sw.json b/src/assets/i18n/sw.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/sw.json +++ b/src/assets/i18n/sw.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/ta.json b/src/assets/i18n/ta.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/ta.json +++ b/src/assets/i18n/ta.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/te.json b/src/assets/i18n/te.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/te.json +++ b/src/assets/i18n/te.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/th.json b/src/assets/i18n/th.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/th.json +++ b/src/assets/i18n/th.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/tr.json b/src/assets/i18n/tr.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/tr.json +++ b/src/assets/i18n/tr.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/tt.json b/src/assets/i18n/tt.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/tt.json +++ b/src/assets/i18n/tt.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/udm.json b/src/assets/i18n/udm.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/udm.json +++ b/src/assets/i18n/udm.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/uk.json b/src/assets/i18n/uk.json index bef24943e07..6d5673a324f 100644 --- a/src/assets/i18n/uk.json +++ b/src/assets/i18n/uk.json @@ -351,6 +351,7 @@ "Container Read": "", "Container Shell": "", "Container Write": "", + "Continue in background": "", "Continue with the upgrade": "", "Contract Type": "", "Controller": "", @@ -643,7 +644,6 @@ "Exec": "", "Exit": "", "Exited": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -1782,6 +1782,7 @@ "View More": "", "View Netdata": "", "View Release Notes": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", @@ -3377,6 +3378,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "Внутрішній ідентифікатор сертифіката. Дозволені лише буквено-цифрові символи, тире (-) та підкреслення (_ ).", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "Внутрішній ідентифікатор сертифіката. Дозволені лише буквено-цифрові символи, \"_\" і \"-\".", "Internetwork control": "Мережевий контроль", + "Invalid Date": "Недійсна дата", "Invalid IP address": "Невірна IP-адреса", "Invalid Pod name": "Недійсне ім'я Pod-y", "Invalid cron expression": "Недійсний вираз cron", diff --git a/src/assets/i18n/vi.json b/src/assets/i18n/vi.json index e39fc8780a6..3a6cbe666ac 100644 --- a/src/assets/i18n/vi.json +++ b/src/assets/i18n/vi.json @@ -961,6 +961,7 @@ "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", "Continue": "", + "Continue in background": "", "Continue with download?": "", "Continue with the upgrade": "", "Contract Type": "", @@ -1781,7 +1782,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -2258,6 +2258,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid IP address": "", "Invalid Pod name": "", "Invalid cron expression": "", @@ -4784,6 +4785,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/zh-hans.json b/src/assets/i18n/zh-hans.json index f7e77787794..c4e566c0801 100644 --- a/src/assets/i18n/zh-hans.json +++ b/src/assets/i18n/zh-hans.json @@ -241,6 +241,7 @@ "Container ID": "", "Container Logs": "", "Container Shell": "", + "Continue in background": "", "Contract Type": "", "Controller": "", "Controller Type": "", @@ -443,7 +444,6 @@ "Exec": "", "Exit": "", "Exited": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export All Keys": "", "Export Config": "", @@ -560,6 +560,7 @@ "Install via YAML": "", "Integrate Snapshots with VMware": "", "Internal": "", + "Invalid Date": "", "Invalid pool name (please refer to the documentation for valid rules for pool name)": "", "Ipmi": "", "Isolated GPU Devices Settings": "", @@ -1234,6 +1235,7 @@ "View More": "", "View Netdata": "", "View Release Notes": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "", diff --git a/src/assets/i18n/zh-hant.json b/src/assets/i18n/zh-hant.json index 3fb040791bb..86a39cfcf9d 100644 --- a/src/assets/i18n/zh-hant.json +++ b/src/assets/i18n/zh-hant.json @@ -789,6 +789,7 @@ "Content Commitment": "", "Contents of the uploaded Service Account JSON file.": "", "Context menu copy and paste operations are disabled in the Shell. Copy and paste shortcuts for Mac are Command+c and Command+v. For most operating systems, use Ctrl+Insert to copy and Shift+Insert to paste.": "", + "Continue in background": "", "Continue with the upgrade": "", "Contract Type": "", "Control": "", @@ -1475,7 +1476,6 @@ "Expand pool ": "", "Expand pool to fit all available disk space.": "", "Expander Status": "", - "Expected Finished Time:": "", "Expiration Date": "", "Export": "", "Export All Keys": "", @@ -1857,6 +1857,7 @@ "Internal identifier of the certificate. Only alphanumeric characters, dash (-), and underline (_) are allowed.": "", "Internal identifier of the certificate. Only alphanumeric, \"_\" and \"-\" are allowed.": "", "Internetwork control": "", + "Invalid Date": "", "Invalid Pod name": "", "Invalid cron expression": "", "Invalid file": "", @@ -4033,6 +4034,7 @@ "View Netdata": "", "View Release Notes": "", "View Reports": "", + "View logs": "", "View/Download CSR": "", "View/Download Certificate": "", "View/Download Key": "",