1*4882a593Smuzhiyun{% extends project_specific|yesno:"baseprojectspecificpage.html,base.html" %} 2*4882a593Smuzhiyun{% load projecttags %} 3*4882a593Smuzhiyun{% load humanize %} 4*4882a593Smuzhiyun{% load static %} 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun{% block title %} {{layerversion.layer.name}} - {{project.name}} - Toaster {% endblock %} 7*4882a593Smuzhiyun{% block pagecontent %} 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun<div id="delete-layer-modal" class="modal fade" tabindex="-1" role="dialog" 10*4882a593Smuzhiyun data-keyboard="false" data-backdrop="static"> 11*4882a593Smuzhiyun <div class="modal-dialog" role="document"> 12*4882a593Smuzhiyun <div class="modal-content"> 13*4882a593Smuzhiyun <div class="modal-body"> 14*4882a593Smuzhiyun Are you sure you want to delete the <strong>{{layerversion.layer.name}}</strong> layer? 15*4882a593Smuzhiyun </div> 16*4882a593Smuzhiyun <div class="modal-footer"> 17*4882a593Smuzhiyun <button type="button" id="layer-delete-confirmed" class="btn 18*4882a593Smuzhiyun btn-primary">Delete layer</button> 19*4882a593Smuzhiyun <button type="button" class="btn btn-default btn-link" data-dismiss="modal">Cancel</button> 20*4882a593Smuzhiyun </div> 21*4882a593Smuzhiyun </div> 22*4882a593Smuzhiyun </div> 23*4882a593Smuzhiyun</div> 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun<div class="row"> 26*4882a593Smuzhiyun <div class="col-md-12"> 27*4882a593Smuzhiyun <ul class="breadcrumb"> 28*4882a593Smuzhiyun <li> 29*4882a593Smuzhiyun <a href="{% url 'project' project.id %}">{{project.name}}</a> 30*4882a593Smuzhiyun <span class="divider">→</span> 31*4882a593Smuzhiyun </li> 32*4882a593Smuzhiyun <li><a href="{% url 'projectlayers' project.id %}">Compatible layers</a> 33*4882a593Smuzhiyun <span class="divider">→</span> 34*4882a593Smuzhiyun </li> 35*4882a593Smuzhiyun <li class="active"> 36*4882a593Smuzhiyun {{layerversion.layer.name}} ({{layerversion.get_vcs_reference|truncatechars:13}}) 37*4882a593Smuzhiyun </li> 38*4882a593Smuzhiyun </ul> 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun {# If this is not an imported layer then hide the edit ui #} 41*4882a593Smuzhiyun {% if layerversion.layer_source != layer_source.TYPE_IMPORTED %} 42*4882a593Smuzhiyun <style scoped> 43*4882a593Smuzhiyun .glyphicon-edit { 44*4882a593Smuzhiyun display:none; 45*4882a593Smuzhiyun } 46*4882a593Smuzhiyun .delete-current-value{ 47*4882a593Smuzhiyun display: none; 48*4882a593Smuzhiyun } 49*4882a593Smuzhiyun li .glyphicon-trash { 50*4882a593Smuzhiyun display:none; 51*4882a593Smuzhiyun } 52*4882a593Smuzhiyun .add-deps { 53*4882a593Smuzhiyun display:none; 54*4882a593Smuzhiyun } 55*4882a593Smuzhiyun </style> 56*4882a593Smuzhiyun {% endif %} 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun <script src="{% static 'js/layerdetails.js' %}"></script> 59*4882a593Smuzhiyun <script> 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun $(document).ready(function(){ 62*4882a593Smuzhiyun var ctx = { 63*4882a593Smuzhiyun xhrUpdateLayerUrl : "{% url 'xhr_layer' project.id layerversion.pk %}", 64*4882a593Smuzhiyun layerVersion : { 65*4882a593Smuzhiyun name : "{{layerversion.layer.name}}", 66*4882a593Smuzhiyun id : {{layerversion.id}}, 67*4882a593Smuzhiyun commit: "{{layerversion.get_vcs_reference}}", 68*4882a593Smuzhiyun {%if layerversion.id in projectlayers %} 69*4882a593Smuzhiyun inCurrentPrj : true, 70*4882a593Smuzhiyun {% else %} 71*4882a593Smuzhiyun inCurrentPrj : false, 72*4882a593Smuzhiyun {% endif %} 73*4882a593Smuzhiyun layerdetailurl : "{% url 'layerdetails' project.id layerversion.id %}", 74*4882a593Smuzhiyun xhrLayerUrl: "{% url 'xhr_layer' project.id layerversion.id %}", 75*4882a593Smuzhiyun layer_source: {{layerversion.layer_source|json}}, 76*4882a593Smuzhiyun }, 77*4882a593Smuzhiyun layerSourceTypes: {{layer_source|json}}, 78*4882a593Smuzhiyun }; 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun try { 81*4882a593Smuzhiyun layerDetailsPageInit(ctx); 82*4882a593Smuzhiyun } catch (e) { 83*4882a593Smuzhiyun document.write("Sorry, An error has occurred loading this page"); 84*4882a593Smuzhiyun console.warn(e); 85*4882a593Smuzhiyun } 86*4882a593Smuzhiyun }); 87*4882a593Smuzhiyun </script> 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun <div class="page-header"> 90*4882a593Smuzhiyun {% if layerversion.layer.local_source_dir %} 91*4882a593Smuzhiyun <h1>{{layerversion.layer.name}} <small class="commit" style="display:none;"></small> 92*4882a593Smuzhiyun </h1> 93*4882a593Smuzhiyun {% else %} 94*4882a593Smuzhiyun <h1>{{layerversion.layer.name}} <small class="commit" 95*4882a593Smuzhiyun {% if layerversion.get_vcs_reference|length > 13 %} 96*4882a593Smuzhiyun data-toggle="tooltip" title="{{layerversion.get_vcs_reference}}" 97*4882a593Smuzhiyun {% endif %}>({{layerversion.get_vcs_reference|truncatechars:13}})</small> 98*4882a593Smuzhiyun </h1> 99*4882a593Smuzhiyun {% endif %} 100*4882a593Smuzhiyun </div> 101*4882a593Smuzhiyun <div class="row"> 102*4882a593Smuzhiyun <!-- container for tabs --> 103*4882a593Smuzhiyun <div class="col-md-8 tabbable"> 104*4882a593Smuzhiyun <div class="alert alert-info lead" id="alert-area" style="display:none"> 105*4882a593Smuzhiyun <button type="button" class="close" id="dismiss-alert">×</button> 106*4882a593Smuzhiyun <span id="alert-msg"></span> 107*4882a593Smuzhiyun </div> 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun {% if layerversion.id not in projectlayers %} 110*4882a593Smuzhiyun <button id="add-remove-layer-btn" data-directive="add" class="btn btn-default btn-lg btn-block"> 111*4882a593Smuzhiyun <span class="glyphicon glyphicon-plus"></span> 112*4882a593Smuzhiyun Add the {{layerversion.layer.name}} layer to your project 113*4882a593Smuzhiyun </button> 114*4882a593Smuzhiyun {% else %} 115*4882a593Smuzhiyun <button id="add-remove-layer-btn" data-directive="remove" class="btn btn-default btn-block btn-lg btn-danger"> 116*4882a593Smuzhiyun <span class="glyphicon glyphicon-trash"></span> 117*4882a593Smuzhiyun Remove the {{layerversion.layer.name}} layer from your project 118*4882a593Smuzhiyun </button> 119*4882a593Smuzhiyun {% endif %} 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun <ul class="nav nav-tabs"> 122*4882a593Smuzhiyun <li class="active"> 123*4882a593Smuzhiyun <a data-toggle="tab" href="#information" id="details-tab">Layer details</a> 124*4882a593Smuzhiyun </li> 125*4882a593Smuzhiyun <li> 126*4882a593Smuzhiyun <a data-toggle="tab" href="#recipes" class="text-muted" id="targets-tab">Recipes (<span class="table-count-recipestable"></span>)</a> 127*4882a593Smuzhiyun </li> 128*4882a593Smuzhiyun <li> 129*4882a593Smuzhiyun <a data-toggle="tab" href="#machines" class="text-muted" id="machines-tab">Machines (<span class="table-count-machinestable"></span>)</a> 130*4882a593Smuzhiyun </li> 131*4882a593Smuzhiyun </ul> 132*4882a593Smuzhiyun <div class="tab-content"> 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun <!-- layer details pane --> 135*4882a593Smuzhiyun <div id="information" class="tab-pane active"> 136*4882a593Smuzhiyun <h3>Layer source code location</h3> 137*4882a593Smuzhiyun {% if layerversion.layer.local_source_dir %} 138*4882a593Smuzhiyun <dl class="dl-horizontal" id="directory-info"> 139*4882a593Smuzhiyun <dt> 140*4882a593Smuzhiyun Path to the layer directory 141*4882a593Smuzhiyun </dt> 142*4882a593Smuzhiyun <dd> 143*4882a593Smuzhiyun <code>{{layerversion.layer.local_source_dir}}</code> 144*4882a593Smuzhiyun </dd> 145*4882a593Smuzhiyun </dl> 146*4882a593Smuzhiyun {% else %} 147*4882a593Smuzhiyun <dl class="dl-horizontal" id="git-repo-info"> 148*4882a593Smuzhiyun <dt class=""> 149*4882a593Smuzhiyun <span class="glyphicon glyphicon-question-sign get-help" title="Fetch/clone URL of the repository"></span> 150*4882a593Smuzhiyun Repository URL 151*4882a593Smuzhiyun </dt> 152*4882a593Smuzhiyun <dd> 153*4882a593Smuzhiyun <span class="current-value">{{layerversion.layer.vcs_url}}</span> 154*4882a593Smuzhiyun {% if layerversion.get_vcs_link_url %} 155*4882a593Smuzhiyun <a href="{{layerversion.get_vcs_link_url}}/" class="glyphicon glyphicon-new-window" target="_blank"></a> 156*4882a593Smuzhiyun {% endif %} 157*4882a593Smuzhiyun <form id="change-repo-form" class="form-inline" style="display:none"> 158*4882a593Smuzhiyun <div class="form-group"> 159*4882a593Smuzhiyun <input type="text" class="form-control" value="{{layerversion.layer.vcs_url}}"> 160*4882a593Smuzhiyun </div> 161*4882a593Smuzhiyun </form> 162*4882a593Smuzhiyun </dd> 163*4882a593Smuzhiyun {% if layerversion.dirpath %} 164*4882a593Smuzhiyun <dt> 165*4882a593Smuzhiyun <span class="glyphicon glyphicon-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)"></span> 166*4882a593Smuzhiyun Repository subdirectory 167*4882a593Smuzhiyun </dt> 168*4882a593Smuzhiyun <dd> 169*4882a593Smuzhiyun <span class="text-muted" style="display:none">Not set</span> 170*4882a593Smuzhiyun <span class="current-value">{{layerversion.dirpath}}</span> 171*4882a593Smuzhiyun {% if layerversion.get_vcs_dirpath_link_url %} 172*4882a593Smuzhiyun <a href="{{layerversion.get_vcs_dirpath_link_url}}" class="glyphicon glyphicon-new-window" target="_blank"></a> 173*4882a593Smuzhiyun {% endif %} 174*4882a593Smuzhiyun <form id="change-subdir-form" class="form-inline" style="display:none;"> 175*4882a593Smuzhiyun <div class="form-group"> 176*4882a593Smuzhiyun <input type="text" class="form-control" value="{{layerversion.dirpath}}"> 177*4882a593Smuzhiyun </div> 178*4882a593Smuzhiyun </form> 179*4882a593Smuzhiyun </dd> 180*4882a593Smuzhiyun {% endif %} 181*4882a593Smuzhiyun <dt> 182*4882a593Smuzhiyun <span class="glyphicon glyphicon-question-sign get-help" title="The Git branch, tag or commit"></span> 183*4882a593Smuzhiyun Git revision 184*4882a593Smuzhiyun </dt> 185*4882a593Smuzhiyun <dd> 186*4882a593Smuzhiyun <span class="current-value">{{layerversion.get_vcs_reference}}</span> 187*4882a593Smuzhiyun <form style="display:none;" class="form-inline"> 188*4882a593Smuzhiyun <div class="form-group"> 189*4882a593Smuzhiyun <input type="text" class="form-control" value="{{layerversion.get_vcs_reference}}"> 190*4882a593Smuzhiyun </div> 191*4882a593Smuzhiyun </form> 192*4882a593Smuzhiyun </dd> 193*4882a593Smuzhiyun </dl> 194*4882a593Smuzhiyun {% endif %} 195*4882a593Smuzhiyun {% if layerversion.layer_source == layer_source.TYPE_IMPORTED %} 196*4882a593Smuzhiyun <button class="btn btn-default btn-lg" id="edit-layer-source" style="margin-left:220px;">Edit layer source code location</button> 197*4882a593Smuzhiyun {% endif %} 198*4882a593Smuzhiyun <form id="edit-layer-source-form" style="display:none;"> 199*4882a593Smuzhiyun <fieldset> 200*4882a593Smuzhiyun <legend class="radioLegend">Where is the layer source code?</legend> 201*4882a593Smuzhiyun <div class="radio"> 202*4882a593Smuzhiyun <label> 203*4882a593Smuzhiyun <input type="radio" name="source-location" id="repo" value="repo"> 204*4882a593Smuzhiyun In a <strong>Git repository</strong> 205*4882a593Smuzhiyun </label> 206*4882a593Smuzhiyun <p class="help-block" style="margin-left:20px;width:70%;">To build the layer Toaster must be able to access the Git repository, otherwise builds will fail. Toaster will fetch and checkout your chosen Git revision every time you start a build.</p> 207*4882a593Smuzhiyun </div> 208*4882a593Smuzhiyun <div class="radio" style="margin-top:15px;"> 209*4882a593Smuzhiyun <label> 210*4882a593Smuzhiyun <input type="radio" name="source-location" id="dir" value="dir" checked> 211*4882a593Smuzhiyun In a <strong>directory</strong> 212*4882a593Smuzhiyun </label> 213*4882a593Smuzhiyun <p class="help-block" style="margin-left:20px;width:70%;">Use this option for quick layer development, by simply providing the path to the layer source code.</p> 214*4882a593Smuzhiyun </div> 215*4882a593Smuzhiyun </fieldset> 216*4882a593Smuzhiyun 217*4882a593Smuzhiyun <fieldset id="layer-git"> 218*4882a593Smuzhiyun <legend>Git repository information</legend> 219*4882a593Smuzhiyun <div class="form-group"> 220*4882a593Smuzhiyun <label for="layer-git-repo-url"> 221*4882a593Smuzhiyun Git repository URL 222*4882a593Smuzhiyun <span class="glyphicon glyphicon-question-sign get-help" title="Fetch/clone URL of the repository. Currently, Toaster only supports Git repositories." ></span> 223*4882a593Smuzhiyun </label> 224*4882a593Smuzhiyun <input type="text" id="layer-git-repo-url" class="form-control" value="{{layerversion.layer.vcs_url|default_if_none:''}}"> 225*4882a593Smuzhiyun </div> 226*4882a593Smuzhiyun <div class="form-group"> 227*4882a593Smuzhiyun <label for="layer-subdir"> 228*4882a593Smuzhiyun Repository subdirectory 229*4882a593Smuzhiyun <span class="text-muted">(optional)</span> 230*4882a593Smuzhiyun <span class="glyphicon glyphicon-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)"></span> 231*4882a593Smuzhiyun </label> 232*4882a593Smuzhiyun <input type="text" class="form-control" id="layer-subdir" value="{{layerversion.dirpath|default_if_none:''}}"> 233*4882a593Smuzhiyun </div> 234*4882a593Smuzhiyun <div class="form-group" id="layer-revision-ctrl"> 235*4882a593Smuzhiyun <label for="layer-git-ref">Git revision 236*4882a593Smuzhiyun <span class="glyphicon glyphicon-question-sign get-help" title="You can provide a Git branch, a tag or a commit SHA as the revision"></span> 237*4882a593Smuzhiyun </label> 238*4882a593Smuzhiyun <input type="text" class="form-control" id="layer-git-ref" value="{{layerversion.get_vcs_reference|default_if_none:''}}"> 239*4882a593Smuzhiyun <span class="help-inline" style="display:none;" id="invalid-layer-revision-hint"></span> 240*4882a593Smuzhiyun </div> 241*4882a593Smuzhiyun </fieldset> 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun <fieldset id="layer-dir"> 244*4882a593Smuzhiyun <legend>Layer directory information</legend> 245*4882a593Smuzhiyun <div class="form-group"> 246*4882a593Smuzhiyun <label for="layer-dir-path"> 247*4882a593Smuzhiyun Enter the absolute path to the layer directory 248*4882a593Smuzhiyun </label> 249*4882a593Smuzhiyun <input type="text" id="layer-dir-path-in-details" class="form-control" value="{{layerversion.layer.local_source_dir}}" required> 250*4882a593Smuzhiyun </div> 251*4882a593Smuzhiyun </fieldset> 252*4882a593Smuzhiyun 253*4882a593Smuzhiyun <div style="margin-top:25px;"> 254*4882a593Smuzhiyun <a href="#" class="btn btn-primary btn-lg" id="save-changes-for-switch">Save changes</a> 255*4882a593Smuzhiyun <a href="#" class="btn btn-link btn-lg" id="cancel-changes-for-switch">Cancel</a> 256*4882a593Smuzhiyun </div> 257*4882a593Smuzhiyun </form> 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun <h3 class="top-air">Layer dependencies 260*4882a593Smuzhiyun <span class="glyphicon glyphicon-question-sign get-help" title="Other layers this layer depends upon"></span> 261*4882a593Smuzhiyun </h3> 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun <ul class="list-unstyled current-value lead" id="layer-deps-list"> 264*4882a593Smuzhiyun {% for ld in layerversion.dependencies.all %} 265*4882a593Smuzhiyun <li data-layer-id="{{ld.depends_on.id}}"> 266*4882a593Smuzhiyun <a data-toggle="tooltip" title="{{ld.depends_on.layer.vcs_url}} | {{ld.depends_on.get_vcs_reference}}" href="{% url 'layerdetails' project.id ld.depends_on.id %}">{{ld.depends_on.layer.name}}</a> 267*4882a593Smuzhiyun <span class="glyphicon glyphicon-trash " data-toggle="tooltip" title="Delete"></span> 268*4882a593Smuzhiyun </li> 269*4882a593Smuzhiyun {% endfor %} 270*4882a593Smuzhiyun </ul> 271*4882a593Smuzhiyun <form class="form-inline add-deps"> 272*4882a593Smuzhiyun <div class="form-group"> 273*4882a593Smuzhiyun <input class="form-control" type="text" autocomplete="off" data-minLength="1" data-autocomplete="off" placeholder="Type a layer name" id="layer-dep-input"> 274*4882a593Smuzhiyun </div> 275*4882a593Smuzhiyun <a class="btn btn-default" id="add-layer-dependency-btn" disabled="disabled"> 276*4882a593Smuzhiyun Add layer 277*4882a593Smuzhiyun </a> 278*4882a593Smuzhiyun <span class="help-block add-deps">You can only add layers Toaster knows about</span> 279*4882a593Smuzhiyun </form> 280*4882a593Smuzhiyun </div> 281*4882a593Smuzhiyun <!-- end layerdetails tab --> 282*4882a593Smuzhiyun <!-- targets tab --> 283*4882a593Smuzhiyun <div id="recipes" class="tab-pane"> 284*4882a593Smuzhiyun <!-- Recipe table --> 285*4882a593Smuzhiyun <div id="no-recipes-yet" class="alert alert-info" style="display:none"> 286*4882a593Smuzhiyun <p>Toaster does not have recipe information for the <strong> {{layerversion.layer.name}} </strong> layer.</p> 287*4882a593Smuzhiyun <p>Toaster learns about layers when you build them. If this layer provides any recipes, they will be listed here after you build the <strong> {{layerversion.layer.name}} </strong> layer.</p> 288*4882a593Smuzhiyun </div> 289*4882a593Smuzhiyun {% url 'layerrecipestable' project.id layerversion.id as xhr_table_url %} 290*4882a593Smuzhiyun {% with "recipestable" as table_name %} 291*4882a593Smuzhiyun {% with "Recipes" as title %} 292*4882a593Smuzhiyun {% include 'toastertable-simple.html' %} 293*4882a593Smuzhiyun {% endwith %} 294*4882a593Smuzhiyun {% endwith %} 295*4882a593Smuzhiyun </div> 296*4882a593Smuzhiyun 297*4882a593Smuzhiyun <div id="machines" class="tab-pane"> 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun <div id="no-machines-yet" class="alert alert-info" style="display:none"> 300*4882a593Smuzhiyun <p>Toaster does not have machine information for the <strong> {{layerversion.layer.name}} </strong> layer.</p> 301*4882a593Smuzhiyun <p>Sadly, machine information cannot be obtained from builds, so this page will remain empty.</p> 302*4882a593Smuzhiyun </div> 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun <!-- Machines table --> 306*4882a593Smuzhiyun {% url 'layermachinestable' project.id layerversion.id as xhr_table_url %} 307*4882a593Smuzhiyun {% with "machinestable" as table_name %} 308*4882a593Smuzhiyun {% with "Machines" as title %} 309*4882a593Smuzhiyun {% include 'toastertable-simple.html' %} 310*4882a593Smuzhiyun {% endwith %} 311*4882a593Smuzhiyun {% endwith %} 312*4882a593Smuzhiyun </div> 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun </div> <!-- end tab content --> 315*4882a593Smuzhiyun </div> <!-- end tabable --> 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun <div class="col-md-4"> <!-- info side panel --> 318*4882a593Smuzhiyun <div class="well"> 319*4882a593Smuzhiyun <h2>About {{layerversion.layer.name}}</h2> 320*4882a593Smuzhiyun <dl class="item-info"> 321*4882a593Smuzhiyun 322*4882a593Smuzhiyun <dt> 323*4882a593Smuzhiyun Summary 324*4882a593Smuzhiyun <span class="glyphicon glyphicon-question-sign get-help" title="One-line description of the layer"></span> 325*4882a593Smuzhiyun </dt> 326*4882a593Smuzhiyun <dd> 327*4882a593Smuzhiyun <span class="text-muted" style="display:none">Not set</span> 328*4882a593Smuzhiyun <span class="current-value">{{layerversion.layer.summary|default_if_none:''}}</span> 329*4882a593Smuzhiyun <form style="display:none; margin-bottom:20px; margin-top:5px;"> 330*4882a593Smuzhiyun <div class="form-group"> 331*4882a593Smuzhiyun <textarea class="form-control" rows="2">{% if layerversion.layer.summary %}{{layerversion.layer.summary}}{% endif %}</textarea> 332*4882a593Smuzhiyun </div> 333*4882a593Smuzhiyun <button class="btn btn-default change-btn" data-layer-prop="summary" type="button">Save</button> 334*4882a593Smuzhiyun <a href="#" class="btn btn-link cancel">Cancel</a> 335*4882a593Smuzhiyun </form> 336*4882a593Smuzhiyun <span class="glyphicon glyphicon-edit"></span> 337*4882a593Smuzhiyun <span class="glyphicon glyphicon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span> 338*4882a593Smuzhiyun </dd> 339*4882a593Smuzhiyun <dt> 340*4882a593Smuzhiyun Description 341*4882a593Smuzhiyun </dt> 342*4882a593Smuzhiyun <dd> 343*4882a593Smuzhiyun <span class="text-muted" style="display:none">Not set</span> 344*4882a593Smuzhiyun <span class="current-value">{{layerversion.layer.description|default_if_none:''}}</span> 345*4882a593Smuzhiyun <form style="display:none; margin-bottom:20px; margin-top:5px;"> 346*4882a593Smuzhiyun <div class="form-group"> 347*4882a593Smuzhiyun <textarea class="form-control" rows="6">{% if layerversion.layer.description %}{{layerversion.layer.description}}{% endif %}</textarea> 348*4882a593Smuzhiyun </div> 349*4882a593Smuzhiyun <button class="btn btn-default change-btn" data-layer-prop="description" type="button" >Save</button> 350*4882a593Smuzhiyun <a href="#" class="btn btn-link cancel">Cancel</a> 351*4882a593Smuzhiyun </form> 352*4882a593Smuzhiyun <span class="glyphicon glyphicon-edit"></span> 353*4882a593Smuzhiyun <span class="glyphicon glyphicon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span> 354*4882a593Smuzhiyun </dd> 355*4882a593Smuzhiyun {% if layerversion.layer_source == layer_source.TYPE_LAYERINDEX %} 356*4882a593Smuzhiyun <dt>Layer index</dt> 357*4882a593Smuzhiyun <dd> 358*4882a593Smuzhiyun <a href="https://layers.openembedded.org/layerindex/branch/{{layerversion.release.name}}/layer/{{layerversion.layer.name}}">Layer index {{layerversion.layer.name}}</a> 359*4882a593Smuzhiyun </dd> 360*4882a593Smuzhiyun {% endif %} 361*4882a593Smuzhiyun </dl> 362*4882a593Smuzhiyun {# Only show delete link for imported layers #} 363*4882a593Smuzhiyun {% if layerversion.layer_source == layer_source.TYPE_IMPORTED %} 364*4882a593Smuzhiyun <i class="icon-trash text-danger"></i> 365*4882a593Smuzhiyun <a href="#delete-layer-modal" role="button" class="text-danger" 366*4882a593Smuzhiyun data-toggle="modal" data-target="#delete-layer-modal">Delete layer</a> 367*4882a593Smuzhiyun {% endif %} 368*4882a593Smuzhiyun </div> 369*4882a593Smuzhiyun </div> 370*4882a593Smuzhiyun </div> 371*4882a593Smuzhiyun </div> <!-- close column 12 div --> 372*4882a593Smuzhiyun</div> <!-- close top row div --> 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun{% endblock %} 375