]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/dc/Summary.js
gui: let users choose the number of columns
[pve-manager.git] / www / manager6 / dc / Summary.js
index 6254395bd70472c7dcff1499551f581d4b2c2d47..5e613eb11743f04bb11aceff420c199f0e630364 100644 (file)
@@ -10,15 +10,7 @@ Ext.define('PVE.dc.Summary', {
 
     defaults: {
        padding: 5,
-       plugins: 'responsive',
-       responsiveConfig: {
-           'width < 1900': {
-               columnWidth: 1
-           },
-           'width >= 1900': {
-               columnWidth: 0.5
-           }
-       }
+       columnWidth: 1,
     },
 
     items: [
@@ -66,12 +58,27 @@ Ext.define('PVE.dc.Summary', {
            items: [
                {
                    itemId: 'subscriptions',
-                   xtype: 'pveHealthWidget'
+                   xtype: 'pveHealthWidget',
+                   userCls: 'pointer',
+                   listeners: {
+                       element: 'el',
+                       click: function() {
+                           if (this.component.userCls === 'pointer') {
+                               window.open('https://www.proxmox.com/en/proxmox-ve/pricing', '_blank');
+                           }
+                       }
+                   }
                }
            ]
        }
     ],
 
+    listeners: {
+       resize: function(panel) {
+           PVE.Utils.updateColumns(panel);
+       },
+    },
+
     initComponent: function() {
         var me = this;
 
@@ -222,48 +229,72 @@ Ext.define('PVE.dc.Summary', {
        me.mon(rstore, 'load', function(store, records, success) {
            var i;
            var level;
-           var curlevel;
+           var mixed = false;
            for (i = 0; i < records.length; i++) {
                if (records[i].get('type') !== 'node') {
                    continue;
                }
-
-               curlevel = records[i].get('level');
-               if (level === undefined || !curlevel) {
-                   level = curlevel;
+               var node = records[i];
+               if (node.get('status') === 'offline') {
                    continue;
                }
 
-               if (level !== curlevel) {
+               var curlevel = node.get('level');
+
+               if (curlevel === '') { // no subscription trumps all, set and break
+                   level = '';
                    break;
                }
+
+               if (level === undefined) { // save level
+                   level = curlevel;
+               } else if (level !== curlevel) { // detect different levels
+                   mixed = true;
+               }
            }
 
+           var data = {
+               title: Proxmox.Utils.unknownText,
+               text: Proxmox.Utils.unknownText,
+               iconCls: PVE.Utils.get_health_icon(undefined, true)
+           };
            if (level === '') {
-               subs.setData({
+               data = {
                    title: gettext('No Subscription'),
                    iconCls: PVE.Utils.get_health_icon('critical', true),
                    text: gettext('You have at least one node without subscription.')
-               });
-           } else if (level !== curlevel) {
-               subs.setData({
+               };
+               subs.setUserCls('pointer');
+           } else if (mixed) {
+               data = {
                    title: gettext('Mixed Subscriptions'),
                    iconCls: PVE.Utils.get_health_icon('warning', true),
                    text: gettext('Warning: Your subscription levels are not the same.')
-               });
-           } else {
-               subs.setData({
+               };
+               subs.setUserCls('pointer');
+           } else if (level) {
+               data = {
                    title: PVE.Utils.render_support_level(level),
                    iconCls: PVE.Utils.get_health_icon('good', true),
                    text: gettext('Your subscription status is valid.')
-               });
+               };
+               subs.setUserCls('');
            }
+
+           subs.setData(data);
        });
 
        me.on('destroy', function(){
            rstore.stopUpdate();
        });
 
+       me.mon(sp, 'statechange', function(provider, key, value) {
+           if (key !== 'summarycolumns') {
+               return;
+           }
+           PVE.Utils.updateColumns(me);
+       });
+
        rstore.startUpdate();
     }