bitbake: toaster: customrecipe Add frontend feature to delete custom image recipe

[YOCTO #8132]

(Bitbake rev: 19aee3dd7fa290e12216f9a5cf25a8b2c8d80d20)

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Michael Wood 2016-09-26 13:59:36 +03:00 committed by Richard Purdie
parent 5b23bf083b
commit ac5aba6cab
2 changed files with 63 additions and 4 deletions

View File

@ -281,4 +281,36 @@ function customRecipePageInit(ctx) {
window.location.replace(libtoaster.ctx.projectBuildsUrl);
});
});
$("#delete-custom-recipe-confirmed").click(function(e){
e.preventDefault();
libtoaster.disableAjaxLoadingTimer();
$(this).find('[data-role="submit-state"]').hide();
$(this).find('[data-role="loading-state"]').show();
$(this).attr("disabled", "disabled");
$.ajax({
type: 'DELETE',
url: ctx.recipe.xhrCustomRecipeUrl,
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
success: function (data) {
if (data.error !== "ok") {
console.warn(data.error);
} else {
var msg = $('<span>You have deleted <strong>1</strong> custom image: <strong id="deleted-custom-image-name"></strong></span>');
msg.find("#deleted-custom-image-name").text(ctx.recipe.name);
libtoaster.setNotification("custom-image-recipe-deleted",
msg.html());
window.location.replace(data.gotoUrl);
}
},
error: function (data) {
console.warn(data);
}
});
});
}

View File

@ -28,6 +28,7 @@
includedPackagesCount: {{recipe.includes_set.count}},
baseRecipeId: {{recipe.base_recipe.pk}},
xhrPackageListUrl: "{% url 'xhr_customrecipe_packages' recipe.pk %}",
xhrCustomRecipeUrl: "{% url 'xhr_customrecipe_id' recipe.pk %}",
}
};
@ -39,6 +40,32 @@
}
});
</script>
<!-- Delete recipe modal -->
<div id="delete-recipe-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<p>Are you sure you want to delete the <strong>{{recipe.name}}</strong>
custom image?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" id="delete-custom-recipe-confirmed">
<span data-role="submit-state">Delete custom image</span>
<span data-role="loading-state" style="display:none">
<span class="fa-pulse">
<i class="fa-pulse icon-spinner"></i>
</span>
&nbsp;Deleting custom image...
</span>
</button>
<button type="button" class="btn btn-link" data-dismiss="modal">Cancel</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<!-- end delete recipe modal -->
<!-- package dependencies modal -->
<div id="package-deps-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false">
<div class="modal-dialog">
@ -229,10 +256,10 @@
<span class="glyphicon glyphicon-question-sign get-help" title="All custom images have their license set to MIT. This is because the license applies only to the recipe (.bb) file, and not to the image itself. To see which licenses apply to the image you must check the license manifest generated with each build"></i>
</dd>
</dl>
<!--
<i class="icon-trash no-tooltip"></i>
<a href="#" class="error" id="delete">Delete custom image</a>
-->
<i class="icon-trash text-danger"></i>
<a href="#delete-recipe-modal" data-target="#delete-recipe-modal" data-toggle="modal" class="text-danger" id="delete-recipe">
Delete custom image
</a>
</div>
</div>
</div>