pve-manager/www/manager6/lxc/FeaturesEdit.js
Dominic Jäger 16b8c3ddab ui: eslint: State equalities more precisely
Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-05-18 15:22:05 +02:00

132 lines
2.6 KiB
JavaScript

Ext.define('PVE.lxc.FeaturesInputPanel', {
extend: 'Proxmox.panel.InputPanel',
xtype: 'pveLxcFeaturesInputPanel',
// used to save the mounts fstypes until sending
mounts: [],
fstypes: ['nfs', 'cifs'],
viewModel: {
parent: null,
data: {
unprivileged: false,
},
formulas: {
privilegedOnly: function(get) {
return get('unprivileged') ? gettext('privileged only') : '';
},
unprivilegedOnly: function(get) {
return !get('unprivileged') ? gettext('unprivileged only') : '';
},
},
},
items: [
{
xtype: 'proxmoxcheckbox',
fieldLabel: gettext('keyctl'),
name: 'keyctl',
bind: {
disabled: '{!unprivileged}',
boxLabel: '{unprivilegedOnly}',
},
},
{
xtype: 'proxmoxcheckbox',
fieldLabel: gettext('Nesting'),
name: 'nesting',
},
{
xtype: 'proxmoxcheckbox',
name: 'nfs',
fieldLabel: 'NFS',
bind: {
disabled: '{unprivileged}',
boxLabel: '{privilegedOnly}',
},
},
{
xtype: 'proxmoxcheckbox',
name: 'cifs',
fieldLabel: 'CIFS',
bind: {
disabled: '{unprivileged}',
boxLabel: '{privilegedOnly}',
},
},
{
xtype: 'proxmoxcheckbox',
name: 'fuse',
fieldLabel: 'FUSE',
},
{
xtype: 'proxmoxcheckbox',
name: 'mknod',
fieldLabel: gettext('Create Device Nodes'),
boxLabel: gettext('Experimental'),
},
],
onGetValues: function(values) {
var me = this;
var mounts = me.mounts;
me.fstypes.forEach(function(fs) {
if (values[fs]) {
mounts.push(fs);
}
delete values[fs];
});
if (mounts.length) {
values.mount = mounts.join(';');
}
var featuresstring = PVE.Parser.printPropertyString(values, undefined);
if (featuresstring === '') {
return { 'delete': 'features' };
}
return { features: featuresstring };
},
setValues: function(values) {
var me = this;
me.viewModel.set('unprivileged', values.unprivileged);
if (values.features) {
var res = PVE.Parser.parsePropertyString(values.features);
me.mounts = [];
if (res.mount) {
res.mount.split(/[; ]/).forEach(function(item) {
if (me.fstypes.indexOf(item) === -1) {
me.mounts.push(item);
} else {
res[item] = 1;
}
});
}
this.callParent([res]);
}
},
initComponent: function() {
let me = this;
me.mounts = []; // reset state
me.callParent();
},
});
Ext.define('PVE.lxc.FeaturesEdit', {
extend: 'Proxmox.window.Edit',
xtype: 'pveLxcFeaturesEdit',
subject: gettext('Features'),
autoLoad: true,
width: 350,
items: [{
xtype: 'pveLxcFeaturesInputPanel',
}],
});