2013-10-11 12:46:23 +00:00
<!DOCTYPE html>
{% load static %}
2015-06-08 17:33:44 +00:00
{% load projecttags %}
2015-10-02 07:14:42 +00:00
{% load project_url_tag %}
2014-10-02 16:58:15 +00:00
< html lang = "en" >
2015-11-13 15:28:07 +00:00
< head >
< title >
{% block title %} Toaster {% endblock %}
< / title >
< link rel = "stylesheet" href = "{% static 'css/bootstrap.min.css' %}" type = "text/css" / >
< link rel = "stylesheet" href = "{% static 'css/bootstrap-responsive.min.css' %}" type = 'text/css' / >
< link rel = "stylesheet" href = "{% static 'css/font-awesome.min.css' %}" type = 'text/css' / >
< link rel = "stylesheet" href = "{% static 'css/prettify.css' %}" type = 'text/css' / >
< link rel = "stylesheet" href = "{% static 'css/default.css' %}" type = 'text/css' / >
2014-11-25 10:12:46 +00:00
2015-07-31 12:09:04 +00:00
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" / >
< meta http-equiv = "Content-Type" content = "text/html;charset=UTF-8" / >
< script src = "{% static 'js/jquery-2.0.3.min.js' %}" >
< / script >
< script src = "{% static 'js/jquery.cookie.js' %}" >
< / script >
< script src = "{% static 'js/bootstrap.min.js' %}" >
< / script >
bitbake: toaster: work-around our lack of a synchronous fetch for typeaheads
The Twitter typeahead.js library expects the developer to use
a source which does a local search for matching suggestions, then
falls back to a remote search if that doesn't return enough
results.
However, in Toaster, we don't do any caching of the suggestions
for a typeahead, so our source only works in asynchronous mode.
Consequently, we see fewer than the expected number of suggestions
if the typeahead has already shown suggestions matching a query.
For example, searching for "meta-n" in the layers typeahead will
show the results for this query; but when the query changes to
"meta-ne", a new set of results is fetched, which mostly overlaps
with the results for "meta-n". The typeahead assumes that the
overlapping items are locally cached and have been delivered
synchronously, and just appends the new results which don't
overlap with the previous query. But because we don't provide any
results synchronously, we just end up with the single
non-overlapping result in the drop-down.
This can be fixed by hacking typeahead.js so that instead of
appending asynchronous results, we always overwrite and redraw
the whole typeahead menu.
This is a temporary fix, and should be properly fixed (when we
have time), perhaps by using typeahead.js's associated Bloodhound
library.
Added a note about the hack to the license file as an explanation
of why the unminified JS file is included in Toaster.
(Bitbake rev: afbaf326e1123c92952fa71e0e820a4ff83488ca)
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-04-18 15:59:05 +00:00
< script src = "{% static 'js/typeahead.jquery.js' %}" >
2016-04-12 11:07:01 +00:00
< / script >
2015-07-31 12:09:04 +00:00
< script src = "{% static 'js/prettify.js' %}" >
< / script >
< script src = "{% static 'js/libtoaster.js' %}" >
< / script >
{% if DEBUG %}
< script >
libtoaster.debug = true;
< / script >
2015-04-10 17:15:03 +00:00
{% endif %}
2015-07-31 12:09:04 +00:00
< script >
libtoaster.ctx = {
jsUrl : "{% static 'js/' %}",
htmlUrl : "{% static 'html/' %}",
projectsUrl : "{% url 'all-projects' %}",
2015-08-04 19:46:34 +00:00
projectsTypeAheadUrl: {% url 'xhr_projectstypeahead' as prjurl%}{{prjurl|json}},
2015-07-31 12:09:04 +00:00
{% if project.id %}
projectId : {{project.id}},
2015-10-02 07:14:42 +00:00
projectPageUrl : {% url 'project' project.id as purl %}{{purl|json}},
2015-07-31 12:09:04 +00:00
projectName : {{project.name|json}},
2015-08-04 19:46:34 +00:00
recipesTypeAheadUrl: {% url 'xhr_recipestypeahead' project.id as paturl%}{{paturl|json}},
layersTypeAheadUrl: {% url 'xhr_layerstypeahead' project.id as paturl%}{{paturl|json}},
machinesTypeAheadUrl: {% url 'xhr_machinestypeahead' project.id as paturl%}{{paturl|json}},
2015-07-31 12:09:04 +00:00
projectBuildsUrl: {% url 'projectbuilds' project.id as pburl %}{{pburl|json}},
2015-12-07 18:43:15 +00:00
xhrCustomRecipeUrl : "{% url 'xhr_customrecipe' %}",
2015-07-31 12:09:04 +00:00
projectId : {{project.id}},
2016-04-06 16:46:32 +00:00
xhrBuildRequestUrl: "{% url 'xhr_buildrequest' project.id %}",
2015-07-31 12:09:04 +00:00
{% else %}
projectId : undefined,
projectPageUrl : undefined,
projectName : undefined,
{% endif %}
};
< / script >
2015-11-13 15:28:07 +00:00
{% block extraheadcontent %}
{% endblock %}
< / head >
2014-02-28 13:55:46 +00:00
2015-11-13 15:28:07 +00:00
< body style = "height: 100%" >
2013-10-11 12:46:23 +00:00
2015-11-13 15:28:07 +00:00
{% csrf_token %}
< div id = "loading-notification" class = "alert lead text-center" style = "display:none" >
Loading < i class = "fa-pulse icon-spinner" > < / i >
< / div >
2015-05-21 17:44:18 +00:00
2015-11-13 15:28:07 +00:00
< div id = "change-notification" class = "alert lead alert-info" style = "display:none" >
< button type = "button" class = "close" id = "hide-alert" > × < / button >
< span id = "change-notification-msg" > < / span >
< / div >
2015-07-31 12:09:12 +00:00
2015-07-31 12:09:04 +00:00
< div class = "navbar navbar-fixed-top" >
< div class = "navbar-inner" >
< div class = "container-fluid" >
< a class = "brand logo" href = "#" > < img src = "{% static 'img/logo.png' %}" class = "" alt = "Yocto logo project" / > < / a >
< span class = "brand" >
< a href = "/" > Toaster< / a >
{% if DEBUG %}
2016-03-07 12:03:34 +00:00
< i class = "icon-info-sign" title = "<strong>Toaster version information</strong>" data-content = "<dl><dt>Git branch</dt><dd>{{TOASTER_BRANCH}}</dd><dt>Git revision</dt><dd>{{TOASTER_REVISION}}</dd></dl>" > < / i >
2015-07-31 12:09:04 +00:00
{% endif %}
< / span >
2015-12-02 18:02:50 +00:00
{% if request.resolver_match.url_name != 'landing' and request.resolver_match.url_name != 'newproject' %}
2015-07-31 12:09:04 +00:00
< ul class = "nav" >
2015-10-17 17:45:53 +00:00
< li { % if request . resolver_match . url_name = = ' all-builds ' % }
2015-07-31 12:09:04 +00:00
class="active"
{% endif %}>
< a href = "{% url 'all-builds' %}" >
< i class = "icon-tasks" > < / i >
All builds
< / a >
< / li >
2015-08-28 16:27:55 +00:00
< li { % if request . resolver_match . url_name = = ' all-projects ' % }
2015-07-31 12:09:04 +00:00
class="active"
{% endif %}>
< a href = "{% url 'all-projects' %}" >
< i class = "icon-folder-open" > < / i >
All projects
< / a >
2015-08-04 15:07:06 +00:00
< / li >
< / ul >
2015-08-28 16:27:55 +00:00
{% endif %}
2015-08-04 15:07:06 +00:00
< ul class = "nav pull-right" >
< li >
< a target = "_blank" href = "http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html" >
< i class = "icon-book" > < / i >
Manual
< / a >
< / li >
< / ul >
< span class = "pull-right divider-vertical" > < / span >
2015-12-07 16:06:01 +00:00
< div class = "btn-group pull-right" >
< a class = "btn" id = "new-project-button" href = "{% url 'newproject' %}" > New project< / a >
< / div >
2015-11-13 15:28:07 +00:00
< / div >
< / div >
2013-12-11 16:42:34 +00:00
< / div >
2013-10-11 12:46:23 +00:00
2015-11-13 15:28:07 +00:00
< div class = "container-fluid top-padded" >
< div class = "row-fluid" >
{% block pagecontent %}
{% endblock %}
< / div >
< / div >
< / body >
2013-10-11 12:46:23 +00:00
< / html >