defaults: {
padding: 5,
- plugins: 'responsive',
- responsiveConfig: {
- 'width < 1900': {
- columnWidth: 1
- },
- 'width >= 1900': {
- columnWidth: 0.5
- }
- }
+ columnWidth: 1,
},
items: [
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;
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();
}