mirror of
https://git.yoctoproject.org/poky
synced 2026-03-03 22:09:39 +01:00
When a build is viewed in the dashboard, enable users to edit a custom image which was built during that build, and/or create a new custom image based on one of the image recipes built during the build. Add methods to the Build model to enable querying for the set of image recipes built during a build. Add buttons to the dashboard, with the "Edit custom image" button opening a basic modal for now. The "New custom image" button opens the existing new custom image modal, but is modified to show a list of images available as a base for a new custom image. Add a new function to the new custom image modal's script which enables multiple potential custom images to be shown as radio buttons in the dialog (if there is more than 1). Modify existing code to use this new function. Add a template filter which allows the queryset of recipes for a build to be available to client-side scripts, and from there be used to populate the new custom image modal. [YOCTO #9123] (Bitbake rev: 4c49ffd28e41c4597bdac34d5e54c125571a4b95) Signed-off-by: Elliot Smith <elliot.smith@intel.com> Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
84 lines
2.7 KiB
JavaScript
84 lines
2.7 KiB
JavaScript
"use strict";
|
|
|
|
function layerBtnsInit() {
|
|
|
|
/* Remove any current bindings to avoid duplicated binds */
|
|
$(".layerbtn").unbind('click');
|
|
|
|
$(".layerbtn").click(function (){
|
|
var layerObj = $(this).data("layer");
|
|
var add = ($(this).data('directive') === "add");
|
|
var thisBtn = $(this);
|
|
|
|
libtoaster.addRmLayer(layerObj, add, function (layerDepsList){
|
|
libtoaster.showChangeNotification(libtoaster.makeLayerAddRmAlertMsg(layerObj, layerDepsList, add));
|
|
|
|
/* In-cell notification */
|
|
var notification = $('<div id="temp-inline-notify" style="display: none; font-size: 11px; line-height: 1.3;" class="tooltip-inner"></div>');
|
|
thisBtn.parent().append(notification);
|
|
|
|
if (add){
|
|
if (layerDepsList.length > 0)
|
|
notification.text(String(layerDepsList.length + 1) + " layers added");
|
|
else
|
|
notification.text("1 layer added");
|
|
|
|
var layerBtnsFadeOut = $();
|
|
var layerExistsBtnFadeIn = $();
|
|
|
|
layerBtnsFadeOut = layerBtnsFadeOut.add(".layer-add-" + layerObj.id);
|
|
layerExistsBtnFadeIn = layerExistsBtnFadeIn.add(".layer-exists-" + layerObj.id);
|
|
|
|
for (var i in layerDepsList){
|
|
layerBtnsFadeOut = layerBtnsFadeOut.add(".layer-add-" + layerDepsList[i].id);
|
|
layerExistsBtnFadeIn = layerExistsBtnFadeIn.add(".layer-exists-" + layerDepsList[i].id);
|
|
}
|
|
|
|
layerBtnsFadeOut.fadeOut().promise().done(function(){
|
|
notification.fadeIn().delay(500).fadeOut(function(){
|
|
/* Fade in the buttons */
|
|
layerExistsBtnFadeIn.fadeIn();
|
|
notification.remove();
|
|
});
|
|
});
|
|
} else {
|
|
notification.text("1 layer removed");
|
|
/* Deleting a layer we only hanlde the one button */
|
|
thisBtn.fadeOut(function(){
|
|
notification.fadeIn().delay(500).fadeOut(function(){
|
|
$(".layer-add-" + layerObj.id).fadeIn();
|
|
notification.remove();
|
|
});
|
|
});
|
|
}
|
|
|
|
});
|
|
});
|
|
|
|
$(".build-recipe-btn").unbind('click');
|
|
$(".build-recipe-btn").click(function(e){
|
|
e.preventDefault();
|
|
var recipe = $(this).data('recipe-name');
|
|
|
|
libtoaster.startABuild(null, recipe,
|
|
function(){
|
|
/* Success */
|
|
window.location.replace(libtoaster.ctx.projectBuildsUrl);
|
|
});
|
|
});
|
|
|
|
|
|
$(".customise-btn").unbind('click');
|
|
$(".customise-btn").click(function(e){
|
|
e.preventDefault();
|
|
var imgCustomModal = $("#new-custom-image-modal");
|
|
|
|
if (imgCustomModal.length == 0)
|
|
throw("Modal new-custom-image not found");
|
|
|
|
var recipe = {id: $(this).data('recipe'), name: null}
|
|
newCustomImageModalSetRecipes([recipe]);
|
|
imgCustomModal.modal('show');
|
|
});
|
|
}
|