bitbake: toaster: Fix stale layer state buttons
Move the "is available to the project" state computation to the template for the Layer add/remove buttons, Recipe build/Add layer as done for the Package add/remove. This is more reliable as we can get an inconsistent state on the front end JS as there are many opportunities for hitting out of date project information. [YOCTO #8294] (Bitbake rev: 43469c3360566ad4897785f14f8717a9bc8b6078) 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>
This commit is contained in:
parent
41a5f82b4a
commit
ab896df63b
|
@ -1,6 +1,6 @@
|
|||
"use strict";
|
||||
|
||||
function layerBtnsInit(ctx) {
|
||||
function layerBtnsInit() {
|
||||
|
||||
/* Remove any current bindings to avoid duplicated binds */
|
||||
$(".layerbtn").unbind('click');
|
||||
|
@ -80,11 +80,4 @@ function layerBtnsInit(ctx) {
|
|||
imgCustomModal.data('recipe', $(this).data('recipe'));
|
||||
imgCustomModal.modal('show');
|
||||
});
|
||||
|
||||
/* Setup the initial state of the buttons */
|
||||
|
||||
for (var i in ctx.projectLayers){
|
||||
$(".layer-exists-" + ctx.projectLayers[i]).show();
|
||||
$(".layer-add-" + ctx.projectLayers[i]).hide();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -130,7 +130,7 @@ function tableInit(ctx){
|
|||
tableBody.append(row);
|
||||
|
||||
/* If we have layerbtns then initialise them */
|
||||
layerBtnsInit(ctx);
|
||||
layerBtnsInit();
|
||||
|
||||
/* If we have popovers initialise them now */
|
||||
$('td > a.btn').popover({
|
||||
|
|
|
@ -152,7 +152,7 @@ QUnit.test("Layer details page init", function(assert){
|
|||
});
|
||||
|
||||
QUnit.test("Layer btns init", function(assert){
|
||||
assert.throws(layerBtnsInit({ projectLayers : [] }));
|
||||
assert.throws(layerBtnsInit());
|
||||
});
|
||||
|
||||
QUnit.test("Table init", function(assert){
|
||||
|
|
|
@ -57,9 +57,7 @@ class LayersTable(ToasterTable):
|
|||
context = super(LayersTable, self).get_context_data(**kwargs)
|
||||
|
||||
project = Project.objects.get(pk=kwargs['pid'])
|
||||
|
||||
context['project'] = project
|
||||
context['projectlayers'] = map(lambda prjlayer: prjlayer.layercommit.id, ProjectLayer.objects.filter(project=project))
|
||||
|
||||
return context
|
||||
|
||||
|
@ -93,7 +91,10 @@ class LayersTable(ToasterTable):
|
|||
|
||||
def setup_queryset(self, *args, **kwargs):
|
||||
prj = Project.objects.get(pk = kwargs['pid'])
|
||||
compatible_layers = prj.compatible_layerversions()
|
||||
compatible_layers = prj.get_all_compatible_layer_versions()
|
||||
|
||||
self.static_context_extra['current_layers'] = \
|
||||
prj.get_project_layer_versions(pk=True)
|
||||
|
||||
self.queryset = compatible_layers.order_by(self.default_orderby)
|
||||
|
||||
|
|
|
@ -1,8 +1,16 @@
|
|||
<button class="btn btn-danger btn-block layer-exists-{{data.pk}} layerbtn" style="display:none;" data-layer='{ "id": {{data.pk}}, "name": "{{data.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.pk%}"}' data-directive="remove" >
|
||||
<button class="btn btn-danger btn-block layer-exists-{{data.pk}} layerbtn" data-layer='{ "id": {{data.pk}}, "name": "{{data.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.pk%}"}' data-directive="remove"
|
||||
{% if data.pk not in extra.current_layers %}
|
||||
style="display:none;"
|
||||
{% endif %}
|
||||
>
|
||||
<i class="icon-trash"></i>
|
||||
Delete layer
|
||||
</button>
|
||||
<button class="btn btn-block layer-add-{{data.pk}} layerbtn" data-layer='{ "id": {{data.pk}}, "name": "{{data.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.pk%}"}' data-directive="add">
|
||||
<button class="btn btn-block layer-add-{{data.pk}} layerbtn" data-layer='{ "id": {{data.pk}}, "name": "{{data.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.pk%}"}' data-directive="add"
|
||||
{% if data.pk in extra.current_layers %}
|
||||
style="display:none;"
|
||||
{% endif %}
|
||||
>
|
||||
<i class="icon-plus"></i>
|
||||
Add layer
|
||||
</button>
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
<button data-recipe-name="{{data.name}}" class="btn btn-block layer-exists-{{data.layer_version.pk}} build-recipe-btn" style="display:none; margin-top: 5px;" >
|
||||
<button data-recipe-name="{{data.name}}" class="btn btn-block layer-exists-{{data.layer_version.pk}} build-recipe-btn" style="margin-top: 5px;
|
||||
{% if data.layer_version.pk not in extra.current_layers %}
|
||||
display:none;
|
||||
{% endif %}"
|
||||
>
|
||||
Build recipe
|
||||
</button>
|
||||
<button class="btn btn-block layerbtn layer-add-{{data.layer_version.pk}}" data-layer='{ "id": {{data.layer_version.pk}}, "name": "{{data.layer_version.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.layer_version.pk%}"}' data-directive="add">
|
||||
<button class="btn btn-block layerbtn layer-add-{{data.layer_version.pk}}" data-layer='{ "id": {{data.layer_version.pk}}, "name": "{{data.layer_version.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.layer_version.pk%}"}' data-directive="add"
|
||||
{% if data.layer_version.pk in extra.current_layers %}
|
||||
style="display:none;"
|
||||
{% endif %}
|
||||
>
|
||||
<i class="icon-plus"></i>
|
||||
Add layer
|
||||
<i title="" class="icon-question-sign get-help" data-original-title="To build this target, you must first add the {{data.layer_version.layer.name}} layer to your project"></i>
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
tableName : "{{table_name}}",
|
||||
url : "{{ xhr_table_url }}?format=json",
|
||||
title : "{{title}}",
|
||||
projectLayers : {{projectlayers|json}},
|
||||
};
|
||||
|
||||
try {
|
||||
|
|
Loading…
Reference in New Issue