td {
vertical-align: top;
}
-div.bad, td.bad, tr.bad, span.bad, input[type="submit"].bad {
+div.bad, td.bad, tr.bad, span.bad {
{{macros.css_bg_red()}}
}
{% block css %}{% endblock %}
ledger <a href="/ledger_structured">structured</a>
/ <a href="/ledger_raw">raw</a>
· <a href="/balance">balance</a>
-<span class="disable_on_change">
-· <input type="submit"name="file_load" value="reload" />
-</span>
+·
+{% if tainted %}
+ <span class="bad">unsaved changes:
+{% endif %}
+<input type="submit"name="file_load" value="reload" />
{% if tainted %}
- · <span class="bad">unsaved changes:</span><input type="submit" class="bad" name="file_save" value="save">
+ · <input type="submit" name="file_save" value="save">
+ </span>
{% endif %}
</span>
</form>
el.disabled = false;
});
// deactivate "disable_on_change" span contents
- Array.from(document.getElementsByClassName('disable_on_change')).forEach((el) => {
+ function recursive_span_disable(el) {
old_nodes = Array.from(el.childNodes);
el.innerHTML = '';
old_nodes.forEach((node) => {
- if (node.tagName == 'INPUT') {
+ if (node.tagName == 'SPAN') {
+ recursive_span_disable(node);
+ el.appendChild(node);
+ } else if (node.tagName == 'INPUT') {
node.disabled = true;
el.appendChild(node);
} else if (node.tagName == 'A') {
el.appendChild(node);
};
});
+ }
+ Array.from(document.getElementsByClassName('disable_on_change')).forEach((el) => {
+ recursive_span_disable(el);
});
// remove oninput handlers no longer needed (since we only ever go one way)
Array.from(document.querySelectorAll('*')