aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/edit.js29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/edit.js b/src/edit.js
index 062a0de..c1018d7 100644
--- a/src/edit.js
+++ b/src/edit.js
@@ -10,9 +10,16 @@ import 'codemirror/addon/search/jump-to-line';
import 'codemirror/addon/dialog/dialog';
import 'codemirror/addon/dialog/dialog.css';
+/** @type {HTMLFormElement} */
let form;
+
+/** @type {CodeMirror.EditorFromTextArea[]} */
let editors = [];
+
+/** @type {boolean} */
let unsavedChanges = false;
+
+/** @type {InputEvent} */
const inputEvent = new InputEvent('input');
window.addEventListener('load', () => {
@@ -27,6 +34,7 @@ window.addEventListener('load', () => {
submitHandler(this);
});
+ // disable CodeMirror's default ctrl+D shortcut (delete line)
delete CodeMirror.keyMap['default']['Ctrl-D'];
editors = [
@@ -84,6 +92,10 @@ window.addEventListener('load', () => {
fontSizeInput.addEventListener('change', fontSizeChangeHandler);
fontSizeInput.dispatchEvent(new Event('change'));
+ document.getElementById('title').addEventListener('input', e => {
+ pagetitle = e.target.value;
+ });
+
window.onkeydown = keyboardHandler;
window.onbeforeunload = confirmExit;
});
@@ -127,7 +139,7 @@ function changeHandler(e) {
) {
return;
}
- unsavedChanges = true;
+ changed();
}
/**
@@ -157,8 +169,7 @@ function submitHandler(form) {
var fd = new FormData(form);
xhr.addEventListener('load', function(event) {
- unsavedChanges = false;
- // Add "last update" timestamp here
+ saved();
});
xhr.addEventListener('error', function(event) {
alert('Error while trying to update.');
@@ -176,3 +187,15 @@ function confirmExit(e) {
return 'You have unsaved changes, do you really want to leave this page?';
}
}
+
+function changed() {
+ unsavedChanges = true;
+ document.title = '✏ *' + pagetitle;
+ document.getElementById('headid').innerHTML = '*' + pageid;
+}
+
+function saved() {
+ unsavedChanges = false;
+ document.title = '✏ ' + pagetitle;
+ document.getElementById('headid').innerHTML = pageid;
+}