mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-05-07 04:29:17 +00:00
195 lines
4.0 KiB
JavaScript
195 lines
4.0 KiB
JavaScript
Ext.define('PVE.qemu.BootOrderPanel', {
|
|
extend: 'PVE.panel.InputPanel',
|
|
|
|
vmconfig: {}, // store loaded vm config
|
|
|
|
bootdisk: undefined,
|
|
curSel1: '',
|
|
curSel2: '',
|
|
curSel3: '',
|
|
|
|
onGetValues: function(values) {
|
|
var me = this;
|
|
|
|
var order = '';
|
|
|
|
if (me.curSel1) {
|
|
order = order + me.curSel1;
|
|
}
|
|
if (me.curSel2) {
|
|
order = order + me.curSel2;
|
|
}
|
|
if (me.curSel3) {
|
|
order = order + me.curSel3;
|
|
}
|
|
|
|
var res = { boot: order };
|
|
if (me.bootdisk && (me.curSel1 === 'c' || me.curSel2 === 'c' || me.curSel3 === 'c') ) {
|
|
res.bootdisk = me.bootdisk;
|
|
} else {
|
|
res['delete'] = 'bootdisk';
|
|
}
|
|
|
|
return res;
|
|
},
|
|
|
|
setVMConfig: function(vmconfig) {
|
|
var me = this;
|
|
|
|
me.vmconfig = vmconfig;
|
|
|
|
var order = me.vmconfig.boot || 'cdn';
|
|
me.bootdisk = me.vmconfig.bootdisk;
|
|
if (!me.vmconfig[me.bootdisk]) {
|
|
me.bootdisk = undefined;
|
|
}
|
|
me.curSel1 = order.substring(0, 1) || '';
|
|
me.curSel2 = order.substring(1, 2) || '';
|
|
me.curSel3 = order.substring(2, 3) || '';
|
|
|
|
me.compute_sel1();
|
|
|
|
me.kv1.resetOriginalValue();
|
|
me.kv2.resetOriginalValue();
|
|
me.kv3.resetOriginalValue();
|
|
},
|
|
|
|
genList: function(includeNone, sel1, sel2) {
|
|
var me = this;
|
|
var list = [];
|
|
|
|
if (sel1 !== 'c' && (sel2 !== 'c')) {
|
|
Ext.Object.each(me.vmconfig, function(key, value) {
|
|
if ((/^(ide|sata|scsi|virtio)\d+$/).test(key) &&
|
|
!(/media=cdrom/).test(value)) {
|
|
list.push([key, "Disk '" + key + "'"]);
|
|
}
|
|
});
|
|
}
|
|
|
|
if (sel1 !== 'd' && (sel2 !== 'd')) {
|
|
list.push(['d', 'CD-ROM']);
|
|
}
|
|
if (sel1 !== 'n' && (sel2 !== 'n')) {
|
|
list.push(['n', gettext('Network')]);
|
|
}
|
|
//if (sel1 !== 'a' && (sel2 !== 'a')) {
|
|
// list.push(['a', 'Floppy']);
|
|
//}
|
|
|
|
if (includeNone) {
|
|
list.push(['', PVE.Utils.noneText]);
|
|
}
|
|
|
|
return list;
|
|
},
|
|
|
|
compute_sel3: function() {
|
|
var me = this;
|
|
var list = me.genList(true, me.curSel1, me.curSel2);
|
|
me.kv3.store.loadData(list);
|
|
me.kv3.setValue((me.curSel3 === 'c') ? me.bootdisk : me.curSel3);
|
|
},
|
|
|
|
compute_sel2: function() {
|
|
var me = this;
|
|
var list = me.genList(true, me.curSel1);
|
|
me.kv2.store.loadData(list);
|
|
me.kv2.setValue((me.curSel2 === 'c') ? me.bootdisk : me.curSel2);
|
|
me.compute_sel3();
|
|
},
|
|
|
|
compute_sel1: function() {
|
|
var me = this;
|
|
var list = me.genList(false);
|
|
me.kv1.store.loadData(list);
|
|
me.kv1.setValue((me.curSel1 === 'c') ? me.bootdisk : me.curSel1);
|
|
me.compute_sel2();
|
|
},
|
|
|
|
initComponent : function() {
|
|
var me = this;
|
|
|
|
me.kv1 = Ext.create('PVE.form.KVComboBox', {
|
|
fieldLabel: gettext('Boot device') + " 1",
|
|
labelWidth: 120,
|
|
name: 'bd1',
|
|
allowBlank: false,
|
|
data: []
|
|
});
|
|
|
|
me.kv2 = Ext.create('PVE.form.KVComboBox', {
|
|
fieldLabel: gettext('Boot device') + " 2",
|
|
labelWidth: 120,
|
|
name: 'bd2',
|
|
allowBlank: false,
|
|
data: []
|
|
});
|
|
|
|
me.kv3 = Ext.create('PVE.form.KVComboBox', {
|
|
fieldLabel: gettext('Boot device') + " 3",
|
|
labelWidth: 120,
|
|
name: 'bd3',
|
|
allowBlank: false,
|
|
data: []
|
|
});
|
|
|
|
me.mon(me.kv1, 'change', function(t, value) {
|
|
if ((/^(ide|sata|scsi|virtio)\d+$/).test(value)) {
|
|
me.curSel1 = 'c';
|
|
me.bootdisk = value;
|
|
} else {
|
|
me.curSel1 = value;
|
|
}
|
|
me.compute_sel2();
|
|
});
|
|
|
|
me.mon(me.kv2, 'change', function(t, value) {
|
|
if ((/^(ide|sata|scsi|virtio)\d+$/).test(value)) {
|
|
me.curSel2 = 'c';
|
|
me.bootdisk = value;
|
|
} else {
|
|
me.curSel2 = value;
|
|
}
|
|
me.compute_sel3();
|
|
});
|
|
|
|
me.mon(me.kv3, 'change', function(t, value) {
|
|
if ((/^(ide|sata|scsi|virtio)\d+$/).test(value)) {
|
|
me.curSel3 = 'c';
|
|
me.bootdisk = value;
|
|
} else {
|
|
me.curSel3 = value;
|
|
}
|
|
});
|
|
|
|
Ext.apply(me, {
|
|
items: [ me.kv1, me.kv2, me.kv3 ]
|
|
});
|
|
|
|
me.callParent();
|
|
}
|
|
});
|
|
|
|
Ext.define('PVE.qemu.BootOrderEdit', {
|
|
extend: 'PVE.window.Edit',
|
|
|
|
initComponent : function() {
|
|
var me = this;
|
|
|
|
var ipanel = Ext.create('PVE.qemu.BootOrderPanel', {});
|
|
|
|
me.items = [ ipanel ];
|
|
|
|
me.subject = gettext('Boot order');
|
|
|
|
me.callParent();
|
|
|
|
me.load({
|
|
success: function(response, options) {
|
|
ipanel.setVMConfig(response.result.data);
|
|
}
|
|
});
|
|
}
|
|
});
|