app/views/roles.scala.html (115 lines of code) (raw):

@import data.Roles @import data.Recipes @(roles: Iterable[RoleSummary], recipes: Iterable[Recipe], baseImages: Seq[BaseImage]) @layout("AMIgo"){ <h1>Roles</h1> <div class="row"> <div class="col-md-3"> <div class="list-group"> @for(role <- roles) { <a href="#@role.roleId" data-role-id="@role.roleId" class="list-group-item role-id"> @role.roleId </a> } </div> </div> <div class="col-md-9"> <div> <div id="explanation"> Choose a role from the list to see more details. </div> @for(role <- roles) { <div id="detail-@role.roleId" class="hidden"> <ul class="nav nav-tabs" role="tablist"> @for(readme <- role.readme) { <li role="presentation" class="tab-label active"> <a aria-controls="readme" role="tab" data-toggle="tab" data-target="#readme-@role.roleId">README</a> </li> } <li role="presentation" class="tab-label @if(role.readme.isEmpty){active}"> <a aria-controls="tasks" role="tab" data-toggle="tab" data-target="#tasks-@role.roleId">Tasks</a> </li> <li role="presentation" class="tab-label"> <a aria-controls="dependencies" role="tab" data-toggle="tab" data-target="#dependencies-@role.roleId">Dependencies</a> </li> <li role="presentation" class="tab-label"> <a aria-controls="usedby" role="tab" data-toggle="tab" data-target="#usedby-@role.roleId">Used by</a> </li> </ul> <div class="tab-content"> @for(readme <- role.readme) { <div role="tabpanel" class="tab-pane markdown active" id="readme-@role.roleId"> <pre>@readme.content</pre> </div> } <div role="tabpanel" class="tab-pane @if(role.readme.isEmpty){active}" id="tasks-@role.roleId"> <h2>Tasks</h2> <pre><code>@role.tasksMain.content</code></pre> </div> <div role="tabpanel" class="tab-pane" id="dependencies-@role.roleId"> <h2>Dependencies</h2> <p>@if(role.dependsOn.isEmpty) { This role does not depend on any other roles. } else { This role depends on (including transitive dependencies): @views.html.fragments.dependencyList(Roles.transitiveDependencies(roles.toSeq, role.roleId).dependencies) }</p> </div> <div role="tabpanel" class="tab-pane" id="usedby-@role.roleId"> <h2>Used by</h2> <div class="role-usage"> <h4>Roles</h4> @defining(Roles.usedBy(roles.toSeq, role)) { usedBy => @if(usedBy.isEmpty) { This role is not used by any other role } else { This role is used by the following roles: <ul> @usedBy.map { role => <li><a href="#@role">@role</a></li> } </ul> } } </div> <div class="role-usage"> <h4>Recipes</h4> @defining(Roles.usedByRecipes(recipes.toSeq, role)) { usedBy => @if(usedBy.isEmpty) { This role is not used by any recipe } else { This role is used by the following recipes: <ul> @usedBy.map { recipe => <li><a href="../recipes/@recipe">@recipe</a></li> } </ul> } } </div> <div class="role-usage"> <h4>Base images</h4> @defining(Roles.usedByBaseImages(baseImages, role)) { usedBy => @if(usedBy.isEmpty) { This role is not used by any base images } else { This role is used by the following base images: <ul> @usedBy.map { baseImage => <li><a href="@routes.BaseImageController.showBaseImage(baseImage.id)">@baseImage.id</a></li> } </ul> } } </div> </div> </div> </div> } </div> </div> </div> } { <script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.4.3/showdown.min.js" type="text/javascript"></script> <script src="@routes.Assets.versioned("javascripts/roles.js")" type="text/javascript"></script> }