]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/Subscription.js
hourly mail distribution chart: add dynamic color switching
[pmg-gui.git] / js / Subscription.js
index 3da87c5537edb008734914bb2eca63a67b2b63dd..2293cdb0ea036dbcf1d62fb166c46031c3ae2b42 100644 (file)
@@ -1,7 +1,6 @@
-/*global Blob*/
 Ext.define('PMG.SubscriptionKeyEdit', {
     extend: 'Proxmox.window.Edit',
-    
+
     title: gettext('Upload Subscription Key'),
     width: 300,
     autoLoad: true,
@@ -12,81 +11,158 @@ Ext.define('PMG.SubscriptionKeyEdit', {
        xtype: 'textfield',
        name: 'key',
        value: '',
-       fieldLabel: gettext('Subscription Key')
-    }
+       fieldLabel: gettext('Subscription Key'),
+    },
 });
 
 Ext.define('PMG.Subscription', {
     extend: 'Proxmox.grid.ObjectGrid',
     xtype: 'pmgSubscription',
 
+    title: gettext('Subscription'),
+
+    border: false,
+
     onlineHelp: 'getting_help',
 
     viewConfig: {
-       enableTextSelection: true
+       enableTextSelection: true,
     },
 
-    initComponent : function() {
-       var me = this;
+    showReport: function() {
+       let me = this;
 
-       var reload = function() {
-           me.rstore.load();
+       const getReportFileName = function() {
+           let now = Ext.Date.format(new Date(), 'D-d-F-Y-G-i');
+           return Proxmox.NodeName + '-report-' + now + '.txt';
        };
 
-       var baseurl = '/nodes/' + Proxmox.NodeName + '/subscription';
+       let view = Ext.createWidget('component', {
+           itemId: 'system-report-view',
+           scrollable: true,
+           style: {
+               'white-space': 'pre',
+               'font-family': 'monospace',
+               padding: '5px',
+           },
+       });
 
-       var render_status = function(value) {
+       let reportWindow = Ext.create('Ext.window.Window', {
+           title: gettext('System Report'),
+           width: 1024,
+           height: 600,
+           layout: 'fit',
+           modal: true,
+           buttons: [
+               '->',
+               {
+                   text: gettext('Download'),
+                   handler: function() {
+                       let fileContent = Ext.String.htmlDecode(reportWindow.getComponent('system-report-view').html);
+                       let fileName = getReportFileName();
 
-           var message = me.getObjectValue('message');
+                       // Internet Explorer
+                       if (window.navigator.msSaveOrOpenBlob) {
+                           navigator.msSaveOrOpenBlob(new Blob([fileContent]), fileName);
+                       } else {
+                           let element = document.createElement('a');
+                           element.setAttribute('href', 'data:text/plain;charset=utf-8,'
+                             + encodeURIComponent(fileContent));
+                           element.setAttribute('download', fileName);
+                           element.style.display = 'none';
+                           document.body.appendChild(element);
+                           element.click();
+                           document.body.removeChild(element);
+                       }
+                   },
+               },
+           ],
+           items: view,
+       });
 
+       Proxmox.Utils.API2Request({
+           url: '/api2/extjs/nodes/' + Proxmox.NodeName + '/report',
+           method: 'GET',
+           waitMsgTarget: me,
+           failure: function(response) {
+               Ext.Msg.alert(gettext('Error'), response.htmlStatus);
+           },
+           success: function(response) {
+               let report = Ext.htmlEncode(response.result.data);
+               reportWindow.show();
+               view.update(report);
+           },
+       });
+    },
+
+    initComponent: function() {
+       let me = this;
+
+       const reload = function() {
+           me.rstore.load();
+       };
+
+       let baseurl = `/nodes/${Proxmox.NodeName}/subscription`;
+
+       let render_status = function(value) {
+           let message = me.getObjectValue('message');
            if (message) {
                return value + ": " + message;
            }
            return value;
        };
 
-       var rows = {
+       let rows = {
            productname: {
-               header: gettext('Type')
+               header: gettext('Type'),
            },
            key: {
-               header: gettext('Subscription Key')
+               header: gettext('Subscription Key'),
            },
            status: {
                header: gettext('Status'),
-               renderer: render_status
+               renderer: render_status,
            },
            message: {
-               visible: false
+               visible: false,
            },
            serverid: {
-               header: gettext('Server ID')
+               header: gettext('Server ID'),
            },
            sockets: {
-               header: gettext('Sockets')
+               header: gettext('Sockets'),
            },
            checktime: {
                header: gettext('Last checked'),
-               renderer: Proxmox.Utils.render_timestamp
+               renderer: Proxmox.Utils.render_timestamp,
            },
            nextduedate: {
-               header: gettext('Next due date')
-           }
+               header: gettext('Next due date'),
+           },
        };
 
        Ext.apply(me, {
            url: '/api2/json' + baseurl,
            cwidth1: 170,
-           tbar: [ 
+           tbar: [
                {
                    text: gettext('Upload Subscription Key'),
                    handler: function() {
-                       var win = Ext.create('PMG.SubscriptionKeyEdit', {
-                           url: '/api2/extjs/' + baseurl 
+                       let win = Ext.create('PMG.SubscriptionKeyEdit', {
+                           url: '/api2/extjs/' + baseurl,
+                           autoShow: true,
                        });
-                       win.show();
                        win.on('destroy', reload);
-                   }
+                   },
+               },
+               {
+                   text: gettext('Remove Subscription'),
+                   xtype: 'proxmoxStdRemoveButton',
+                   confirmMsg: gettext('Are you sure to remove the subscription key?'),
+                   baseurl: baseurl,
+                   dangerous: true,
+                   selModel: false,
+                   callback: reload,
                },
                {
                    text: gettext('Check'),
@@ -99,16 +175,23 @@ Ext.define('PMG.Subscription', {
                            failure: function(response, opts) {
                                Ext.Msg.alert(gettext('Error'), response.htmlStatus);
                            },
-                           callback: reload
+                           callback: reload,
                        });
-                   }
-               }
+                   },
+               },
+               '-',
+               {
+                   text: gettext('System Report'),
+                   handler: function() {
+                       Proxmox.Utils.checked_command(function() { me.showReport(); });
+                   },
+               },
            ],
-           rows: rows
+           rows: rows,
        });
 
        me.callParent();
 
        reload();
-    }
+    },
 });