diff options
| author | Michael Wood <michael.g.wood@intel.com> | 2016-09-26 13:59:28 +0300 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-09-30 16:52:21 +0100 |
| commit | 4d0bc8d52130fcc62c0d239fd7e0c79bec188c88 (patch) | |
| tree | f7ea393ff74e8cd46c2b47626154f70481c45ed1 /bitbake/lib/toaster/toastergui/static | |
| parent | 0b17e6d32c0f3d39fb5e58c4ff1c25afe58ce4f3 (diff) | |
| download | poky-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')
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 | ||
| 43 | QUnit.test("Project info", function(assert){ | 43 | QUnit.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"); |
