summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/static
diff options
context:
space:
mode:
authorMichael Wood <michael.g.wood@intel.com>2016-09-26 13:59:28 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-09-30 16:52:21 +0100
commit4d0bc8d52130fcc62c0d239fd7e0c79bec188c88 (patch)
treef7ea393ff74e8cd46c2b47626154f70481c45ed1 /bitbake/lib/toaster/toastergui/static
parent0b17e6d32c0f3d39fb5e58c4ff1c25afe58ce4f3 (diff)
downloadpoky-4d0bc8d52130fcc62c0d239fd7e0c79bec188c88.tar.gz
bitbake: toaster: Clean up and convert to rest api project edit and get calls
Convert the project xhr calls into proper rest api and port the client side calls to use the new API. Fix all the pyflakes identified issues and clean up unused fields. Also remove the api and client side code for changing release on the fly as this is no longer supported. [YOCTO #9519] (Bitbake rev: 8b01767d6e787cdb09789116ebf57dfb70f521bc) Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
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");