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