summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/static/js/projectpage.js
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/toastergui/static/js/projectpage.js')
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/projectpage.js147
1 files changed, 6 insertions, 141 deletions
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}