]> git.proxmox.com Git - proxmox-widget-toolkit.git/commitdiff
APTRepositories: change updating button text/state to viewcontroller
authorDominik Csapak <d.csapak@proxmox.com>
Wed, 30 Jun 2021 15:14:57 +0000 (17:14 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 30 Jun 2021 19:27:04 +0000 (21:27 +0200)
we already have a viewmodel we can use, and so the handler does
not have to navigate the component tree up/down

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
src/node/APTRepositories.js

index 5c832264cc7cfb67901c79905b4eb5ae24b793b2..bb2bde0cdd8fca7f2b2c4aecfce547758dc56d81 100644 (file)
@@ -188,6 +188,9 @@ Ext.define('Proxmox.node.APTRepositoriesGrid', {
            altText: gettext('Disable'),
            id: 'repoEnableButton',
            disabled: true,
            altText: gettext('Disable'),
            id: 'repoEnableButton',
            disabled: true,
+           bind: {
+               text: '{enableButtonText}',
+           },
            handler: function(button, event, record) {
                let me = this;
                let panel = me.up('proxmoxNodeAPTRepositories');
            handler: function(button, event, record) {
                let me = this;
                let panel = me.up('proxmoxNodeAPTRepositories');
@@ -406,19 +409,6 @@ Ext.define('Proxmox.node.APTRepositoriesGrid', {
 
        me.callParent();
     },
 
        me.callParent();
     },
-
-    listeners: {
-       selectionchange: function() {
-           let me = this;
-
-           if (me.onSelectionChange) {
-               let sm = me.getSelectionModel();
-               let rec = sm.getSelection()[0];
-
-               me.onSelectionChange(rec, sm);
-           }
-       },
-    },
 });
 
 Ext.define('Proxmox.node.APTRepositories', {
 });
 
 Ext.define('Proxmox.node.APTRepositories', {
@@ -430,6 +420,20 @@ Ext.define('Proxmox.node.APTRepositories', {
 
     product: 'Proxmox VE', // default
 
 
     product: 'Proxmox VE', // default
 
+    controller: {
+       xclass: 'Ext.app.ViewController',
+
+       selectionChange: function(grid, selection) {
+           let me = this;
+           if (!selection || selection.length < 1) {
+               return;
+           }
+           let rec = selection[0];
+           let vm = me.getViewModel();
+           vm.set('selectionenabled', rec.get('Enabled'));
+       },
+    },
+
     viewModel: {
        data: {
            product: 'Proxmox VE', // default
     viewModel: {
        data: {
            product: 'Proxmox VE', // default
@@ -437,9 +441,12 @@ Ext.define('Proxmox.node.APTRepositories', {
            subscriptionActive: '',
            noSubscriptionRepo: '',
            enterpriseRepo: '',
            subscriptionActive: '',
            noSubscriptionRepo: '',
            enterpriseRepo: '',
+           selectionenabled: false,
        },
        formulas: {
            noErrors: (get) => get('errorCount') === 0,
        },
        formulas: {
            noErrors: (get) => get('errorCount') === 0,
+           enableButtonText: (get) => get('selectionenabled')
+               ? gettext('Disable') : gettext('Enable'),
            mainWarning: function(get) {
                // Not yet initialized
                if (get('subscriptionActive') === '' ||
            mainWarning: function(get) {
                // Not yet initialized
                if (get('subscriptionActive') === '' ||
@@ -506,12 +513,8 @@ Ext.define('Proxmox.node.APTRepositories', {
                nodename: '{nodename}',
            },
            majorUpgradeAllowed: false, // TODO get release information from an API call?
                nodename: '{nodename}',
            },
            majorUpgradeAllowed: false, // TODO get release information from an API call?
-           onSelectionChange: function(rec, sm) {
-               let me = this;
-               if (rec) {
-                   let btn = me.up('proxmoxNodeAPTRepositories').down('#repoEnableButton');
-                   btn.setText(rec.get('Enabled') ? gettext('Disable') : gettext('Enable'));
-               }
+           listeners: {
+               selectionchange: 'selectionChange',
            },
        },
     ],
            },
        },
     ],