diff options
Diffstat (limited to 'bitbake/lib/toaster/toastergui/static/js/projectpage.js')
-rw-r--r-- | bitbake/lib/toaster/toastergui/static/js/projectpage.js | 147 |
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 | } |