summaryrefslogtreecommitdiff
path: root/data/extensions/https-everywhere@eff.org/pages/debugging-rulesets/ux.js
diff options
context:
space:
mode:
authorRuben Rodriguez <ruben@gnu.org>2018-09-13 20:39:48 -0400
committerRuben Rodriguez <ruben@gnu.org>2018-09-13 21:02:13 -0400
commitd26b319fd6f98517cc3421f10bf18698b953e4d2 (patch)
treebc70c4e472a2eaf514d411dba5067d530e5bbea9 /data/extensions/https-everywhere@eff.org/pages/debugging-rulesets/ux.js
parentc3b304c51a3386ea09527a479a883253ea35243a (diff)
Updated extensions list for v60
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/pages/debugging-rulesets/ux.js')
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/debugging-rulesets/ux.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/data/extensions/https-everywhere@eff.org/pages/debugging-rulesets/ux.js b/data/extensions/https-everywhere@eff.org/pages/debugging-rulesets/ux.js
new file mode 100644
index 0000000..be6c8b5
--- /dev/null
+++ b/data/extensions/https-everywhere@eff.org/pages/debugging-rulesets/ux.js
@@ -0,0 +1,44 @@
+/* global sendMessage, CodeMirror */
+
+"use strict";
+
+const savedTextElement = document.getElementById("saved-text");
+const unsavedTextElement = document.getElementById("unsaved-text");
+const savedTitle = "Debugging Rulesets";
+const unsavedTitle = "* Debugging Rulesets";
+
+document.title = savedTitle;
+
+const cm = CodeMirror.fromTextArea(
+ document.getElementById("codemirror-textarea"),
+ {
+ mode: "xml",
+ theme: "default main saved"
+ }
+);
+
+let valueHasChanged = false;
+sendMessage("get_option", { debugging_rulesets: "" }, item => {
+ cm.setValue(item.debugging_rulesets);
+ cm.on("change", cm => {
+ if (!(valueHasChanged)) {
+ valueHasChanged = true;
+ document.title = unsavedTitle;
+ cm.setOption("theme", "default main unsaved");
+ unsavedTextElement.style.visibility = "visible";
+ }
+ });
+});
+
+document.getElementById("save-button").addEventListener("click", e => {
+ e.preventDefault();
+ sendMessage("set_option", { debugging_rulesets: cm.getValue() }, () => {
+ savedTextElement.style.display = "block";
+ setTimeout(() => { savedTextElement.style.display = "none" }, 1000);
+
+ valueHasChanged = false;
+ document.title = savedTitle;
+ cm.setOption("theme", "default main saved");
+ unsavedTextElement.style.visibility = "hidden";
+ });
+});