]> git.proxmox.com Git - proxmox-backup.git/blob - www/Utils.js
8841b0cb207a5ee13c4f11ccc68df6e61a8667bc
[proxmox-backup.git] / www / Utils.js
1 /*global Proxmox */
2 Ext.ns('PBS');
3
4 console.log("Starting Backup Server GUI");
5
6 Ext.define('PBS.Utils', {
7 singleton: true,
8
9 // Ext.Ajax.request
10 API3Request: function(reqOpts) {
11
12 var newopts = Ext.apply({
13 waitMsg: gettext('Please wait...')
14 }, reqOpts);
15
16 if (!newopts.url.match(/^\/api3/)) {
17 newopts.url = '/api3/extjs' + newopts.url;
18 }
19 delete newopts.callback;
20
21 var createWrapper = function(successFn, callbackFn, failureFn) {
22 Ext.apply(newopts, {
23 success: function(response, options) {
24 if (options.waitMsgTarget) {
25 if (Proxmox.Utils.toolkit === 'touch') {
26 options.waitMsgTarget.setMasked(false);
27 } else {
28 options.waitMsgTarget.setLoading(false);
29 }
30 }
31 var result = Ext.decode(response.responseText);
32 response.result = result;
33 if (!result.success) {
34 response.htmlStatus = Proxmox.Utils.extractRequestError(result, true);
35 Ext.callback(callbackFn, options.scope, [options, false, response]);
36 Ext.callback(failureFn, options.scope, [response, options]);
37 return;
38 }
39 Ext.callback(callbackFn, options.scope, [options, true, response]);
40 Ext.callback(successFn, options.scope, [response, options]);
41 },
42 failure: function(response, options) {
43 if (options.waitMsgTarget) {
44 if (Proxmox.Utils.toolkit === 'touch') {
45 options.waitMsgTarget.setMasked(false);
46 } else {
47 options.waitMsgTarget.setLoading(false);
48 }
49 }
50 response.result = {};
51 try {
52 response.result = Ext.decode(response.responseText);
53 } catch(e) {}
54 var msg = gettext('Connection error') + ' - server offline?';
55 if (response.aborted) {
56 msg = gettext('Connection error') + ' - aborted.';
57 } else if (response.timedout) {
58 msg = gettext('Connection error') + ' - Timeout.';
59 } else if (response.status && response.statusText) {
60 msg = gettext('Connection error') + ' ' + response.status + ': ' + response.statusText;
61 }
62 response.htmlStatus = msg;
63 Ext.callback(callbackFn, options.scope, [options, false, response]);
64 Ext.callback(failureFn, options.scope, [response, options]);
65 }
66 });
67 };
68
69 createWrapper(reqOpts.success, reqOpts.callback, reqOpts.failure);
70
71 var target = newopts.waitMsgTarget;
72 if (target) {
73 if (Proxmox.Utils.toolkit === 'touch') {
74 target.setMasked({ xtype: 'loadmask', message: newopts.waitMsg} );
75 } else {
76 // Note: ExtJS bug - this does not work when component is not rendered
77 target.setLoading(newopts.waitMsg);
78 }
79 }
80 Ext.Ajax.request(newopts);
81 },
82
83 constructor: function() {
84 var me = this;
85
86 // do whatever you want here
87 }
88 });