diff options
Diffstat (limited to 'yocto-poky/bitbake/lib/toaster/toastergui/static/js/importlayer.js')
-rw-r--r-- | yocto-poky/bitbake/lib/toaster/toastergui/static/js/importlayer.js | 303 |
1 files changed, 0 insertions, 303 deletions
diff --git a/yocto-poky/bitbake/lib/toaster/toastergui/static/js/importlayer.js b/yocto-poky/bitbake/lib/toaster/toastergui/static/js/importlayer.js deleted file mode 100644 index 5a59799bc..000000000 --- a/yocto-poky/bitbake/lib/toaster/toastergui/static/js/importlayer.js +++ /dev/null @@ -1,303 +0,0 @@ -"use strict" - -function importLayerPageInit (ctx) { - - var layerDepBtn = $("#add-layer-dependency-btn"); - var importAndAddBtn = $("#import-and-add-btn"); - var layerNameInput = $("#import-layer-name"); - var vcsURLInput = $("#layer-git-repo-url"); - var gitRefInput = $("#layer-git-ref"); - var layerDepInput = $("#layer-dependency"); - var layerNameCtrl = $("#layer-name-ctrl"); - var duplicatedLayerName = $("#duplicated-layer-name-hint"); - - var layerDeps = {}; - var layerDepsDeps = {}; - var currentLayerDepSelection; - var validLayerName = /^(\w|-)+$/; - - libtoaster.makeTypeahead(layerDepInput, libtoaster.ctx.layersTypeAheadUrl, { include_added: "true" }, function(item){ - currentLayerDepSelection = item; - }); - - // choices available in the typeahead - var layerDepsChoices = {}; - - // when the typeahead choices change, store an array of the available layer - // choices locally, to use for enabling/disabling the "Add layer" button - layerDepInput.on("typeahead-choices-change", function (event, data) { - layerDepsChoices = {}; - - if (data.choices) { - data.choices.forEach(function (item) { - layerDepsChoices[item.name] = item; - }); - } - }); - - // disable the "Add layer" button when the layer input typeahead is empty - // or not in the typeahead choices - layerDepInput.on("input change", function () { - // get the choices from the typeahead - var choice = layerDepsChoices[$(this).val()]; - - if (choice) { - layerDepBtn.removeAttr("disabled"); - currentLayerDepSelection = choice; - } - else { - layerDepBtn.attr("disabled", "disabled"); - currentLayerDepSelection = undefined; - } - }); - - /* We automatically add "openembedded-core" layer for convenience as a - * dependency as pretty much all layers depend on this one - */ - $.getJSON(libtoaster.ctx.layersTypeAheadUrl, - { include_added: "true" , search: "openembedded-core" }, - function(layer) { - if (layer.results.length > 0) { - currentLayerDepSelection = layer.results[0]; - layerDepBtn.click(); - } - }); - - layerDepBtn.click(function(){ - if (currentLayerDepSelection == undefined) - return; - - layerDeps[currentLayerDepSelection.id] = currentLayerDepSelection; - - /* Make a list item for the new layer dependency */ - var newLayerDep = $("<li><a></a><span class=\"icon-trash\" data-toggle=\"tooltip\" title=\"Delete\"></span></li>"); - - newLayerDep.data('layer-id', currentLayerDepSelection.id); - newLayerDep.children("span").tooltip(); - - var link = newLayerDep.children("a"); - link.attr("href", currentLayerDepSelection.layerdetailurl); - link.text(currentLayerDepSelection.name); - link.tooltip({title: currentLayerDepSelection.tooltip, placement: "right"}); - - var trashItem = newLayerDep.children("span"); - trashItem.click(function () { - var toRemove = $(this).parent().data('layer-id'); - delete layerDeps[toRemove]; - $(this).parent().fadeOut(function (){ - $(this).remove(); - }); - }); - - $("#layer-deps-list").append(newLayerDep); - - libtoaster.getLayerDepsForProject(currentLayerDepSelection.layerdetailurl, function (data){ - /* These are the dependencies of the layer added as a dependency */ - if (data.list.length > 0) { - currentLayerDepSelection.url = currentLayerDepSelection.layerdetailurl; - layerDeps[currentLayerDepSelection.id].deps = data.list; - } - - /* Clear the current selection */ - layerDepInput.val(""); - currentLayerDepSelection = undefined; - layerDepBtn.attr("disabled","disabled"); - }, null); - }); - - importAndAddBtn.click(function(){ - /* This is a list of the names from layerDeps for the layer deps - * modal dialog body - */ - var depNames = []; - - /* arrray of all layer dep ids includes parent and child deps */ - var allDeps = []; - - /* temporary object to use to do a reduce on the dependencies for each - * layer dependency added - */ - var depDeps = {}; - - /* the layers that have dependencies have an extra property "deps" - * look in this for each layer and reduce this to a unquie object - * of deps. - */ - for (var key in layerDeps){ - if (layerDeps[key].hasOwnProperty('deps')){ - for (var dep in layerDeps[key].deps){ - var layer = layerDeps[key].deps[dep]; - depDeps[layer.id] = layer; - } - } - depNames.push(layerDeps[key].name); - allDeps.push(layerDeps[key].id); - } - - /* we actually want it as an array so convert it now */ - var depDepsArray = []; - for (var key in depDeps) - depDepsArray.push (depDeps[key]); - - if (depDepsArray.length > 0) { - var layer = { name: layerNameInput.val(), url: "#", id: -1 }; - var title = "Layer"; - var body = "<strong>"+layer.name+"</strong>'s dependencies ("+ - depNames.join(", ")+"</span>) require some layers that are not added to your project. Select the ones you want to add:</p>"; - - showLayerDepsModal(layer, depDepsArray, title, body, false, function(layerObsList){ - /* Add the accepted layer dependencies' ids to the allDeps array */ - for (var key in layerObsList){ - allDeps.push(layerObsList[key].id); - } - import_and_add (); - }); - } else { - import_and_add (); - } - - function import_and_add () { - /* convert to a csv of all the deps to be added */ - var layerDepsCsv = allDeps.join(","); - - var layerData = { - name: layerNameInput.val(), - vcs_url: vcsURLInput.val(), - git_ref: gitRefInput.val(), - dir_path: $("#layer-subdir").val(), - project_id: libtoaster.ctx.projectId, - layer_deps: layerDepsCsv, - }; - - $.ajax({ - type: "POST", - url: ctx.xhrImportLayerUrl, - data: layerData, - headers: { 'X-CSRFToken' : $.cookie('csrftoken')}, - success: function (data) { - if (data.error != "ok") { - console.log(data.error); - } else { - /* Success layer import now go to the project page */ - $.cookie('layer-imported-alert', JSON.stringify(data), { path: '/'}); - window.location.replace(libtoaster.ctx.projectPageUrl+'?notify=layer-imported'); - } - }, - error: function (data) { - console.log("Call failed"); - console.log(data); - } - }); - } - }); - - function enable_import_btn(enabled) { - var importAndAddHint = $("#import-and-add-hint"); - - if (enabled) { - importAndAddBtn.removeAttr("disabled"); - importAndAddHint.hide(); - return; - } - - importAndAddBtn.attr("disabled", "disabled"); - importAndAddHint.show(); - } - - function check_form() { - var valid = false; - var inputs = $("input:required"); - - for (var i=0; i<inputs.length; i++){ - if (!(valid = inputs[i].value)){ - enable_import_btn(false); - break; - } - } - - if (valid) - enable_import_btn(true); - } - - function layerExistsError(layer){ - var dupLayerInfo = $("#duplicate-layer-info"); - dupLayerInfo.find(".dup-layer-name").text(layer.name); - dupLayerInfo.find(".dup-layer-link").attr("href", layer.layerdetailurl); - dupLayerInfo.find("#dup-layer-vcs-url").text(layer.vcs_url); - dupLayerInfo.find("#dup-layer-revision").text(layer.vcs_reference); - - $(".fields-apart-from-layer-name").fadeOut(function(){ - - dupLayerInfo.fadeIn(); - }); - } - - layerNameInput.on('blur', function() { - if (!$(this).val()){ - return; - } - var name = $(this).val(); - - /* Check if the layer name exists */ - $.getJSON(libtoaster.ctx.layersTypeAheadUrl, - { include_added: "true" , search: name, format: "json" }, - function(layer) { - if (layer.results.length > 0) { - for (var i in layer.results){ - if (layer.results[i].name == name) { - layerExistsError(layer.results[i]); - } - } - } - }); - }); - - vcsURLInput.on('input', function() { - check_form(); - }); - - gitRefInput.on('input', function() { - check_form(); - }); - - layerNameInput.on('input', function() { - if ($(this).val() && !validLayerName.test($(this).val())){ - layerNameCtrl.addClass("error") - $("#invalid-layer-name-hint").show(); - enable_import_btn(false); - return; - } - - if ($("#duplicate-layer-info").css("display") != "None"){ - $("#duplicate-layer-info").fadeOut(function(){ - $(".fields-apart-from-layer-name").show(); - }); - - } - - /* Don't remove the error class if we're displaying the error for another - * reason. - */ - if (!duplicatedLayerName.is(":visible")) - layerNameCtrl.removeClass("error") - - $("#invalid-layer-name-hint").hide(); - check_form(); - }); - - /* Have a guess at the layer name */ - vcsURLInput.focusout(function (){ - /* If we a layer name specified don't overwrite it or if there isn't a - * url typed in yet return - */ - if (layerNameInput.val() || !$(this).val()) - return; - - if ($(this).val().search("/")){ - var urlPts = $(this).val().split("/"); - var suggestion = urlPts[urlPts.length-1].replace(".git",""); - layerNameInput.val(suggestion); - } - }); - -} |