summaryrefslogtreecommitdiffstats
path: root/src/pybind/mgr/dashboard/frontend/src/app/shared/services
diff options
context:
space:
mode:
Diffstat (limited to 'src/pybind/mgr/dashboard/frontend/src/app/shared/services')
-rw-r--r--src/pybind/mgr/dashboard/frontend/src/app/shared/services/formatter.service.ts5
-rw-r--r--src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-message.service.ts52
-rw-r--r--src/pybind/mgr/dashboard/frontend/src/app/shared/services/text-area-json-formatter.service.spec.ts16
-rw-r--r--src/pybind/mgr/dashboard/frontend/src/app/shared/services/text-area-json-formatter.service.ts21
4 files changed, 92 insertions, 2 deletions
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/formatter.service.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/formatter.service.ts
index b5e0b9475..c1ad14b47 100644
--- a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/formatter.service.ts
+++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/formatter.service.ts
@@ -40,7 +40,7 @@ export class FormatterService {
*/
formatNumberFromTo(
n: any,
- units: any,
+ units: string = '',
targetedUnits: string = '',
conversionFactor: number,
unitsArray: string[],
@@ -52,6 +52,9 @@ export class FormatterService {
if (!_.isNumber(n)) {
return '-';
}
+ if (!unitsArray) {
+ return '-';
+ }
const unitsArrayLowerCase = unitsArray.map((str) => str.toLowerCase());
if (
!unitsArrayLowerCase.includes(units.toLowerCase()) ||
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-message.service.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-message.service.ts
index f6969c2e8..9aa9f02af 100644
--- a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-message.service.ts
+++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-message.service.ts
@@ -69,7 +69,17 @@ export class TaskMessageService {
delete: new TaskMessageOperation($localize`Deleting`, $localize`delete`, $localize`Deleted`),
add: new TaskMessageOperation($localize`Adding`, $localize`add`, $localize`Added`),
remove: new TaskMessageOperation($localize`Removing`, $localize`remove`, $localize`Removed`),
- import: new TaskMessageOperation($localize`Importing`, $localize`import`, $localize`Imported`)
+ import: new TaskMessageOperation($localize`Importing`, $localize`import`, $localize`Imported`),
+ activate: new TaskMessageOperation(
+ $localize`Importing`,
+ $localize`activate`,
+ $localize`Activated`
+ ),
+ deactivate: new TaskMessageOperation(
+ $localize`Importing`,
+ $localize`deactivate`,
+ $localize`Deactivated`
+ )
};
rbd = {
@@ -359,6 +369,9 @@ export class TaskMessageService {
'cephfs/edit': this.newTaskMessage(this.commonOperations.update, (metadata) =>
this.volume(metadata)
),
+ 'cephfs/auth': this.newTaskMessage(this.commonOperations.update, (metadata) =>
+ this.auth(metadata)
+ ),
'cephfs/remove': this.newTaskMessage(this.commonOperations.remove, (metadata) =>
this.volume(metadata)
),
@@ -379,6 +392,32 @@ export class TaskMessageService {
),
'cephfs/subvolume/group/remove': this.newTaskMessage(this.commonOperations.remove, (metadata) =>
this.subvolumegroup(metadata)
+ ),
+ 'cephfs/subvolume/snapshot/create': this.newTaskMessage(
+ this.commonOperations.create,
+ (metadata) => this.snapshot(metadata)
+ ),
+ 'cephfs/subvolume/snapshot/delete': this.newTaskMessage(
+ this.commonOperations.delete,
+ (metadata) => this.snapshot(metadata)
+ ),
+ 'cephfs/snapshot/schedule/create': this.newTaskMessage(this.commonOperations.add, (metadata) =>
+ this.snapshotSchedule(metadata)
+ ),
+ 'cephfs/snapshot/schedule/edit': this.newTaskMessage(this.commonOperations.update, (metadata) =>
+ this.snapshotSchedule(metadata)
+ ),
+ 'cephfs/snapshot/schedule/delete': this.newTaskMessage(
+ this.commonOperations.delete,
+ (metadata) => this.snapshotSchedule(metadata)
+ ),
+ 'cephfs/snapshot/schedule/activate': this.newTaskMessage(
+ this.commonOperations.activate,
+ (metadata) => this.snapshotSchedule(metadata)
+ ),
+ 'cephfs/snapshot/schedule/deactivate': this.newTaskMessage(
+ this.commonOperations.deactivate,
+ (metadata) => this.snapshotSchedule(metadata)
)
};
@@ -439,6 +478,10 @@ export class TaskMessageService {
return $localize`'${metadata.volumeName}'`;
}
+ auth(metadata: any) {
+ return $localize`client.${metadata.clientId} authorization successfully`;
+ }
+
subvolume(metadata: any) {
return $localize`subvolume '${metadata.subVolumeName}'`;
}
@@ -447,6 +490,13 @@ export class TaskMessageService {
return $localize`subvolume group '${metadata.subvolumegroupName}'`;
}
+ snapshot(metadata: any) {
+ return $localize`snapshot '${metadata.snapshotName}'`;
+ }
+
+ snapshotSchedule(metadata: any) {
+ return $localize`snapshot schedule for path '${metadata?.path}'`;
+ }
crudMessageId(id: string) {
return $localize`${id}`;
}
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/text-area-json-formatter.service.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/text-area-json-formatter.service.spec.ts
new file mode 100644
index 000000000..fc428f984
--- /dev/null
+++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/text-area-json-formatter.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { TextAreaJsonFormatterService } from './text-area-json-formatter.service';
+
+describe('TextAreaJsonFormatterService', () => {
+ let service: TextAreaJsonFormatterService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(TextAreaJsonFormatterService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/text-area-json-formatter.service.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/text-area-json-formatter.service.ts
new file mode 100644
index 000000000..0e696022a
--- /dev/null
+++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/text-area-json-formatter.service.ts
@@ -0,0 +1,21 @@
+import { ElementRef, Injectable } from '@angular/core';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class TextAreaJsonFormatterService {
+ constructor() {}
+
+ format(textArea: ElementRef<any>): void {
+ const value = textArea.nativeElement.value;
+ try {
+ const formatted = JSON.stringify(JSON.parse(value), null, 2);
+ textArea.nativeElement.value = formatted;
+ textArea.nativeElement.style.height = 'auto';
+ const lineNumber = formatted.split('\n').length;
+ const pixelPerLine = 20;
+ const pixels = lineNumber * pixelPerLine;
+ textArea.nativeElement.style.height = pixels + 'px';
+ } catch (e) {}
+ }
+}