From 10b674e8d8c55db04411cdd6f9ee5db9e534af14 Mon Sep 17 00:00:00 2001 From: Ethan Dalool Date: Wed, 15 Jan 2020 20:29:56 -0800 Subject: [PATCH] Add entry_with_tagname_replacements for use on tagname inputs. Unfortunately, when adjusting the box's value, it causes the datalist to disappear, and it only comes back after you press another key. I can't figure out how to make the datalist reappear automatically with js. --- frontends/etiquette_flask/static/js/common.js | 16 ++++++++++++++++ frontends/etiquette_flask/templates/photo.html | 1 + frontends/etiquette_flask/templates/search.html | 4 ++++ frontends/etiquette_flask/templates/tags.html | 1 + 4 files changed, 22 insertions(+) diff --git a/frontends/etiquette_flask/static/js/common.js b/frontends/etiquette_flask/static/js/common.js index aea6fb1..713bae8 100644 --- a/frontends/etiquette_flask/static/js/common.js +++ b/frontends/etiquette_flask/static/js/common.js @@ -125,6 +125,15 @@ function entry_with_history_hook(event) } } +common.entry_with_tagname_replacements = +function entry_with_tagname_replacements(event) +{ + var cursor_position = event.target.selectionStart; + event.target.value = common.tagname_replacements(event.target.value); + event.target.selectionStart = cursor_position; + event.target.selectionEnd = cursor_position; +} + common.html_to_element = function html_to_element(html) { @@ -323,6 +332,13 @@ function normalize_tagname(tagname) tagname = tagname.split("."); tagname = tagname[tagname.length-1]; tagname = tagname.split("+")[0]; + tagname = common.tagname_replacements(tagname); + return tagname; +} + +common.tagname_replacements = +function tagname_replacements(tagname) +{ tagname = tagname.replace(new RegExp(" ", 'g'), "_"); tagname = tagname.replace(new RegExp("-", 'g'), "_"); return tagname; diff --git a/frontends/etiquette_flask/templates/photo.html b/frontends/etiquette_flask/templates/photo.html index 0311b11..83b346b 100644 --- a/frontends/etiquette_flask/templates/photo.html +++ b/frontends/etiquette_flask/templates/photo.html @@ -256,6 +256,7 @@ var PHOTO_ID = "{{photo.id}}"; var add_tag_box = document.getElementById('add_tag_textbox'); var add_tag_button = document.getElementById('add_tag_button'); add_tag_box.addEventListener("keyup", common.entry_with_history_hook); +add_tag_box.addEventListener("keyup", common.entry_with_tagname_replacements); common.bind_box_to_button(add_tag_box, add_tag_button, false); var message_area = document.getElementById('message_area'); diff --git a/frontends/etiquette_flask/templates/search.html b/frontends/etiquette_flask/templates/search.html index 1414c46..ad8e172 100644 --- a/frontends/etiquette_flask/templates/search.html +++ b/frontends/etiquette_flask/templates/search.html @@ -659,8 +659,12 @@ var inputted_forbids = []; {% endfor %} input_musts.addEventListener("keyup", function(){tag_input_hook(this, inputted_musts, "search_builder_musts_inputted")}); +input_musts.addEventListener("keyup", common.entry_with_tagname_replacements); input_mays.addEventListener("keyup", function(){tag_input_hook(this, inputted_mays, "search_builder_mays_inputted")}); +input_mays.addEventListener("keyup", common.entry_with_tagname_replacements); input_forbids.addEventListener("keyup", function(){tag_input_hook(this, inputted_forbids, "search_builder_forbids_inputted")}); +input_forbids.addEventListener("keyup", common.entry_with_tagname_replacements); + common.bind_box_to_button(input_expression, document.getElementById("search_go_button")); diff --git a/frontends/etiquette_flask/templates/tags.html b/frontends/etiquette_flask/templates/tags.html index 8d2a41b..b0cb120 100644 --- a/frontends/etiquette_flask/templates/tags.html +++ b/frontends/etiquette_flask/templates/tags.html @@ -216,6 +216,7 @@ var add_tag_textbox = document.getElementById('add_tag_textbox'); var add_tag_button = document.getElementById('add_tag_button'); var message_area = document.getElementById('message_area'); add_tag_textbox.addEventListener("keyup", common.entry_with_history_hook); +add_tag_textbox.addEventListener("keyup", common.entry_with_tagname_replacements); common.bind_box_to_button(add_tag_textbox, add_tag_button, false); function easybake_form()