]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
bitbake: toastergui: prevent contamination of libtoaster context
authorAlexandru DAMIAN <alexandru.damian@intel.com>
Wed, 10 Jun 2015 14:27:52 +0000 (15:27 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 11 Jun 2015 23:01:50 +0000 (00:01 +0100)
This patch modifies the New Build button to use a local
copy of the default libtoaster project context in order
to prevent page contamination when a different project is
selected in the drop-down menu.

(Bitbake rev: 937665bd57dad04dd6bb46d06488b699f5c54d29)

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bitbake/lib/toaster/toastergui/static/js/base.js

index 06d0676cbfe145aca8bf277c7822ceb482a99fa6..d079f239947b58016a002d3179f77ece26f6af1a 100644 (file)
@@ -11,7 +11,8 @@ function basePageInit(ctx) {
     return;
   }
 
-  var currentProjectId = libtoaster.ctx.projectId;
+  var selectedProject = libtoaster.ctx;
+  var selectedTarget;
 
   /* Hide the change project icon when there is only one project */
   if (ctx.numProjects === 1) {
@@ -27,18 +28,16 @@ function basePageInit(ctx) {
   var newBuildProjectSaveBtn = $("#new-build-button #save-project-button");
 
 
-  var selectedTarget;
-
   _checkProjectBuildable();
   _setupNewBuildButton();
 
 
   function _checkProjectBuildable() {
-    if (libtoaster.ctx.projectId === undefined) {
+    if (selectedProject.projectId === undefined) {
       return;
     }
 
-    libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl,
+    libtoaster.getProjectInfo(selectedProject.projectPageUrl,
       function (data) {
         if (data.machine.name === undefined || data.layers.length === 0) {
           /* we can't build anything with out a machine and some layers */
@@ -52,9 +51,14 @@ function basePageInit(ctx) {
           newBuildTargetInput.prop("disabled", false);
           newBuildTargetBuildBtn.prop("disabled", false);
 
-          libtoaster.makeTypeahead(newBuildTargetInput, libtoaster.ctx.projectTargetsUrl, { format: "json" }, function (item) {
+          libtoaster.makeTypeahead(newBuildTargetInput, selectedProject.projectTargetsUrl, { format: "json" }, function (item) {
             /* successfully selected a target */
-            selectedTarget = item;
+            selectedProject.projectPageUrl = item.projectPageUrl;
+            selectedProject.projectName = item.name;
+            selectedProject.projectId = item.id;
+            selectedProject.projectBuildsUrl = item.projectBuildsUrl;
+
+
           });
 
         }
@@ -63,18 +67,17 @@ function basePageInit(ctx) {
 
   function _setupNewBuildButton() {
     /* Setup New build button */
-    var selectedProject;
 
     /* If we don't have a current project then present the set project
      * form.
      */
-    if (libtoaster.ctx.projectId === undefined) {
+    if (selectedProject.projectId === undefined) {
       $('#change-project-form').show();
       $('#project .icon-pencil').hide();
     }
 
 
-    libtoaster.makeTypeahead(newBuildProjectInput, libtoaster.ctx.projectsUrl, { format : "json" }, function (item) {
+    libtoaster.makeTypeahead(newBuildProjectInput, selectedProject.projectsUrl, { format : "json" }, function (item) {
       /* successfully selected a project */
       newBuildProjectSaveBtn.removeAttr("disabled");
       selectedProject = item;
@@ -107,23 +110,18 @@ function basePageInit(ctx) {
         selectedTarget = { name: newBuildTargetInput.val() };
       }
       /* fire and forget */
-      libtoaster.startABuild(libtoaster.ctx.projectBuildsUrl, libtoaster.ctx.projectId, selectedTarget.name, null, null);
-      window.location.replace(libtoaster.ctx.projectPageUrl);
+      libtoaster.startABuild(selectedProject.projectBuildsUrl, selectedProject.projectId, selectedTarget.name, null, null);
+      window.location.replace(selectedProject.projectPageUrl);
     });
 
     newBuildProjectSaveBtn.click(function () {
-      libtoaster.ctx.projectId = selectedProject.pk;
+      selectedProject.projectId = selectedProject.pk;
       /* Update the typeahead project_id paramater */
       _checkProjectBuildable();
 
       /* we set the effective context of the page to the currently selected project */
       /* TBD: do we override even if we already have a context project ?? */
       /* TODO: replace global library context with references to the "selected" project */
-      libtoaster.ctx.projectPageUrl = selectedProject.projectPageUrl;
-      libtoaster.ctx.projectName = selectedProject.name;
-      libtoaster.ctx.projectId = selectedProject.id;
-
-      ctx.projectBuildsUrl = selectedProject.projectBuildsUrl;
 
       /* we can create a target typeahead only after we have a project selected */
       newBuildTargetInput.prop("disabled", false);
@@ -137,8 +135,8 @@ function basePageInit(ctx) {
       newBuildTargetInput.val("");
 
       /* set up new form aspect */
-      $("#new-build-button #project a").text(selectedProject.name).attr('href', libtoaster.ctx.projectPageUrl);
-      $("#new-build-button .alert a").attr('href', libtoaster.ctx.projectPageUrl);
+      $("#new-build-button #project a").text(selectedProject.name).attr('href', selectedProject.projectPageUrl);
+      $("#new-build-button .alert a").attr('href', selectedProject.projectPageUrl);
       $("#project .icon-pencil").show();
 
       $("#change-project-form").slideUp({ 'complete' : function () {