diff options
author | Patrick Williams <patrick@stwcx.xyz> | 2015-09-15 22:41:29 +0300 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2015-09-15 22:41:29 +0300 |
commit | 21f9b84b4b729fbd7acbd465e7a3f726e4d20f91 (patch) | |
tree | eb2d091d427ca0813b445509d59cc8e27e8ad25f /yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerDepsModal.js | |
parent | 101cef31e2bf54c678501155cd2106251acbd076 (diff) | |
parent | c124f4f2e04dca16a428a76c89677328bc7bf908 (diff) | |
download | openbmc-21f9b84b4b729fbd7acbd465e7a3f726e4d20f91.tar.xz |
Merge commit 'c124f4f2e04dca16a428a76c89677328bc7bf908' as 'yocto-poky'
Diffstat (limited to 'yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerDepsModal.js')
-rw-r--r-- | yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerDepsModal.js | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerDepsModal.js b/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerDepsModal.js new file mode 100644 index 000000000..825f9dccd --- /dev/null +++ b/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerDepsModal.js @@ -0,0 +1,90 @@ +/* + * layer: Object representing the parent layer { id: .. name: ... url } + * dependencies: array of dependency layer objects { id: .. name: ..} + * title: optional override for title + * body: optional override for body + * addToProject: Whether to add layers to project on accept + * successAdd: function to run on success + */ +function showLayerDepsModal(layer, dependencies, title, body, addToProject, successAdd) { + + if ($("#dependencies-modal").length === 0) { + $.get(libtoaster.ctx.htmlUrl + "/layer_deps_modal.html", function(html){ + $("body").append(html); + setupModal(); + }); + } else { + setupModal(); + } + + function setupModal(){ + + if (title) { + $('#dependencies-modal #title').text(title); + } else { + $('#dependencies-modal #title').text(layer.name); + } + + if (body) { + $("#dependencies-modal #body-text").html(body); + } else { + $("#dependencies-modal #layer-name").text(layer.name); + } + + var deplistHtml = ""; + for (var i = 0; i < dependencies.length; i++) { + deplistHtml += "<li><label class=\"checkbox\"><input name=\"dependencies\" value=\""; + deplistHtml += dependencies[i].id; + deplistHtml +="\" type=\"checkbox\" checked=\"checked\"/>"; + deplistHtml += dependencies[i].name; + deplistHtml += "</label></li>"; + } + $('#dependencies-list').html(deplistHtml); + + $("#dependencies-modal").data("deps", dependencies); + + $('#dependencies-modal').modal('show'); + + /* Discard the old submission function */ + $("#dependencies-modal-form").unbind('submit'); + + $("#dependencies-modal-form").submit(function (e) { + e.preventDefault(); + var selectedLayerIds = []; + var selectedLayers = []; + + $("input[name='dependencies']:checked").each(function () { + selectedLayerIds.push(parseInt($(this).val())); + }); + + /* -1 is a special dummy Id which we use when the layer isn't yet in the + * system, normally we would add the current layer to the selection. + */ + if (layer.id != -1) + selectedLayerIds.push(layer.id); + + /* Find the selected layer objects from our original list */ + for (var i = 0; i < selectedLayerIds.length; i++) { + for (var j = 0; j < dependencies.length; j++) { + if (dependencies[j].id == selectedLayerIds[i]) { + selectedLayers.push(dependencies[j]); + } + } + } + + if (addToProject) { + libtoaster.editCurrentProject({ 'layerAdd': selectedLayerIds.join(",") }, function () { + if (successAdd) { + successAdd(selectedLayers); + } + }, function () { + console.warn("Adding layers to project failed"); + }); + } else { + successAdd(selectedLayers); + } + + $('#dependencies-modal').modal('hide'); + }); + } +} |