diff options
Diffstat (limited to 'poky/bitbake/lib/toaster/toastergui/templates/dirinfo.html')
-rw-r--r-- | poky/bitbake/lib/toaster/toastergui/templates/dirinfo.html | 245 |
1 files changed, 245 insertions, 0 deletions
diff --git a/poky/bitbake/lib/toaster/toastergui/templates/dirinfo.html b/poky/bitbake/lib/toaster/toastergui/templates/dirinfo.html new file mode 100644 index 000000000..ab89e279f --- /dev/null +++ b/poky/bitbake/lib/toaster/toastergui/templates/dirinfo.html @@ -0,0 +1,245 @@ +{% extends "basebuildpage.html" %} +{% block title %} Directory structure - {{ target.target }} {{ build.machine }} - {{ build.project.name }} - Toaster {% endblock %} +{% block extraheadcontent %} +{% load static %} +<link rel="stylesheet" href="{% static 'css/jquery.treetable.css' %}" type="text/css"> +<link rel="stylesheet" href="{% static 'css/jquery.treetable.theme.toaster.css' %}" type="text/css"> +{% endblock extraheadcontent %} + +{% block localbreadcrumb %} +<li>{{target.target}}</li> +{% endblock localbreadcrumb%} + +{% block buildinfomain %} + +{% load static %} +<script src="{% static 'js/jquery.treetable.js' %}"> +</script> +{% load projecttags %} + +<script type='text/javascript'> + var ctx = {}; + ctx.target = "{{target.target}}"; + + $(document).ready(function(){ + $("#menu-"+ctx.target).addClass("active"); + }); + + function setupTreetable() { + $("#dirtable").treetable({ + expandable: true, + branchAttr: "ttBranch", + clickableNodeNames: true, + onNodeCollapse: function() { + /* Do nothing, keep cached */ + }, + onNodeExpand: function() { + var start = this.id; + var n = $("#dirtable").treetable("node", start); + if (this.children.length > 0) { + /* already was expanded once */ + $("#dirtable").treetable("reveal", start); + } + else { + var url = "{% url "dirinfo_ajax" build.id target.id %}"; + $.ajax({ + async: false, + type : "GET", + url : url, + data : "start=" + start, + success : function(response) { + addRows(n, response) + }, + error : function(jqXHR, textStatus, errorThrown ) {alert(textStatus + ":" + errorThrown)}, + }); + } + }, + }); + } + function td(data) { + if (data == null) { + data = ''; + } + return '<td>' + data + '</td>' + } + + function formatRow(o) { + /* setup tr-wide formatting */ + var tr = '<tr class="'; + if (o.isdir && o.childcount) { + tr += 'branch" data-tt-branch="true" '; + } + else { + tr += 'leaf" data-tt-branch="false" '; + } + tr += ' data-tt-id="' + o.fullpath +'" '; + if (o.parent != "/") { + tr += ' data-tt-parent-id="' + o.parent +'" '; + } + tr += '>'; + + /* setup td specific formatting */ + var link_to = '<td class="text-muted">' + o.link_to + '</td>'; + var size = '<td class = "sizecol">' + o.size + '</td>' + var permission = td(o.permission); + var owner = td(o.owner); + var group = td(o.group); + + /* handle the name column */ + var name = null;; + var namespan=1; + if (o.isdir) { + if (o.link_to == null) { + namespan = 2; + if (o.package == null) { + namespan = 3; + } + } + var colspan = 'colspan="' + namespan + '"'; + name = '<td class="content-directory"' + colspan + '>'; + if (o.childcount) { + name += '<a href="">'; + } + name += '<span class="glyphicon glyphicon-folder-close"></span>'; + name += ' ' + o.name; + if (o.childcount) { + name += '</a>'; + } + name += '</td>'; + } + else { + if (o.link_to == null) { + namespan = 2; + if (o.package == null) { + namespan = 3; + } + var colspan = 'colspan="' + namespan + '"'; + name = '<td ' + colspan + '><span class="glyphicon glyphicon-file"></span>'; + } + else { + name = '<td class="text-muted"><span class="glyphicon glyphicon-hand-right"></span>'; + } + name += ' ' + o.name; + name += '</td>'; + } + + /* handle the package column */ + var package = null; + if (o.package != null) { + /* add link to included package page */ + build_id = {{ build.id }}; + target_id = {{ target.id }}; + /* Create a url for a dummy package id of 0 */ + dummy = "{% url 'package_included_detail' build.id target.id 0 %}" + /* fill in the package id */ + url = dummy.substr(0, dummy.length-1) + o.package_id; + package = '<a href=' + url + '>' ; + package += o.package; + package += '</a>'; + if (o.installed_package != o.package) { + /* make class muted and add hover help */ + package += '<span class="text-muted"> as ' + o.installed_package + ' </span>'; + package += '<span class="glyphicon glyphicon-question-sign get-help hover-help" '; + package += 'title="' + o.package + ' was renamed at packaging time and was installed in your image as ' + o.installed_package + '">'; + package += '</span>'; + } + } + package = td(package); + + var cols1to3; + switch (namespan) { + case 3: + cols1to3 = name; + break; + case 2: + cols1to3 = name + package; + break; + default: + cols1to3 = name + link_to + package; + } + r = tr + cols1to3 + size + permission + owner + group + "</tr>" + return r; + } + + function addRows(n, objs) { + rows = ""; + for (i=0; i<objs.length; i++) { + rows += formatRow(objs[i]); + } + $("#dirtable").treetable("loadBranch", n, rows); + } + + $.fn.isOffScreen = function(){ + var win = $(window); + viewportBottom = win.scrollTop() + win.height(); + + var bounds = this.offset(); + bounds.bottom = bounds.top + this.outerHeight(); + + return (bounds.bottom > viewportBottom); + }; + + function selectRow(path) { + var row = $('tr[data-tt-id="' + path + '"]'); + row.addClass(" highlight"); + if (row.isOffScreen()) { + $('html, body').animate({ scrollTop: row.offset().top - 150}, 2000); + } + } +</script> + +<div class="col-md-10"> + + <div class="page-header build-data"> + <h1> {{target.target}} </h1> + </div> + + <ul class="nav nav-tabs"> + <li> + <a href="{% url 'target' build.id target.id %}"> + <span class="glyphicon glyphicon-question-sign get-help" title="Of all the packages built, the subset installed in the root file system of this image"></span> + Packages included ({{target.package_count}} - {{packages_sum|filtered_filesizeformat}}) + </a> + </li> + <li class="active"> + <a href="{% url 'dirinfo' build.id target.id %}"> + <span class="glyphicon glyphicon-question-sign get-help" title="The directories and files in the root file system of this image"></span> + Directory structure + </a> + </li> + </ul> + + <div id="directory-structure" class="tab-pane active"> + <table id="dirtable" class="table table-bordered table-hover treetable"> + <thead> + <tr> + <th>Directory / File</th> + <th>Symbolic link to</th> + <th>Source package</th> + <th class="narrow-col">Size</th> + <th class="medium-col">Permissions</th> + <th class="narrow-col">Owner</th> + <th class="narrow-col">Group</th> + </tr> + </thead> + <tbody> + <script type='text/javascript'> + setupTreetable(); + addRows(null, {{ objects|safe }} ); + {% if file_path %} + {% comment %} + link from package_included_detail specifies file path + {% endcomment %} + {% for dir_elem in dir_list %} + $("#dirtable").treetable("expandNode", "{{dir_elem}}"); + {% endfor %} + selectRow("{{file_path}}"); + {% endif %} + </script> + </tbody> + </table> + </div> <!-- directory-structure --> +</div> <!-- col-md-10 --> + +{% endblock buildinfomain %} + |