]> git.proxmox.com Git - pmg-gui.git/blame - js/PBSSnapshotView.js
pbs: small cleanups and store field name fixes
[pmg-gui.git] / js / PBSSnapshotView.js
CommitLineData
8b349e01
TL
1Ext.define('PMG.PBSConfig', {
2 extend: 'Ext.panel.Panel',
3 xtype: 'pmgPBSConfig',
4
5 controller: {
6 xclass: 'Ext.app.ViewController',
7
8 callRestore: function(grid, record) {
9 let remote = this.getViewModel().get('remote');
10 Ext.create('PMG.RestoreWindow', {
11 remote: remote,
12 backup_id: record.data['backup-id'],
13 backup_time: record.data['backup-time'],
14 }).show();
15 },
16
17 restoreSnapshot: function(button) {
18 let me = this;
19 let view = me.lookup('pbsremotegrid');
20 let record = view.getSelection()[0];
21 me.callRestore(view, record);
22 },
23
24 runBackup: function(button) {
25 let me = this;
26 let view = me.lookup('pbsremotegrid');
27 let remote = me.getViewModel().get('remote');
28 Proxmox.Utils.API2Request({
29 url: `/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot`,
30 method: 'POST',
31 waitMsgTarget: view,
32 failure: function(response, opts) {
33 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
34 },
35 success: function(response, opts) {
36 let upid = response.result.data;
37
38 let win = Ext.create('Proxmox.window.TaskViewer', {
39 upid: upid,
40 });
41 win.show();
42 me.mon(win, 'close', function() { view.getStore().load(); });
43 },
44 });
45 },
46
47 reload: function(grid) {
48 let me = this;
49 let selection = grid.getSelection();
50 me.showInfo(grid, selection);
51 },
52
53 showInfo: function(grid, selected) {
54 let me = this;
55 let viewModel = me.getViewModel();
56 if (selected[0]) {
57 let remote = selected[0].data.remote;
58 viewModel.set('selected', true);
59 viewModel.set('remote', remote);
60
61 // set grid stores and load them
62 let remstore = me.lookup('pbsremotegrid').getStore();
6ff66068
TL
63 remstore
64 .getProxy()
65 .setUrl(`/api2/json/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot`);
8b349e01
TL
66 remstore.load();
67 } else {
68 viewModel.set('selected', false);
69 }
70 },
71 reloadSnapshots: function() {
72 let me = this;
73 let grid = me.lookup('grid');
74 let selection = grid.getSelection();
75 me.showInfo(grid, selection);
76 },
77 init: function(view) {
78 let me = this;
79 me.lookup('grid').relayEvents(view, ['activate']);
80 let pbsremotegrid = me.lookup('pbsremotegrid');
81
82 Proxmox.Utils.monStoreErrors(pbsremotegrid, pbsremotegrid.getStore(), true);
83 },
84
85 control: {
86 'grid[reference=grid]': {
87 selectionchange: 'showInfo',
88 load: 'reload',
89 },
90 'grid[reference=pbsremotegrid]': {
91 itemdblclick: 'restoreSnapshot',
92 },
93 },
94 },
95
96 viewModel: {
97 data: {
98 remote: '',
99 selected: false,
100 },
101 },
102
103 layout: 'border',
104
105 items: [
106 {
107 region: 'center',
108 reference: 'grid',
109 xtype: 'pmgPBSConfigGrid',
110 border: false,
111 },
112 {
113 xtype: 'grid',
114 region: 'south',
115 reference: 'pbsremotegrid',
116 hidden: true,
117 height: '70%',
118 border: false,
119 split: true,
120 emptyText: gettext('No backups on remote'),
121 tbar: [
122 {
8b349e01
TL
123 text: gettext('Backup'),
124 handler: 'runBackup',
8b349e01
TL
125 },
126 {
127 xtype: 'proxmoxButton',
128 text: gettext('Restore'),
129 handler: 'restoreSnapshot',
130 disabled: true,
131 },
132 {
133 xtype: 'proxmoxStdRemoveButton',
134 text: gettext('Forget Snapshot'),
135 disabled: true,
136 getUrl: function(rec) {
137 let me = this;
138 let remote = me.lookupViewModel().get('remote');
139 let snapshot = `${rec.data['backup-id']}/${rec.data['backup-time']}`;
140 return `/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot/${snapshot}`;
141 },
142 confirmMsg: function(rec) {
143 let me = this;
144 let snapshot = `${rec.data['backup-id']}/${rec.data['backup-time']}`;
145 return Ext.String.format(
146 gettext('Are you sure you want to forget snapshot {0}'),
147 `'${snapshot}'`,
148 );
149 },
150 callback: 'reloadSnapshots',
151 },
152 ],
153 store: {
6ff66068 154 fields: ['backup-id', 'backup-time', 'size', 'ctime', 'encrypted'],
8b349e01
TL
155 proxy: { type: 'proxmox' },
156 sorters: [
157 {
6ff66068 158 property: 'backup-time',
8b349e01
TL
159 direction: 'DESC',
160 },
161 ],
162 },
163 bind: {
6ff66068
TL
164 title: Ext.String.format(
165 gettext("Backup snapshots on '{0}'"),
166 '{remote}',
167 ),
8b349e01
TL
168 },
169 columns: [
170 {
171 text: 'Group ID',
172 dataIndex: 'backup-id',
173 flex: 1,
174 },
175 {
176 text: 'Time',
177 dataIndex: 'backup-time',
178 width: 180,
179 },
180 {
181 text: 'Size',
182 dataIndex: 'size',
183 renderer: Proxmox.Utils.format_size,
184 flex: 1,
185 },
186 {
187 text: 'Encrypted',
188 dataIndex: 'encrypted',
189 hidden: true, // FIXME: actually return from API
190 renderer: Proxmox.Utils.format_boolean,
191 flex: 1,
192 },
193 ],
194 },
195 ],
196
197});