home · contact · privacy
Improve todo accounting.
[misc] / todo_templates / day.html
diff --git a/todo_templates/day.html b/todo_templates/day.html
new file mode 100644 (file)
index 0000000..5c63670
--- /dev/null
@@ -0,0 +1,80 @@
+{% extends 'base.html' %}
+{% block css %}
+table.alternating tr:nth-child(even) {
+    background-color: #f2f2f2;
+}
+table.alternating tr:nth-child(odd) {
+    background-color: #ffffff;
+}
+td.checkbox, td.number { height: 0.1em; padding: 0em; text-align: center; }
+td.checkbox { width: 0.1em }
+td button { height: 1.5em; padding: 0em; margin: 0em }
+td details { display: inline }
+input[type="number"] { text-align: right; }
+{% endblock %}
+{% block content %}
+<form action="{{action|e}}" method="POST">
+{% include 'tagfilters.html' %}
+<p>
+<input name="expect_unchosen_done" type="hidden" value="1"/>
+<input name="hide_unchosen" type="checkbox" {% if db.hide_unchosen %}checked{% endif %} /> hide unchosen <input name="hide_done" type="checkbox" {% if db.hide_done %}checked{% endif %} /> hide done
+</p>
+</form>
+
+<form id="form_to_watch" action="{{action|e}}" method="POST">
+<h3>edit day</h3>
+<p>
+<a href="{{db.prefix}}/day?selected_date={{prev_date}}">prev</a> | {{db.selected_date}} | <a href="{{db.prefix}}/day?selected_date={{next_date}}">next</a> | 
+{{ db.selected_day.todos_sum|round(2) }} ({{ db.selected_day.todos_sum2|round(2)}}) |
+comment: <input name="day_comment" value="{{ db.selected_day.comment|e }}">
+<input type="submit" value="update">
+<input type="hidden" name="selected_date" value="{{ db.selected_date }}" />
+</p>
+<table class="alternating">
+<tr><th>task</th><th class="checkbox">choose?</th><th class="checkbox">done?</th><th>weight</th><th>edit?</th><th>day tags</th><th>comment</th></tr>
+{% for uuid, t in db.tasks.items() | sort(attribute='1.title') %}
+{% if t.visible and (uuid not in db.selected_day.todos.keys() or db.selected_day.todos[uuid].visible) %}
+<tr>
+<input name="t_uuid" value="{{ uuid }}" type="hidden" >
+<td><details><summary>] <a href="{{db.prefix}}/task?id={{ uuid }}" />{{ t.current_title|e }}</a></summary>tags: {% for tag in t.tags | sort %}<a href="{{db.prefix}}/day?t_and={{tag|e}}">{{ tag }}</a> {% endfor %}</details></td>
+{% if uuid in db.selected_day.todos.keys() %}
+<td class="checkbox"><input name="choose" type="checkbox" value="{{ uuid }}" checked></td>
+<td class="checkbox"><input name="done" type="checkbox" value="{{ uuid }}" {% if db.selected_day.todos[uuid].done %}checked{% endif %}></td>
+<td class="number"><input class="day_weight_input" name="day_weight" type="number" step=0.1 size=8 value="{% if db.selected_day.todos[uuid].day_weight is not none %}{{ db.selected_day.todos[uuid].day_weight }}{% endif %}" placeholder={{ t.current_default_weight }} ></td>
+<td><a href="{{db.prefix}}/todo?task={{uuid}}&date={{ db.selected_date }}">edit</a></td>
+<td>{% for tag in db.selected_day.todos[uuid].day_tags | sort %}<a href="{{db.prefix}}/tags?t_and={{tag|e}}">{{ tag }}</a> {% endfor %}</td>
+<td>{{ db.selected_day.todos[uuid].comment|e }}</td>
+{% else %}
+<td class="checkbox"><input name="choose" type="checkbox" value="{{ uuid }}"</td>
+<td class="checkbox"><input name="done" type="checkbox" value="{{ uuid }}"></td>
+<td class="number"><input name="day_weight" type="number" step=0.1 size=8 placeholder={{ t.current_default_weight }} ></td>
+<td></td>
+<td></td>
+<td></td>
+{% endif %}
+</tr>
+{% endif %}
+{% endfor %}
+</table>
+<input type="submit" value="update">
+</form>
+<script>
+var day_weight_inputs = document.getElementsByClassName("day_weight_input");
+for (let i = 0; i < day_weight_inputs.length; i++) {
+    let input = day_weight_inputs[i];
+    let button = document.createElement('button');
+    button.innerHTML = '+1×';
+    button.onclick = function(event) {
+        event.preventDefault();
+        if (input.value) {
+            input.value = parseFloat(input.value) + parseFloat(input.placeholder);
+        } else {
+            input.value = parseFloat(input.placeholder);
+        }
+        input.value = parseFloat(input.value).toFixed(1);
+    };
+    input.insertAdjacentElement('afterend', button);
+}
+</script>
+{% include 'watch_form.html' %}
+{% endblock %}