td {
vertical-align: top;
}
-div.bad, td.bad, tr.bad, span.bad {
+div.bad, td.bad, tr.bad, span.bad, input[type="submit"].bad {
{{macros.css_bg_red()}}
}
{% block css %}{% endblock %}
<div id="header">
<form action="{{path}}" method="POST">
+<span class="disable_on_change">
ledger <a href="/ledger_structured">structured</a>
/ <a href="/ledger_raw">raw</a>
· <a href="/balance">balance</a>
-· <input type="submit" name="file_load" value="reload" />
+<span class="disable_on_change">
+· <input type="submit"name="file_load" value="reload" />
+</span>
{% if tainted %}
- · <span class="bad">unsaved changes:<input type="submit" name="file_save" value="save"></span>
+ · <span class="bad">unsaved changes:</span><input type="submit" class="bad" name="file_save" value="save">
{% endif %}
+</span>
</form>
</div>
Array.from(document.getElementsByClassName('enable_on_change')).forEach((el) => {
el.disabled = false;
});
- // deactivate "disable_on_change" links
+ // deactivate "disable_on_change" span contents
Array.from(document.getElementsByClassName('disable_on_change')).forEach((el) => {
- if (el.tagName == 'SPAN') {
- let links_text = '';
- Array.from(el.childNodes).forEach((node) => {
- links_text += node.textContent + ' ';
- });
- el.innerHTML = '';
- const del = document.createElement('del');
- el.appendChild(del);
- del.textContent = links_text;
- } else if (el.type == 'button') {
- el.disabled = true;
- }
+ old_nodes = Array.from(el.childNodes);
+ el.innerHTML = '';
+ old_nodes.forEach((node) => {
+ if (node.tagName == 'INPUT') {
+ node.disabled = true;
+ el.appendChild(node);
+ } else if (node.tagName == 'A') {
+ const del = document.createElement('del');
+ del.textContent = node.textContent;
+ el.appendChild(del);
+ } else {
+ el.appendChild(node);
+ };
+ });
});
// remove oninput handlers no longer needed (since we only ever go one way)
Array.from(document.querySelectorAll('*')
{% block content %}
{{macros.edit_bar(block,'structured','raw')}}
-<input type="button" onclick="mirror()" value="mirror" class="disable_on_change">
-<input type="button" onclick="fill_sink()" value="fill sink" class="disable_on_change">
+<span class="disable_on_change">
+<input type="button" onclick="mirror()" value="mirror">
+<input type="button" onclick="fill_sink()" value="fill sink">
|
-<input type="button" onclick="replace()" value="replace string" class="disable_on_change">
+<input type="button" onclick="replace()" value="replace string">
from
<input id="replace_from" />
to
<input id="replace_to" />
+</span>
<hr />
<table id="booking_lines" class="alternating">
</table>