blob: 3f9e1867084664f9b11cc6beceeaab3ba8c4af15 [file] [log] [blame]
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001'use strict';
2
3function projectTopBarInit(ctx) {
4
5 var projectNameForm = $("#project-name-change-form");
6 var projectNameContainer = $("#project-name-container");
Patrick Williamsc0f7c042017-02-23 20:41:17 -06007 var projectName = $(".project-name");
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05008 var projectNameFormToggle = $("#project-change-form-toggle");
9 var projectNameChangeCancel = $("#project-name-change-cancel");
10
11 // this doesn't exist for command-line builds
12 var newBuildTargetInput = $("#build-input");
13
14 var newBuildTargetBuildBtn = $("#build-button");
15 var selectedTarget;
16
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080017 var updateProjectBtn = $("#update-project-button");
18 var cancelProjectBtn = $("#cancel-project-button");
19
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050020 /* Project name change functionality */
21 projectNameFormToggle.click(function(e){
22 e.preventDefault();
23 projectNameContainer.hide();
24 projectNameForm.fadeIn();
25 });
26
27 projectNameChangeCancel.click(function(e){
28 e.preventDefault();
29 projectNameForm.hide();
30 projectNameContainer.fadeIn();
Patrick Williamsc0f7c042017-02-23 20:41:17 -060031 $("#project-name-change-input").val(projectName.first().text());
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050032 });
33
34 $("#project-name-change-btn").click(function(){
35 var newProjectName = $("#project-name-change-input").val();
36
37 libtoaster.editCurrentProject({ projectName: newProjectName }, function (){
Patrick Williamsc0f7c042017-02-23 20:41:17 -060038 projectName.text(newProjectName);
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050039 libtoaster.ctx.projectName = newProjectName;
40 projectNameChangeCancel.click();
41 });
42 });
43
44 /* Nav bar activate state switcher */
45 $("#project-topbar .nav li a").each(function(){
46 if (window.location.pathname === $(this).attr('href'))
47 $(this).parent().addClass('active');
48 else
49 $(this).parent().removeClass('active');
50 });
51
52 if (!newBuildTargetInput.length) {
53 return;
54 }
55
56 /* the following only applies for non-command-line projects */
57
58 /* Recipe build input functionality */
59 if (ctx.numProjectLayers > 0 && ctx.machine){
60 newBuildTargetInput.removeAttr("disabled");
61 }
62
63 libtoaster.makeTypeahead(newBuildTargetInput,
64 libtoaster.ctx.recipesTypeAheadUrl, {}, function (item) {
65 selectedTarget = item;
66 newBuildTargetBuildBtn.removeAttr("disabled");
67 });
68
69 newBuildTargetInput.on('input', function () {
70 if ($(this).val().length === 0) {
71 newBuildTargetBuildBtn.attr("disabled", "disabled");
72 } else {
73 newBuildTargetBuildBtn.removeAttr("disabled");
74 }
75 });
76
77 newBuildTargetBuildBtn.click(function (e) {
78 e.preventDefault();
Brad Bishopd7bf8c12018-02-25 22:55:05 -050079 if (!newBuildTargetInput.val().trim()) {
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050080 return;
81 }
82 /* We use the value of the input field so as to maintain any command also
83 * added e.g. core-image-minimal:clean and because we can build targets
84 * that toaster doesn't yet know about
85 */
Brad Bishopd7bf8c12018-02-25 22:55:05 -050086 selectedTarget = { name: newBuildTargetInput.val().trim() };
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050087
88 /* Fire off the build */
89 libtoaster.startABuild(null, selectedTarget.name,
90 function(){
91 window.location.replace(libtoaster.ctx.projectBuildsUrl);
92 }, null);
93 });
Patrick Williamsc0f7c042017-02-23 20:41:17 -060094
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080095 updateProjectBtn.click(function (e) {
96 e.preventDefault();
97
98 selectedTarget = { name: "_PROJECT_PREPARE_" };
99
100 /* Save current default build image, fire off the build */
101 libtoaster.updateProject(null, selectedTarget.name, newBuildTargetInput.val().trim(),
102 function(){
103 window.location.replace(libtoaster.ctx.projectSpecificPageUrl);
104 }, null);
105 });
106
107 cancelProjectBtn.click(function (e) {
108 e.preventDefault();
109
110 /* redirect to 'done/canceled' landing page */
111 window.location.replace(libtoaster.ctx.landingSpecificCancelURL);
112 });
113
Patrick Williamsc0f7c042017-02-23 20:41:17 -0600114 /* Call makeProjectNameValidation function */
115 libtoaster.makeProjectNameValidation($("#project-name-change-input"),
116 $("#hint-error-project-name"), $("#validate-project-name"),
117 $("#project-name-change-btn"));
118
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500119}