citadel/poky/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js

98 lines
2.9 KiB
JavaScript

'use strict';
function projectTopBarInit(ctx) {
var projectNameForm = $("#project-name-change-form");
var projectNameContainer = $("#project-name-container");
var projectName = $(".project-name");
var projectNameFormToggle = $("#project-change-form-toggle");
var projectNameChangeCancel = $("#project-name-change-cancel");
// this doesn't exist for command-line builds
var newBuildTargetInput = $("#build-input");
var newBuildTargetBuildBtn = $("#build-button");
var selectedTarget;
/* Project name change functionality */
projectNameFormToggle.click(function(e){
e.preventDefault();
projectNameContainer.hide();
projectNameForm.fadeIn();
});
projectNameChangeCancel.click(function(e){
e.preventDefault();
projectNameForm.hide();
projectNameContainer.fadeIn();
$("#project-name-change-input").val(projectName.first().text());
});
$("#project-name-change-btn").click(function(){
var newProjectName = $("#project-name-change-input").val();
libtoaster.editCurrentProject({ projectName: newProjectName }, function (){
projectName.text(newProjectName);
libtoaster.ctx.projectName = newProjectName;
projectNameChangeCancel.click();
});
});
/* Nav bar activate state switcher */
$("#project-topbar .nav li a").each(function(){
if (window.location.pathname === $(this).attr('href'))
$(this).parent().addClass('active');
else
$(this).parent().removeClass('active');
});
if (!newBuildTargetInput.length) {
return;
}
/* the following only applies for non-command-line projects */
/* Recipe build input functionality */
if (ctx.numProjectLayers > 0 && ctx.machine){
newBuildTargetInput.removeAttr("disabled");
}
libtoaster.makeTypeahead(newBuildTargetInput,
libtoaster.ctx.recipesTypeAheadUrl, {}, function (item) {
selectedTarget = item;
newBuildTargetBuildBtn.removeAttr("disabled");
});
newBuildTargetInput.on('input', function () {
if ($(this).val().length === 0) {
newBuildTargetBuildBtn.attr("disabled", "disabled");
} else {
newBuildTargetBuildBtn.removeAttr("disabled");
}
});
newBuildTargetBuildBtn.click(function (e) {
e.preventDefault();
if (!newBuildTargetInput.val().trim()) {
return;
}
/* We use the value of the input field so as to maintain any command also
* added e.g. core-image-minimal:clean and because we can build targets
* that toaster doesn't yet know about
*/
selectedTarget = { name: newBuildTargetInput.val().trim() };
/* Fire off the build */
libtoaster.startABuild(null, selectedTarget.name,
function(){
window.location.replace(libtoaster.ctx.projectBuildsUrl);
}, null);
});
/* Call makeProjectNameValidation function */
libtoaster.makeProjectNameValidation($("#project-name-change-input"),
$("#hint-error-project-name"), $("#validate-project-name"),
$("#project-name-change-btn"));
}