48 lines
1.5 KiB
HTML
48 lines
1.5 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}{{ filename }}{% endblock %}
|
|
|
|
{% block header %}
|
|
<a href="{{ back_link }}" class="back-link" onmouseover="this.style.color='#ffffff'" onmouseout="this.style.color='#90a4ae'">
|
|
<span>←</span> Back
|
|
</a>
|
|
<a href="/random">🎲 Random note</a>
|
|
<a class="copy-path-btn" onclick="copyPath('{{ copy_path }}')">Copy edit command</a>
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
{{ content|safe }}
|
|
{% endblock %}
|
|
|
|
{% block scripts %}
|
|
const sseUrl = "{{ sse_url }}";
|
|
|
|
function connect() {
|
|
const evtSource = new EventSource(sseUrl);
|
|
evtSource.onerror = (err) => {
|
|
evtSource.close();
|
|
setTimeout(connect, 3000);
|
|
};
|
|
evtSource.addEventListener("reload", (event) => {
|
|
console.log("Get new update event");
|
|
location.reload();
|
|
});
|
|
}
|
|
connect();
|
|
document.querySelectorAll('.task-list-item-checkbox').forEach(cb => {
|
|
cb.addEventListener('change', function() {
|
|
const taskText = this.parentElement.textContent.trim();
|
|
const items = JSON.parse(localStorage.getItem('taskStates') || '{}');
|
|
items[taskText] = this.checked;
|
|
localStorage.setItem('taskStates', JSON.stringify(items));
|
|
});
|
|
|
|
// Восстановление состояния
|
|
const taskText = this.parentElement.textContent.trim();
|
|
const items = JSON.parse(localStorage.getItem('taskStates') || '{}');
|
|
if (items[taskText] !== undefined) {
|
|
this.checked = items[taskText];
|
|
}
|
|
});
|
|
{% endblock %}
|