summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorSujith H <sujith.h@gmail.com>2016-07-19 07:54:49 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-08-11 00:09:28 +0100
commit836f332552f3f62d0e01d46d103d53e636d915f9 (patch)
treea758a769266bd26486af50b75425070ee5ce0631 /bitbake
parentc2c58a1879de1b76c380e098075eebf498b1d3f9 (diff)
downloadpoky-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>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/importlayer.js125
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}