OXYGENHUB
# 92574625ee9a oxygenhub / templates / lanes.html
1.7 KiB · HTML · last changed Swimlanes: a bookmark's changes as lanes of independent work 1 month ago source blame history raw
1
{% extends "base.html" %}
2
{% import "repo_tabs.html" as m %}
3
{% block title %}Swimlanes of {{ target.label }} · {{ repo.owner }}/{{ repo.name }}{% endblock %}
4
{% block bodyattrs %} data-repo="{{ repo.url }}"{% endblock %}
5
{% block tabs %}{% call m::tabs(repo, "changes") %}{% endblock %}
6
{% block mainclass %} class="wide"{% endblock %}
7
{% block content %}
8
<div class="head"><h1>Swimlanes <small>{{ target.label }} · {{ board.cards.len() }}{% if total > board.cards.len() %} newest of {{ total }}{% endif %} changes in {{ board.lanes }} lane{% if board.lanes != 1 %}s{% endif %}</small></h1>
9
<p class="small mute">Changes that do not depend on each other run in separate lanes, oldest on the left; an edge joins a change to what it depends on. There are no merge nodes: parallel work simply stays parallel. <a href="{{ repo.url }}/changes/{{ target.label }}">list view</a></p></div>
10
{% if board.cards.is_empty() %}<p class="empty">No changes.</p>{% else %}
11
<div class="lanes-board" style="overflow-x: auto">
12
<svg width="{{ board.width }}" height="{{ board.height }}" viewBox="0 0 {{ board.width }} {{ board.height }}" role="img" aria-label="Swimlanes of {{ target.label }}">
13
  {% for e in board.edges %}<path d="{{ e }}" class="lane" fill="none"/>{% endfor %}
14
  {% for c in board.cards %}
15
  <a href="{{ repo.url }}/change/{{ c.hash }}">
16
    <title>{{ c.short }} {{ c.title }}</title>
17
    <rect x="{{ c.x }}" y="{{ c.y }}" width="{{ crate::render::graph::CARD_W }}" height="{{ crate::render::graph::CARD_H }}" rx="6" class="node{% if c.head %} head{% endif %}"/>
18
    <text x="{{ c.x + 8 }}" y="{{ c.y + 14 }}" class="small">{{ c.short }}</text>
19
    <text x="{{ c.x + 8 }}" y="{{ c.y + 28 }}" class="small">{{ c.title }}</text>
20
  </a>
21
  {% endfor %}
22
</svg>
23
</div>
24
{% endif %}
25
{% endblock %}