<!doctype html>
<html>
<head>
  <title>Vanadium {{title .ServerName}} Allocator</title>
  {{template "head" .}}
</head>
<!-- NOTE: we 'borrow' a lot of the styling of identityd, hence the
security-related terminology in the style elements, like identity and
blessing. -->
<body class="identityprovider-layout allocatord">
  {{template "header" .}}
  <script>
    function changeBtn(id, newHTML) {
      document.getElementById(id).innerHTML = "<font color='gray'>"+newHTML+"</font>";
    }
  </script>
  <div class="main">
    <h1 class="page-head">Create and Manage Instances of {{title .ServerName}}</h1>
    <div class="blessings-list">
      <div class="blessings-header">
        <h1>Your instances</h1>
      </div>
    {{range $index, $element := .Instances}}
      <div class="blessings-item">
        <div class="blessing-details">
          <h3>{{kubeName .Name}}</h3>
          <p class="blessing-caveats">
            <span>Creation Time</span><br/>
            <span class="unixtime" data-unixtime={{.CreationTime.Unix}}>{{.CreationTime.String}}</span>
          </p>
          <p class="blessing-caveats">
            <span>Mount Name</span><br/>
            <i>{{.NameRoot}}/</i><wbr/>{{relativeName .Name}}
          </p>
          <p class="blessing-caveats">
            <span>Blessing Patterns</span><br/>
            {{range .BlessingPatterns}}
              {{.}}<br/>
            {{end}}
          </p>
        </div>
        <div class="btns-col">
          <div class="btn">
            <a href="{{.DashboardURL}}" class="button-passive" target="_blank">Dashboard</a>
          </div>
          <div class="btn" id="destroyBtn{{$index}}">
            <a href="{{.DestroyURL}}" class="button-passive" onclick="changeBtn('destroyBtn{{$index}}', 'Destroying (takes a few seconds) ...')">Destroy</a>
          </div>
        </div>
      </div>
    {{else}}
      None found.
    {{end}}
    <div id="createBtn"><a href="{{.CreateURL}}" class="button-passive" onclick="changeBtn('createBtn', 'Creating (takes a few seconds) ...')">Create New</a></div>
    {{with .Message -}}
    <div id="message">
      {{.}}
    </div>
    {{end}}
    </font>
  </div>
  <script src="{{.AssetsPrefix}}/identity/moment.js"></script>
  <script src="{{.AssetsPrefix}}/identity/jquery.js"></script>
  <script>
  function setTimeText(elem) {
    var timestamp = elem.data("unixtime");
    var m = moment(timestamp*1000.0);
    var style = elem.data("style");
    if (style === "absolute") {
      elem.html("<a href='#' onclick='return false;'>" + m.format("MMM DD, YYYY h:mm:ss a") + "</a>");
      elem.data("style", "fromNow");
    } else {
      elem.html("<a href='#' onclick='return false;'>" + m.fromNow() + "</a>");
      elem.data("style", "absolute");
    }
  }

  $(document).ready(function() {
    $(".unixtime").each(function() {
      // clicking the timestamp should toggle the display format.
      $(this).click(function() { setTimeText($(this)); });
      setTimeText($(this));
    });
  });
  </script>
</body>
</html>
