diff options
Diffstat (limited to 'bitbake')
| -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 | } |
