home · contact · privacy
Add foreign key restraints, expand and fix tests, add deletion and forking.
[misc] / todo_templates / task.html
index 7a8f981fef608cbad413a66b866ad452cbbfdc88..8aef69670346204a087885ebe2ae3b3def1bd1f9 100644 (file)
@@ -1,18 +1,52 @@
 {% extends 'base.html' %}
 
+
+
 {% block css %}
-th { padding-right: 1em; }
+tr.toplevel th { padding-right: 1em; }
+tr.toplevel td, tr.toplevel th { padding-top: 1em; }
+tr.lowlevel td, tr.lowlevel th { padding-top: 0em; }
 {% endblock %}
 
+
+
+{% macro draw_task(task) %}
+<a href="task?id={{task.id_}}">{{task.title.now}}</a>
+{% endmacro %}
+
+
+
+{% macro task_with_deps(task, indent) %}
+{% for i in range(indent) %}&nbsp;&nbsp;{% if loop.last %}+{% endif %}{% endfor %}
+{{ draw_task(task) }}<br />
+{% for task in task.deps %}
+{{ task_with_deps(task, indent+1) }}
+{% endfor %}
+{% endmacro %}
+
+
+
 {% block content %}
 <h3>edit task</h3>
 
-<form id="form_to_watch" action="task" method="POST">
-<input type="hidden" name="task_id" value="{{ task.id_ }}" />
-<input type="hidden" name="return_to" value="{{ return_to }}" />
+<form action="task" method="POST">
+<input type="hidden" name="id" value="{{ task.id_ }}" />
 <table>
 
-<tr>
+<tr class="toplevel">
+<th>add as todo</th>
+<td><input name="add_as_todo" type="checkbox" /> to <input name="new_todo_date" value="{{ selected_date }}" />
+</tr>
+
+{% if task.forks_id %}
+<tr class="toplevel">
+<th>forks</th>
+<td><a href="task?id={{task.forks_id}}">{{ task.forked_task.title.now|e }}</td>
+</td>
+</tr>
+{% endif %}
+
+<tr class="toplevel">
 <th>title</th>
 <td class="input">
 <input name="title" type="text" value="{{ task.title.now|e }}" size=100 />
@@ -27,19 +61,16 @@ th { padding-right: 1em; }
 </td>
 </tr>
 
-<tr>
+<tr class="toplevel">
 <th>comment</th>
 <td class="input">
-<textarea name="comment" cols=100>{{task.comment|e}}</textarea>
+<textarea name="comment" cols=100 rows=5>{{task.comment|e}}</textarea>
 </td>
 </tr>
 
-<tr>
+<tr class="toplevel">
 <th>default effort</th>
 <td class="input">
-{% if task.subtasks %}
-{{ task.default_effort.now }}
-{% else %}
 <input type="number" name="default_effort" value="{{ task.default_effort.now }}" step=0.1 size=8 required />
 <details>
 <summary>history</summary>
@@ -49,19 +80,13 @@ th { padding-right: 1em; }
 {% endfor %}
 </ul>
 </details>
-{% endif %}
 </td>
 </tr>
 
-<tr>
+<tr class="toplevel">
 <th>tags</th>
 <td>
-{% for tag in tags | sort %}
-<input type="checkbox" name="tag_{{tag|e}}"{% if tag in task.tags.now %} checked{% endif %}/> {{ tag }}
-<br />
-{% endfor %}
-add: <input name="joined_tags" type="text" value="" size=100>
-<br />
+add: {{ macros.tagselection(submit_name='tag', selected_tags=task.tags.now, all_tags=tags) }}
 <details>
 <summary>history</summary>
 <ul>
@@ -73,52 +98,86 @@ add: <input name="joined_tags" type="text" value="" size=100>
 </td>
 </tr>
 
-<tr>
-<th>children</th>
+<tr class="toplevel">
+<th>fence adoptions</th>
+<td><input name="fences_adoptions" type="checkbox" {% if task.fences_adoptions.now %}checked{% endif %}/></td>
+</tr>
+
+<tr class="toplevel">
+<th>dependers</th>
 <td>
+{% if task.dependers %}
 <table>
-
-{% for subtask in task.subtasks %}
-<tr>
+{% for depender in task.dependers %}
+<tr class="lowlevel">
 <td>
-<input name="subtask" type="checkbox" value="{{subtask.id_}}" checked/>
+<input name="depender" type="checkbox" value="{{depender.id_}}" checked/>
 </td>
 <td>
-<a href="task?id={{subtask.id_}}">{{subtask.title.now}}</a>
+{{ draw_task(depender)}}
 </td>
 </tr>
 {% endfor %}
-
-<tr>
-<th colspan=2>---</th>
+</table>
+{% endif %}
+add: <input name="depender" list="tasks" autocomplete="off" />
+</td>
 </tr>
 
-{% for subtask in filtered_tasks %}
-<tr>
+<tr class="toplevel">
+<th>children</th>
 <td>
-<input name="subtask" type="checkbox" value="{{subtask.id_}}"/>
+{% if task.deps %}
+<table>
+{% for dep in task.deps %}
+<tr class="lowlevel">
+<td>
+<input name="dep" type="checkbox" value="{{dep.id_}}" checked/>
 </td>
 <td>
-<a href="task?id={{subtask.id_}}">{{subtask.title.now}}</a>
+{% if dep.deps %}
+<details>
+<summary>
+{% endif %}
+{{ draw_task(dep)}}
+{% if dep.deps %}
+</summary>
+{% for s in dep.deps %}
+{{ task_with_deps(s, 1) }}
+{% endfor %}
+</details>
+{% endif %}
 </td>
 </tr>
 {% endfor %}
+</table>
+{% endif %}
+add: <input name="dep" list="tasks" autocomplete="off" />
+</td>
+</tr>
+{{ macros.datalist_tasks(filtered_tasks) }}
 
+{% if task.deps %}
+<tr class="toplevel">
+<th>as chain</th>
+<td>
+<table>
+{% for dep in task.deps_chain %}
+<tr class="lowlevel">
+<td class="number">{{dep.deps_depth}}</td>
+<td><a href="task?id={{ dep.id_ }}">{{dep.title.now}}</a></td>
+</tr>
+{% endfor %}
 </table>
 </td>
 </tr>
+{% endif %}
 
 </table>
-<input class="update" type="submit" name="update" value="update" />
-<hr />
-{% include 'tagfilters.html' %}
-<br />
-search: <input name="search" value="{{search|e}}" />
-<input type="submit" name="filter" value="filter" />
+<input id="update_button" class="update" type="submit" name="update" value="update" />
+<div class="delete">
+<input class="update" type="submit" name="fork" value="fork" />
+<input class="delete" type="submit" name="delete" value="delete" />
+</div>
 </form>
-
-{% include 'watch_form.html' %}
-<script>
-mere_filter_inputs = mere_filter_inputs.concat(['search']);
-</script> 
 {% endblock %}