index.html

 1{% extends "base.html" %}
 2
 3{% block title %}Projects — td{% endblock %}
 4
 5{% block content %}
 6<h1>Projects</h1>
 7
 8{% if projects.is_empty() %}
 9<article class="card align-center">
10  <h2>No projects yet</h2>
11  <p class="text-light">Run <code>td project init &lt;name&gt;</code> to create one.</p>
12</article>
13{% else %}
14<div class="container">
15  <div class="row">
16    {% for p in projects %}
17    <article class="card col-4">
18      {% match p %}
19      {% when ProjectCard::Ok { name, open, in_progress, closed, total } %}
20      <header>
21        <h2><a href="/projects/{{ name }}">{{ name }}</a></h2>
22      </header>
23      <div class="hstack gap-2">
24        {% if *in_progress > 0 %}
25        <span class="badge warning">{{ in_progress }} in progress</span>
26        {% endif %}
27        <span class="badge{% if *open > 0 %} success{% else %} secondary{% endif %}">{{ open }} open</span>
28        {% if *in_progress == 0 %}
29        <span class="badge secondary">0 in progress</span>
30        {% endif %}
31        <span class="badge secondary">{{ closed }} closed</span>
32      </div>
33      {% if *total > 0 %}
34      <progress value="{{ total - open - in_progress }}" max="{{ total }}" class="mt-2" aria-label="{{ closed }} of {{ total }} tasks closed in {{ name }}"></progress>
35      {% endif %}
36      {% when ProjectCard::Err { name, error } %}
37      <header class="hstack justify-between items-center">
38        <h2>{{ name }}</h2>
39        <span class="badge danger">error</span>
40      </header>
41      <p class="text-light">{{ error }}</p>
42      {% endmatch %}
43    </article>
44    {% endfor %}
45  </div>
46</div>
47{% endif %}
48{% endblock %}