]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/window/DownloadUrlToStorage.js
subscription/summary/backup: stop setting the background color
[pve-manager.git] / www / manager6 / window / DownloadUrlToStorage.js
index 69788b6cebe01e4b09ef68b319c93b5cfc922d26..48543d28f7251cf856dbc99bb7837f453cf0512f 100644 (file)
@@ -25,50 +25,65 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
        url: '/nodes/{nodename}/storage/{storage}/download-url',
     },
 
+
+    viewModel: {
+       data: {
+           size: '-',
+           mimetype: '-',
+           enableQuery: true,
+       },
+    },
+
     controller: {
        xclass: 'Ext.app.ViewController',
 
        urlChange: function(field) {
-           let me = this;
-           let view = me.getView();
-           field = view.down('[name=url]');
-           field.setValidation(gettext("Please check URL"));
-           field.validate();
-           view.setValues({
-               size: gettext("unknown"),
-               mimetype: gettext("unknown"),
-           });
+           this.resetMetaInfo();
+           this.setQueryEnabled();
+       },
+       setQueryEnabled: function() {
+           this.getViewModel().set('enableQuery', true);
+       },
+       resetMetaInfo: function() {
+           let vm = this.getViewModel();
+           vm.set('size', '-');
+           vm.set('mimetype', '-');
        },
 
        urlCheck: function(field) {
            let me = this;
            let view = me.getView();
-           field = view.down('[name=url]');
-           view.setValues({
-               size: gettext("unknown"),
-               mimetype: gettext("unknown"),
-           });
+
+           const queryParam = view.getValues();
+
+           me.getViewModel().set('enableQuery', false);
+           me.resetMetaInfo();
+           let urlField = view.down('[name=url]');
+
            Proxmox.Utils.API2Request({
                url: `/nodes/${view.nodename}/query-url-metadata`,
                method: 'GET',
                params: {
-                   url: field.getValue(),
-                   'verify-certificates': view.getValues()['verify-certificates'],
+                   url: queryParam.url,
+                   'verify-certificates': queryParam['verify-certificates'],
                },
                waitMsgTarget: view,
-               failure: function(res, opt) {
-                   field.setValidation(res.result.message);
-                   field.validate();
+               failure: res => {
+                   urlField.setValidation(res.result.message);
+                   urlField.validate();
+                   Ext.MessageBox.alert(gettext('Error'), res.htmlStatus);
+                   // re-enable so one can directly requery, e.g., if it was just a network hiccup
+                   me.setQueryEnabled();
                },
                success: function(res, opt) {
-                   field.setValidation();
-                   field.validate();
+                   urlField.setValidation();
+                   urlField.validate();
 
                    let data = res.result.data;
                    view.setValues({
                        filename: data.filename || "",
-                       size: (data.size && Proxmox.Utils.format_size(data.size)) || gettext("unknown"),
-                       mimetype: data.mimetype || gettext("unknown"),
+                       size: (data.size && Proxmox.Utils.format_size(data.size)) || gettext("Unknown"),
+                       mimetype: data.mimetype || gettext("Unknown"),
                    });
                },
            });
@@ -91,6 +106,12 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
        {
            xtype: 'inputpanel',
            border: false,
+           onGetValues: function(values) {
+               if (typeof values.checksum === 'string') {
+                   values.checksum = values.checksum.trim();
+               }
+               return values;
+           },
            columnT: [
                {
                    xtype: 'fieldcontainer',
@@ -100,6 +121,7 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
                        {
                            xtype: 'textfield',
                            name: 'url',
+                           emptyText: gettext("Enter URL to download"),
                            allowBlank: false,
                            flex: 1,
                            listeners: {
@@ -109,8 +131,11 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
                        {
                            xtype: 'button',
                            name: 'check',
-                           text: gettext('Check'),
+                           text: gettext('Query URL'),
                            margin: '0 0 0 5',
+                           bind: {
+                               disabled: '{!enableQuery}',
+                           },
                            listeners: {
                                click: 'urlCheck',
                            },
@@ -122,6 +147,7 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
                    name: 'filename',
                    allowBlank: false,
                    fieldLabel: gettext('File name'),
+                   emptyText: gettext("Please (re-)query URL to get meta information"),
                },
            ],
            column1: [
@@ -129,7 +155,9 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
                    xtype: 'displayfield',
                    name: 'size',
                    fieldLabel: gettext('File size'),
-                   value: gettext('unknown'),
+                   bind: {
+                       value: '{size}',
+                   },
                },
            ],
            column2: [
@@ -137,7 +165,9 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
                    xtype: 'displayfield',
                    name: 'mimetype',
                    fieldLabel: gettext('MIME type'),
-                   value: gettext('unknown'),
+                   bind: {
+                       value: '{mimetype}',
+                   },
                },
            ],
            advancedColumn1: [
@@ -170,7 +200,7 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
                    uncheckedValue: 0,
                    checked: true,
                    listeners: {
-                       change: 'urlChange',
+                       change: 'setQueryEnabled',
                    },
                },
            ],