Raikogram script.
authorCMDR furrycat <elite@furrycat.net>
Mon, 18 Jan 2016 10:55:11 +0000 (05:55 -0500)
committerCMDR furrycat <elite@furrycat.net>
Mon, 18 Jan 2016 10:55:11 +0000 (05:55 -0500)
raikogram.js [new file with mode: 0644]

diff --git a/raikogram.js b/raikogram.js
new file mode 100644 (file)
index 0000000..28518b0
--- /dev/null
@@ -0,0 +1,42 @@
+/* Validate distances. */
+function validate() {
+  var valid = true;
+  for (input of document.getElementsByTagName('input')) {
+    var m = input.name.match(/^from\d+to\d+$/);
+    if (! m) continue;
+    input.setCustomValidity("");
+    var text = input.value;
+    if (! text) input.setCustomValidity("Missing");
+    else if (! text.match(input.pattern)) valid = false;
+  }
+  var submits = document.getElementsByName('edit_raikogram');
+  if (submits.length) submits[0].disabled = ! valid;
+}
+
+/* Distance updated. */
+function changed_distance(event) {
+  var input = event.target;
+  var m = input.name.match(/^from(\d+)to(\d+)$/);
+  if (! m) return;
+  var from = m[1];
+  var to = m[2];
+  var others = document.getElementsByName('from' + to + 'to' + from);
+  var text = input.value;
+  if (others.length) others[0].value = input.value;
+  validate();
+}
+
+/* Document onload. */
+function loaded() {
+  for (input of document.getElementsByTagName('input')) {
+    var m = input.name.match(/^from\d+to\d+$/);
+    if (! m) continue;
+    input.autocomplete = 'off';
+    input.type = 'text';
+    input.pattern = '^(?:[0-9]*\.)?[0-9]+$';
+    input.addEventListener('change', changed_distance, true);
+  }
+  validate();
+}
+
+document.onload = loaded();