]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/storage/IScsiEdit.js
use Checkbox from widget toolkit
[pve-manager.git] / www / manager6 / storage / IScsiEdit.js
1 Ext.define('PVE.storage.IScsiScan', {
2 extend: 'Ext.form.field.ComboBox',
3 alias: 'widget.pveIScsiScan',
4
5 queryParam: 'portal',
6 valueField: 'target',
7 displayField: 'target',
8 matchFieldWidth: false,
9 listConfig: {
10 loadingText: gettext('Scanning...'),
11 width: 350
12 },
13 doRawQuery: function() {
14 },
15
16 onTriggerClick: function() {
17 var me = this;
18
19 if (!me.queryCaching || me.lastQuery !== me.portal) {
20 me.store.removeAll();
21 }
22
23 me.allQuery = me.portal;
24
25 me.callParent();
26 },
27
28 setPortal: function(portal) {
29 var me = this;
30
31 me.portal = portal;
32 },
33
34 initComponent : function() {
35 var me = this;
36
37 if (!me.nodename) {
38 me.nodename = 'localhost';
39 }
40
41 var store = Ext.create('Ext.data.Store', {
42 fields: [ 'target', 'portal' ],
43 proxy: {
44 type: 'pve',
45 url: '/api2/json/nodes/' + me.nodename + '/scan/iscsi'
46 }
47 });
48
49 store.sort('target', 'ASC');
50
51 Ext.apply(me, {
52 store: store
53 });
54
55 me.callParent();
56 }
57 });
58
59 Ext.define('PVE.storage.IScsiInputPanel', {
60 extend: 'PVE.panel.InputPanel',
61
62 onGetValues: function(values) {
63 var me = this;
64
65 if (me.isCreate) {
66 values.type = 'iscsi';
67 } else {
68 delete values.storage;
69 }
70
71 values.content = values.luns ? 'images' : 'none';
72 delete values.luns;
73
74 values.disable = values.enable ? 0 : 1;
75 delete values.enable;
76
77 return values;
78 },
79
80 initComponent : function() {
81 var me = this;
82
83
84 me.column1 = [
85 {
86 xtype: me.isCreate ? 'textfield' : 'displayfield',
87 name: 'storage',
88 value: me.storageId || '',
89 fieldLabel: 'ID',
90 vtype: 'StorageId',
91 allowBlank: false
92 },
93 {
94 xtype: me.isCreate ? 'textfield' : 'displayfield',
95 name: 'portal',
96 value: '',
97 fieldLabel: 'Portal',
98 allowBlank: false,
99 listeners: {
100 change: function(f, value) {
101 if (me.isCreate) {
102 var exportField = me.down('field[name=target]');
103 exportField.setPortal(value);
104 exportField.setValue('');
105 }
106 }
107 }
108 },
109 {
110 readOnly: !me.isCreate,
111 xtype: me.isCreate ? 'pveIScsiScan' : 'displayfield',
112 name: 'target',
113 value: '',
114 fieldLabel: 'Target',
115 allowBlank: false
116 }
117 ];
118
119 me.column2 = [
120 {
121 xtype: 'pveNodeSelector',
122 name: 'nodes',
123 fieldLabel: gettext('Nodes'),
124 emptyText: gettext('All') + ' (' +
125 gettext('No restrictions') +')',
126 multiSelect: true,
127 autoSelect: false
128 },
129 {
130 xtype: 'proxmoxcheckbox',
131 name: 'enable',
132 checked: true,
133 uncheckedValue: 0,
134 fieldLabel: gettext('Enable')
135 },
136 {
137 xtype: 'checkbox',
138 name: 'luns',
139 checked: true,
140 fieldLabel: gettext('Use LUNs directly')
141 }
142 ];
143
144 me.callParent();
145 }
146 });
147
148 Ext.define('PVE.storage.IScsiEdit', {
149 extend: 'PVE.window.Edit',
150
151 initComponent : function() {
152 var me = this;
153
154 me.isCreate = !me.storageId;
155
156 if (me.isCreate) {
157 me.url = '/api2/extjs/storage';
158 me.method = 'POST';
159 } else {
160 me.url = '/api2/extjs/storage/' + me.storageId;
161 me.method = 'PUT';
162 }
163
164 var ipanel = Ext.create('PVE.storage.IScsiInputPanel', {
165 isCreate: me.isCreate,
166 storageId: me.storageId
167 });
168
169 Ext.apply(me, {
170 subject: PVE.Utils.format_storage_type('iscsi'),
171 isAdd: true,
172 items: [ ipanel ]
173 });
174
175 me.callParent();
176
177 if (!me.isCreate) {
178 me.load({
179 success: function(response, options) {
180 var values = response.result.data;
181 var ctypes = values.content || '';
182
183 if (values.storage === 'local') {
184 values.content = ctypes.split(',');
185 }
186 if (values.nodes) {
187 values.nodes = values.nodes.split(',');
188 }
189 values.enable = values.disable ? 0 : 1;
190 values.luns = (values.content === 'images') ? true : false;
191
192 ipanel.setValues(values);
193 }
194 });
195 }
196 }
197 });