]> git.proxmox.com Git - pve-manager.git/blob - www/manager/openvz/Options.js
38eafaba49e3ef251f75ff7cac76b8b4cff85383
[pve-manager.git] / www / manager / openvz / Options.js
1 /*jslint confusion: true */
2 Ext.define('PVE.openvz.Options', {
3 extend: 'PVE.grid.ObjectGrid',
4 alias: ['widget.pveOpenVZOptions'],
5
6 initComponent : function() {
7 var me = this;
8 var i;
9
10 var nodename = me.pveSelNode.data.node;
11 if (!nodename) {
12 throw "no node name specified";
13 }
14
15 var vmid = me.pveSelNode.data.vmid;
16 if (!vmid) {
17 throw "no VM ID specified";
18 }
19
20 var caps = Ext.state.Manager.get('GuiCap');
21
22 var quotaDisabledText = gettext('User quotas disabled.');
23
24 var rows = {
25 onboot: {
26 header: gettext('Start at boot'),
27 defaultValue: '',
28 renderer: PVE.Utils.format_boolean,
29 editor: caps.vms['VM.Config.Options'] ? {
30 xtype: 'pveWindowEdit',
31 subject: gettext('Start at boot'),
32 items: {
33 xtype: 'pvecheckbox',
34 name: 'onboot',
35 uncheckedValue: 0,
36 defaultValue: 0,
37 fieldLabel: gettext('Start at boot')
38 }
39 } : undefined
40 },
41 ostemplate: {
42 header: gettext('Template'),
43 defaultValue: 'no set'
44 },
45 storage: {
46 header: gettext('Storage'),
47 defaultValue: 'no set'
48 },
49 cpuunits: {
50 header: gettext('CPU units'),
51 defaultValue: '1000',
52 editor: caps.vms['VM.Config.CPU'] ? {
53 xtype: 'pveWindowEdit',
54 subject: gettext('CPU units'),
55 items: {
56 xtype: 'numberfield',
57 name: 'cpuunits',
58 fieldLabel: gettext('CPU units'),
59 minValue: 8,
60 maxValue: 500000,
61 allowBlank: false
62 }
63 } : undefined
64 },
65 quotaugidlimit: {
66 header: gettext('Quota UGID limit'),
67 defaultValue: '0',
68 renderer: function(value) {
69 if (value == 0) {
70 return quotaDisabledText;
71 }
72 return value;
73 },
74 editor: caps.vms['VM.Config.Disk'] ? {
75 xtype: 'pveWindowEdit',
76 subject: gettext('Quota UGID limit') + ' (0 ==> ' +
77 quotaDisabledText + ')',
78 fieldDefaults: { labelWidth: 130 },
79 items: {
80 xtype: 'numberfield',
81 name: 'quotaugidlimit',
82 fieldLabel: gettext('Quota UGID limit'),
83 minValue: 0,
84 allowBlank: false
85 }
86 } : undefined
87 },
88 quotatime: {
89 header: gettext('Quota Grace period'),
90 defaultValue: '0',
91 editor: caps.vms['VM.Config.Disk'] ? {
92 xtype: 'pveWindowEdit',
93 subject: gettext('Quota Grace period') + ' (' +
94 gettext('seconds') + ')',
95 fieldDefaults: { labelWidth: 130 },
96 items: {
97 xtype: 'numberfield',
98 name: 'quotatime',
99 minValue: 0,
100 allowBlank: false,
101 fieldLabel: gettext('Quota Grace period')
102 }
103 } : undefined
104 }
105 };
106
107 var baseurl = 'nodes/' + nodename + '/openvz/' + vmid + '/config';
108
109 var reload = function() {
110 me.rstore.load();
111 };
112
113 var sm = Ext.create('Ext.selection.RowModel', {});
114
115 var run_editor = function() {
116 var rec = sm.getSelection()[0];
117 if (!rec) {
118 return;
119 }
120
121 var rowdef = rows[rec.data.key];
122 if (!rowdef.editor) {
123 return;
124 }
125
126 var config = Ext.apply({
127 pveSelNode: me.pveSelNode,
128 confid: rec.data.key,
129 url: '/api2/extjs/' + baseurl
130 }, rowdef.editor);
131 var win = Ext.createWidget(rowdef.editor.xtype, config);
132 win.load();
133
134 win.show();
135 win.on('destroy', reload);
136 };
137
138 var edit_btn = new PVE.button.Button({
139 text: gettext('Edit'),
140 disabled: true,
141 selModel: sm,
142 enableFn: function(rec) {
143 var rowdef = rows[rec.data.key];
144 return !!rowdef.editor;
145 },
146 handler: run_editor
147 });
148
149 Ext.applyIf(me, {
150 url: "/api2/json/nodes/" + nodename + "/openvz/" + vmid + "/config",
151 selModel: sm,
152 cwidth1: 150,
153 tbar: [ edit_btn ],
154 rows: rows,
155 listeners: {
156 itemdblclick: run_editor
157 }
158 });
159
160 me.callParent();
161
162 me.on('show', reload);
163 }
164 });
165