diff options
| author | Michael Wood <michael.g.wood@intel.com> | 2016-07-06 18:22:38 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-07-08 09:57:29 +0100 |
| commit | 8813726f1d5ea1d78fced7fe52abdf826e529e62 (patch) | |
| tree | 073689032966641d0f12415002572de1f1d08e72 | |
| parent | e1ba2fd331b7f937b8ddf3e83389df5caf33d9e8 (diff) | |
| download | poky-8813726f1d5ea1d78fced7fe52abdf826e529e62.tar.gz | |
bitbake: toaster: add Layer delete front end feature to layerdetails
Add the front end feature to delete a layer from the layer details page.
[YOCO #9184]
(Bitbake rev: 91815229f60eb9deba7d299f05c69b52ff1df59c)
Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
4 files changed, 58 insertions, 2 deletions
diff --git a/bitbake/lib/toaster/toastergui/static/js/layerdetails.js b/bitbake/lib/toaster/toastergui/static/js/layerdetails.js index a56087b738..683486e53b 100644 --- a/bitbake/lib/toaster/toastergui/static/js/layerdetails.js +++ b/bitbake/lib/toaster/toastergui/static/js/layerdetails.js | |||
| @@ -397,6 +397,26 @@ function layerDetailsPageInit (ctx) { | |||
| 397 | $(this).parents("form").submit(); | 397 | $(this).parents("form").submit(); |
| 398 | }); | 398 | }); |
| 399 | 399 | ||
| 400 | $("#layer-delete-confirmed").click(function(){ | ||
| 401 | $.cookie("layer-deleted", ctx.layerVersion.name, { path: '/'}); | ||
| 402 | |||
| 403 | $.ajax({ | ||
| 404 | type: "DELETE", | ||
| 405 | url: ctx.xhrUpdateLayerUrl, | ||
| 406 | headers: { 'X-CSRFToken' : $.cookie('csrftoken')}, | ||
| 407 | success: function(data) { | ||
| 408 | if (data.error != "ok") { | ||
| 409 | console.warn(data.error); | ||
| 410 | } else { | ||
| 411 | window.location = data.redirect + "?notify=layer-deleted"; | ||
| 412 | } | ||
| 413 | }, | ||
| 414 | error: function(data) { | ||
| 415 | console.warn("Call failed"); | ||
| 416 | console.warn(data); | ||
| 417 | } | ||
| 418 | }); | ||
| 419 | }); | ||
| 400 | 420 | ||
| 401 | layerDepsList.find(".glyphicon-trash").click(layerDepRemoveClick); | 421 | layerDepsList.find(".glyphicon-trash").click(layerDepRemoveClick); |
| 402 | layerDepsList.find("a").tooltip(); | 422 | layerDepsList.find("a").tooltip(); |
diff --git a/bitbake/lib/toaster/toastergui/static/js/projectpage.js b/bitbake/lib/toaster/toastergui/static/js/projectpage.js index 6d92490ba2..df79849e37 100644 --- a/bitbake/lib/toaster/toastergui/static/js/projectpage.js +++ b/bitbake/lib/toaster/toastergui/static/js/projectpage.js | |||
| @@ -58,12 +58,30 @@ function projectPageInit(ctx) { | |||
| 58 | case 'layer-imported': | 58 | case 'layer-imported': |
| 59 | layerImportedNotification(); | 59 | layerImportedNotification(); |
| 60 | break; | 60 | break; |
| 61 | case 'layer-deleted': | ||
| 62 | layerDeletedNotification(); | ||
| 61 | default: | 63 | default: |
| 62 | break; | 64 | break; |
| 63 | } | 65 | } |
| 64 | } | 66 | } |
| 65 | })(); | 67 | })(); |
| 66 | 68 | ||
| 69 | /* Layer deleted notification */ | ||
| 70 | function layerDeletedNotification(){ | ||
| 71 | var layer = $.cookie("layer-deleted"); | ||
| 72 | |||
| 73 | if (!layer) | ||
| 74 | return; | ||
| 75 | |||
| 76 | var message = "You have deleted <strong>1</strong> layer from your "; | ||
| 77 | message += "project: <strong>" + layer + "</strong>"; | ||
| 78 | |||
| 79 | libtoaster.showChangeNotification(message); | ||
| 80 | |||
| 81 | $.removeCookie("layer-deleted", { path: "/"}); | ||
| 82 | } | ||
| 83 | |||
| 84 | |||
| 67 | /* Layer imported notification */ | 85 | /* Layer imported notification */ |
| 68 | function layerImportedNotification(){ | 86 | function layerImportedNotification(){ |
| 69 | var imported = $.cookie("layer-imported-alert"); | 87 | var imported = $.cookie("layer-imported-alert"); |
diff --git a/bitbake/lib/toaster/toastergui/templates/layerdetails.html b/bitbake/lib/toaster/toastergui/templates/layerdetails.html index 143ec25dd7..4b51d1a39c 100644 --- a/bitbake/lib/toaster/toastergui/templates/layerdetails.html +++ b/bitbake/lib/toaster/toastergui/templates/layerdetails.html | |||
| @@ -6,6 +6,20 @@ | |||
| 6 | {% block title %} {{layerversion.layer.name}} - {{project.name}} - Toaster {% endblock %} | 6 | {% block title %} {{layerversion.layer.name}} - {{project.name}} - Toaster {% endblock %} |
| 7 | {% block pagecontent %} | 7 | {% block pagecontent %} |
| 8 | 8 | ||
| 9 | <div id="delete-layer-modal" class="modal fade" tabindex="-1" role="dialog"> | ||
| 10 | <div class="modal-dialog" role="document"> | ||
| 11 | <div class="modal-content"> | ||
| 12 | <div class="modal-body"> | ||
| 13 | Are you sure you want to delete the <strong>{{layerversion.layer.name}}</strong> layer? | ||
| 14 | </div> | ||
| 15 | <div class="modal-footer"> | ||
| 16 | <button type="button" id="layer-delete-confirmed" class="btn btn-primary">Delete</button> | ||
| 17 | <button type="button" class="btn btn-default btn-link" data-dismiss="modal">Cancel</button> | ||
| 18 | </div> | ||
| 19 | </div> | ||
| 20 | </div> | ||
| 21 | </div> | ||
| 22 | |||
| 9 | <div class="row"> | 23 | <div class="row"> |
| 10 | <div class="col-md-12"> | 24 | <div class="col-md-12"> |
| 11 | <ul class="breadcrumb"> | 25 | <ul class="breadcrumb"> |
| @@ -44,7 +58,7 @@ | |||
| 44 | 58 | ||
| 45 | $(document).ready(function(){ | 59 | $(document).ready(function(){ |
| 46 | var ctx = { | 60 | var ctx = { |
| 47 | xhrUpdateLayerUrl : "{% url 'xhr_layer' layerversion.pk %}", | 61 | xhrUpdateLayerUrl : "{% url 'xhr_layer' project.id layerversion.pk %}", |
| 48 | layerVersion : { | 62 | layerVersion : { |
| 49 | name : "{{layerversion.layer.name}}", | 63 | name : "{{layerversion.layer.name}}", |
| 50 | id : {{layerversion.id}}, | 64 | id : {{layerversion.id}}, |
| @@ -271,6 +285,10 @@ | |||
| 271 | </dd> | 285 | </dd> |
| 272 | {% endif %} | 286 | {% endif %} |
| 273 | </dl> | 287 | </dl> |
| 288 | {% if layerversion.layer_source_id and layerversion.layer_source.sourcetype == layerversion.layer_source.TYPE_IMPORTED %} | ||
| 289 | <i class="icon-trash text-danger"></i> | ||
| 290 | <a href="#delete-layer-modal" role="button" class="text-danger" data-toggle="modal" data-target="#delete-layer-modal">Delete {{layerversion.layer.name}}</a> | ||
| 291 | {% endif %} | ||
| 274 | </div> | 292 | </div> |
| 275 | </div> | 293 | </div> |
| 276 | </div> | 294 | </div> |
diff --git a/bitbake/lib/toaster/toastergui/urls.py b/bitbake/lib/toaster/toastergui/urls.py index 15b1063c59..1c0ccbb2e1 100644 --- a/bitbake/lib/toaster/toastergui/urls.py +++ b/bitbake/lib/toaster/toastergui/urls.py | |||
| @@ -191,7 +191,7 @@ urlpatterns = patterns('toastergui.views', | |||
| 191 | 191 | ||
| 192 | url(r'^xhr_importlayer/$', 'xhr_importlayer', name='xhr_importlayer'), | 192 | url(r'^xhr_importlayer/$', 'xhr_importlayer', name='xhr_importlayer'), |
| 193 | 193 | ||
| 194 | url(r'^xhr_layer/(?P<layerversion_id>\d+)$', | 194 | url(r'^xhr_layer/(?P<pid>\d+)/(?P<layerversion_id>\d+)$', |
| 195 | api.XhrLayer.as_view(), | 195 | api.XhrLayer.as_view(), |
| 196 | name='xhr_layer'), | 196 | name='xhr_layer'), |
| 197 | 197 | ||
