app/views/index.scala.html (102 lines of code) (raw):

@( oldStacks: List[String], charts: List[models.Chart], metrics: models.Metrics, accountNames: List[String] ) @import views.html.fragments.ssaAmiForm @import views.html.fragments.metricsHeader @main("Welcome to AMIable") { <div class="hero grey lighten-3"> <div class="container"> <h1 class="hide">AMIable</h1> @metricsHeader(metrics) <div class="row"> <div id="charts-container" class="col l6 m12"> @allCharts(charts) </div> <div class="col l6 m12"> <p class="grey-text darken-1"> Stacks running old AMIs </p> @for(stack <- oldStacks) { <div class="chip"><a href="/instanceAMIs?stack=@stack">@stack</a></div> } </div> </div> </div> </div> <div class="container"> <div class="row"> <div class="col s12"> @ssaAmiForm(SSAA.empty, accountNames) </div> <div class="col m6"> <form action="/ami" method="get" class="row"> <div class="input-field col s12"> <input type="text" name="imageId" id="imageId" placeholder="Image ID" /> <label for="arn">Lookup AMI</label> <button class="btn waves-effect waves-light right" type="submit"> Lookup AMI </button> </div> </form> </div> </div> </div> }{ @if(charts.nonEmpty) { <script src="/assets/javascripts/Chart.Core.min.js"></script> <script src="/assets/javascripts/Chart.Scatter.min.js"></script> <script> @for(chart <- charts) { var tzOffsetSecs = new Date().getTimezoneOffset() * 60, data = [ @for(timeSerie <- chart.data) { @if(timeSerie != chart.data.head) {, } { label: '@timeSerie.label', strokeColor: '@timeSerie.color', data: [ @for(((datetime, value), i) <- timeSerie.data.zipWithIndex) { @if(i != 0) {, } {x: new Date(@datetime.getMillis -tzOffsetSecs), y: @value} } ] } } ], options = { pointDot: false, bezierCurve: false, showTooltips: true, scaleShowHorizontalLines: true, scaleShowLabels: true, scaleTimeFormat: "H:MM", scaleDateTimeFormat: "mmm d, yyyy, HH:MM", responsive: true, scaleType: "date", useUtc: false // display in local time }, ctx = document.getElementById("@chart.id-chart").getContext("2d"); new Chart(ctx).Scatter(data, options); } </script> } } @allCharts(charts: List[models.Chart]) = { @if(charts.nonEmpty) { <div> <ul class="charts-nav__tabs tabs"> @for(chart <- charts) { <li class="charts-nav__tab tab"><a class="grey-text" href="#@chart.id">@chart.title</a></li> } </ul> </div> @for(chart <- charts) { <div id="@chart.id" class="charts__chart-container"> <canvas id="@chart.id-chart" class="charts__chart"></canvas> </div> } } }