ui: user edit: rework interaction of realm and view model

avoid accessing private members directly but rather try to use the
public API, this then allows us do drop declaring a reference on the
realm combobox, which was not directly used and thus a bit subtle.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2023-03-28 18:46:38 +02:00
parent cc45a16322
commit 15b5e60568

View File

@ -1,6 +1,5 @@
Ext.define('PBS.window.UserEditViewModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.pbsUserEdit',
data: {
@ -9,15 +8,16 @@ Ext.define('PBS.window.UserEditViewModel', {
formulas: {
maySetPassword: function(get) {
// Dummy read, so that ExtJS will update the formula when
// the combobox changes
let _dummy = get('realm');
let realm = get('realm');
// All in all a bit hacky, is there a nicer way to do this?
let realm_type = this.data.realmComboBox.selection?.data.type
? this.data.realmComboBox.selection?.data.type : 'pbs';
return Proxmox.Schema.authDomains[realm_type].pwchange && this.config.view.isCreate;
let view = this.getView();
let realmStore = view.down('pmxRealmComboBox').getStore();
if (realmStore.isLoaded()) {
let rec = realmStore.findRecord('realm', realm, 0, false, true, true);
return Proxmox.Schema.authDomains[rec.data.type]?.pwchange && view.isCreate;
} else {
return view.isCreate;
}
},
},
});
@ -78,8 +78,9 @@ Ext.define('PBS.window.UserEdit', {
allowBlank: false,
matchFieldWidth: false,
listConfig: { width: 300 },
reference: 'realmComboBox',
bind: '{realm}',
bind: {
value: '{realm}',
},
cbind: {
hidden: '{!isCreate}',
disabled: '{!isCreate}',