]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/storage/IScsiEdit.js
ui: storage: use null as empty value for scanned-node selector
[pve-manager.git] / www / manager6 / storage / IScsiEdit.js
CommitLineData
208ba0c6 1Ext.define('PVE.storage.IScsiScan', {
14d9ecc4 2 extend: 'PVE.form.ComboBoxSetStoreNode',
208ba0c6
DM
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...'),
f6710aac 11 width: 350,
c2317525 12 },
14d9ecc4
SH
13 config: {
14 apiSuffix: '/scan/iscsi',
15 },
208ba0c6 16 doRawQuery: function() {
5eb9b7b1 17 // do nothing
208ba0c6
DM
18 },
19
20 onTriggerClick: function() {
62427184 21 let me = this;
208ba0c6
DM
22
23 if (!me.queryCaching || me.lastQuery !== me.portal) {
24 me.store.removeAll();
25 }
26
27 me.allQuery = me.portal;
28
29 me.callParent();
30 },
31
32 setPortal: function(portal) {
62427184 33 let me = this;
208ba0c6
DM
34 me.portal = portal;
35 },
36
8058410f 37 initComponent: function() {
62427184 38 let me = this;
208ba0c6
DM
39
40 if (!me.nodename) {
41 me.nodename = 'localhost';
42 }
43
62427184 44 let store = Ext.create('Ext.data.Store', {
8058410f 45 fields: ['target', 'portal'],
208ba0c6 46 proxy: {
56a353b9 47 type: 'proxmox',
14d9ecc4 48 url: `${me.apiBaseUrl}${me.nodename}${me.apiSuffix}`,
f6710aac 49 },
208ba0c6 50 });
9e9ab96f
WL
51 store.sort('target', 'ASC');
52
208ba0c6 53 Ext.apply(me, {
f6710aac 54 store: store,
208ba0c6
DM
55 });
56
57 me.callParent();
f6710aac 58 },
208ba0c6
DM
59});
60
61Ext.define('PVE.storage.IScsiInputPanel', {
f28ec3e4 62 extend: 'PVE.panel.StorageBase',
208ba0c6 63
96988dfa
DC
64 onlineHelp: 'storage_open_iscsi',
65
208ba0c6 66 onGetValues: function(values) {
b9e706fb 67 let me = this;
208ba0c6 68
208ba0c6
DM
69 values.content = values.luns ? 'images' : 'none';
70 delete values.luns;
71
9c1fe394 72 return me.callParent([values]);
f28ec3e4 73 },
177de3de 74
f28ec3e4 75 setValues: function(values) {
53e3ea84 76 values.luns = values.content.indexOf('images') !== -1;
ff86a291 77 this.callParent([values]);
208ba0c6
DM
78 },
79
8058410f 80 initComponent: function() {
b9e706fb 81 let me = this;
208ba0c6 82
208ba0c6 83 me.column1 = [
14d9ecc4
SH
84 {
85 xtype: 'pveStorageScanNodeSelector',
86 disabled: !me.isCreate,
87 hidden: !me.isCreate,
88 listeners: {
89 change: {
90 fn: function(field, value) {
91 me.lookup('iScsiTargetScan').setNodeName(value);
92 me.lookup('storageNodeRestriction').setValue(value);
93 },
94 },
95 },
96 },
208ba0c6 97 {
d5e771ce 98 xtype: me.isCreate ? 'textfield' : 'displayfield',
208ba0c6
DM
99 name: 'portal',
100 value: '',
101 fieldLabel: 'Portal',
102 allowBlank: false,
103 listeners: {
104 change: function(f, value) {
d5e771ce 105 if (me.isCreate) {
b9e706fb 106 let exportField = me.down('field[name=target]');
208ba0c6
DM
107 exportField.setPortal(value);
108 exportField.setValue('');
109 }
f6710aac
TL
110 },
111 },
208ba0c6 112 },
14d9ecc4 113 Ext.createWidget(me.isCreate ? 'pveIScsiScan' : 'displayfield', {
d5e771ce 114 readOnly: !me.isCreate,
208ba0c6
DM
115 name: 'target',
116 value: '',
14d9ecc4 117 fieldLabel: gettext('Target'),
f6710aac 118 allowBlank: false,
14d9ecc4
SH
119 reference: 'iScsiTargetScan',
120 }),
208ba0c6
DM
121 ];
122
123 me.column2 = [
208ba0c6
DM
124 {
125 xtype: 'checkbox',
126 name: 'luns',
127 checked: true,
f6710aac
TL
128 fieldLabel: gettext('Use LUNs directly'),
129 },
208ba0c6
DM
130 ];
131
132 me.callParent();
f6710aac 133 },
208ba0c6 134});