]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/storage/IScsiEdit.js
use ObjectStore from widget toolkit
[pve-manager.git] / www / manager6 / storage / IScsiEdit.js
CommitLineData
208ba0c6
DM
1Ext.define('PVE.storage.IScsiScan', {
2 extend: 'Ext.form.field.ComboBox',
3 alias: 'widget.pveIScsiScan',
4
5 queryParam: 'portal',
c2317525
DC
6 valueField: 'target',
7 displayField: 'target',
8 matchFieldWidth: false,
9 listConfig: {
10 loadingText: gettext('Scanning...'),
11 width: 350
12 },
208ba0c6
DM
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
9e9ab96f
WL
49 store.sort('target', 'ASC');
50
208ba0c6 51 Ext.apply(me, {
22f2f9d6 52 store: store
208ba0c6
DM
53 });
54
55 me.callParent();
56 }
57});
58
59Ext.define('PVE.storage.IScsiInputPanel', {
60 extend: 'PVE.panel.InputPanel',
61
62 onGetValues: function(values) {
63 var me = this;
64
d5e771ce 65 if (me.isCreate) {
208ba0c6
DM
66 values.type = 'iscsi';
67 } else {
68 delete values.storage;
69 }
70
71 values.content = values.luns ? 'images' : 'none';
72 delete values.luns;
73
177de3de 74 values.disable = values.enable ? 0 : 1;
208ba0c6 75 delete values.enable;
177de3de 76
208ba0c6
DM
77 return values;
78 },
79
80 initComponent : function() {
81 var me = this;
82
83
84 me.column1 = [
85 {
d5e771ce 86 xtype: me.isCreate ? 'textfield' : 'displayfield',
208ba0c6 87 name: 'storage',
208ba0c6
DM
88 value: me.storageId || '',
89 fieldLabel: 'ID',
90 vtype: 'StorageId',
91 allowBlank: false
92 },
93 {
d5e771ce 94 xtype: me.isCreate ? 'textfield' : 'displayfield',
208ba0c6
DM
95 name: 'portal',
96 value: '',
97 fieldLabel: 'Portal',
98 allowBlank: false,
99 listeners: {
100 change: function(f, value) {
d5e771ce 101 if (me.isCreate) {
208ba0c6
DM
102 var exportField = me.down('field[name=target]');
103 exportField.setPortal(value);
104 exportField.setValue('');
105 }
106 }
107 }
108 },
109 {
d5e771ce
EK
110 readOnly: !me.isCreate,
111 xtype: me.isCreate ? 'pveIScsiScan' : 'displayfield',
208ba0c6
DM
112 name: 'target',
113 value: '',
114 fieldLabel: 'Target',
115 allowBlank: false
116 }
117 ];
118
119 me.column2 = [
120 {
5198365d 121 xtype: 'pveNodeSelector',
208ba0c6
DM
122 name: 'nodes',
123 fieldLabel: gettext('Nodes'),
177de3de 124 emptyText: gettext('All') + ' (' +
208ba0c6
DM
125 gettext('No restrictions') +')',
126 multiSelect: true,
127 autoSelect: false
128 },
129 {
896c0d50 130 xtype: 'proxmoxcheckbox',
208ba0c6
DM
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
148Ext.define('PVE.storage.IScsiEdit', {
9fccc702 149 extend: 'Proxmox.window.Edit',
208ba0c6
DM
150
151 initComponent : function() {
152 var me = this;
177de3de 153
d5e771ce 154 me.isCreate = !me.storageId;
208ba0c6 155
d5e771ce 156 if (me.isCreate) {
208ba0c6
DM
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', {
d5e771ce 165 isCreate: me.isCreate,
208ba0c6
DM
166 storageId: me.storageId
167 });
177de3de 168
208ba0c6
DM
169 Ext.apply(me, {
170 subject: PVE.Utils.format_storage_type('iscsi'),
171 isAdd: true,
172 items: [ ipanel ]
173 });
174
175 me.callParent();
176
d5e771ce 177 if (!me.isCreate) {
208ba0c6
DM
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});