[pbs-devel] applied: [PATCH backup 2/2] ui: user edit: rework interaction of realm and view model
Thomas Lamprecht
t.lamprecht at proxmox.com
Tue Mar 28 18:55:15 CEST 2023
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 at proxmox.com>
---
still not the cleanest approach in general IMO, it probably would be
better to move the "can PW change" logic into the combobox (either in a
child here or in widget toolkit) and, e.g., expose it via a
selectionCanChangePW like getter there which can then be bindend here.
www/window/UserEdit.js | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/www/window/UserEdit.js b/www/window/UserEdit.js
index 0129aeed..63a6f7f8 100644
--- a/www/window/UserEdit.js
+++ b/www/window/UserEdit.js
@@ -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}',
--
2.30.2
More information about the pbs-devel
mailing list