]> git.proxmox.com Git - pve-manager.git/blob - www/manager/openvz/RessourceView.js
add ressource editor for openvz
[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 rows = {
22 memory: {
23 header: 'Memory',
24 editor: 'PVE.openvz.RessourceEdit',
25 never_delete: true,
26 renderer: function(value) {
27 return PVE.Utils.format_size(value*1024*1024);
28 }
29 },
30 swap: {
31 header: 'Swap',
32 editor: 'PVE.openvz.RessourceEdit',
33 never_delete: true,
34 renderer: function(value) {
35 return PVE.Utils.format_size(value*1024*1024);
36 }
37 },
38 cpus: {
39 header: 'Processors',
40 never_delete: true,
41 editor: 'PVE.openvz.RessourceEdit',
42 defaultValue: 1,
43 },
44 disk: {
45 header: 'Disk space',
46 editor: 'PVE.openvz.RessourceEdit',
47 never_delete: true,
48 renderer: function(value) {
49 return PVE.Utils.format_size(value*1024*1024*1024);
50 }
51 }
52 };
53
54 var reload = function() {
55 me.rstore.load();
56 };
57
58 var baseurl = 'nodes/' + nodename + '/openvz/' + vmid + '/config';
59
60 var run_editor = function() {
61 var sm = me.getSelectionModel();
62 var rec = sm.getSelection()[0];
63 if (!rec) {
64 return;
65 }
66
67 var rowdef = rows[rec.data.key];
68 if (!rowdef.editor) {
69 return;
70 }
71
72 var editor = rowdef.editor;
73
74 var win = Ext.create(editor, {
75 pveSelNode: me.pveSelNode,
76 confid: rec.data.key,
77 url: '/api2/extjs/' + baseurl
78 });
79
80 win.show();
81 win.on('destroy', reload);
82 };
83
84 var edit_btn = new Ext.Button({
85 text: 'Edit',
86 disabled: true,
87 handler: run_editor
88 });
89
90
91 var set_button_status = function() {
92 var sm = me.getSelectionModel();
93 var rec = sm.getSelection()[0];
94
95 if (!rec) {
96 edit_btn.disable();
97 return;
98 }
99
100 var rowdef = rows[rec.data.key];
101
102 edit_btn.setDisabled(!rowdef.editor);
103 };
104
105 Ext.applyIf(me, {
106 url: '/api2/json/' + baseurl,
107 cwidth1: 170,
108 tbar: [ edit_btn ],
109 rows: rows,
110 listeners: {
111 show: reload,
112 itemdblclick: run_editor,
113 selectionchange: set_button_status
114 }
115 });
116
117 me.callParent();
118 }
119 });