diff options
author | Sujith H <sujith.h@gmail.com> | 2016-07-19 07:54:49 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-08-11 00:09:28 +0100 |
commit | 836f332552f3f62d0e01d46d103d53e636d915f9 (patch) | |
tree | a758a769266bd26486af50b75425070ee5ce0631 | |
parent | c2c58a1879de1b76c380e098075eebf498b1d3f9 (diff) | |
download | poky-836f332552f3f62d0e01d46d103d53e636d915f9.tar.gz |
bitbake: toaster: control the selection of git and local repo
Changes made in this patch will help user to select
either repo based on git and local. This patch also
improves the help provided to user so that user can
understand them and take necessary action to proceed.
[YOCOT #9911]
(Bitbake rev: 26bee4c2c05dc202857270cd5f56abff79674ca7)
Signed-off-by: Sujith H <sujith.h@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | bitbake/lib/toaster/toastergui/static/js/importlayer.js | 125 |
1 files changed, 114 insertions, 11 deletions
diff --git a/bitbake/lib/toaster/toastergui/static/js/importlayer.js b/bitbake/lib/toaster/toastergui/static/js/importlayer.js index 2f59567133..191b30ffee 100644 --- a/bitbake/lib/toaster/toastergui/static/js/importlayer.js +++ b/bitbake/lib/toaster/toastergui/static/js/importlayer.js | |||
@@ -10,6 +10,7 @@ function importLayerPageInit (ctx) { | |||
10 | var layerDepInput = $("#layer-dependency"); | 10 | var layerDepInput = $("#layer-dependency"); |
11 | var layerNameCtrl = $("#layer-name-ctrl"); | 11 | var layerNameCtrl = $("#layer-name-ctrl"); |
12 | var duplicatedLayerName = $("#duplicated-layer-name-hint"); | 12 | var duplicatedLayerName = $("#duplicated-layer-name-hint"); |
13 | var localDirPath = $("#local-dir-path"); | ||
13 | 14 | ||
14 | var layerDeps = {}; | 15 | var layerDeps = {}; |
15 | var layerDepsDeps = {}; | 16 | var layerDepsDeps = {}; |
@@ -35,6 +36,9 @@ function importLayerPageInit (ctx) { | |||
35 | } | 36 | } |
36 | }); | 37 | }); |
37 | 38 | ||
39 | // Disable local dir repo when page is loaded. | ||
40 | $('#local-dir').hide(); | ||
41 | |||
38 | // disable the "Add layer" button when the layer input typeahead is empty | 42 | // disable the "Add layer" button when the layer input typeahead is empty |
39 | // or not in the typeahead choices | 43 | // or not in the typeahead choices |
40 | layerDepInput.on("input change", function () { | 44 | layerDepInput.on("input change", function () { |
@@ -168,8 +172,16 @@ function importLayerPageInit (ctx) { | |||
168 | dir_path: $("#layer-subdir").val(), | 172 | dir_path: $("#layer-subdir").val(), |
169 | project_id: libtoaster.ctx.projectId, | 173 | project_id: libtoaster.ctx.projectId, |
170 | layer_deps: layerDepsCsv, | 174 | layer_deps: layerDepsCsv, |
175 | local_source_dir: $('#local-dir-path').val(), | ||
171 | }; | 176 | }; |
172 | 177 | ||
178 | if ($('input[name=repo]:checked').val() == "git") { | ||
179 | layerData.local_source_dir = ""; | ||
180 | } else { | ||
181 | layerData.vcs_url = ""; | ||
182 | layerData.git_ref = ""; | ||
183 | } | ||
184 | |||
173 | $.ajax({ | 185 | $.ajax({ |
174 | type: "POST", | 186 | type: "POST", |
175 | url: ctx.xhrImportLayerUrl, | 187 | url: ctx.xhrImportLayerUrl, |
@@ -208,25 +220,45 @@ function importLayerPageInit (ctx) { | |||
208 | function check_form() { | 220 | function check_form() { |
209 | var valid = false; | 221 | var valid = false; |
210 | var inputs = $("input:required"); | 222 | var inputs = $("input:required"); |
223 | var inputStr = inputs.val().split(""); | ||
211 | 224 | ||
212 | for (var i=0; i<inputs.length; i++){ | 225 | for (var i=0; i<inputs.val().length; i++){ |
213 | if (!(valid = inputs[i].value)){ | 226 | if (!(valid = inputStr[i])){ |
214 | enable_import_btn(false); | 227 | enable_import_btn(false); |
215 | break; | 228 | break; |
216 | } | 229 | } |
217 | } | 230 | } |
218 | 231 | ||
219 | if (valid) | 232 | if (valid) { |
220 | enable_import_btn(true); | 233 | if ($("#local-dir-radio").prop("checked") && localDirPath.val().length > 0) { |
234 | enable_import_btn(true); | ||
235 | } | ||
236 | if ($("#git-repo-radio").prop("checked") && vcsURLInput.val().length > 0 && gitRefInput.val().length > 0) { | ||
237 | enable_import_btn(true); | ||
238 | } | ||
239 | } | ||
240 | |||
241 | if (inputs.val().length == 0) | ||
242 | enable_import_btn(false); | ||
221 | } | 243 | } |
222 | 244 | ||
223 | function layerExistsError(layer){ | 245 | function layerExistsError(layer){ |
224 | var dupLayerInfo = $("#duplicate-layer-info"); | 246 | var dupLayerInfo = $("#duplicate-layer-info"); |
225 | dupLayerInfo.find(".dup-layer-name").text(layer.name); | ||
226 | dupLayerInfo.find(".dup-layer-link").attr("href", layer.layerdetailurl); | ||
227 | dupLayerInfo.find("#dup-layer-vcs-url").text(layer.vcs_url); | ||
228 | dupLayerInfo.find("#dup-layer-revision").text(layer.vcs_reference); | ||
229 | 247 | ||
248 | if (layer.local_source_dir) { | ||
249 | $("#git-layer-dup").hide(); | ||
250 | $("#local-layer-dup").fadeIn(); | ||
251 | dupLayerInfo.find(".dup-layer-name").text(layer.name); | ||
252 | dupLayerInfo.find(".dup-layer-link").attr("href", layer.layerdetailurl); | ||
253 | dupLayerInfo.find("#dup-local-source-dir-name").text(layer.local_source_dir); | ||
254 | } else { | ||
255 | $("#git-layer-dup").fadeIn(); | ||
256 | $("#local-layer-dup").hide(); | ||
257 | dupLayerInfo.find(".dup-layer-name").text(layer.name); | ||
258 | dupLayerInfo.find(".dup-layer-link").attr("href", layer.layerdetailurl); | ||
259 | dupLayerInfo.find("#dup-layer-vcs-url").text(layer.vcs_url); | ||
260 | dupLayerInfo.find("#dup-layer-revision").text(layer.vcs_reference); | ||
261 | } | ||
230 | $(".fields-apart-from-layer-name").fadeOut(function(){ | 262 | $(".fields-apart-from-layer-name").fadeOut(function(){ |
231 | 263 | ||
232 | dupLayerInfo.fadeIn(); | 264 | dupLayerInfo.fadeIn(); |
@@ -271,10 +303,13 @@ function importLayerPageInit (ctx) { | |||
271 | 303 | ||
272 | if ($("#duplicate-layer-info").css("display") != "None"){ | 304 | if ($("#duplicate-layer-info").css("display") != "None"){ |
273 | $("#duplicate-layer-info").fadeOut(function(){ | 305 | $("#duplicate-layer-info").fadeOut(function(){ |
274 | $(".fields-apart-from-layer-name").show(); | 306 | $(".fields-apart-from-layer-name").show(); |
275 | }); | 307 | radioDisplay(); |
308 | }); | ||
276 | 309 | ||
277 | } | 310 | } |
311 | |||
312 | radioDisplay(); | ||
278 | 313 | ||
279 | /* Don't remove the error class if we're displaying the error for another | 314 | /* Don't remove the error class if we're displaying the error for another |
280 | * reason. | 315 | * reason. |
@@ -301,4 +336,72 @@ function importLayerPageInit (ctx) { | |||
301 | } | 336 | } |
302 | }); | 337 | }); |
303 | 338 | ||
339 | function radioDisplay() { | ||
340 | if ($('input[name=repo]:checked').val() == "local") { | ||
341 | $('#git-repo').hide(); | ||
342 | $('#import-git-layer-and-add-hint').hide(); | ||
343 | $('#local-dir').fadeIn(); | ||
344 | $('#import-local-dir-and-add-hint').fadeIn(); | ||
345 | } else { | ||
346 | $('#local-dir').hide(); | ||
347 | $('#import-local-dir-and-add-hint').hide(); | ||
348 | $('#git-repo').fadeIn(); | ||
349 | $('#import-git-layer-and-add-hint').fadeIn(); | ||
350 | } | ||
351 | } | ||
352 | |||
353 | $('input:radio[name="repo"]').change(function() { | ||
354 | radioDisplay(); | ||
355 | if ($("#local-dir-radio").prop("checked")) { | ||
356 | if (localDirPath.val().length > 0) { | ||
357 | enable_import_btn(true); | ||
358 | } else { | ||
359 | enable_import_btn(false); | ||
360 | } | ||
361 | } | ||
362 | if ($("#git-repo-radio").prop("checked")) { | ||
363 | if (vcsURLInput.val().length > 0 && gitRefInput.val().length > 0) { | ||
364 | enable_import_btn(true); | ||
365 | } else { | ||
366 | enable_import_btn(false); | ||
367 | } | ||
368 | } | ||
369 | }); | ||
370 | |||
371 | localDirPath.on('input', function(){ | ||
372 | if ($(this).val().trim().length == 0) { | ||
373 | $('#import-and-add-btn').attr("disabled","disabled"); | ||
374 | $('#local-dir').addClass('has-error'); | ||
375 | $('#hintError-dir-abs-path').show(); | ||
376 | $('#hintError-dir-path-starts-with-slash').show(); | ||
377 | } else { | ||
378 | var input = $(this); | ||
379 | var reBeginWithSlash = /^\//; | ||
380 | var reCheckVariable = /^\$/; | ||
381 | var re = /([ <>\\|":\.%\?\*]+)/; | ||
382 | |||
383 | var invalidDir = re.test(input.val()); | ||
384 | var invalidSlash = reBeginWithSlash.test(input.val()); | ||
385 | var invalidVar = reCheckVariable.test(input.val()); | ||
386 | |||
387 | if (!invalidSlash && !invalidVar) { | ||
388 | $('#local-dir').addClass('has-error'); | ||
389 | $('#import-and-add-btn').attr("disabled","disabled"); | ||
390 | $('#hintError-dir-abs-path').show(); | ||
391 | $('#hintError-dir-path-starts-with-slash').show(); | ||
392 | } else if (invalidDir) { | ||
393 | $('#local-dir').addClass('has-error'); | ||
394 | $('#import-and-add-btn').attr("disabled","disabled"); | ||
395 | $('#hintError-dir-path').show(); | ||
396 | } else { | ||
397 | $('#local-dir').removeClass('has-error'); | ||
398 | if (layerNameInput.val().length > 0) { | ||
399 | $('#import-and-add-btn').removeAttr("disabled"); | ||
400 | } | ||
401 | $('#hintError-dir-abs-path').hide(); | ||
402 | $('#hintError-dir-path-starts-with-slash').hide(); | ||
403 | $('#hintError-dir-path').hide(); | ||
404 | } | ||
405 | } | ||
406 | }); | ||
304 | } | 407 | } |