]> git.proxmox.com Git - pve-manager.git/blob - www/mobile/Datacenter.js
use Proxmox.Utils instead of PVE.Utils
[pve-manager.git] / www / mobile / Datacenter.js
1 Ext.define('PVE.ClusterInfo', {
2 extend: 'Ext.Component',
3 alias: 'widget.pveClusterInfo',
4
5 config: {
6 style: 'background-color: white;',
7 styleHtmlContent: true,
8 tpl: [
9 '<table style="margin-bottom:0px;">',
10 '<tr><td>Node:</td><td><b>{local_node}</large></b></tr>',
11 '<tpl if="cluster_name">',
12 '<tr><td>Cluster:</td><td>{cluster_name}</td></tr>',
13 '<tr><td>Members:</td><td>{nodes}</td></tr>',
14 '<tr><td>Quorate:</td><td>{quorate}</td></tr>',
15 '</tpl>',
16 '<tr><td>Version:</td><td>{version}</td></tr>',
17 '</table>',
18 ]
19 },
20 });
21
22 Ext.define('PVE.Datacenter', {
23 extend: 'PVE.Page',
24 alias: 'widget.pveDatacenter',
25
26 statics: {
27 pathMatch: function(loc) {
28 if (loc === '') {
29 return [''];
30 }
31 }
32 },
33
34 config: {
35 appUrl: '',
36 items: [
37 {
38 xtype: 'pveTitleBar',
39 title: gettext('Datacenter'),
40 pveBackButton: false
41 },
42 {
43 xtype: 'pveClusterInfo'
44 },
45 {
46 xtype: 'component',
47 cls: 'dark',
48 padding: 5,
49 html: gettext('Nodes')
50 },
51 {
52 xtype: 'list',
53 flex: 1,
54 disableSelection: true,
55 sorters: 'name',
56 listeners: {
57 itemsingletap: function(list, index, target, record) {
58 PVE.Workspace.gotoPage('nodes/' + record.get('name'));
59 }
60 },
61 itemTpl: '{name}' +
62 '<br><small>Online: {[Proxmox.Utils.format_boolean(values.online)]}</small>' +
63 '<br><small>Support: {[PVE.Utils.render_support_level(values.level)]}</small>'
64 }
65 ]
66 },
67
68 reload: function() {
69 var me = this;
70
71 var ci = me.down('pveClusterInfo');
72
73 me.setMasked(false);
74
75 me.summary = {};
76
77 PVE.Utils.API2Request({
78 url: '/version',
79 method: 'GET',
80 success: function(response) {
81 var d = response.result.data;
82 me.summary.version = d.version + '-' + d.release + '/' + d.repoid;
83 ci.setData(me.summary);
84 }
85 });
86
87 var list = me.down('list');
88
89 PVE.Utils.API2Request({
90 url: '/cluster/status',
91 method: 'GET',
92 success: function(response) {
93 var d = response.result.data;
94 list.setData(d.filter(function(el) { return (el.type === "node"); }));
95
96 d.forEach(function(el) {
97 if (el.type === "node") {
98 if (el.local) {
99 me.summary.local_node = el.name;
100 }
101 } else if (el.type === "cluster") {
102 me.summary.nodes = el.nodes;
103 me.summary.quorate = Proxmox.Utils.format_boolean(el.quorate);
104 me.summary.cluster_name = el.name;
105 }
106 });
107
108 ci.setData(me.summary);
109 },
110 failure: function(response) {
111 me.setMasked({ xtype: 'loadmask', message: response.htmlStatus} );
112 }
113 });
114 },
115
116 initialize: function() {
117 var me = this;
118
119 me.down('pveMenuButton').setMenuItems([
120 {
121 text: gettext('Tasks'),
122 handler: function() {
123 PVE.Workspace.gotoPage('tasks');
124 }
125 }
126 ]);
127
128 me.reload();
129 }
130
131 });
132