[bitbake-devel] [PATCH 19/19] toastergui: prevent contamination of libtoaster context

Alex DAMIAN alexandru.damian at intel.com
Wed Jun 10 14:39:07 UTC 2015


From: Alexandru DAMIAN <alexandru.damian at intel.com>

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.

Signed-off-by: Alexandru DAMIAN <alexandru.damian at intel.com>
---
 lib/toaster/toastergui/static/js/base.js | 38 +++++++++++++++-----------------
 1 file changed, 18 insertions(+), 20 deletions(-)

diff --git a/lib/toaster/toastergui/static/js/base.js b/lib/toaster/toastergui/static/js/base.js
index 06d0676..d079f23 100644
--- a/lib/toaster/toastergui/static/js/base.js
+++ b/lib/toaster/toastergui/static/js/base.js
@@ -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 () {
-- 
1.9.1




More information about the bitbake-devel mailing list