{% block css %}
-td, th, tr, table {
- padding: 0;
- margin: 0;
-}
-table {
- border-collapse: collapse;
-}
th {
border: 1px solid black;
}
-td.cond_line_0 {
+td.cond_line {
+ padding: 0;
border-top: 1px solid white;
- background-color: #dddddd;
+ background-repeat: no-repeat;
}
-td.cond_line_1 {
- border-top: 1px solid white;
- background-color: #efefef;
+td.cond_line_left {
+ background-image: linear-gradient(to right, black 0.2em, transparent 0);
}
-td.cond_line_2 {
- border-top: 1px solid white;
- background-color: #fffff;
+td.cond_line_right {
+ background-image: linear-gradient(to left, black 0.2em, transparent 0);
}
-td.cond_line_corner {
+td.cond_0 {
+ background-color: #bfbfbf;
+}
+td.cond_1 {
+ background-color: #dfdfdf;
+}
+td.cond_2 {
+ background-color: fffff;
+}
+td.cond_corner {
max-width: 0px;
white-space: nowrap;
overflow: hidden;
text-overflow: clip;
}
+td.cond_corner_left {
+ background-image: linear-gradient(145deg, transparent 60%, black 60%, black 70%, transparent 70%);
+}
+td.cond_corner_right {
+ background-image: linear-gradient(35deg, transparent 30%, black 30%, black 40%, transparent 40%);
+}
td.todo_line {
- border-bottom: 1px solid #dddddd;
+ border-bottom: 1px solid #bfbfbf;
height: 1.7em;
}
-tr.inactive td.todo_line {
- background-color: #dddddd;
+tr.inactive > td.todo_line {
+ background-color: #bfbfbf;
+ border-bottom: 1px solid white;
+}
+tr.hidden_undone > td, tr.hidden_undone a {
+ color: #9f9f9f;
}
td.left_border {
border-left: 1px solid black;
td.right_border {
border-right: 1px solid black;
}
-input[type="text"] {
- width: 98%;
-}
-input[name="day_comment"] {
- width: 100em;
+input.ablers {
+ width: 50em;
}
{% endblock %}
{% endif %}
{% for condition in conditions_present %}
-<td class="cond_line_{{loop.index0 % 3}}">
+<td class="cond_line cond_{{loop.index0 % 3}} cond_line_left">
{% if condition in node.todo.conditions and not condition.is_active %}
-O
++>
{% elif condition in node.todo.blockers and condition.is_active %}
-!
+->
{% endif %}
</td>
{% endfor %}
<td class="todo_line">{% if node.todo.effort %}{{ node.todo.effort }}{% endif %}</td>
{% else %}
<td class="todo_line left_border"><input name="done" type="checkbox" value="{{node.todo.id_}}" {% if not node.todo.is_doable %}disabled{% endif %}/></td>
-<td class="todo_line"><input name="effort" type="number" step=0.1 size=5 placeholder={{node.todo.effort_then}} value={{node.todo.effort}} /></td>
+<td class="todo_line"><input name="effort" type="number" step=0.1 placeholder={{node.todo.effort_then}} value={{node.todo.effort}} /></td>
{% endif %}
<td class="todo_line right_border">
{% for i in range(indent) %} {% endfor %} +
</td>
{% for condition in conditions_present|reverse %}
-<td class="cond_line_{{(conditions_present|length - loop.index) % 3}}">{% if condition in node.todo.enables %} +{% elif condition in node.todo.disables %} !{% endif %}</td>
+<td class="cond_line cond_{{(conditions_present|length - loop.index) % 3}} cond_line_right">{% if condition in node.todo.enables %}+>{% elif condition in node.todo.disables %}->{% endif %}</td>
{% endfor %}
<td colspan=2>
{% macro show_node_done(node, indent, path) %}
-{% if node.todo.is_done %}
-
-<tr>
-{% if path|length > 0 and not path[-1].todo.is_done %}
+{% if node.todo.has_doneness_in_path %}
+<tr{% if not node.todo.is_done %} class="hidden_undone"{% endif %}>
+<td class="number">{{ '{:4.1f}'.format(node.todo.performed_effort) }}</td>
+<td class="number">{{ '{:4.1f}'.format(node.todo.tree_effort) }}</td>
<td>
-({% for path_node in path %}<a href="todo?id={{path_node.todo.id_}}">{{path_node.todo.title_then|e}}</a> <- {% endfor %})
-</td>
-</tr>
-
-<tr>
-<td>
- +
-{% else %}
-<td>
-{% for i in range(indent) %} {% endfor %} +
-{% endif %}
-{% if node.seen %}({% endif %}<a href="todo?id={{node.todo.id_}}">{{node.todo.title_then|e}}</a> {% if node.todo.comment|length > 0 %}[{{node.todo.comment|e}}]{% endif %}{% if node.seen %}){% endif %}
-</td>
+{% for i in range(indent) %} {% endfor %} +
+{% if not node.todo.is_done %}({% endif %}{% if node.seen %}[{% endif %}<a href="todo?id={{node.todo.id_}}">{{node.todo.title_then|e}}</a>{% if node.seen %}]{% endif %}{% if not node.todo.is_done %}){% endif %}{% if node.todo.comment %} · {{node.todo.comment|e}}{% endif %}</td>
</tr>
-
-{% endif %}
{% if not node.seen %}
{% for child in node.children %}
-{{ show_node_done(child, indent+1, path + [node]) }}
+{{ show_node_done(child, indent+1) }}
{% endfor %}
{% endif %}
-
+{% endif %}
{% endmacro %}
{% block content %}
-<h3>{{day.date}} / {{day.weekday}}</h3>
+<h3>{{day.date}} / {{day.weekday}} ({{day.total_effort|round(1)}})</h3>
<p>
<a href="day?date={{day.prev_date}}">prev</a> | <a href="day?date={{day.next_date}}">next</a>
</p>
<p>
comment:
-<input name="day_comment" value="{{day.comment|e}}" />
+<input name="day_comment" type="text" value="{{day.comment|e}}" />
<input type="submit" value="OK" /></td>
</p>
<h4>to do</h4>
+<p>
+add: <input type="text" name="new_todo" list="processes">
+</p>
+<p>
+make new todos
+<select name="make_type">
+<option value="full">with</option>
+<option value="empty"{% if make_type == "empty" %}selected {% endif %}>without</option>
+</select>
+descendants (i.e. adopt where possible, otherwise create anew)
+</p>
+
<table>
<tr>
{% for _ in conditions_present %}
{% if outer_loop.index > loop.index %}
-<td class="cond_line_{{loop.index0 % 3}}">
+<td class="cond_line cond_{{loop.index0 % 3}} cond_line_left">
{% elif outer_loop.index < loop.index %}
-<td class="cond_line_{{outer_loop.index0 % 3}}">
+<td class="cond_line cond_{{outer_loop.index0 % 3}}">
{% else %}
-<td class="cond_line_{{outer_loop.index0 % 3}} cond_line_corner">×
+<td class="cond_line cond_{{outer_loop.index0 % 3}} cond_corner cond_corner_left">
{% endif %}
</td>
{% endfor %}
-<td class="cond_line_{{loop.index0 % 3}}"><input type="checkbox" disabled{% if condition.is_active %} checked{% endif %}></td>
-<td colspan=2 class="cond_line_{{loop.index0 % 3}}"><a href="condition?id={{condition.id_}}">{{condition.title.at(day.date)|e}}</a></td>
+<td class="cond_line cond_{{loop.index0 % 3}}"><input type="checkbox" disabled{% if condition.is_active %} checked{% endif %}></td>
+<td colspan=2 class="cond_line cond_{{loop.index0 % 3}}"><a href="condition?id={{condition.id_}}">{{condition.title.at(day.date)|e}}</a></td>
{% for _ in conditions_present %}
{% if outer_loop.index0 + loop.index < conditions_present|length %}
-<td class="cond_line_{{outer_loop.index0 % 3}}">
+<td class="cond_line cond_{{outer_loop.index0 % 3}}">
{% elif outer_loop.index0 + loop.index > conditions_present|length %}
-<td class="cond_line_{{(conditions_present|length - loop.index) % 3}}">
+<td class="cond_line cond_{{(conditions_present|length - loop.index) % 3}} cond_line_right">
{% else %}
-<td class="cond_line_{{outer_loop.index0 % 3}} cond_line_corner"> ×
+<td class="cond_line cond_{{outer_loop.index0 % 3}} cond_corner cond_corner_right">
{% endif %}
{% endfor %}
{% set list_name = "todos_for_%s"|format(condition.id_) %}
-<td><input name="new_todo" list="{{list_name}}" autocomplete="off" /></td>
+<td><input class="ablers" type="text" name="new_todo" list="{{list_name}}" autocomplete="off" /></td>
{{ macros.datalist_of_titles(list_name, enablers_for[condition.id_]) }}
</td>
{% set list_name = "todos_against_%s"|format(condition.id_) %}
-<td><input name="new_todo" list="{{list_name}}" autocomplete="off" /></td>
+<td><input class="ablers" type="text" name="new_todo" list="{{list_name}}" autocomplete="off" /></td>
{{ macros.datalist_of_titles(list_name, disablers_for[condition.id_]) }}
</td>
</tr>
<tr>
{% for condition in conditions_present %}
-<td class="cond_line_{{loop.index0 % 3}}"></td>
+<td class="cond_line cond_{{loop.index0 % 3}} cond_line_left"></td>
{% endfor %}
<th colspan=3>doables</th>
{% for condition in conditions_present %}
-<td class="cond_line_{{(conditions_present|length - loop.index) % 3}}"></td>
-{% endfor %}
-<td colspan=2></td>
-</tr>
-<tr>
-{% for condition in conditions_present %}
-<td class="cond_line_{{loop.index0 % 3}}"></td>
-{% endfor %}
-<td class="left_border"></td>
-<td>add:</td>
-<td class="right_border" ><input type="text" name="new_todo" list="processes"></td>
-{% for condition in conditions_present %}
-<td class="cond_line_{{(conditions_present|length - loop.index) % 3}}"></td>
+<td class="cond_line cond_{{(conditions_present|length - loop.index) % 3}} cond_line_right"></td>
{% endfor %}
<th colspan=2>comments</th>
</tr>
<h4>done</h4>
-<table>
+<table class="alternating">
+<tr>
+<th colspan=2>effort</th><th rowspan=2>action · comment</th>
+</tr>
+<tr>
+<th>self</th><th>tree</th>
+</tr>
{% for node in top_nodes %}
{{ show_node_done(node, 0, []) }}
{% endfor %}