OXYGENHUB
# 737de0fac722 oxygenhub / templates / lanes.html
2.2 KiB · HTML · last changed Plan squashes and rebases by dragging on a proposal's swimlanes 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
{% if let Some(n) = proposal %}<p class="small">This is the bookmark of proposal <a href="{{ repo.url }}/proposal/{{ n }}">#{{ n }}</a>: drag a change onto another to plan a squash or a rebase. The hub only writes the plan; your oxy or oxygen-vscode carries it out and signs it.</p>
12
<div class="panel" data-plan-panel hidden></div>{% endif %}
13
<div class="lanes-board" style="overflow-x: auto"{% if proposal.is_some() %} data-plan="{{ repo.url }}/lanes/{{ target.label }}/plan" data-csrf="{{ shell.csrf }}"{% endif %}>
14
<svg width="{{ board.width }}" height="{{ board.height }}" viewBox="0 0 {{ board.width }} {{ board.height }}" role="img" aria-label="Swimlanes of {{ target.label }}">
15
  {% for e in board.edges %}<path d="{{ e }}" class="lane" fill="none"/>{% endfor %}
16
  {% for c in board.cards %}
17
  <a href="{{ repo.url }}/change/{{ c.hash }}" data-change="{{ c.hash }}">
18
    <title>{{ c.short }} {{ c.title }}</title>
19
    <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 %}"/>
20
    <text x="{{ c.x + 8 }}" y="{{ c.y + 14 }}" class="small">{{ c.short }}</text>
21
    <text x="{{ c.x + 8 }}" y="{{ c.y + 28 }}" class="small">{{ c.title }}</text>
22
  </a>
23
  {% endfor %}
24
</svg>
25
</div>
26
{% endif %}
27
{% endblock %}