]>
Commit | Line | Data |
---|---|---|
d944805a SI |
1 | Ext.define('PMG.PBSScheduleEdit', { |
2 | extend: 'Proxmox.window.Edit', | |
3 | xtype: 'pmgPBSScheduleEdit', | |
afb34731 | 4 | onlineHelp: 'pmgbackup_pbs_schedule', |
d944805a SI |
5 | |
6 | isAdd: true, | |
45dad584 TL |
7 | isCreate: true, |
8 | submitText: gettext('Set'), | |
9 | ||
d944805a | 10 | method: 'POST', |
45dad584 | 11 | title: gettext('Configure Scheduled Backup'), |
d944805a SI |
12 | autoLoad: true, |
13 | items: [ | |
14 | { | |
15 | xtype: 'proxmoxKVComboBox', | |
16 | name: 'schedule', | |
17 | fieldLabel: gettext('Schedule'), | |
18 | comboItems: [ | |
d944805a | 19 | ['hourly', 'hourly'], |
45dad584 | 20 | ['daily', 'daily'], |
d944805a SI |
21 | ['weekly', 'weekly'], |
22 | ['monthly', 'monthly'], | |
23 | ], | |
24 | editable: true, | |
45dad584 TL |
25 | deleteEmpty: false, |
26 | emptyText: gettext('daily'), | |
d944805a SI |
27 | }, |
28 | { | |
29 | xtype: 'proxmoxKVComboBox', | |
30 | name: 'delay', | |
31 | fieldLabel: gettext('Random Delay'), | |
32 | comboItems: [ | |
45dad584 | 33 | ['0s', gettext('No Delay')], |
d944805a SI |
34 | ['15 minutes', '15 Minutes'], |
35 | ['6 hours', '6 hours'], | |
36 | ], | |
37 | editable: true, | |
45dad584 TL |
38 | deleteEmpty: false, |
39 | emptyText: gettext('5 Minutes'), | |
d944805a SI |
40 | }, |
41 | ], | |
42 | initComponent: function() { | |
43 | let me = this; | |
44 | ||
2df1316d | 45 | me.url = `/nodes/${Proxmox.NodeName}/pbs/${me.remote}/timer`; |
d944805a SI |
46 | me.callParent(); |
47 | }, | |
48 | }); | |
49 | ||
d944805a SI |
50 | Ext.define('pmg-pbs-config', { |
51 | extend: 'Ext.data.Model', | |
52 | fields: ['remote', 'server', 'datastore', 'username', 'disabled'], | |
53 | proxy: { | |
54 | type: 'proxmox', | |
55 | url: '/api2/json/config/pbs', | |
56 | }, | |
57 | idProperty: 'remote', | |
58 | }); | |
59 | ||
60 | Ext.define('PMG.PBSConfigGrid', { | |
61 | extend: 'Ext.grid.GridPanel', | |
62 | xtype: 'pmgPBSConfigGrid', | |
63 | ||
64 | controller: { | |
65 | xclass: 'Ext.app.ViewController', | |
66 | ||
67 | run_editor: function() { | |
68 | let me = this; | |
69 | let view = me.getView(); | |
70 | let rec = view.getSelection()[0]; | |
71 | if (!rec) { | |
72 | return; | |
73 | } | |
74 | ||
75 | let win = Ext.createWidget('pmgPBSEdit', { | |
76 | remoteId: rec.data.remote, | |
d2b8eac4 TL |
77 | autoLoad: true, |
78 | autoShow: true, | |
d944805a SI |
79 | }); |
80 | win.on('destroy', me.reload, me); | |
d944805a SI |
81 | }, |
82 | ||
83 | newRemote: function() { | |
84 | let me = this; | |
85 | let win = Ext.createWidget('pmgPBSEdit', {}); | |
86 | win.on('destroy', me.reload, me); | |
87 | win.show(); | |
88 | }, | |
89 | ||
d944805a SI |
90 | reload: function() { |
91 | let me = this; | |
92 | let view = me.getView(); | |
93 | view.getStore().load(); | |
d944805a SI |
94 | }, |
95 | ||
96 | init: function(view) { | |
97 | let me = this; | |
98 | Proxmox.Utils.monStoreErrors(view, view.getStore(), true); | |
99 | }, | |
d944805a SI |
100 | }, |
101 | ||
102 | store: { | |
103 | model: 'pmg-pbs-config', | |
104 | sorters: [{ | |
105 | property: 'remote', | |
106 | order: 'DESC', | |
107 | }], | |
108 | }, | |
109 | ||
110 | tbar: [ | |
53dea017 TL |
111 | { |
112 | text: gettext('Add Remote'), | |
113 | handler: 'newRemote', | |
114 | }, | |
115 | '-', | |
d944805a SI |
116 | { |
117 | xtype: 'proxmoxButton', | |
118 | text: gettext('Edit'), | |
119 | disabled: true, | |
120 | handler: 'run_editor', | |
121 | }, | |
d944805a SI |
122 | { |
123 | xtype: 'proxmoxStdRemoveButton', | |
124 | baseurl: '/config/pbs', | |
125 | callback: 'reload', | |
126 | }, | |
d2b8eac4 | 127 | '->', |
d944805a | 128 | { |
d2b8eac4 TL |
129 | text: gettext('Reload'), |
130 | iconCls: 'fa fa-refresh', | |
131 | handler: 'reload', | |
d944805a SI |
132 | }, |
133 | ], | |
134 | ||
135 | listeners: { | |
136 | itemdblclick: 'run_editor', | |
137 | activate: 'reload', | |
138 | }, | |
139 | ||
140 | columns: [ | |
141 | { | |
2df1316d | 142 | header: gettext('Remote'), |
d944805a SI |
143 | sortable: true, |
144 | dataIndex: 'remote', | |
145 | flex: 2, | |
146 | }, | |
147 | { | |
148 | header: gettext('Server'), | |
149 | sortable: true, | |
150 | dataIndex: 'server', | |
151 | flex: 2, | |
152 | }, | |
153 | { | |
154 | header: gettext('Datastore'), | |
155 | sortable: true, | |
156 | dataIndex: 'datastore', | |
157 | flex: 1, | |
158 | }, | |
159 | { | |
160 | header: gettext('User ID'), | |
161 | sortable: true, | |
162 | dataIndex: 'username', | |
163 | flex: 1, | |
164 | }, | |
165 | { | |
166 | header: gettext('Encryption'), | |
167 | width: 80, | |
168 | sortable: true, | |
1415738c | 169 | hidden: true, // for now |
d944805a SI |
170 | dataIndex: 'encryption-key', |
171 | renderer: Proxmox.Utils.format_boolean, | |
172 | }, | |
173 | { | |
174 | header: gettext('Enabled'), | |
175 | width: 80, | |
176 | sortable: true, | |
177 | dataIndex: 'disable', | |
178 | renderer: Proxmox.Utils.format_neg_boolean, | |
179 | }, | |
180 | ], | |
181 | ||
182 | }); |