summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/static
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/toastergui/static')
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/libtoaster.js3
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/projectpage.js147
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/tests/test.js7
3 files changed, 10 insertions, 147 deletions
diff --git a/bitbake/lib/toaster/toastergui/static/js/libtoaster.js b/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
index f56affd8ea..b2099a6048 100644
--- a/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
+++ b/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
@@ -167,7 +167,6 @@ var libtoaster = (function () {
167 function _getProjectInfo(url, onsuccess, onfail){ 167 function _getProjectInfo(url, onsuccess, onfail){
168 $.ajax({ 168 $.ajax({
169 type: "GET", 169 type: "GET",
170 data : { format: "json" },
171 url: url, 170 url: url,
172 headers: { 'X-CSRFToken' : $.cookie('csrftoken')}, 171 headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
173 success: function (_data) { 172 success: function (_data) {
@@ -194,7 +193,7 @@ var libtoaster = (function () {
194 function _editCurrentProject(data, onSuccess, onFail){ 193 function _editCurrentProject(data, onSuccess, onFail){
195 $.ajax({ 194 $.ajax({
196 type: "POST", 195 type: "POST",
197 url: libtoaster.ctx.projectPageUrl + "?format=json", 196 url: libtoaster.ctx.xhrProjectUrl,
198 data: data, 197 data: data,
199 headers: { 'X-CSRFToken' : $.cookie('csrftoken')}, 198 headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
200 success: function (data) { 199 success: function (data) {
diff --git a/bitbake/lib/toaster/toastergui/static/js/projectpage.js b/bitbake/lib/toaster/toastergui/static/js/projectpage.js
index b75b3e1869..3bf3cbaf2b 100644
--- a/bitbake/lib/toaster/toastergui/static/js/projectpage.js
+++ b/bitbake/lib/toaster/toastergui/static/js/projectpage.js
@@ -27,11 +27,10 @@ function projectPageInit(ctx) {
27 27
28 var urlParams = libtoaster.parseUrlParams(); 28 var urlParams = libtoaster.parseUrlParams();
29 29
30 libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl, function(prjInfo){ 30 libtoaster.getProjectInfo(libtoaster.ctx.xhrProjectUrl, function(prjInfo){
31 updateProjectLayers(prjInfo.layers); 31 updateProjectLayers(prjInfo.layers);
32 updateFreqBuildRecipes(prjInfo.freqtargets); 32 updateFreqBuildRecipes(prjInfo.freqtargets);
33 updateProjectRelease(prjInfo.release); 33 updateProjectRelease(prjInfo.release);
34 updateProjectReleases(prjInfo.releases, prjInfo.release);
35 34
36 /* If we're receiving a machine set from the url and it's different from 35 /* If we're receiving a machine set from the url and it's different from
37 * our current machine then activate set machine sequence. 36 * our current machine then activate set machine sequence.
@@ -287,7 +286,9 @@ function projectPageInit(ctx) {
287 machineNameTitle.text(machineName); 286 machineNameTitle.text(machineName);
288 } 287 }
289 288
290 libtoaster.makeTypeahead(machineChangeInput, libtoaster.ctx.machinesTypeAheadUrl, { }, function(item){ 289 libtoaster.makeTypeahead(machineChangeInput,
290 libtoaster.ctx.machinesTypeAheadUrl,
291 { }, function(item){
291 currentMachineAddSelection = item.name; 292 currentMachineAddSelection = item.name;
292 machineChangeBtn.removeAttr("disabled"); 293 machineChangeBtn.removeAttr("disabled");
293 }); 294 });
@@ -324,146 +325,10 @@ function projectPageInit(ctx) {
324 releaseTitle.text(release.description); 325 releaseTitle.text(release.description);
325 } 326 }
326 327
327 function updateProjectReleases(releases, current){
328 for (var i in releases){
329 var releaseOption = $("<option></option>");
330 328
331 releaseOption.val(releases[i].id); 329 $("#delete-project-confirmed").click(function(e){
332 releaseOption.text(releases[i].description);
333 releaseOption.data('release', releases[i]);
334
335 if (releases[i].id == current.id)
336 releaseOption.attr("selected", "selected");
337
338 releaseForm.children("select").append(releaseOption);
339 }
340 }
341
342 releaseChangeFormToggle.click(function(){
343 releaseForm.slideDown();
344 releaseTitle.hide();
345 $(this).hide();
346 });
347
348 cancelReleaseChange.click(function(e){
349 e.preventDefault(); 330 e.preventDefault();
350 releaseForm.slideUp(function(){ 331
351 releaseTitle.show();
352 releaseChangeFormToggle.show();
353 });
354 });
355
356 function changeProjectRelease(release, layersToRm){
357 libtoaster.editCurrentProject({ projectVersion : release.id },
358 function(){
359 /* Success */
360 /* Update layers list with new layers */
361 layersInPrjList.addClass('muted');
362 libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl,
363 function(prjInfo){
364 layersInPrjList.children().remove();
365 updateProjectLayers(prjInfo.layers);
366 layersInPrjList.removeClass('muted');
367 releaseChangedNotification(release, prjInfo.layers, layersToRm);
368 });
369 updateProjectRelease(release);
370 cancelReleaseChange.click();
371 });
372 }
373
374 /* Create a notification to show the changes to the layer configuration
375 * caused by changing a release.
376 */
377
378 function releaseChangedNotification(release, layers, layersToRm){
379
380 var message;
381
382 if (layers.length === 0 && layersToRm.length === 0){
383 message = $('<span><span class="lead">You have changed the project release to: <strong><span id="notify-release-name"></span></strong>.');
384 message.find("#notify-release-name").text(release.description);
385 libtoaster.showChangeNotification(message);
386 return;
387 }
388
389 /* Create the whitespace separated list of layers removed */
390 var layersDelList = "";
391
392 layersToRm.map(function(layer, i){
393 layersDelList += layer.name;
394 if (layersToRm[i+1] !== undefined)
395 layersDelList += ', ';
396 });
397
398 message = $('<span><span class="lead">You have changed the project release to: <strong><span id="notify-release-name"></span></strong>. This has caused the following changes in your project layers:</span><ul id="notify-layers-changed-list"></ul></span>');
399
400 var changedList = message.find("#notify-layers-changed-list");
401
402 message.find("#notify-release-name").text(release.description);
403
404 /* Manually construct the list item for changed layers */
405 var li = '<li><strong>'+layers.length+'</strong> layers changed to the <strong>'+release.name+'</strong> release: ';
406 for (var i in layers){
407 li += '<a href='+layers[i].layerdetailurl+'>'+layers[i].name+'</a>';
408 if (i !== 0)
409 li += ', ';
410 }
411
412 changedList.append($(li));
413
414 /* Layers removed */
415 if (layersToRm && layersToRm.length > 0){
416 if (layersToRm.length == 1)
417 li = '<li><strong>1</strong> layer removed: '+layersToRm[0].name+'</li>';
418 else
419 li = '<li><strong>'+layersToRm.length+'</strong> layers deleted: '+layersDelList+'</li>';
420
421 changedList.append($(li));
422 }
423
424 libtoaster.showChangeNotification(message);
425 }
426
427 /* Show the modal dialog which gives the option to remove layers which
428 * aren't compatible with the proposed release
429 */
430 function showReleaseLayerChangeModal(release, layers){
431 var layersToRmList = releaseModal.find("#layers-to-remove-list");
432 layersToRmList.text("");
433
434 releaseModal.find(".proposed-release-change-name").text(release.description);
435 releaseModal.data("layers", layers);
436 releaseModal.data("release", release);
437
438 for (var i in layers){
439 layersToRmList.append($("<li></li>").text(layers[i].name));
440 }
441 releaseModal.modal('show');
442 }
443
444 $("#change-release-btn").click(function(e){
445 e.preventDefault();
446
447 var newRelease = releaseForm.find("option:selected").data('release');
448
449 $.getJSON(ctx.testReleaseChangeUrl,
450 { new_release_id: newRelease.id },
451 function(layers) {
452 if (layers.rows.length === 0){
453 /* No layers to change for this release */
454 changeProjectRelease(newRelease, []);
455 } else {
456 showReleaseLayerChangeModal(newRelease, layers.rows);
457 }
458 });
459 });
460
461 /* Release change modal accept */
462 $("#change-release-and-rm-layers").click(function(){
463 var layers = releaseModal.data("layers");
464 var release = releaseModal.data("release");
465
466 changeProjectRelease(release, layers);
467 }); 332 });
468 333
469} 334}
diff --git a/bitbake/lib/toaster/toastergui/static/js/tests/test.js b/bitbake/lib/toaster/toastergui/static/js/tests/test.js
index f8d566b3e3..d7953de447 100644
--- a/bitbake/lib/toaster/toastergui/static/js/tests/test.js
+++ b/bitbake/lib/toaster/toastergui/static/js/tests/test.js
@@ -42,9 +42,8 @@ QUnit.test("Layer alert notification", function(assert) {
42 42
43QUnit.test("Project info", function(assert){ 43QUnit.test("Project info", function(assert){
44 var done = assert.async(); 44 var done = assert.async();
45 libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl, function(prjInfo){ 45 libtoaster.getProjectInfo(libtoaster.ctx.xhrProjectUrl, function(prjInfo){
46 assert.ok(prjInfo.machine.name); 46 assert.ok(prjInfo.machine.name);
47 assert.ok(prjInfo.releases.length > 0);
48 assert.ok(prjInfo.layers.length > 0); 47 assert.ok(prjInfo.layers.length > 0);
49 assert.ok(prjInfo.freqtargets); 48 assert.ok(prjInfo.freqtargets);
50 assert.ok(prjInfo.release); 49 assert.ok(prjInfo.release);
@@ -82,11 +81,11 @@ QUnit.test("Add layer", function(assert){
82 }, 200); 81 }, 200);
83 82
84 /* Compare the number of layers before and after the add in the project */ 83 /* Compare the number of layers before and after the add in the project */
85 libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl, function(prjInfo){ 84 libtoaster.getProjectInfo(libtoaster.ctx.xhrProjectUrl, function(prjInfo){
86 var origNumLayers = prjInfo.layers.length; 85 var origNumLayers = prjInfo.layers.length;
87 86
88 libtoaster.addRmLayer(layer, true, function(deps){ 87 libtoaster.addRmLayer(layer, true, function(deps){
89 libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl, 88 libtoaster.getProjectInfo(libtoaster.ctx.xhrProjectUrl,
90 function(prjInfo){ 89 function(prjInfo){
91 assert.ok(prjInfo.layers.length > origNumLayers, 90 assert.ok(prjInfo.layers.length > origNumLayers,
92 "Layer not added to project"); 91 "Layer not added to project");