* [PATCH 01/12] toastergui: save cookie for orderby/page size settings
2015-01-21 17:01 [PATCH 00/12] Toaster patchset Alex DAMIAN
@ 2015-01-21 17:01 ` Alex DAMIAN
2015-01-21 17:01 ` [PATCH 02/12] toasterui: save event backlog to build Alex DAMIAN
` (10 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Alex DAMIAN @ 2015-01-21 17:01 UTC (permalink / raw)
To: bitbake-devel; +Cc: Alexandru DAMIAN
From: Alexandru DAMIAN <alexandru.damian@intel.com>
We save the current settings as cookies on the server side
for the layers, targets and machines pages under Project pages.
[YOCTO #6961]
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
lib/toaster/toastergui/templates/targets.html | 2 --
lib/toaster/toastergui/views.py | 15 +++++++++++----
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/lib/toaster/toastergui/templates/targets.html b/lib/toaster/toastergui/templates/targets.html
index cc339fb..590ecb9 100644
--- a/lib/toaster/toastergui/templates/targets.html
+++ b/lib/toaster/toastergui/templates/targets.html
@@ -39,7 +39,6 @@
{% include "basetable_top.html" %}
{% for o in objects %}
- {% if o.name %}
<tr class="data">
<td class="target">
{{o.name}}
@@ -79,7 +78,6 @@
</a>
</td>
</tr>
- {% endif %}
{% endfor %}
{% include "basetable_bottom.html" %}
diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py
index 5fcad63..4d00fbd 100755
--- a/lib/toaster/toastergui/views.py
+++ b/lib/toaster/toastergui/views.py
@@ -2560,7 +2560,10 @@ if toastermain.settings.MANAGED:
]
}
- return render(request, template, context)
+ response = render(request, template, context)
+ _save_parameters_cookies(response, pagesize, orderby, request)
+
+ return response
def layerdetails(request, layerid):
template = "layerdetails.html"
@@ -2626,7 +2629,7 @@ if toastermain.settings.MANAGED:
(filter_string, search_term, ordering_string) = _search_tuple(request, Recipe)
prj = Project.objects.get(pk = request.session['project_id'])
- queryset_all = Recipe.objects.filter(Q(layer_version__up_branch__name= prj.release.name) | Q(layer_version__build__in = prj.build_set.all()))
+ queryset_all = Recipe.objects.filter(Q(layer_version__up_branch__name= prj.release.name) | Q(layer_version__build__in = prj.build_set.all())).filter(name__regex=r'.{1,}.*')
queryset_with_search = _get_queryset(Recipe, queryset_all, None, search_term, ordering_string, '-name')
@@ -2711,8 +2714,10 @@ if toastermain.settings.MANAGED:
}
}, ]
+ response = render(request, template, context)
+ _save_parameters_cookies(response, pagesize, orderby, request)
- return render(request, template, context)
+ return response
def machines(request):
template = "machines.html"
@@ -2783,8 +2788,10 @@ if toastermain.settings.MANAGED:
]
}
+ response = render(request, template, context)
+ _save_parameters_cookies(response, pagesize, orderby, request)
- return render(request, template, context)
+ return response
def get_project_configvars_context():
--
1.9.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 02/12] toasterui: save event backlog to build
2015-01-21 17:01 [PATCH 00/12] Toaster patchset Alex DAMIAN
2015-01-21 17:01 ` [PATCH 01/12] toastergui: save cookie for orderby/page size settings Alex DAMIAN
@ 2015-01-21 17:01 ` Alex DAMIAN
2015-01-21 17:01 ` [PATCH 03/12] toastergui: fix duplicate IDs all builds page Alex DAMIAN
` (9 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Alex DAMIAN @ 2015-01-21 17:01 UTC (permalink / raw)
To: bitbake-devel; +Cc: Alexandru DAMIAN
From: Alexandru DAMIAN <alexandru.damian@intel.com>
We add a call that saves any queued events to the build
[YOCTO #7021]
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
lib/bb/ui/buildinfohelper.py | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/lib/bb/ui/buildinfohelper.py b/lib/bb/ui/buildinfohelper.py
index 9e801ac..be0de6b 100644
--- a/lib/bb/ui/buildinfohelper.py
+++ b/lib/bb/ui/buildinfohelper.py
@@ -1135,6 +1135,7 @@ class BuildInfoHelper(object):
return
if 'build' in self.internal_state and 'backlog' in self.internal_state:
+ # if we have a backlog of events, do our best to save them here
if len(self.internal_state['backlog']):
tempevent = self.internal_state['backlog'].pop()
logger.debug(1, "buildinfohelper: Saving stored event %s " % tempevent)
@@ -1164,5 +1165,11 @@ class BuildInfoHelper(object):
self._store_build_done(errorcode)
if 'backlog' in self.internal_state:
- for event in self.internal_state['backlog']:
- logger.error("Unsaved log: %s", event.msg)
+ if 'build' in self.internal_state:
+ # we save missed events in the database for the current build
+ tempevent = self.internal_state['backlog'].pop()
+ self.store_log_event(tempevent)
+ else:
+ # we have no build, and we still have events; something amazingly wrong happend
+ for event in self.internal_state['backlog']:
+ logger.error("UNSAVED log: %s", event.msg)
--
1.9.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 03/12] toastergui: fix duplicate IDs all builds page
2015-01-21 17:01 [PATCH 00/12] Toaster patchset Alex DAMIAN
2015-01-21 17:01 ` [PATCH 01/12] toastergui: save cookie for orderby/page size settings Alex DAMIAN
2015-01-21 17:01 ` [PATCH 02/12] toasterui: save event backlog to build Alex DAMIAN
@ 2015-01-21 17:01 ` Alex DAMIAN
2015-01-21 17:01 ` [PATCH 04/12] toastergui: "Run again" button in build pages Alex DAMIAN
` (8 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Alex DAMIAN @ 2015-01-21 17:01 UTC (permalink / raw)
To: bitbake-devel; +Cc: Alexandru DAMIAN
From: Alexandru DAMIAN <alexandru.damian@intel.com>
This patch fixes the duplicate IDs found in the all builds page,
originating in the "Project" column filter.
Also fix misspell "Log1" instead of "Log".
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
lib/toaster/toastergui/views.py | 37 ++++++++++---------------------------
1 file changed, 10 insertions(+), 27 deletions(-)
diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py
index 4d00fbd..7a11bbd 100755
--- a/lib/toaster/toastergui/views.py
+++ b/lib/toaster/toastergui/views.py
@@ -1725,10 +1725,10 @@ if toastermain.settings.MANAGED:
return _redirect_parameters( builds, request.GET, e.response)
context['tablecols'].append(
- {'name': 'Project', 'clclass': 'project',
+ {'name': 'Project', 'clclass': 'projectx',
'filter': {'class': 'project',
'label': 'Project:',
- 'options': map(lambda x: (x.name,'',x.build_set.filter(outcome__lt=BuildRequest.REQ_INPROGRESS).count()), Project.objects.all()),
+ 'options': map(lambda x: (x.name,'project:%d' % x.id,x.build_set.filter(outcome__lt=BuildRequest.REQ_INPROGRESS).count()), Project.objects.all()),
}
}
@@ -3152,6 +3152,14 @@ else:
]
}
},
+ {'name': 'Log',
+ 'dclass': "span4",
+ 'qhelp': "Path to the build main log file",
+ 'clclass': 'log', 'hidden': 1,
+ 'orderfield': _get_toggle_order(request, "cooker_log_path"),
+ 'ordericon':_get_toggle_order_icon(request, "cooker_log_path"),
+ 'orderkey' : 'cooker_log_path',
+ },
{'name': 'Time', 'clclass': 'time', 'hidden' : 1,
'qhelp': "How long it took the build to finish",
'orderfield': _get_toggle_order(request, "timespent", True),
@@ -3165,31 +3173,6 @@ else:
]
}
- if not toastermain.settings.MANAGED:
- context['tablecols'].insert(-2,
- {'name': 'Log1',
- 'dclass': "span4",
- 'qhelp': "Path to the build main log file",
- 'clclass': 'log', 'hidden': 1,
- 'orderfield': _get_toggle_order(request, "cooker_log_path"),
- 'ordericon':_get_toggle_order_icon(request, "cooker_log_path"),
- 'orderkey' : 'cooker_log_path',
- }
- )
-
-
- if toastermain.settings.MANAGED:
- context['tablecols'].append(
- {'name': 'Project', 'clclass': 'project',
- 'filter': {'class': 'project',
- 'label': 'Project:',
- 'options': map(lambda x: (x.name,'',x.build_set.filter(outcome__lt=Build.IN_PROGRESS).count()), Project.objects.all()),
-
- }
- }
- )
-
-
response = render(request, template, context)
_save_parameters_cookies(response, pagesize, orderby, request)
return response
--
1.9.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 04/12] toastergui: "Run again" button in build pages
2015-01-21 17:01 [PATCH 00/12] Toaster patchset Alex DAMIAN
` (2 preceding siblings ...)
2015-01-21 17:01 ` [PATCH 03/12] toastergui: fix duplicate IDs all builds page Alex DAMIAN
@ 2015-01-21 17:01 ` Alex DAMIAN
2015-01-21 17:01 ` [PATCH 05/12] toaster: newproject default release selection fix Alex DAMIAN
` (7 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Alex DAMIAN @ 2015-01-21 17:01 UTC (permalink / raw)
To: bitbake-devel; +Cc: Alexandru DAMIAN
From: Alexandru DAMIAN <alexandru.damian@intel.com>
This patch fixes the "Run again" button for the completed builds.
[YOCTO #7173]
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
lib/toaster/toastergui/static/js/projectapp.js | 2 +-
lib/toaster/toastergui/templates/managed_mrb_section.html | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/toaster/toastergui/static/js/projectapp.js b/lib/toaster/toastergui/static/js/projectapp.js
index 0bdc55a..74471a1 100644
--- a/lib/toaster/toastergui/static/js/projectapp.js
+++ b/lib/toaster/toastergui/static/js/projectapp.js
@@ -339,7 +339,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
$scope.buildExistingTarget = function(targets) {
var oldTargetName = $scope.targetName;
$scope.targetName = targets.map(function(v,i,a){return v.target}).join(' ');
- $scope.targetNamedBuild();
+ $scope.buildNamedTarget();
$scope.targetName = oldTargetName;
}
diff --git a/lib/toaster/toastergui/templates/managed_mrb_section.html b/lib/toaster/toastergui/templates/managed_mrb_section.html
index d4959a0..da5a3f7 100644
--- a/lib/toaster/toastergui/templates/managed_mrb_section.html
+++ b/lib/toaster/toastergui/templates/managed_mrb_section.html
@@ -53,8 +53,8 @@
<span class="lead{%if not MANAGED or not build.project%} pull-right{%endif%}">
Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent|sectohms }}</a>
</span>
- {% if MANAGED and build.project %}
- <a class="btn {%if build.outcome == build.SUCCEEDED%}btn-success{%elif build.outcome == build.FAILED%}btn-danger{%else%}btn-info{%endif%} pull-right" onclick="scheduleBuild({% url 'xhr_projectbuild' build.project.id as bpi%}{{bpi|json}}, {{build.project.name|json}}, {{build.get_sorted_target_list|mapselect:'target'|json}})">Run again</a>
+ {% if build.project %}
+ <button class="btn {%if build.outcome == build.SUCCEEDED%}btn-success{%elif build.outcome == build.FAILED%}btn-danger{%else%}btn-info{%endif%} pull-right" onclick='scheduleBuild({% url 'xhr_projectbuild' build.project.id as bpi%}{{bpi|json}}, {{build.project.name|json}}, {{build.get_sorted_target_list|mapselect:'target'|json}})'>Run again</button>
{% endif %}
</div>
{%endif%}
--
1.9.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 05/12] toaster: newproject default release selection fix
2015-01-21 17:01 [PATCH 00/12] Toaster patchset Alex DAMIAN
` (3 preceding siblings ...)
2015-01-21 17:01 ` [PATCH 04/12] toastergui: "Run again" button in build pages Alex DAMIAN
@ 2015-01-21 17:01 ` Alex DAMIAN
2015-01-21 17:01 ` [PATCH 06/12] toastergui: fix all-targets redirect Alex DAMIAN
` (6 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Alex DAMIAN @ 2015-01-21 17:01 UTC (permalink / raw)
To: bitbake-devel; +Cc: Alexandru DAMIAN
From: Alexandru DAMIAN <alexandru.damian@intel.com>
This patch fixes the default project release selection to
obey the DEFAULT_RELEASE name set in ToasterSettings.
[YOCTO #7035]
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
lib/toaster/toastergui/templates/newproject.html | 32 ++++++++++++++----------
1 file changed, 19 insertions(+), 13 deletions(-)
diff --git a/lib/toaster/toastergui/templates/newproject.html b/lib/toaster/toastergui/templates/newproject.html
index 512a8fa..0265564 100644
--- a/lib/toaster/toastergui/templates/newproject.html
+++ b/lib/toaster/toastergui/templates/newproject.html
@@ -22,18 +22,24 @@
<i class="icon-question-sign get-help" title="The version of the build system you want to use"></i>
</label>
<select name="projectversion" id="projectversion">
- {% for release in releases %}
- <option value="{{release.id}}"{%if projectversion == release.id %} selected{%endif%}>{{release.description}}</option>
- {% endfor %}
+ {% for release in releases %}
+ <option value="{{release.id}}"
+ {%if defaultbranch == release.name %}
+ selected
+ {%endif%}
+
+ >{{release.description}}</option>
+ {% endfor %}
</select>
- {% for release in releases %}
- <div class="row-fluid helptext" id="description-{{release.id}}" style="display: none">
- <span class="help-block span5">{{release.helptext|safe}}</span>
- </div>
- {% endfor %}
+ {% for release in releases %}
+ <div class="row-fluid helptext" id="description-{{release.id}}" style="display: none">
+ <span class="help-block span5">{{release.helptext|safe}}</span>
+ </div>
+ {% endfor %}
{% else %}
- <input type="hidden" name="projectversion" value="{{releases.0.id}}"/>
+ <input type="hidden" name="projectversion" value="{{releases.0.id}}"/>
{% endif %}
+
</fieldset>
<div class="form-actions">
@@ -82,11 +88,11 @@
$("#description-" + selected_release).show();
- $('select').change(function(){
- var new_release = $('select').val();
+ $('select').change(function(){
+ var new_release = $('select').val();
$(".helptext").hide();
- $('#description-' + new_release).fadeIn();
- });
+ $('#description-' + new_release).fadeIn();
+ });
})
</script>
</div>
--
1.9.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 06/12] toastergui: fix all-targets redirect
2015-01-21 17:01 [PATCH 00/12] Toaster patchset Alex DAMIAN
` (4 preceding siblings ...)
2015-01-21 17:01 ` [PATCH 05/12] toaster: newproject default release selection fix Alex DAMIAN
@ 2015-01-21 17:01 ` Alex DAMIAN
2015-01-21 17:01 ` [PATCH 07/12] toastergui: fix all targets page search Alex DAMIAN
` (5 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Alex DAMIAN @ 2015-01-21 17:01 UTC (permalink / raw)
To: bitbake-devel; +Cc: Alexandru DAMIAN
From: Alexandru DAMIAN <alexandru.damian@intel.com>
Fixes the all targets redirect to /api/1.0/targets.
[YOCTO #7147]
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
lib/toaster/toastergui/templates/project.html | 2 +-
lib/toaster/toastergui/urls.py | 2 +-
lib/toaster/toastergui/views.py | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/toaster/toastergui/templates/project.html b/lib/toaster/toastergui/templates/project.html
index 67b2672..815c24c 100644
--- a/lib/toaster/toastergui/templates/project.html
+++ b/lib/toaster/toastergui/templates/project.html
@@ -98,7 +98,7 @@ vim: expandtab tabstop=2
</div>
<i class="icon-question-sign get-help get-help-blue" title="Type the name of one or more targets you want to build, separated by a space. You can also specify a task by appending a semicolon and a task name to a target name, like so: <code>core-image-minimal:do_build</code>"></i>
<p>
- <a href="{% url 'targets' %}">
+ <a href="{% url 'all-targets' %}">
View all targets
</a>
{% if completedbuilds.count %}
diff --git a/lib/toaster/toastergui/urls.py b/lib/toaster/toastergui/urls.py
index c74c7a6..8c3b5a8 100644
--- a/lib/toaster/toastergui/urls.py
+++ b/lib/toaster/toastergui/urls.py
@@ -77,7 +77,7 @@ urlpatterns = patterns('toastergui.views',
url(r'^layers/$', 'layers', name='layers'),
url(r'^layer/(?P<layerid>\d+)/$', 'layerdetails', name='layerdetails'),
url(r'^layer/$', 'layerdetails', name='layerdetails'),
- url(r'^targets/$', 'targets', name='targets'),
+ url(r'^targets/$', 'targets', name='all-targets'),
url(r'^machines/$', 'machines', name='machines'),
url(r'^projects/$', 'projects', name='all-projects'),
diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py
index 7a11bbd..6b4b5d9 100755
--- a/lib/toaster/toastergui/views.py
+++ b/lib/toaster/toastergui/views.py
@@ -2625,7 +2625,7 @@ if toastermain.settings.MANAGED:
mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby' : orderby }
retval = _verify_parameters( request.GET, mandatory_parameters )
if retval:
- return _redirect_parameters( 'targets', request.GET, mandatory_parameters)
+ return _redirect_parameters( 'all-targets', request.GET, mandatory_parameters)
(filter_string, search_term, ordering_string) = _search_tuple(request, Recipe)
prj = Project.objects.get(pk = request.session['project_id'])
--
1.9.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 07/12] toastergui: fix all targets page search
2015-01-21 17:01 [PATCH 00/12] Toaster patchset Alex DAMIAN
` (5 preceding siblings ...)
2015-01-21 17:01 ` [PATCH 06/12] toastergui: fix all-targets redirect Alex DAMIAN
@ 2015-01-21 17:01 ` Alex DAMIAN
2015-01-21 17:01 ` [PATCH 08/12] toastegui: project page build selected targets Alex DAMIAN
` (4 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Alex DAMIAN @ 2015-01-21 17:01 UTC (permalink / raw)
To: bitbake-devel; +Cc: Alexandru DAMIAN
From: Alexandru DAMIAN <alexandru.damian@intel.com>
This fixes the display of layers in all-targets page search/filtering
usage pattern by displaying layer-equivalence class.
The significant impact is the correct display of the list size
for search/filtering actions
[YOCTO #7051]
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
lib/toaster/toastergui/views.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py
index 6b4b5d9..616b57c 100755
--- a/lib/toaster/toastergui/views.py
+++ b/lib/toaster/toastergui/views.py
@@ -2494,9 +2494,12 @@ if toastermain.settings.MANAGED:
queryset_all = _get_queryset(Layer_Version, queryset_all, filter_string, search_term, ordering_string, '-layer__name')
+ object_list = set([x.get_equivalents_wpriority(prj)[0] for x in queryset_all])
+ object_list = list(object_list)
+
# retrieve the objects that will be displayed in the table; layers a paginator and gets a page range to display
- layer_info = _build_page_range(Paginator(queryset_all, request.GET.get('count', 10)),request.GET.get('page', 1))
+ layer_info = _build_page_range(Paginator(object_list, request.GET.get('count', 10)),request.GET.get('page', 1))
context = {
@@ -2504,7 +2507,7 @@ if toastermain.settings.MANAGED:
'objects' : layer_info,
'objectname' : "layers",
'default_orderby' : 'layer__name:+',
- 'total_count': queryset_all.count(),
+ 'total_count': len(object_list),
'tablecols' : [
{ 'name': 'Layer',
--
1.9.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 08/12] toastegui: project page build selected targets
2015-01-21 17:01 [PATCH 00/12] Toaster patchset Alex DAMIAN
` (6 preceding siblings ...)
2015-01-21 17:01 ` [PATCH 07/12] toastergui: fix all targets page search Alex DAMIAN
@ 2015-01-21 17:01 ` Alex DAMIAN
2015-01-21 17:01 ` [PATCH 09/12] toastergui: minor fixes Alex DAMIAN
` (3 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Alex DAMIAN @ 2015-01-21 17:01 UTC (permalink / raw)
To: bitbake-devel; +Cc: Alexandru DAMIAN
From: Alexandru DAMIAN <alexandru.damian@intel.com>
Fixing the action on the "Build selected targets" button.
Remove "build-button" duplicate id from the build page.
[YOCTO #7047]
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
lib/toaster/toastergui/static/js/projectapp.js | 25 ++++++++++++++++++++++---
lib/toaster/toastergui/templates/project.html | 6 +++---
2 files changed, 25 insertions(+), 6 deletions(-)
diff --git a/lib/toaster/toastergui/static/js/projectapp.js b/lib/toaster/toastergui/static/js/projectapp.js
index 74471a1..bee3c56 100644
--- a/lib/toaster/toastergui/static/js/projectapp.js
+++ b/lib/toaster/toastergui/static/js/projectapp.js
@@ -337,8 +337,12 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
}
$scope.buildExistingTarget = function(targets) {
+ $scope.buildTargetList(targets.map(function(v,i,a){return v.target}));
+ }
+
+ $scope.buildTargetList = function(targetlist) {
var oldTargetName = $scope.targetName;
- $scope.targetName = targets.map(function(v,i,a){return v.target}).join(' ');
+ $scope.targetName = targetlist.join(' ');
$scope.buildNamedTarget();
$scope.targetName = oldTargetName;
}
@@ -733,12 +737,27 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
angular.element(id+"-opposite").toggle();
}
- $scope.selectedMostBuildTargets = function () {
- keys = Object.keys($scope.mostBuiltTargets);
+ /**
+ * Functionality related to "Most build targets"
+ */
+
+ $scope.enableBuildSelectedTargets = function () {
+ var keys = Object.keys($scope.mostBuiltTargets);
keys = keys.filter(function (e) { if ($scope.mostBuiltTargets[e]) return e });
return keys.length == 0;
}
+ $scope.buildSelectedTargets = function () {
+ var keys = Object.keys($scope.mostBuiltTargets);
+ keys = keys.filter(function (e) { if ($scope.mostBuiltTargets[e]) return e });
+
+ $scope.buildTargetList(keys);
+ for (var i = 0; i < keys.length; i++)
+ {
+ $scope.mostBuiltTargets[keys[i]] = 0;
+ }
+ }
+
/**
* Helper function to deal with error string recognition and manipulation
*/
diff --git a/lib/toaster/toastergui/templates/project.html b/lib/toaster/toastergui/templates/project.html
index 815c24c..fe3bcf2 100644
--- a/lib/toaster/toastergui/templates/project.html
+++ b/lib/toaster/toastergui/templates/project.html
@@ -92,7 +92,7 @@ vim: expandtab tabstop=2
<form class="build-form" ng-submit="buildNamedTarget()">
<div class="input-append controls">
<input type="text" class="huge span7" placeholder="Type the target(s) you want to build" autocomplete="off" ng-model="targetName" typeahead="e.name for e in getAutocompleteSuggestions('targets', $viewValue)|filter:$viewValue" typeahead-template-url="suggestion_details" ng-disabled="!layers.length"/>
- <button type="submit" id="build-button" class="btn btn-large btn-primary" ng-disabled="!targetName.length">
+ <button type="submit" class="btn btn-large btn-primary" ng-disabled="!targetName.length">
Build
</button>
</div>
@@ -289,7 +289,7 @@ vim: expandtab tabstop=2
<form ng-submit="buildNamedTarget()">
<div class="input-append">
<input type="text" class="input-xlarge" placeholder="Type the target(s) you want to build" autocomplete="off" data-minLength="1" ng-model="targetName1" typeahead="e.name for e in getAutocompleteSuggestions('targets', $viewValue)|filter:$viewValue" typeahead-template-url="suggestion_details" ng-disabled="!layers.length">
- <button type="submit" id="build-button" class="btn btn-primary" ng-disabled="!targetName1.length">
+ <button type="submit" class="btn btn-primary" ng-disabled="!targetName1.length">
Build </button>
</div>
{% csrf_token %}
@@ -306,7 +306,7 @@ vim: expandtab tabstop=2
</label>
</li>
</ul>
- <button class="btn btn-large btn-primary" ng-disabled="selectedMostBuildTargets()">Build selected targets</button>
+ <button class="btn btn-large btn-primary" ng-disabled="enableBuildSelectedTargets()" ng-click="buildSelectedTargets()">Build selected targets</button>
</div>
</div>
--
1.9.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 09/12] toastergui: minor fixes
2015-01-21 17:01 [PATCH 00/12] Toaster patchset Alex DAMIAN
` (7 preceding siblings ...)
2015-01-21 17:01 ` [PATCH 08/12] toastegui: project page build selected targets Alex DAMIAN
@ 2015-01-21 17:01 ` Alex DAMIAN
2015-01-21 17:01 ` [PATCH 10/12] toastergui: fix the second 'view all targets' link Alex DAMIAN
` (2 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Alex DAMIAN @ 2015-01-21 17:01 UTC (permalink / raw)
To: bitbake-devel; +Cc: Alexandru DAMIAN
From: Alexandru DAMIAN <alexandru.damian@intel.com>
This is a minor fixes patch.
- legacy sorting by "timespent" does not crash the builds pages
- missing xhr_configvaredit view in observer mode is added
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
lib/toaster/toastergui/views.py | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py
index 616b57c..f84b120 100755
--- a/lib/toaster/toastergui/views.py
+++ b/lib/toaster/toastergui/views.py
@@ -1743,7 +1743,8 @@ if toastermain.settings.MANAGED:
# helper function, to be used on "all builds" and "project builds" pages
def _build_list_helper(request, buildrequests):
# ATTN: we use here the ordering parameters for interactive mode; the translation for BuildRequest fields will happen below
- (pagesize, orderby) = _get_parameters_values(request, 10, 'completed_on:-')
+ default_orderby = 'completed_on:-'
+ (pagesize, orderby) = _get_parameters_values(request, 10, default_orderby)
mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby' : orderby }
retval = _verify_parameters( request.GET, mandatory_parameters )
if retval:
@@ -1764,6 +1765,9 @@ if toastermain.settings.MANAGED:
ordering_params[0] = "build__machine"
if ordering_params[0] == "target__target":
ordering_params[0] = "brtarget__target"
+ if ordering_params[0] == "timespent":
+ ordering_params[0] = "id"
+ orderby = default_orderby
request.GET = request.GET.copy() # get a mutable copy of the GET QueryDict
request.GET['orderby'] = ":".join(ordering_params)
@@ -3204,6 +3208,9 @@ else:
def xhr_datatypeahead(request):
raise Exception("page not available in interactive mode")
+ def xhr_configvaredit(request):
+ raise Exception("page not available in interactive mode")
+
def importlayer(request):
raise Exception("page not available in interactive mode")
--
1.9.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 10/12] toastergui: fix the second 'view all targets' link
2015-01-21 17:01 [PATCH 00/12] Toaster patchset Alex DAMIAN
` (8 preceding siblings ...)
2015-01-21 17:01 ` [PATCH 09/12] toastergui: minor fixes Alex DAMIAN
@ 2015-01-21 17:01 ` Alex DAMIAN
2015-01-21 17:01 ` [PATCH 11/12] toastergui: all projects column show/hide Alex DAMIAN
2015-01-21 17:01 ` [PATCH 12/12] toastergui: enable re-ordering when columns are hidden Alex DAMIAN
11 siblings, 0 replies; 13+ messages in thread
From: Alex DAMIAN @ 2015-01-21 17:01 UTC (permalink / raw)
To: bitbake-devel
From: Belen Barros Pena <belen.barros.pena@intel.com>
The project page has 2 links to the all targets page.
The one at the top of the page is working, but not
the one further down. This patch sorts that out.
[YOCTO #7147]
Signed-off-by: Belen Barros Pena <belen.barros.pena@intel.com>
---
lib/toaster/toastergui/templates/project.html | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/toaster/toastergui/templates/project.html b/lib/toaster/toastergui/templates/project.html
index fe3bcf2..b8579e4 100644
--- a/lib/toaster/toastergui/templates/project.html
+++ b/lib/toaster/toastergui/templates/project.html
@@ -294,7 +294,8 @@ vim: expandtab tabstop=2
</div>
{% csrf_token %}
</form>
- <p><a href="{% url 'targets' %}">View all targets</a></p>
+ <p>
+ <a href="{% url 'all-targets' %}">View all targets</a></p>
<div ng-if="frequenttargets.length">
<h4 class="air">
Most built targets
--
1.9.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 11/12] toastergui: all projects column show/hide
2015-01-21 17:01 [PATCH 00/12] Toaster patchset Alex DAMIAN
` (9 preceding siblings ...)
2015-01-21 17:01 ` [PATCH 10/12] toastergui: fix the second 'view all targets' link Alex DAMIAN
@ 2015-01-21 17:01 ` Alex DAMIAN
2015-01-21 17:01 ` [PATCH 12/12] toastergui: enable re-ordering when columns are hidden Alex DAMIAN
11 siblings, 0 replies; 13+ messages in thread
From: Alex DAMIAN @ 2015-01-21 17:01 UTC (permalink / raw)
To: bitbake-devel; +Cc: Alexandru DAMIAN
From: Alexandru DAMIAN <alexandru.damian@intel.com>
This patch fixes the show/hide in all projects page.
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
lib/toaster/toastergui/templates/projects.html | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/lib/toaster/toastergui/templates/projects.html b/lib/toaster/toastergui/templates/projects.html
index 432f025..0396e25 100644
--- a/lib/toaster/toastergui/templates/projects.html
+++ b/lib/toaster/toastergui/templates/projects.html
@@ -23,12 +23,12 @@
<td><a href="{% url 'project' o.id %}">{{o.release.name}}</a></td>
<td>{{o.get_current_machine_name}}</td>
<td>{{o.get_number_of_builds}}</td>
- <td>{{o.get_last_outcome}}</td>
- <td>{{o.get_last_target}}</td>
- <td>{{o.get_last_errors}}</td>
- <td>{{o.get_last_warnings}}</td>
- <td>{{o.get_last_imgfiles}}</td>
- <td>{{o.updated|date:"d/m/y H:i"}}</td>
+ <td class="loutcome">{{o.get_last_outcome}}</td>
+ <td class="ltarget">{{o.get_last_target}}</td>
+ <td class="lerrors">{{o.get_last_errors}}</td>
+ <td class="lwarnings">{{o.get_last_warnings}}</td>
+ <td class="limagefiles">{{o.get_last_imgfiles}}</td>
+ <td class="updated">{{o.updated|date:"d/m/y H:i"}}</td>
</tr>
{% endfor %}
{% include "basetable_bottom.html" %}
--
1.9.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 12/12] toastergui: enable re-ordering when columns are hidden
2015-01-21 17:01 [PATCH 00/12] Toaster patchset Alex DAMIAN
` (10 preceding siblings ...)
2015-01-21 17:01 ` [PATCH 11/12] toastergui: all projects column show/hide Alex DAMIAN
@ 2015-01-21 17:01 ` Alex DAMIAN
11 siblings, 0 replies; 13+ messages in thread
From: Alex DAMIAN @ 2015-01-21 17:01 UTC (permalink / raw)
To: bitbake-devel; +Cc: Alexandru DAMIAN
From: Alexandru DAMIAN <alexandru.damian@intel.com>
This patch enables table re-ordering when a sorted-by column is hidden.
This is default functionality in toaster table pages, but was not
enabled for all columns in this situation.
[YOCTO #7125]
[YOCTO #7022]
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
lib/toaster/toastergui/views.py | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py
index f84b120..e718ced 100755
--- a/lib/toaster/toastergui/views.py
+++ b/lib/toaster/toastergui/views.py
@@ -513,6 +513,7 @@ eans multiple licenses exist that cover different parts of the source',
'qhelp' : 'The name of the recipe building the package',
'orderfield' : _get_toggle_order( request, "recipe__name" ),
'ordericon' : _get_toggle_order_icon( request, "recipe__name" ),
+ 'orderkey' : "recipe__name",
'clclass' : 'recipe_name',
'hidden' : 0,
}
@@ -527,6 +528,7 @@ eans multiple licenses exist that cover different parts of the source',
'qhelp' : 'The name of the layer providing the recipe that builds the package',
'orderfield' : _get_toggle_order( request, "recipe__layer_version__layer__name" ),
'ordericon' : _get_toggle_order_icon( request, "recipe__layer_version__layer__name" ),
+ 'orderkey' : "recipe__layer_version__layer__name",
'clclass' : 'layer_name',
'hidden' : 1,
}
@@ -535,6 +537,7 @@ eans multiple licenses exist that cover different parts of the source',
'qhelp' : 'The Git branch of the layer providing the recipe that builds the package',
'orderfield' : _get_toggle_order( request, "recipe__layer_version__branch" ),
'ordericon' : _get_toggle_order_icon( request, "recipe__layer_version__branch" ),
+ 'orderkey' : "recipe__layer_version__branch",
'clclass' : 'layer_branch',
'hidden' : 1,
}
@@ -576,6 +579,7 @@ eans multiple licenses exist that cover different parts of the source',
'qhelp':'Location in disk of the layer providing the recipe that builds the package',
'orderfield' : _get_toggle_order( request, "recipe__layer_version__layer__local_path" ),
'ordericon' : _get_toggle_order_icon( request, "recipe__layer_version__layer__local_path" ),
+ 'orderkey' : "recipe__layer_version__layer__local_path",
'clclass' : 'layer_directory',
'hidden' : 1,
}
@@ -2527,6 +2531,7 @@ if toastermain.settings.MANAGED:
'qhelp': "Where the layer is coming from, for example, if it's part of the OpenEmbedded collection of layers or if it's a layer you have imported",
'orderfield': _get_toggle_order(request, "layer_source__name"),
'ordericon': _get_toggle_order_icon(request, "layer_source__name"),
+ 'orderkey' : "layer_source__name",
'filter': {
'class': 'layer',
'label': 'Show:',
@@ -2675,23 +2680,27 @@ if toastermain.settings.MANAGED:
'hidden': 1,
'orderfield': _get_toggle_order(request, "section"),
'ordericon': _get_toggle_order_icon(request, "section"),
+ 'orderkey': "section",
},
{ 'name': 'License',
'clclass': 'license',
'hidden': 1,
'orderfield': _get_toggle_order(request, "license"),
'ordericon': _get_toggle_order_icon(request, "license"),
+ 'orderkey': "license",
},
{ 'name': 'Layer',
'clclass': 'layer',
'orderfield': _get_toggle_order(request, "layer_version__layer__name"),
'ordericon': _get_toggle_order_icon(request, "layer_version__layer__name"),
+ 'orderkey': "layer_version__layer__name",
},
{ 'name': 'Layer source',
'clclass': 'source',
'qhelp': "Where the target is coming from, for example, if it's part of the OpenEmbedded collection of targets or if it's a target you have imported",
'orderfield': _get_toggle_order(request, "layer_source__name"),
'ordericon': _get_toggle_order_icon(request, "layer_source__name"),
+ 'orderkey': "layer_source__name",
'filter': {
'class': 'target',
'label': 'Show:',
@@ -2778,6 +2787,7 @@ if toastermain.settings.MANAGED:
'qhelp': "Where the machine is coming from, for example, if it's part of the OpenEmbedded collection of machines or if it's a machine you have imported",
'orderfield': _get_toggle_order(request, "layer_source__name"),
'ordericon': _get_toggle_order_icon(request, "layer_source__name"),
+ 'orderkey': "layer_source__name",
'filter': {
'class': 'machine',
'label': 'Show:',
--
1.9.1
^ permalink raw reply related [flat|nested] 13+ messages in thread