1*4882a593Smuzhiyun{% extends "base.html" %} 2*4882a593Smuzhiyun{% load projecttags %} 3*4882a593Smuzhiyun{% load humanize %} 4*4882a593Smuzhiyun{% load static %} 5*4882a593Smuzhiyun{% block pagecontent %} 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun<ul class="breadcrumb"> 8*4882a593Smuzhiyun <li> 9*4882a593Smuzhiyun <a href="{% url 'project' project.id %}">{{project.name}}</a> 10*4882a593Smuzhiyun <span class="divider">→</span> 11*4882a593Smuzhiyun </li> 12*4882a593Smuzhiyun <li> 13*4882a593Smuzhiyun {% if recipe.is_image %} 14*4882a593Smuzhiyun <a href="{% url 'projectimagerecipes' project.id %}">Image recipes</a> 15*4882a593Smuzhiyun {% else %} 16*4882a593Smuzhiyun <a href="{% url 'projectsoftwarerecipes' project.id %}">Software recipes</a> 17*4882a593Smuzhiyun {% endif %} 18*4882a593Smuzhiyun <span class="divider">→</span> 19*4882a593Smuzhiyun </li> 20*4882a593Smuzhiyun <li class="active"> 21*4882a593Smuzhiyun {{recipe.name}} ({{recipe.layer_version.layer.name}}) 22*4882a593Smuzhiyun </li> 23*4882a593Smuzhiyun</ul> 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun<script src="{% static 'js/recipedetails.js' %}"></script> 26*4882a593Smuzhiyun<script> 27*4882a593Smuzhiyun $(document).ready(function (){ 28*4882a593Smuzhiyun var ctx = { 29*4882a593Smuzhiyun recipe : { 30*4882a593Smuzhiyun id: {{recipe.pk}}, 31*4882a593Smuzhiyun name: "{{recipe.name}}", 32*4882a593Smuzhiyun totalPackages: {{packages.count}}, 33*4882a593Smuzhiyun layer_version : { 34*4882a593Smuzhiyun id: {{recipe.layer_version.pk}}, 35*4882a593Smuzhiyun name: "{{recipe.layer_version.layer.name}}", 36*4882a593Smuzhiyun layerdetailurl: "{% url 'layerdetails' project.pk recipe.layer_version.pk %}" 37*4882a593Smuzhiyun } 38*4882a593Smuzhiyun } 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun try { 42*4882a593Smuzhiyun recipeDetailsPageInit(ctx); 43*4882a593Smuzhiyun } catch (e) { 44*4882a593Smuzhiyun document.write("Sorry, An error has occurred loading this page"); 45*4882a593Smuzhiyun console.warn(e); 46*4882a593Smuzhiyun } 47*4882a593Smuzhiyun }); 48*4882a593Smuzhiyun</script> 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun{% include 'newcustomimage_modal.html' %} 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun<div class="alert alert-success lead" id="image-created-notification" style="margin-top: 15px; display: none"> 53*4882a593Smuzhiyun <button type="button" data-dismiss="alert" class="close">x</button> 54*4882a593Smuzhiyun Your custom image <strong>{{recipe.name}}</strong> has been created. You can now add or remove packages as needed. 55*4882a593Smuzhiyun</div> 56*4882a593Smuzhiyun<div class="page-header"> 57*4882a593Smuzhiyun <h1> 58*4882a593Smuzhiyun {{recipe.name}} 59*4882a593Smuzhiyun <small>({{recipe.layer_version.layer.name}})</small> 60*4882a593Smuzhiyun </h1> 61*4882a593Smuzhiyun</div> 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun<div class="row"> 64*4882a593Smuzhiyun <div class="col-md-8"> 65*4882a593Smuzhiyun <div class="button-place btn-group" id="customise-build-btns" 66*4882a593Smuzhiyun style="width: 100%; 67*4882a593Smuzhiyun {% if not in_project %} 68*4882a593Smuzhiyun display:none; 69*4882a593Smuzhiyun {% endif %}"> 70*4882a593Smuzhiyun <button class="btn btn-default btn-lg build-recipe-btn" style="width: 50%"> 71*4882a593Smuzhiyun Build {{recipe.name}} 72*4882a593Smuzhiyun </button> 73*4882a593Smuzhiyun {% if recipe.is_image %} 74*4882a593Smuzhiyun <button class="btn btn-default btn-lg customise-btn" data-recipe="{{recipe.pk}}" style="width: 50%"> 75*4882a593Smuzhiyun Customise {{recipe.name}} 76*4882a593Smuzhiyun </button> 77*4882a593Smuzhiyun {% endif %} 78*4882a593Smuzhiyun </div> 79*4882a593Smuzhiyun <div class="button-place"> 80*4882a593Smuzhiyun <button class="btn btn-default btn-block btn-lg" id="add-layer-btn" 81*4882a593Smuzhiyun style="width:100%; 82*4882a593Smuzhiyun {% if in_project %} 83*4882a593Smuzhiyun display:none; 84*4882a593Smuzhiyun {% endif %}"> 85*4882a593Smuzhiyun <i class="glyphicon glyphicon-plus"></i> 86*4882a593Smuzhiyun Add the {{recipe.layer_version.layer.name}} layer to your project to build or customise this image recipe 87*4882a593Smuzhiyun </button> 88*4882a593Smuzhiyun </div> 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun <div id="packages-table"> 91*4882a593Smuzhiyun {% if packages.count %} 92*4882a593Smuzhiyun {% url 'recipepackages' project.id recipe.id as xhr_table_url %} 93*4882a593Smuzhiyun <h2>{{title}} (<span class="table-count-{{table_name}}">0</span>) </h2> 94*4882a593Smuzhiyun {% include "toastertable.html" %} 95*4882a593Smuzhiyun {% else %} 96*4882a593Smuzhiyun <h2>{{title}}</h2> 97*4882a593Smuzhiyun {% endif %} 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun <div class="alert alert-info air" id="build-to-get-packages-msg" 100*4882a593Smuzhiyun {# if there are packages and it's in the project don't show this msg #} 101*4882a593Smuzhiyun {% if packages.count or not packages.count and not in_project %} 102*4882a593Smuzhiyun style="display:none" 103*4882a593Smuzhiyun {% endif %} > 104*4882a593Smuzhiyun <p class="lead">Toaster has no package information for {{recipe.name}}. To generate package information, build {{recipe.name}}</p> 105*4882a593Smuzhiyun <button class="btn btn-info btn-lg build-recipe-btn" style="margin:20px 0 10px 0;">Build {{recipe.name}}</button> 106*4882a593Smuzhiyun </div> 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun <div class="alert alert-info air" id="packages-alert" 109*4882a593Smuzhiyun {% if packages.count or in_project %} 110*4882a593Smuzhiyun style="display:none" 111*4882a593Smuzhiyun {% endif %} 112*4882a593Smuzhiyun > 113*4882a593Smuzhiyun <p class="lead">Toaster has no package information for {{recipe.name}} 114*4882a593Smuzhiyun </p> 115*4882a593Smuzhiyun </div> 116*4882a593Smuzhiyun </div> 117*4882a593Smuzhiyun </div> 118*4882a593Smuzhiyun <div class="col-md-4"> 119*4882a593Smuzhiyun <div class="well"> 120*4882a593Smuzhiyun <h2>About {{recipe.name}}</h2> 121*4882a593Smuzhiyun <dl class="item-info"> 122*4882a593Smuzhiyun <dt> 123*4882a593Smuzhiyun Approx. packages included 124*4882a593Smuzhiyun <span class="glyphicon glyphicon-question-sign get-help" title="The number of packages included is based on information from previous builds and from parsing layers, so we can never be sure it is 100% accurate"></span> 125*4882a593Smuzhiyun </dt> 126*4882a593Smuzhiyun <dd class="no-packages">{{packages.count}}</dd> 127*4882a593Smuzhiyun <dt> 128*4882a593Smuzhiyun Approx. package size 129*4882a593Smuzhiyun <span class="glyphicon glyphicon-question-sign get-help" title="Package size is based on information from previous builds, so we can never be sure it is 100% accurate"></span> 130*4882a593Smuzhiyun </dt> 131*4882a593Smuzhiyun <dd>{{approx_pkg_size.size__sum|filtered_filesizeformat}}</dd> 132*4882a593Smuzhiyun {% if last_build %} 133*4882a593Smuzhiyun <dt>Last build</dt> 134*4882a593Smuzhiyun <dd> 135*4882a593Smuzhiyun <span class="glyphicon glyphicon-ok-circle"></span> 136*4882a593Smuzhiyun <a href="{% url 'projectbuilds' project.id%}">{{last_build.completed_on|date:"d/m/y H:i"}}</a> 137*4882a593Smuzhiyun </dd> 138*4882a593Smuzhiyun {% endif %} 139*4882a593Smuzhiyun <dt>Recipe file</dt> 140*4882a593Smuzhiyun <dd> 141*4882a593Smuzhiyun <code>{{recipe.file_path|cut_path_prefix:recipe.layer_version.local_path}}</code> 142*4882a593Smuzhiyun <a href="{{recipe.get_vcs_recipe_file_link_url}}"><span class="glyphicon glyphicon-new-window" title="View recipe file" data-toggle="tooltip"></span></a> 143*4882a593Smuzhiyun </dd> 144*4882a593Smuzhiyun <dt>Layer</dt> 145*4882a593Smuzhiyun <dd><a href="{% url 'layerdetails' project.id recipe.layer_version.pk %}">{{recipe.layer_version.layer.name}}</a></dd> 146*4882a593Smuzhiyun <dt> 147*4882a593Smuzhiyun Summary 148*4882a593Smuzhiyun </dt> 149*4882a593Smuzhiyun <dd> 150*4882a593Smuzhiyun {{recipe.summary}} 151*4882a593Smuzhiyun </dd> 152*4882a593Smuzhiyun <dt> 153*4882a593Smuzhiyun Description 154*4882a593Smuzhiyun </dt> 155*4882a593Smuzhiyun <dd> 156*4882a593Smuzhiyun {{recipe.description}} 157*4882a593Smuzhiyun </dd> 158*4882a593Smuzhiyun <dt>Version</dt> 159*4882a593Smuzhiyun <dd> 160*4882a593Smuzhiyun {{recipe.version}} 161*4882a593Smuzhiyun </dd> 162*4882a593Smuzhiyun <dt>Section</dt> 163*4882a593Smuzhiyun <dd> 164*4882a593Smuzhiyun {{recipe.section}} 165*4882a593Smuzhiyun </dd> 166*4882a593Smuzhiyun <dt>License</dt> 167*4882a593Smuzhiyun <dd> 168*4882a593Smuzhiyun {{recipe.license}} 169*4882a593Smuzhiyun </dd> 170*4882a593Smuzhiyun </dl> 171*4882a593Smuzhiyun </div> 172*4882a593Smuzhiyun </div> 173*4882a593Smuzhiyun</div> 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun{% endblock %} 176