]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/blob
0aeb84283770eeb381b48b2b0e857b7910a1d172
[ceph-ci.git] /
1 import { CdTableAction } from '../../../shared/models/cd-table-action';
2 import { CdTableSelection } from '../../../shared/models/cd-table-selection';
3
4 export class RbdSnapshotActionsModel {
5   create: CdTableAction = {
6     permission: 'create',
7     icon: 'fa-plus',
8     name: 'Create'
9   };
10   rename: CdTableAction = {
11     permission: 'update',
12     icon: 'fa-pencil',
13     name: 'Rename'
14   };
15   protect: CdTableAction = {
16     permission: 'update',
17     icon: 'fa-lock',
18     visible: (selection: CdTableSelection) =>
19       selection.hasSingleSelection && !selection.first().is_protected,
20     name: 'Protect'
21   };
22   unprotect: CdTableAction = {
23     permission: 'update',
24     icon: 'fa-unlock',
25     visible: (selection: CdTableSelection) =>
26       selection.hasSingleSelection && selection.first().is_protected,
27     name: 'Unprotect'
28   };
29   clone: CdTableAction = {
30     permission: 'create',
31     buttonCondition: (selection: CdTableSelection) => selection.hasSingleSelection,
32     disable: (selection: CdTableSelection) =>
33       !selection.hasSingleSelection || selection.first().cdExecuting,
34     icon: 'fa-clone',
35     name: 'Clone'
36   };
37   copy: CdTableAction = {
38     permission: 'create',
39     buttonCondition: (selection: CdTableSelection) => selection.hasSingleSelection,
40     disable: (selection: CdTableSelection) =>
41       !selection.hasSingleSelection || selection.first().cdExecuting,
42     icon: 'fa-copy',
43     name: 'Copy'
44   };
45   rollback: CdTableAction = {
46     permission: 'update',
47     icon: 'fa-undo',
48     name: 'Rollback'
49   };
50   deleteSnap: CdTableAction = {
51     permission: 'delete',
52     icon: 'fa-times',
53     disable: (selection: CdTableSelection) => {
54       const first = selection.first();
55       return !selection.hasSingleSelection || first.cdExecuting || first.is_protected;
56     },
57     name: 'Delete'
58   };
59   ordering = [
60     this.create,
61     this.rename,
62     this.protect,
63     this.unprotect,
64     this.clone,
65     this.copy,
66     this.rollback,
67     this.deleteSnap
68   ];
69 }