diff options
| -rw-r--r-- | bitbake/lib/toaster/toastergui/static/js/importlayer.js | 30 | ||||
| -rw-r--r-- | bitbake/lib/toaster/toastergui/static/js/libtoaster.js | 5 |
2 files changed, 34 insertions, 1 deletions
diff --git a/bitbake/lib/toaster/toastergui/static/js/importlayer.js b/bitbake/lib/toaster/toastergui/static/js/importlayer.js index c68f3669f6..5a59799bc5 100644 --- a/bitbake/lib/toaster/toastergui/static/js/importlayer.js +++ b/bitbake/lib/toaster/toastergui/static/js/importlayer.js | |||
| @@ -18,10 +18,38 @@ function importLayerPageInit (ctx) { | |||
| 18 | 18 | ||
| 19 | libtoaster.makeTypeahead(layerDepInput, libtoaster.ctx.layersTypeAheadUrl, { include_added: "true" }, function(item){ | 19 | libtoaster.makeTypeahead(layerDepInput, libtoaster.ctx.layersTypeAheadUrl, { include_added: "true" }, function(item){ |
| 20 | currentLayerDepSelection = item; | 20 | currentLayerDepSelection = item; |
| 21 | }); | ||
| 22 | |||
| 23 | // choices available in the typeahead | ||
| 24 | var layerDepsChoices = {}; | ||
| 25 | |||
| 26 | // when the typeahead choices change, store an array of the available layer | ||
| 27 | // choices locally, to use for enabling/disabling the "Add layer" button | ||
| 28 | layerDepInput.on("typeahead-choices-change", function (event, data) { | ||
| 29 | layerDepsChoices = {}; | ||
| 21 | 30 | ||
| 22 | layerDepBtn.removeAttr("disabled"); | 31 | if (data.choices) { |
| 32 | data.choices.forEach(function (item) { | ||
| 33 | layerDepsChoices[item.name] = item; | ||
| 34 | }); | ||
| 35 | } | ||
| 23 | }); | 36 | }); |
| 24 | 37 | ||
| 38 | // disable the "Add layer" button when the layer input typeahead is empty | ||
| 39 | // or not in the typeahead choices | ||
| 40 | layerDepInput.on("input change", function () { | ||
| 41 | // get the choices from the typeahead | ||
| 42 | var choice = layerDepsChoices[$(this).val()]; | ||
| 43 | |||
| 44 | if (choice) { | ||
| 45 | layerDepBtn.removeAttr("disabled"); | ||
| 46 | currentLayerDepSelection = choice; | ||
| 47 | } | ||
| 48 | else { | ||
| 49 | layerDepBtn.attr("disabled", "disabled"); | ||
| 50 | currentLayerDepSelection = undefined; | ||
| 51 | } | ||
| 52 | }); | ||
| 25 | 53 | ||
| 26 | /* We automatically add "openembedded-core" layer for convenience as a | 54 | /* We automatically add "openembedded-core" layer for convenience as a |
| 27 | * dependency as pretty much all layers depend on this one | 55 | * dependency as pretty much all layers depend on this one |
diff --git a/bitbake/lib/toaster/toastergui/static/js/libtoaster.js b/bitbake/lib/toaster/toastergui/static/js/libtoaster.js index 8d1d20f133..43930a2c30 100644 --- a/bitbake/lib/toaster/toastergui/static/js/libtoaster.js +++ b/bitbake/lib/toaster/toastergui/static/js/libtoaster.js | |||
| @@ -21,6 +21,9 @@ var libtoaster = (function (){ | |||
| 21 | var xhrReq; | 21 | var xhrReq; |
| 22 | 22 | ||
| 23 | jQElement.typeahead({ | 23 | jQElement.typeahead({ |
| 24 | // each time the typeahead's choices change, a | ||
| 25 | // "typeahead-choices-change" event is fired with an object | ||
| 26 | // containing the available choices in a "choices" property | ||
| 24 | source: function(query, process){ | 27 | source: function(query, process){ |
| 25 | xhrParams.search = query; | 28 | xhrParams.search = query; |
| 26 | 29 | ||
| @@ -36,6 +39,8 @@ var libtoaster = (function (){ | |||
| 36 | 39 | ||
| 37 | xhrReq = null; | 40 | xhrReq = null; |
| 38 | 41 | ||
| 42 | jQElement.trigger("typeahead-choices-change", {choices: data.results}); | ||
| 43 | |||
| 39 | return process(data.results); | 44 | return process(data.results); |
| 40 | }); | 45 | }); |
| 41 | }, | 46 | }, |
