]> git.proxmox.com Git - pve-manager.git/blob - www/manager/openvz/RessourceView.js
fix bug #115: simplify GUI for users without permissions
[pve-manager.git] / www / manager / openvz / RessourceView.js
1 // fixme: howto avoid jslint type confusion?
2 /*jslint confusion: true */
3 Ext.define('PVE.openvz.RessourceView', {
4 extend: 'PVE.grid.ObjectGrid',
5 alias: ['widget.pveOpenVZRessourceView'],
6
7 initComponent : function() {
8 var me = this;
9 var i, confid;
10
11 var nodename = me.pveSelNode.data.node;
12 if (!nodename) {
13 throw "no node name specified";
14 }
15
16 var vmid = me.pveSelNode.data.vmid;
17 if (!vmid) {
18 throw "no VM ID specified";
19 }
20
21 var caps = Ext.state.Manager.get('GuiCap');
22
23 var resEditor = (caps.vms['VM.Config.Memory'] || caps.vms['VM.Config.Disk'] ||
24 caps.vms['VM.Config.CPU']) ? 'PVE.openvz.RessourceEdit' : undefined;
25
26
27 var rows = {
28 memory: {
29 header: gettext('Memory'),
30 editor: resEditor,
31 never_delete: true,
32 renderer: function(value) {
33 return PVE.Utils.format_size(value*1024*1024);
34 }
35 },
36 swap: {
37 header: gettext('Swap'),
38 editor: resEditor,
39 never_delete: true,
40 renderer: function(value) {
41 return PVE.Utils.format_size(value*1024*1024);
42 }
43 },
44 cpus: {
45 header: gettext('Processors'),
46 never_delete: true,
47 editor: resEditor,
48 defaultValue: 1
49 },
50 disk: {
51 header: gettext('Disk size'),
52 editor: resEditor,
53 never_delete: true,
54 renderer: function(value) {
55 return PVE.Utils.format_size(value*1024*1024*1024);
56 }
57 }
58 };
59
60 var reload = function() {
61 me.rstore.load();
62 };
63
64 var baseurl = 'nodes/' + nodename + '/openvz/' + vmid + '/config';
65
66 var sm = Ext.create('Ext.selection.RowModel', {});
67
68 var run_editor = function() {
69 var rec = sm.getSelection()[0];
70 if (!rec) {
71 return;
72 }
73
74 var rowdef = rows[rec.data.key];
75 if (!rowdef.editor) {
76 return;
77 }
78
79 var editor = rowdef.editor;
80
81 var win = Ext.create(editor, {
82 pveSelNode: me.pveSelNode,
83 confid: rec.data.key,
84 url: '/api2/extjs/' + baseurl
85 });
86
87 win.show();
88 win.on('destroy', reload);
89 };
90
91 var edit_btn = new PVE.button.Button({
92 text: gettext('Edit'),
93 selModel: sm,
94 disabled: true,
95 enableFn: function(rec) {
96 if (!rec) {
97 return false;
98 }
99 var rowdef = rows[rec.data.key];
100 return !!rowdef.editor;
101 },
102 handler: run_editor
103 });
104
105 Ext.applyIf(me, {
106 url: '/api2/json/' + baseurl,
107 selModel: sm,
108 cwidth1: 170,
109 tbar: [ edit_btn ],
110 rows: rows,
111 listeners: {
112 show: reload,
113 itemdblclick: run_editor
114 }
115 });
116
117 me.callParent();
118 }
119 });