diff options
Diffstat (limited to 'bitbake/lib/toaster/toastergui/templates/layerdetails.html')
-rw-r--r-- | bitbake/lib/toaster/toastergui/templates/layerdetails.html | 631 |
1 files changed, 482 insertions, 149 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/layerdetails.html b/bitbake/lib/toaster/toastergui/templates/layerdetails.html index 78dc54bfd1..6d00da3061 100644 --- a/bitbake/lib/toaster/toastergui/templates/layerdetails.html +++ b/bitbake/lib/toaster/toastergui/templates/layerdetails.html @@ -1,159 +1,492 @@ {% extends "baseprojectpage.html" %} {% load projecttags %} {% load humanize %} - +{% load static %} {% block localbreadcrumb %} -<li>Layer Details</li> +<li><a href="{% url 'layers' %}">All compatible layers</a></li> +<li> + {{layerversion.layer.name}} ({{layerversion.commit|truncatechars:13}}) +</li> {% endblock %} - {% block projectinfomain %} -<div class="page-header"> - <h1>Layer Details</h1> -</div> - - <div class="row-fluid span7 tabbable"> - <ul class="nav nav-pills"> - <li class="active"> - <a data-toggle="tab" href="#information">Layer details</a> - </li> - <li> - <a data-toggle="tab" href="#targets">Targets (0)</a> - </li> - <li> - <a data-toggle="tab" href="#machines">Machines (0)</a> - </li> - <li> - <a data-toggle="tab" href="#classes">Classes (0)</a> - </li> - <li> - <a data-toggle="tab" href="#bbappends">bbappends (0)</a> - </li> - </ul> - <div class="tab-content"> - <div name="information" id="information" class="tab-pane active"> - <dl class="dl-horizontal"> - <dt class=""> - <i class="icon-question-sign get-help" title="Fetch/clone URL of the repository"></i> - Repository URL - </dt> - <dd> - <form id="change-repo-form" class="control-group"> - <div class="input-append"> - <input type="text" class="input-xlarge" id="type-repo" value="{{layerversion.layer.vcs_url}}"> - <button id="apply-change-repo" class="btn" type="button">Change</button> - <!--a href="#" id="cancel-change-repo" class="btn btn-link">Cancel</a--> - </div> - <span class="help-block">Cloning this Git repository failed</span> - </form> - </dd> - <dt> - <i class="icon-question-sign get-help" title="Subdirectory within the repository where the layer is located, if not in the root (usually only used if the repository contains more than one layer)"></i> - Repository subdirectory - </dt> - <dd> - <span id="subdir">{{layerversion.dirpath}}</span> - <i id="change-subdir" class="icon-pencil"></i> - <i id="delete-subdir" class="icon-trash"></i> - <form id="change-subdir-form" style="display:none;"> - <div class="input-append"> - <input type="text" id="type-subdir" value="meta-acer"> - <button id="apply-change-subdir" class="btn" type="button">Change</button> - <a href="#" id="cancel-change-subdir" class="btn btn-link">Cancel</a> - </div> - </form> - </dd> - <dt>Brach, tag or commit</dt> - <dd> - {{layerversion.up_branch.name}} - <i class="icon-pencil"></i> - </dd> - <dt> - <i class="icon-question-sign get-help" title="The Yocto Project versions with which this layer is compatible. Currently Toaster supports Yocto Project 1.6 and 1.7"></i> - Yocto Project compatibility - </dt> - <dd> - <i class="icon-pencil"></i> - </dd> - <dt> - <i class="icon-question-sign get-help" title="Other layers this layer depends upon"></i> - Layer dependencies - </dt> - <dd> - <ul class="unstyled"> - {% for ld in layer.dependencies.all %} - <li> - <a href="#">openembedded core (meta)</a> - <i class="icon-trash"></i> - </li> - {% endfor %} - </ul> - <div class="input-append"> - <input type="text" autocomplete="off" data-minLength="1" data-autocomplete="off" - data-provide="typeahead" data-source=' - ' - placeholder="Type a layer name" id="layer-dependency"> - <a class="btn" type="button" id="add-layer-dependency" disabled> - Add layer - </a> - </div> - <span class="help-block">You can only add layers Toaster knows about</span> - </dd> - </dl> - </div> - <div name="targets" id="targets" class="tab-pane"> - <div class="alert alert-info"> - <strong>There is no target data for {{layerversion.layer.name}} ... yet</strong> <br /> - Toaster learns about layers as they are built. Once you have used {{layerversion.layer.name}} in a build, Toaster will show you - here the targets it provides. - </div> - </div> - <div name="machines" id="machines" class="tab-pane"> - <div class="alert alert-info"> - <strong>There is no machine data for {{layerversion.layer.name}} ... yet</strong> <br /> - Toaster learns about layers as they are built. Once you have used {{layerversion.layer.name}} in a build, Toaster will show you - here the machines it provides. - </div> + + +<script src="{% static 'js/layerdetails.js' %}"></script> +<script> + + $(document).ready(function (){ + var ctx = { + projectBuildUrl : "{% url 'xhr_build' %}", + layerDetailsUrl : "{% url 'layerdetails' %}", + projectPageUrl : "{% url 'project' project.id %}", + xhrEditProjectUrl : "{% url 'xhr_projectedit' project.id %}", + xhrDataTypeaheadUrl : "{% url 'xhr_datatypeahead' %}", + xhrUpdateLayerUrl : "{% url 'xhr_updatelayer' %}", + projectId : {{project.id}}, + projectName : "{{project.name}}", + numTargets : {{total_targets}}, + numMachines: {{machines|length}}, + layerVersion : { + name : "{{layerversion.layer.name}}", + id : {{layerversion.id}}, + commit: "{{layerversion.commit}}", + inCurrentPrj : {{layer_in_project}}, + url : "{% url 'layerdetails' layerversion.id %}", + sourceId: {{layerversion.layer_source_id}}, + } + }; + + try { + layerDetailsPageInit(ctx); + } catch (e) { + document.write("Sorry, An error has occurred loading this page"); + console.warn(e); + } + }); +</script> + +{# If this is not an imported layer then hide the edit ui #} +{% if layerversion.layer_source_id != 3 %} +<style> + .icon-pencil { + display:none; + } +.delete-current-value{ + display: none; +} + li .icon-trash { + display:none; + } + .add-deps { + display:none; + } +</style> +{% endif %} + +{% include "layers_dep_modal.html" %} + <div class="row-fluid span11"> + <div class="page-header"> + <h1>{{layerversion.layer.name}} <small class="commit" data-toggle="tooltip" title="{{layerversion.commit}}">({{layerversion.commit|truncatechars:13}})</small></h1> + </div> + </div> + + <div class="row-fluid span7 tabbable"> + <div class="alert alert-info lead" id="alert-area" style="display:none"> + <button type="button" class="close" id="dismiss-alert">×</button> + <span id="alert-msg"></span> </div> - </div> -</div> -<div class="row span4 well"> -<h2>About {{layerversion.layer.name}}</h2> -<dl> - - <dt> - Summary - <i class="icon-question-sign get-help" title="One-line description of the layer"></i> - </dt> - <dd> - <span >{{layerversion.layer.summary}}</span> - <i class="icon-pencil"></i> - </dd> - <!--form> - <textarea class="span12" rows="2"></textarea> - <button class="btn" type="button">Change</button> - <a href="#" class="btn btn-link">Cancel</a> - </form--> - <dt> - Description - </dt> - <dd> - <span >{{layerversion.layer.description}}</span> - <i class="icon-pencil"></i> - </dd> - <!--form> - <textarea class="span12" rows="6"></textarea> - <button class="btn" type="button">Change</button> - <a href="#" class="btn btn-link">Cancel</a> - </form--> - <dt> - Maintainer(s) - </dt> - <dd> - <span class="muted">Not set</span> - <i class="icon-pencil"></i> - </dd> -</dl> -</div> + <ul class="nav nav-pills"> + <li class="active"> + <a data-toggle="tab" href="#information" id="details-tab">Layer details</a> + </li> + <li> + <a data-toggle="tab" href="#targets" id="targets-tab">Targets ({{total_targets}})</a> + </li> + <li> + <a data-toggle="tab" href="#machines" id="machines-tab">Machines ({{total_machines}})</a> + </li> + </ul> + <div class="tab-content"> + <span class="button-place"> + {% if layer_in_project == 0 %} + <button id="add-remove-layer-btn" data-directive="add" class="btn btn-large btn-block"> + <span class="icon-plus"></span> + Add the {{layerversion.layer.name}} layer to your project + </button> + {% else %} + <button id="add-remove-layer-btn" data-directive="remove" class="btn btn-block btn-large btn-danger"> + <span class="icon-trash"></span> + Delete the {{layerversion.layer.name}} layer from your project + </button> + {% endif %} + </span> + + <!-- layer details pane --> + <div name="information" id="information" class="tab-pane active"> + <dl class="dl-horizontal"> + <dt class=""> + <i class="icon-question-sign get-help" title="Fetch/clone URL of the repository"></i> + Repository URL + </dt> + <dd> + <span class="current-value">{{layerversion.layer.vcs_url}}</span> + {% if layerversion.get_vcs_link_url %} + <a href="{{layerversion.get_vcs_link_url}}/" class="icon-share get-info" target="_blank"></a> + {% endif %} + <form id="change-repo-form" class="control-group" style="display:none"> + <div class="input-append"> + <input type="text" class="input-xlarge" value="{{layerversion.layer.vcs_url}}"> + <button data-layer-prop="vcs_url" class="btn change-btn" type="button">Save</button> + <a href="#" style="display:none" class="btn btn-link cancel">Cancel</a> + </div> + </form> + <i class="icon-pencil" ></i> + </dd> + <dt> + <i class="icon-question-sign get-help" title="Subdirectory within the repository where the layer is located, if not in the root (usually only used if the repository contains more than one layer)"></i> + Repository subdirectory + </dt> + <dd> + <span class="muted" style="display:none">Not set</span> + <span class="current-value">{{layerversion.dirpath}}</span> + {% if layerversion.get_vcs_dirpath_link_url %} + <a href="{{layerversion.get_vcs_dirpath_link_url}}" class="icon-share get-info" target="_blank"></a> + {% endif %} + <form id="change-subdir-form" style="display:none;"> + <div class="input-append"> + <input type="text" value="{{layerversion.dirpath}}"> + <button data-layer-prop="dirpath" class="btn change-btn" type="button">Save</button> + <a href="#" style="display:none" class="btn btn-link cancel">Cancel</a> + </div> + </form> + <i id="change-subdir" class="icon-pencil"></i> + <span class="icon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span> + </dd> + <dt> + <i class="icon-question-sign get-help" title="The Git branch, tag or commit"></i> + Revision + </dt> + <dd> + <span class="current-value">{{layerversion.commit}}</span> + <form style="display:none;"> + <div class="input-append"> + <input type="text" value="{{layerversion.commit}}"> + <button data-layer-prop="commit" class="btn change-btn" type="button">Save</button> + <a href="#" style="display:none" class="btn btn-link cancel">Cancel</a> + </div> + </form> + <i class="icon-pencil"></i> + </dd> + <dt> + <i class="icon-question-sign get-help" title="Other layers this layer depends upon"></i> + Layer dependencies + </dt> + <dd> + <ul class="unstyled" id="layer-deps-list"> + {% for ld in layerversion.dependencies.all %} + <span class="current-value"> + <li data-layer-id="{{ld.depends_on.id}}"> + <!-- TODO use ld.depends_on.get_vcs_reference instead of commit --> + <a data-toggle="tooltip" title="{{ld.depends_on.layer.vcs_url}} | {{ld.depends_on.commit}}" href="{% url 'layerdetails' ld.depends_on.id %}">{{ld.depends_on.layer.name}}</a> + <span class="icon-trash " data-toggle="tooltip" title="Delete"></span> + </li> + </span> + {% endfor %} + </ul> + <div class="input-append add-deps"> + <input type="text" autocomplete="off" data-minLength="1" data-autocomplete="off" placeholder="Type a layer name" id="layer-dep-input"> + <a class="btn" type="button" id="add-layer-dependency-btn" disabled> + Add layer + </a> + </div> + <span class="help-block add-deps">You can only add layers Toaster knows about</span> + </dd> + </dl> + </div> + <!-- targets tab --> + <div name="targets" id="targets" class="tab-pane"> + {% if total_targets == 0 %} + <div class="alert alert-info"> + There is no target information for the <strong> {{layerversion.layer.name}} </strong> layer. + </div> + {% else %} + + <div class="row-fluid"> + + {% if targets.paginator.count == 0 %} + <div class="alert"> + <h3>No targets found</h3> + {% endif %} + + {# only show the search form if we have more than 10 results #} + {% if targets.paginator.count > 10 or request.GET.targets_search %} + {% if targets.paginator.count == 0 %} + <form class="input-append"> + {% else %} + <form class="navbar-search input-append pull-left"> + {% endif %} + + <input type="text" id="target-search" name="targets_search" placeholder="Search targets" class="input-xlarge" value="{{request.GET.targets_search}}"> + {% if request.GET.targets_search %} + <a class="add-on btn target-search-clear"> + <i class="icon-remove"></i> + </a> + {% endif %} + <button type="submit" class="btn">Search</button> + {% if targets.paginator.count == 0 %} + <button type="submit" class="btn btn-link target-search-clear">Show all targets</a> + {% endif %} + </form> + {% endif %} + + {% if targets.paginator.count == 0 %} + <!-- end alert --> + </div> + <!-- end row-fluid --> + </div> + {% else %} + + {% if total_targets > 10 %} + <div class="pull-right"> + <span class="help-inline" style="padding-top:5px;">Show rows:</span> + <select style="margin-top:5px;margin-bottom:0px;" class="pagesize"> + {% with "10 25 50 100 150" as list%} + {% for i in list.split %} + {% if request.session.limit == i %} + <option value="{{i}}" selected>{{i}}</option> + {% else %} + <option value="{{i}}">{{i}}</option> + {% endif %} + {% endfor %} + {% endwith %} + </select> + </div> + {% endif %} + </div> + + <table class="table table-bordered table-hover"> + <thead> + <tr> + <th> + <i class="icon-question-sign get-help" title="Information about a single piece of software, including where to download the source, configuration options, how to compile the source files and how to package the compiled output"></i> + Target + {% if request.GET.targets_search %} + <span class="badge badge-info">{{targets.paginator.count}}</span> + {% endif %} + </th> + <th> + <i class="icon-question-sign get-help" title="The recipe version and revision"></i> + Target version + </th> + <th class="span4">Description</th> + <th class="span2">Build target</th> + </tr> + </thead> + <tbody> + {% for target in targets %} + <tr> + <td> + {{target.name}} + {% if target.up_id %} + <a href="{{target.get_layersource_view_url}}" class="icon-share get-info" target="_blank"></a> + {% endif %} + </td> + <td>{{target.version}}</td> + <td>{{target.summary}}</td> + <td><button class="btn btn-block build-target-btn" data-target-name="{{target.name}}" {% if layer_in_project == 0 %}disabled="disabled"{% endif %} >Build target</button></td> + </tr> + {% endfor %} + </tbody> + </table> + + {% if total_targets > 10 %} + <!-- Show pagination controls --> + <div class="pagination"> + <ul> + {%if targets.has_previous %} + <li><a href="?tpage={{targets.previous_page_number}}{{request.GET.limit}}#targets">«</a></li> + {%else%} + <li class="disabled"><a href="#">«</a></li> + {%endif%} + {% for i in targets.paginator.page_range %} + <li {%if i == targets.number %} class="active" {%endif%}><a href="?tpage={{i}}#targets">{{i}}</a></li> + {% endfor %} + {%if targets.has_next%} + <li><a href="?tpage={{targets.next_page_number}}#targets">»</a></li> + {%else%} + <li class="disabled"><a href="#">»</a></li> + {%endif%} + </ul> + <div class="pull-right"> + <span class="help-inline" style="padding-bottom:10px;">Show rows:</span> + <select class="pagesize"> + {% with "10 25 50 100 150" as list%} + {% for i in list.split %} + {% if request.session.limit == i %} + <option value="{{i}}" selected>{{i}}</option> + {% else %} + <option value="{{i}}">{{i}}</option> + {% endif %} + {% endfor %} + {% endwith %} + </select> + </div> + </div> + {% endif %} + {% endif %} + {% endif %} + </div> + + + <div name="machines" id="machines" class="tab-pane"> + {% if total_machines == 0 %} + <div class="alert alert-info"> + There is no machine information for the <strong>{{layerversion.layer.name}}</strong> layer. + </div> + {% else %} + + <div class="row-fluid"> + + {% if machines.paginator.count == 0 %} + <div class="alert"> + <h3>No machines found</h3> + {% endif %} + + {# only show the search form if we have more than 10 results #} + {% if machines.paginator.count > 10 or request.GET.machines_search %} + {% if machines.paginator.count == 0 %} + <form class="input-append"> + {% else %} + <form class="navbar-search input-append pull-left"> + {% endif %} + + <input type="text" id="machine-search" name="machines_search" placeholder="Search machines" class="input-xlarge" value="{{request.GET.machines_search}}"> + {% if request.GET.machines_search %} + <a class="add-on btn machine-search-clear"> + <i class="icon-remove"></i> + </a> + {% endif %} + <button type="submit" class="btn">Search</button> + {% if machines.paginator.count == 0 %} + <button type="submit" class="btn btn-link machine-search-clear">Show all machines</a> + {% endif %} + </form> + {% endif %} + + {% if machines.paginator.count == 0 %} + <!-- end alert --> + </div> + <!-- end row-fluid --> + </div> + + {% else %} + + {% if total_machines > 10 %} + <div class="pull-right"> + <span class="help-inline" style="padding-top:5px;">Show rows:</span> + <select style="margin-top:5px;margin-bottom:0px;" class="pagesize"> + {% with "10 25 50 100 150" as list%} + {% for i in list.split %} + {% if request.session.limit == i %} + <option value="{{i}}" selected>{{i}}</option> + {% else %} + <option value="{{i}}">{{i}}</option> + {% endif %} + {% endfor %} + {% endwith %} + </select> + </div> + {% endif %} + + </div> + + <table class="table table-bordered table-hover"> + <thead> + <tr> + <th> + <i class="icon-question-sign get-help" title="The machine is the hardware for which you are building"></i> + Machine + {% if request.GET.machines_search %} + <span class="badge badge-info">{{machines.paginator.count}}</span> + {% endif %} + </th> + <th>Description</th> + <th class="span2">Select machine</th> + </tr> + </thead> + <tbody> + {% for machine in machines %} + <tr> + <td>{{machine.name}}</td> + <td>{{machine.description}}</td> + <td><button class="btn btn-block select-machine-btn" data-machine-name="{{machine.name}}" {% if layer_in_project == 0 %}disabled="disabled"{% endif %}}>Select machine</button></td> + </tr> + {% endfor %} + </tbody> + </table> + + {% if total_machines > 10 %} + <!-- Show pagination controls --> + <div class="pagination"> + <ul> + {%if machines.has_previous %} + <li><a href="?mpage={{machines.previous_page_number}}{{request.GET.limit}}#machines">«</a></li> + {%else%} + <li class="disabled"><a href="#">«</a></li> + {%endif%} + {% for i in machines.paginator.page_range %} + <li {%if i == machines.number %} class="active" {%endif%}><a href="?mpage={{i}}#machines">{{i}}</a></li> + {% endfor %} + {%if machines.has_next%} + <li><a href="?mpage={{machines.next_page_number}}#machines">»</a></li> + {%else%} + <li class="disabled"><a href="#">»</a></li> + {%endif%} + </ul> + <div class="pull-right"> + <span class="help-inline" style="padding-bottom:10px;">Show rows:</span> + <select class="pagesize"> + {% with "10 25 50 100 150" as list%} + {% for i in list.split %} + {% if request.session.limit == i %} + <option value="{{i}}" selected>{{i}}</option> + {% else %} + <option value="{{i}}">{{i}}</option> + {% endif %} + {% endfor %} + {% endwith %} + </select> + </div> + </div> + {% endif %} + {% endif %} + {% endif %} + </div> + </div> + </div> + <div class="row-fluid span4 well"> + <h2>About {{layerversion.layer.name}}</h2> + <dl class="item-info"> + + <dt> + Summary + <i class="icon-question-sign get-help" title="One-line description of the layer"></i> + </dt> + <dd> + <span class="muted" style="display:none">Not set</span> + <span class="current-value">{{layerversion.layer.summary}}</span> + <form style="display:none; margin-bottom:20px"> + <textarea class="span12" rows="2">{% if layerversion.layer.summary %}{{layerversion.layer.summary}}{% endif %}</textarea> + <button class="btn change-btn" data-layer-prop="summary" type="button">Save</button> + <a href="#" class="btn btn-link cancel">Cancel</a> + </form> + <i class="icon-pencil"></i> + <span class="icon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span> + </dd> + <dt> + Description + </dt> + <dd> + <span class="muted" style="display:none">Not set</span> + <span class="current-value">{{layerversion.layer.description}}</span> + <form style="display:none; margin-bottom:20px"> + <textarea class="span12" rows="6">{% if layerversion.layer.description %}{{layerversion.layer.description}}{% endif %}</textarea> + <button class="btn change-btn" data-layer-prop="description" type="button" >Save</button> + <a href="#" class="btn btn-link cancel">Cancel</a> + </form> + <i class="icon-pencil"></i> + <span class="icon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span> + </dd> + </dd> + {% if layerversion.layer.up_id %} + <dt>Layer index</dt> + <dd> + <a href="http://layers.openembedded.org/layerindex/branch/{{layerversion.up_branch.name}}/layer/{{layerversion.layer.name}}"/>layer index link</a> + + </dd> + {% endif %} + </dl> + </div> {% endblock %} |