From 8919126c6f7e02d11b3ec401437b9dd208b4a0b6 Mon Sep 17 00:00:00 2001
From: Renaud Le Gac <legac@cppm.in2p3.fr>
Date: Fri, 22 Nov 2013 14:05:35 +0100
Subject: [PATCH] ExtJS 4.2: polsih the ComboBoxSlave and test several slaves.

---
 models/widgets_forms.py                 | 10 +++++-----
 static/plugin_dbui/src/comboboxslave.js | 12 ++++++++++++
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/models/widgets_forms.py b/models/widgets_forms.py
index cb567ccd..6083ad13 100644
--- a/models/widgets_forms.py
+++ b/models/widgets_forms.py
@@ -25,11 +25,11 @@ dbui.configure_forms(db, plugins=['pFormToolTip'])
 #
 # harvester selector
 #
-# formModifier = dbui.FormModifier('harvester_selector')
-# formModifier.link_comboboxes(master=virtdb.harvester_selector.id_projects,
-#                              slave=virtdb.harvester_selector.controller,
-#                              masterHasSlaveData='harvesters')
-# 
+formModifier = dbui.FormModifier('harvester_selector')
+formModifier.link_comboboxes(master=virtdb.harvester_selector.id_projects,
+                             slave=virtdb.harvester_selector.controller,
+                             masterHasSlaveData='harvesters')
+ 
 formModifier = dbui.FormModifier('harvester_selector')
 formModifier.link_comboboxes(master=virtdb.harvester_selector.id_projects,
                              slave=virtdb.harvester_selector.id_teams,
diff --git a/static/plugin_dbui/src/comboboxslave.js b/static/plugin_dbui/src/comboboxslave.js
index 614a3954..4fef13b4 100644
--- a/static/plugin_dbui/src/comboboxslave.js
+++ b/static/plugin_dbui/src/comboboxslave.js
@@ -149,6 +149,8 @@ Ext.define('App.form.field.ComboBoxSlave', {
 
     /**
      * Select the authorized slave values.
+     * When the number of authorized value is equal to 1, the
+     * value is loaded in the slave.
      *
      * @param {Ext.form.field.ComboBox} combo
      * @param {Ext.data.Model[]} records
@@ -160,10 +162,20 @@ Ext.define('App.form.field.ComboBoxSlave', {
 
         var value = records[0].get(this.masterValueField);
 
+        // clear previous filter
         this.store.clearFilter(true);
         this.reset();
+
+        // filter the local store
         this.store.filter(this.masterValueField, value);
+
+        // enable the widget
         this.setDisabled(false);
+
+        // load the value when there is only one
+        if (this.store.getCount() === 1) {
+            this.setValue(this.store.getAt(0).get(this.valueField));
+        }
     },
 
     /**
-- 
GitLab