mirror of
https://git.yoctoproject.org/poky
synced 2026-06-02 01:19:52 +00:00
bitbake: toaster: Add New Build Button feature
This adds a quick access dropdown menu feature for running builds on a selected project. [YOCTO #6677] (Bitbake rev: e92769b43b00764082a7cb2207e314b40510ef62) Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
5b8a62dad7
commit
f26c3cd6f1
@@ -0,0 +1,125 @@
|
||||
|
||||
|
||||
function basePageInit (ctx) {
|
||||
|
||||
var newBuildButton = $("#new-build-button");
|
||||
/* Hide the button if we're on the project,newproject or importlyaer page */
|
||||
if (ctx.currentUrl.search('newproject|project/\\d/$|importlayer/$') > 0){
|
||||
newBuildButton.hide();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
newBuildButton.show().removeAttr("disabled");
|
||||
|
||||
_checkProjectBuildable()
|
||||
_setupNewBuildButton();
|
||||
|
||||
|
||||
function _checkProjectBuildable(){
|
||||
libtoaster.getProjectInfo(ctx.projectInfoUrl, ctx.projectId,
|
||||
function(data){
|
||||
if (data.machine.name == undefined || data.layers.length == 0) {
|
||||
/* we can't build anything with out a machine and some layers */
|
||||
$("#new-build-button #targets-form").hide();
|
||||
$("#new-build-button .alert").show();
|
||||
} else {
|
||||
$("#new-build-button #targets-form").show();
|
||||
$("#new-build-button .alert").hide();
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
|
||||
function _setupNewBuildButton() {
|
||||
/* Setup New build button */
|
||||
var newBuildProjectInput = $("#new-build-button #project-name-input");
|
||||
var newBuildTargetBuildBtn = $("#new-build-button #build-button");
|
||||
var newBuildTargetInput = $("#new-build-button #build-target-input");
|
||||
var newBuildProjectSaveBtn = $("#new-build-button #save-project-button");
|
||||
var selectedTarget;
|
||||
var selectedProject;
|
||||
|
||||
/* If we don't have a current project then present the set project
|
||||
* form.
|
||||
*/
|
||||
if (ctx.projectId == undefined) {
|
||||
$('#change-project-form').show();
|
||||
$('#project .icon-pencil').hide();
|
||||
}
|
||||
|
||||
libtoaster.makeTypeahead(newBuildTargetInput, ctx.xhrDataTypeaheadUrl, { type : "targets", project_id: ctx.projectId }, function(item){
|
||||
/* successfully selected a target */
|
||||
selectedTarget = item;
|
||||
});
|
||||
|
||||
|
||||
libtoaster.makeTypeahead(newBuildProjectInput, ctx.xhrDataTypeaheadUrl, { type : "projects" }, function(item){
|
||||
/* successfully selected a project */
|
||||
newBuildProjectSaveBtn.removeAttr("disabled");
|
||||
selectedProject = item;
|
||||
});
|
||||
|
||||
/* Any typing in the input apart from enter key is going to invalidate
|
||||
* the value that has been set by selecting a suggestion from the typeahead
|
||||
*/
|
||||
newBuildProjectInput.keyup(function(event) {
|
||||
if (event.keyCode == 13)
|
||||
return;
|
||||
newBuildProjectSaveBtn.attr("disabled", "disabled");
|
||||
});
|
||||
|
||||
newBuildTargetInput.keyup(function() {
|
||||
if ($(this).val().length == 0)
|
||||
newBuildTargetBuildBtn.attr("disabled", "disabled");
|
||||
else
|
||||
newBuildTargetBuildBtn.removeAttr("disabled");
|
||||
});
|
||||
|
||||
newBuildTargetBuildBtn.click(function() {
|
||||
if (!newBuildTargetInput.val())
|
||||
return;
|
||||
|
||||
/* fire and forget */
|
||||
libtoaster.startABuild(ctx.projectBuildUrl, ctx.projectId, selectedTarget.name, null, null);
|
||||
window.location.replace(ctx.projectPageUrl+ctx.projectId);
|
||||
});
|
||||
|
||||
newBuildProjectSaveBtn.click(function() {
|
||||
ctx.projectId = selectedProject.id
|
||||
/* Update the typeahead project_id paramater */
|
||||
_checkProjectBuildable();
|
||||
newBuildTargetInput.data('typeahead').options.xhrParams.project_id = ctx.projectId;
|
||||
newBuildTargetInput.val("");
|
||||
|
||||
$("#new-build-button #project a").text(selectedProject.name).attr('href', ctx.projectPageUrl+ctx.projectId);
|
||||
$("#new-build-button .alert a").attr('href', ctx.projectPageUrl+ctx.projectId);
|
||||
|
||||
|
||||
$("#change-project-form").slideUp({ 'complete' : function() {
|
||||
$("#new-build-button #project").show();
|
||||
}});
|
||||
});
|
||||
|
||||
$('#new-build-button #project .icon-pencil').click(function() {
|
||||
newBuildProjectSaveBtn.attr("disabled", "disabled");
|
||||
newBuildProjectInput.val($("#new-build-button #project a").text());
|
||||
$(this).parent().hide();
|
||||
$("#change-project-form").slideDown();
|
||||
});
|
||||
|
||||
$("#new-build-button #cancel-change-project").click(function() {
|
||||
$("#change-project-form").hide(function(){
|
||||
$('#new-build-button #project').show();
|
||||
});
|
||||
|
||||
newBuildProjectInput.val("");
|
||||
newBuildProjectSaveBtn.attr("disabled", "disabled");
|
||||
});
|
||||
|
||||
/* Keep the dropdown open even unless we click outside the dropdown area */
|
||||
$(".new-build").click (function(event) {
|
||||
event.stopPropagation();
|
||||
});
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user