{% extends "basic.html" %}
{% block title %}
Now at hackerspace
{% endblock %}
{% block content %}
  <h2>Now at hackerspace!</h2>
  Recently at <a href="http://www.hackerspace.pl">hackerspace</a>:
  <ul>
  {% for user, timestamp in users %}
    <li>
      <a href="{{ user | wikiurl }}">
          {{ user }} (<span class="timestamp" data-datetime="{{ timestamp|utcisoformat }}">{{ timestamp|strfts() }} UTC</span>)
      </a>
    </li>
  {% endfor %}
  </ul>
  {% trans n_unk=unknown|length %}
  <p>There is {{ n_unk }} unknown device operating. </p>
  {% pluralize %}
  <p>There are {{ n_unk }} unknown devices operating.</p> 
  {% endtrans %}
  {% trans n_kek=kektops|length %}
  <p>There is {{ n_kek }} unknown kektop operating.</p>
  {% pluralize %}
  <p>There are {{ n_kek }} unknown kektops operating.</p>
  {% endtrans %}
  {% trans n_esp=esps|length %}
  <p>There is {{ n_esp }} unknown ESP operating.</p>
  {% pluralize %}
  <p>There are {{ n_esp }} unknown ESPs operating.</p>
  {% endtrans %}
  <hr>
  <a href="claim">Claim this device!</a>
  <script>
    function formatDate(d) {
      function pad(n) {return n<10 ? '0'+n : n};
      return d.getFullYear()+'-'
       + pad(d.getMonth()+1)+'-'
       + pad(d.getDate())+' '
       + pad(d.getHours())+':'
       + pad(d.getMinutes());
    }

    for (const tstamp of document.getElementsByClassName('timestamp')) {
      const dt = new Date(tstamp.getAttribute("data-datetime"));
      tstamp.innerHTML = formatDate(dt);
    }
  </script>
{% endblock %}
