Use more const.
This commit is contained in:
		
							parent
							
								
									7fecd65b33
								
							
						
					
					
						commit
						dd0ee7a72a
					
				
					 14 changed files with 227 additions and 228 deletions
				
			
		|  | @ -1,4 +1,4 @@ | |||
| var api = {}; | ||||
| const api = {}; | ||||
| 
 | ||||
| /**************************************************************************************************/ | ||||
| api.albums = {}; | ||||
|  |  | |||
|  | @ -1,12 +1,12 @@ | |||
| var common = {}; | ||||
| const common = {}; | ||||
| 
 | ||||
| common.INPUT_TYPES = new Set(["INPUT", "TEXTAREA"]); | ||||
| 
 | ||||
| common._request = | ||||
| function _request(method, url, callback) | ||||
| { | ||||
|     let request = new XMLHttpRequest(); | ||||
|     let response = { | ||||
|     const request = new XMLHttpRequest(); | ||||
|     const response = { | ||||
|         "completed": false, | ||||
|     }; | ||||
| 
 | ||||
|  | @ -29,7 +29,7 @@ function _request(method, url, callback) | |||
|         } | ||||
|         callback(response); | ||||
|     }; | ||||
|     let asynchronous = true; | ||||
|     const asynchronous = true; | ||||
|     request.open(method, url, asynchronous); | ||||
|     return request; | ||||
| } | ||||
|  | @ -61,7 +61,7 @@ function bind_box_to_button(box, button, ctrl_enter) | |||
|     Thanks Yaroslav Yakovlev | ||||
|     http://stackoverflow.com/a/9343095
 | ||||
|     */ | ||||
|     let bound_box_hook = function(event) | ||||
|     const bound_box_hook = function(event) | ||||
|     { | ||||
|         if (event.key !== "Enter") | ||||
|             {return;} | ||||
|  | @ -83,9 +83,9 @@ function create_message_bubble(message_area, message_positivity, message_text, l | |||
|     { | ||||
|         lifespan = 8000; | ||||
|     } | ||||
|     let message = document.createElement("div"); | ||||
|     const message = document.createElement("div"); | ||||
|     message.className = "message_bubble " + message_positivity; | ||||
|     let span = document.createElement("span"); | ||||
|     const span = document.createElement("span"); | ||||
|     span.innerHTML = message_text; | ||||
|     message.appendChild(span); | ||||
|     message_area.appendChild(message); | ||||
|  | @ -168,7 +168,7 @@ function entry_with_history_hook(event) | |||
| common.html_to_element = | ||||
| function html_to_element(html) | ||||
| { | ||||
|     let template = document.createElement("template"); | ||||
|     const template = document.createElement("template"); | ||||
|     template.innerHTML = html.trim(); | ||||
|     return template.content.firstElementChild; | ||||
| } | ||||
|  | @ -200,13 +200,13 @@ function init_atag_merge_params(a) | |||
| 
 | ||||
|     if (a.dataset.mergeParams) | ||||
|     { | ||||
|         let keep = new Set(a.dataset.mergeParams.split(/[\s,]+/)); | ||||
|         const keep = new Set(a.dataset.mergeParams.split(/[\s,]+/)); | ||||
|         to_merge = page_params.filter(key_value => keep.has(key_value[0])); | ||||
|         delete a.dataset.mergeParams; | ||||
|     } | ||||
|     else if (a.dataset.mergeParamsExcept) | ||||
|     { | ||||
|         let remove = new Set(a.dataset.mergeParamsExcept.split(/[\s,]+/)); | ||||
|         const remove = new Set(a.dataset.mergeParamsExcept.split(/[\s,]+/)); | ||||
|         to_merge = page_params.filter(key_value => (! remove.has(key_value[0]))); | ||||
|         delete a.dataset.mergeParamsExcept; | ||||
|     } | ||||
|  | @ -227,7 +227,7 @@ common.init_all_atag_merge_params = | |||
| function init_all_atag_merge_params() | ||||
| { | ||||
|     const page_params = Array.from(new URLSearchParams(window.location.search)); | ||||
|     let as = Array.from(document.getElementsByClassName("merge_params")); | ||||
|     const as = Array.from(document.getElementsByClassName("merge_params")); | ||||
|     for (const a of as) | ||||
|     { | ||||
|         setTimeout(() => common.init_atag_merge_params(a), 0); | ||||
|  | @ -269,16 +269,16 @@ function init_button_with_confirm(button) | |||
|     */ | ||||
|     button.classList.remove("button_with_confirm"); | ||||
| 
 | ||||
|     let holder = document.createElement("span"); | ||||
|     const holder = document.createElement("span"); | ||||
|     holder.className = "confirm_holder " + (button.dataset.holderClass || ""); | ||||
|     button.parentElement.insertBefore(holder, button); | ||||
| 
 | ||||
|     let holder_stage1 = document.createElement("span"); | ||||
|     const holder_stage1 = document.createElement("span"); | ||||
|     holder_stage1.className = "confirm_holder_stage1"; | ||||
|     holder_stage1.appendChild(button); | ||||
|     holder.appendChild(holder_stage1); | ||||
| 
 | ||||
|     let holder_stage2 = document.createElement("span"); | ||||
|     const holder_stage2 = document.createElement("span"); | ||||
|     holder_stage2.className = "confirm_holder_stage2 hidden"; | ||||
|     holder.appendChild(holder_stage2); | ||||
| 
 | ||||
|  | @ -301,7 +301,7 @@ function init_button_with_confirm(button) | |||
|     delete button.dataset.prompt; | ||||
|     delete button.dataset.promptClass; | ||||
| 
 | ||||
|     let button_confirm = document.createElement("button"); | ||||
|     const button_confirm = document.createElement("button"); | ||||
|     button_confirm.innerText = (button.dataset.confirm || button.innerText).trim(); | ||||
|     if (button.dataset.confirmClass === undefined) | ||||
|     { | ||||
|  | @ -323,7 +323,7 @@ function init_button_with_confirm(button) | |||
|     delete button.dataset.confirmClass; | ||||
|     delete button.dataset.isInput; | ||||
| 
 | ||||
|     let button_cancel = document.createElement("button"); | ||||
|     const button_cancel = document.createElement("button"); | ||||
|     button_cancel.innerText = button.dataset.cancel || "Cancel"; | ||||
|     button_cancel.className = button.dataset.cancelClass || ""; | ||||
|     holder_stage2.appendChild(button_cancel); | ||||
|  | @ -331,7 +331,7 @@ function init_button_with_confirm(button) | |||
|     delete button.dataset.cancelClass; | ||||
| 
 | ||||
|     // If this is stupid, let me know.
 | ||||
|     let confirm_onclick = ` | ||||
|     const confirm_onclick = ` | ||||
|         let holder = event.target.parentElement.parentElement; | ||||
|         holder.getElementsByClassName("confirm_holder_stage1")[0].classList.remove("hidden"); | ||||
|         holder.getElementsByClassName("confirm_holder_stage2")[0].classList.add("hidden"); | ||||
|  | @ -341,10 +341,10 @@ function init_button_with_confirm(button) | |||
|     button.removeAttribute("onclick"); | ||||
|     button.onclick = function(event) | ||||
|     { | ||||
|         let holder = event.target.parentElement.parentElement; | ||||
|         const holder = event.target.parentElement.parentElement; | ||||
|         holder.getElementsByClassName("confirm_holder_stage1")[0].classList.add("hidden"); | ||||
|         holder.getElementsByClassName("confirm_holder_stage2")[0].classList.remove("hidden"); | ||||
|         let input = holder.getElementsByTagName("input")[0]; | ||||
|         const input = holder.getElementsByTagName("input")[0]; | ||||
|         if (input) | ||||
|         { | ||||
|             input.focus(); | ||||
|  | @ -353,7 +353,7 @@ function init_button_with_confirm(button) | |||
| 
 | ||||
|     button_cancel.onclick = function(event) | ||||
|     { | ||||
|         let holder = event.target.parentElement.parentElement; | ||||
|         const holder = event.target.parentElement.parentElement; | ||||
|         holder.getElementsByClassName("confirm_holder_stage1")[0].classList.remove("hidden"); | ||||
|         holder.getElementsByClassName("confirm_holder_stage2")[0].classList.add("hidden"); | ||||
|     } | ||||
|  | @ -363,7 +363,7 @@ function init_button_with_confirm(button) | |||
| common.init_all_button_with_confirm = | ||||
| function init_all_button_with_confirm() | ||||
| { | ||||
|     let buttons = Array.from(document.getElementsByClassName("button_with_confirm")); | ||||
|     const buttons = Array.from(document.getElementsByClassName("button_with_confirm")); | ||||
|     for (const button of buttons) | ||||
|     { | ||||
|         setTimeout(() => common.init_button_with_confirm(button), 0); | ||||
|  | @ -385,7 +385,7 @@ function init_enable_on_pageload(element) | |||
| common.init_all_enable_on_pageload = | ||||
| function init_all_enable_on_pageload() | ||||
| { | ||||
|     let elements = Array.from(document.getElementsByClassName("enable_on_pageload")); | ||||
|     const elements = Array.from(document.getElementsByClassName("enable_on_pageload")); | ||||
|     for (const element of elements) | ||||
|     { | ||||
|         setTimeout(() => common.init_enable_on_pageload(element), 0); | ||||
|  | @ -412,18 +412,18 @@ function init_all_entry_with_history() | |||
| common.init_tabbed_container = | ||||
| function init_tabbed_container(tabbed_container) | ||||
| { | ||||
|     let button_container = document.createElement("div"); | ||||
|     const button_container = document.createElement("div"); | ||||
|     button_container.className = "tab_buttons"; | ||||
|     tabbed_container.prepend(button_container); | ||||
|     let tabs = Array.from(tabbed_container.getElementsByClassName("tab")); | ||||
|     const tabs = Array.from(tabbed_container.getElementsByClassName("tab")); | ||||
|     for (const tab of tabs) | ||||
|     { | ||||
|         tab.classList.add("hidden"); | ||||
|         let tab_id = tab.dataset.tabId || tab.dataset.tabTitle; | ||||
|         const tab_id = tab.dataset.tabId || tab.dataset.tabTitle; | ||||
|         tab.dataset.tabId = tab_id; | ||||
|         tab.style.borderTopColor = "transparent"; | ||||
| 
 | ||||
|         let button = document.createElement("button"); | ||||
|         const button = document.createElement("button"); | ||||
|         button.className = "tab_button tab_button_inactive"; | ||||
|         button.onclick = common.tabbed_container_switcher; | ||||
|         button.innerText = tab.dataset.tabTitle; | ||||
|  | @ -438,7 +438,7 @@ function init_tabbed_container(tabbed_container) | |||
| common.init_all_tabbed_container = | ||||
| function init_all_tabbed_container() | ||||
| { | ||||
|     let tabbed_containers = Array.from(document.getElementsByClassName("tabbed_container")); | ||||
|     const tabbed_containers = Array.from(document.getElementsByClassName("tabbed_container")); | ||||
|     for (const tabbed_container of tabbed_containers) | ||||
|     { | ||||
|         setTimeout(() => common.init_tabbed_container(tabbed_container), 0); | ||||
|  | @ -448,13 +448,13 @@ function init_all_tabbed_container() | |||
| common.tabbed_container_switcher = | ||||
| function tabbed_container_switcher(event) | ||||
| { | ||||
|     let tab_button = event.target; | ||||
|     const tab_button = event.target; | ||||
|     if (tab_button.classList.contains("tab_button_active")) | ||||
|         { return; } | ||||
| 
 | ||||
|     let tab_id = tab_button.dataset.tabId; | ||||
|     let tab_buttons = tab_button.parentElement.getElementsByClassName("tab_button"); | ||||
|     let tabs = tab_button.parentElement.parentElement.getElementsByClassName("tab"); | ||||
|     const tab_id = tab_button.dataset.tabId; | ||||
|     const tab_buttons = tab_button.parentElement.getElementsByClassName("tab_button"); | ||||
|     const tabs = tab_button.parentElement.parentElement.getElementsByClassName("tab"); | ||||
|     for (const tab_button of tab_buttons) | ||||
|     { | ||||
|         if (tab_button.dataset.tabId === tab_id) | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| var editor = {}; | ||||
| const editor = {}; | ||||
| 
 | ||||
| editor.PARAGRAPH_TYPES = new Set(["P", "PRE"]); | ||||
| 
 | ||||
|  | @ -67,13 +67,13 @@ function Editor(elements, on_open, on_save, on_cancel) | |||
|     { | ||||
|         for (let index = 0; index < this.display_elements.length; index += 1) | ||||
|         { | ||||
|             let display_element = this.display_elements[index]; | ||||
|             let edit_element = this.edit_elements[index]; | ||||
|             const display_element = this.display_elements[index]; | ||||
|             const edit_element = this.edit_elements[index]; | ||||
| 
 | ||||
|             display_element.classList.add("hidden"); | ||||
|             edit_element.classList.remove("hidden"); | ||||
| 
 | ||||
|             let empty_text = display_element.dataset.editorEmptyText; | ||||
|             const empty_text = display_element.dataset.editorEmptyText; | ||||
|             if (empty_text !== undefined && display_element.innerText == empty_text) | ||||
|             { | ||||
|                 edit_element.value = ""; | ||||
|  | @ -92,8 +92,8 @@ function Editor(elements, on_open, on_save, on_cancel) | |||
|     { | ||||
|         for (let index = 0; index < this.display_elements.length; index += 1) | ||||
|         { | ||||
|             let display_element = this.display_elements[index]; | ||||
|             let edit_element = this.edit_elements[index]; | ||||
|             const display_element = this.display_elements[index]; | ||||
|             const edit_element = this.edit_elements[index]; | ||||
| 
 | ||||
|             if (display_element.dataset.editorEmptyText !== undefined && edit_element.value == "") | ||||
|             { | ||||
|  | @ -187,7 +187,7 @@ function Editor(elements, on_open, on_save, on_cancel) | |||
|             return fallback.bind(this); | ||||
|         } | ||||
| 
 | ||||
|         let bindable = function() | ||||
|         const bindable = function() | ||||
|         { | ||||
|             if (this.can_use_element_map) | ||||
|             { | ||||
|  | @ -201,14 +201,14 @@ function Editor(elements, on_open, on_save, on_cancel) | |||
|         return bindable.bind(this); | ||||
|     } | ||||
| 
 | ||||
|     let placeholders = document.getElementsByClassName("editor_toolbox_placeholder"); | ||||
|     const placeholders = document.getElementsByClassName("editor_toolbox_placeholder"); | ||||
|     for (const placeholder of placeholders) | ||||
|     { | ||||
|         placeholder.parentElement.removeChild(placeholder); | ||||
|     } | ||||
| 
 | ||||
|     let last_element = this.edit_elements[this.edit_elements.length - 1]; | ||||
|     let toolbox = document.createElement("div"); | ||||
|     const last_element = this.edit_elements[this.edit_elements.length - 1]; | ||||
|     const toolbox = document.createElement("div"); | ||||
|     toolbox.classList.add("editor_toolbox"); | ||||
|     last_element.parentElement.insertBefore(toolbox, last_element.nextSibling); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| var hotkeys = {}; | ||||
| const hotkeys = {}; | ||||
| 
 | ||||
| hotkeys.HOTKEYS = {}; | ||||
| 
 | ||||
|  | @ -30,14 +30,14 @@ function register_hotkey(hotkey, action, description) | |||
|         hotkey = hotkey.split(/\s+/g); | ||||
|     } | ||||
| 
 | ||||
|     let key = hotkey.pop(); | ||||
|     const key = hotkey.pop(); | ||||
|     modifiers = hotkey.map(word => word.toLocaleLowerCase()); | ||||
|     let ctrlKey = modifiers.includes("control") || modifiers.includes("ctrl"); | ||||
|     let shiftKey = modifiers.includes("shift"); | ||||
|     let altKey = modifiers.includes("alt"); | ||||
|     const ctrlKey = modifiers.includes("control") || modifiers.includes("ctrl"); | ||||
|     const shiftKey = modifiers.includes("shift"); | ||||
|     const altKey = modifiers.includes("alt"); | ||||
| 
 | ||||
|     let identifier = hotkeys.hotkey_identifier(key, ctrlKey, shiftKey, altKey); | ||||
|     let human = hotkeys.hotkey_human(key, ctrlKey, shiftKey, altKey); | ||||
|     const identifier = hotkeys.hotkey_identifier(key, ctrlKey, shiftKey, altKey); | ||||
|     const human = hotkeys.hotkey_human(key, ctrlKey, shiftKey, altKey); | ||||
|     hotkeys.HOTKEYS[identifier] = {"action": action, "human": human, "description": description} | ||||
| } | ||||
| 
 | ||||
|  | @ -61,7 +61,7 @@ function show_all_hotkeys() | |||
|     let lines = []; | ||||
|     for (const identifier in hotkeys.HOTKEYS) | ||||
|     { | ||||
|         let line = hotkeys.HOTKEYS[identifier]["human"] + " :  " + hotkeys.HOTKEYS[identifier]["description"]; | ||||
|         const line = hotkeys.HOTKEYS[identifier]["human"] + " :  " + hotkeys.HOTKEYS[identifier]["description"]; | ||||
|         lines.push(line); | ||||
|     } | ||||
|     lines = lines.join("\n"); | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| var photo_clipboard = {}; | ||||
| const photo_clipboard = {}; | ||||
| 
 | ||||
| photo_clipboard.clipboard = new Set(); | ||||
| photo_clipboard.on_load_hooks = []; | ||||
|  | @ -17,7 +17,7 @@ photo_clipboard.load_clipboard = | |||
| function load_clipboard(event) | ||||
| { | ||||
|     console.log("Loading photo clipboard from localstorage."); | ||||
|     let stored = localStorage.getItem("photo_clipboard"); | ||||
|     const stored = localStorage.getItem("photo_clipboard"); | ||||
|     if (stored === null) | ||||
|     { | ||||
|         if (photo_clipboard.clipboard.size != 0) | ||||
|  | @ -42,7 +42,7 @@ photo_clipboard.save_clipboard = | |||
| function save_clipboard() | ||||
| { | ||||
|     console.log("Saving photo clipboard to localstorage."); | ||||
|     let serialized = JSON.stringify(Array.from(photo_clipboard.clipboard)); | ||||
|     const serialized = JSON.stringify(Array.from(photo_clipboard.clipboard)); | ||||
|     localStorage.setItem("photo_clipboard", serialized); | ||||
|     photo_clipboard.update_pagestate(); | ||||
| 
 | ||||
|  | @ -105,8 +105,8 @@ function apply_check_all() | |||
|     Run through all the photo cards on the page and set their checkbox to the | ||||
|     correct value. | ||||
|     */ | ||||
|     let checkboxes = document.getElementsByClassName("photo_card_selector_checkbox"); | ||||
|     for (let checkbox of checkboxes) | ||||
|     const checkboxes = document.getElementsByClassName("photo_card_selector_checkbox"); | ||||
|     for (const checkbox of checkboxes) | ||||
|     { | ||||
|         photo_clipboard.apply_check(checkbox); | ||||
|     } | ||||
|  | @ -141,12 +141,12 @@ function on_photo_select(event) | |||
|     } | ||||
|     else if (event.shiftKey && photo_clipboard.previous_photo_select) | ||||
|     { | ||||
|         let current_photo_div = checkbox.parentElement; | ||||
|         let previous_photo_div = photo_clipboard.previous_photo_select; | ||||
|         let photo_divs = Array.from(current_photo_div.parentElement.getElementsByClassName("photo_card")); | ||||
|         const current_photo_div = checkbox.parentElement; | ||||
|         const previous_photo_div = photo_clipboard.previous_photo_select; | ||||
|         const photo_divs = Array.from(current_photo_div.parentElement.getElementsByClassName("photo_card")); | ||||
| 
 | ||||
|         let current_index = photo_divs.indexOf(current_photo_div); | ||||
|         let previous_index = photo_divs.indexOf(previous_photo_div); | ||||
|         const current_index = photo_divs.indexOf(current_photo_div); | ||||
|         const previous_index = photo_divs.indexOf(previous_photo_div); | ||||
| 
 | ||||
|         let slice; | ||||
|         if (current_index == previous_index) | ||||
|  | @ -155,12 +155,12 @@ function on_photo_select(event) | |||
|         } | ||||
|         else | ||||
|         { | ||||
|             let left = Math.min(previous_index, current_index); | ||||
|             let right = Math.max(previous_index, current_index); | ||||
|             const left = Math.min(previous_index, current_index); | ||||
|             const right = Math.max(previous_index, current_index); | ||||
|             slice = photo_divs.slice(left, right + 1); | ||||
|         } | ||||
| 
 | ||||
|         for (let photo_div of slice) | ||||
|         for (const photo_div of slice) | ||||
|         { | ||||
|             action(photo_div.dataset.id); | ||||
|         } | ||||
|  | @ -168,7 +168,7 @@ function on_photo_select(event) | |||
|     } | ||||
|     else | ||||
|     { | ||||
|         let photo_div = checkbox.parentElement; | ||||
|         const photo_div = checkbox.parentElement; | ||||
|         action(photo_div.dataset.id); | ||||
|         photo_clipboard.previous_photo_select = photo_div; | ||||
|     } | ||||
|  | @ -178,8 +178,8 @@ function on_photo_select(event) | |||
| photo_clipboard.select_all_photos = | ||||
| function select_all_photos() | ||||
| { | ||||
|     let photo_divs = Array.from(document.getElementsByClassName("photo_card")); | ||||
|     for (let photo_div of photo_divs) | ||||
|     const photo_divs = Array.from(document.getElementsByClassName("photo_card")); | ||||
|     for (const photo_div of photo_divs) | ||||
|     { | ||||
|         photo_clipboard.clipboard.add(photo_div.dataset.id); | ||||
|     } | ||||
|  | @ -190,8 +190,8 @@ function select_all_photos() | |||
| photo_clipboard.unselect_all_photos = | ||||
| function unselect_all_photos() | ||||
| { | ||||
|     let photo_divs = Array.from(document.getElementsByClassName("photo_card")); | ||||
|     for (let photo_div of photo_divs) | ||||
|     const photo_divs = Array.from(document.getElementsByClassName("photo_card")); | ||||
|     for (const photo_div of photo_divs) | ||||
|     { | ||||
|         photo_clipboard.clipboard.delete(photo_div.dataset.id); | ||||
|     } | ||||
|  | @ -205,14 +205,14 @@ function unselect_all_photos() | |||
| photo_clipboard.clipboard_tray_collapse = | ||||
| function clipboard_tray_collapse() | ||||
| { | ||||
|     let tray_body = document.getElementById("clipboard_tray_body"); | ||||
|     const tray_body = document.getElementById("clipboard_tray_body"); | ||||
|     tray_body.classList.add("hidden"); | ||||
| } | ||||
| 
 | ||||
| photo_clipboard.clipboard_tray_uncollapse = | ||||
| function clipboard_tray_uncollapse() | ||||
| { | ||||
|     let tray_body = document.getElementById("clipboard_tray_body"); | ||||
|     const tray_body = document.getElementById("clipboard_tray_body"); | ||||
|     tray_body.classList.remove("hidden"); | ||||
|     photo_clipboard.update_clipboard_tray(); | ||||
| } | ||||
|  | @ -223,7 +223,7 @@ function clipboard_tray_collapse_toggle() | |||
|     /* | ||||
|     Show or hide the clipboard. | ||||
|     */ | ||||
|     let tray_body = document.getElementById("clipboard_tray_body"); | ||||
|     const tray_body = document.getElementById("clipboard_tray_body"); | ||||
|     if (!tray_body) | ||||
|     { | ||||
|         return; | ||||
|  | @ -246,8 +246,8 @@ function ingest_toolbox_items() | |||
|     The page may provide divs with the class "my_clipboard_tray_toolbox", and | ||||
|     we will migrate all the elements into the real clipboard tray toolbox. | ||||
|     */ | ||||
|     let toolbox = document.getElementById("clipboard_tray_toolbox"); | ||||
|     let moreboxes = document.getElementsByClassName("my_clipboard_tray_toolbox"); | ||||
|     const toolbox = document.getElementById("clipboard_tray_toolbox"); | ||||
|     const moreboxes = document.getElementsByClassName("my_clipboard_tray_toolbox"); | ||||
| 
 | ||||
|     for (const morebox of moreboxes) | ||||
|     { | ||||
|  | @ -265,8 +265,8 @@ function on_tray_delete_button(event) | |||
|     /* | ||||
|     Remove the clicked row from the clipboard. | ||||
|     */ | ||||
|     let clipboard_line = event.target.parentElement; | ||||
|     let photo_id = clipboard_line.dataset.id; | ||||
|     const clipboard_line = event.target.parentElement; | ||||
|     const photo_id = clipboard_line.dataset.id; | ||||
|     photo_clipboard.clipboard.delete(photo_id); | ||||
|     photo_clipboard.save_clipboard(); | ||||
| } | ||||
|  | @ -277,7 +277,7 @@ function update_clipboard_tray() | |||
|     /* | ||||
|     Rebuild the rows if the tray is open. | ||||
|     */ | ||||
|     let clipboard_tray = document.getElementById("clipboard_tray"); | ||||
|     const clipboard_tray = document.getElementById("clipboard_tray"); | ||||
|     if (clipboard_tray === null) | ||||
|     { | ||||
|         return; | ||||
|  | @ -288,24 +288,24 @@ function update_clipboard_tray() | |||
|         photo_clipboard.clipboard_tray_collapse(); | ||||
|     } | ||||
| 
 | ||||
|     let tray_lines = document.getElementById("clipboard_tray_lines"); | ||||
|     const tray_lines = document.getElementById("clipboard_tray_lines"); | ||||
|     if (!clipboard_tray.classList.contains("hidden")) | ||||
|     { | ||||
|         common.delete_all_children(tray_lines); | ||||
|         let photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|         const photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|         photo_ids.sort(); | ||||
|         for (const photo_id of photo_ids) | ||||
|         { | ||||
|             let clipboard_line = document.createElement("div"); | ||||
|             const clipboard_line = document.createElement("div"); | ||||
|             clipboard_line.classList.add("clipboard_tray_line"); | ||||
|             clipboard_line.dataset.id = photo_id; | ||||
| 
 | ||||
|             let clipboard_line_delete_button = document.createElement("button"); | ||||
|             const clipboard_line_delete_button = document.createElement("button"); | ||||
|             clipboard_line_delete_button.classList.add("remove_tag_button_perm"); | ||||
|             clipboard_line_delete_button.classList.add("red_button"); | ||||
|             clipboard_line_delete_button.onclick = photo_clipboard.on_tray_delete_button; | ||||
| 
 | ||||
|             let clipboard_line_link = document.createElement("a"); | ||||
|             const clipboard_line_link = document.createElement("a"); | ||||
|             clipboard_line_link.target = "_blank"; | ||||
|             clipboard_line_link.href = "/photo/" + photo_id; | ||||
|             clipboard_line_link.innerText = photo_id; | ||||
|  | @ -328,7 +328,7 @@ function open_full_clipboard_tab() | |||
| photo_clipboard.update_clipboard_count = | ||||
| function update_clipboard_count() | ||||
| { | ||||
|     let elements = document.getElementsByClassName("clipboard_count"); | ||||
|     const elements = document.getElementsByClassName("clipboard_count"); | ||||
|     for (const element of elements) | ||||
|     { | ||||
|         element.innerText = photo_clipboard.clipboard.size; | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| var spinner = {}; | ||||
| const spinner = {}; | ||||
| 
 | ||||
| /* | ||||
| In general, spinners are used for functions that launch a callback, and the | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| var tag_autocomplete = {}; | ||||
| const tag_autocomplete = {}; | ||||
| 
 | ||||
| tag_autocomplete.tagset = {"tags": [], "synonyms": {}}; | ||||
| 
 | ||||
|  | @ -19,13 +19,13 @@ function init_datalist() | |||
|     common.delete_all_children(datalist); | ||||
|     for (const tag_name of tag_autocomplete.tagset["tags"]) | ||||
|     { | ||||
|         let option = document.createElement("option"); | ||||
|         const option = document.createElement("option"); | ||||
|         option.value = tag_name; | ||||
|         datalist.appendChild(option); | ||||
|     } | ||||
|     for (const synonym in tag_autocomplete.tagset["synonyms"]) | ||||
|     { | ||||
|         let option = document.createElement("option"); | ||||
|         const option = document.createElement("option"); | ||||
|         option.value = tag_autocomplete.tagset["synonyms"][synonym] + "+" + synonym; | ||||
|         datalist.appendChild(option); | ||||
|     } | ||||
|  | @ -54,8 +54,8 @@ function tagname_replacements(tagname) | |||
| tag_autocomplete.entry_with_tagname_replacements_hook = | ||||
| function entry_with_tagname_replacements_hook(event) | ||||
| { | ||||
|     let cursor_position = event.target.selectionStart; | ||||
|     let new_value = tag_autocomplete.tagname_replacements(event.target.value); | ||||
|     const cursor_position = event.target.selectionStart; | ||||
|     const new_value = tag_autocomplete.tagname_replacements(event.target.value); | ||||
|     if (new_value != event.target.value) | ||||
|     { | ||||
|         event.target.value = new_value; | ||||
|  | @ -114,7 +114,7 @@ tag_autocomplete.update_tagset = | |||
| function update_tagset() | ||||
| { | ||||
|     console.log("Updating known tagset."); | ||||
|     let url = "/all_tags.json"; | ||||
|     const url = "/all_tags.json"; | ||||
|     common.get(url, tag_autocomplete.update_tagset_callback); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -143,7 +143,7 @@ h2, h3 | |||
| 
 | ||||
| 
 | ||||
| <script id="album_listing_script" type="text/javascript"> | ||||
| ALBUM_ID = undefined; | ||||
| const ALBUM_ID = undefined; | ||||
| </script> | ||||
| 
 | ||||
| {% else %} {## Individual album ###################################################################} | ||||
|  | @ -308,7 +308,7 @@ ALBUM_ID = undefined; | |||
| 
 | ||||
| 
 | ||||
| <script id="album_individual_script" type="text/javascript"> | ||||
| var ALBUM_ID = "{{album.id}}"; | ||||
| const ALBUM_ID = "{{album.id}}"; | ||||
| 
 | ||||
| function add_child(child_id) | ||||
| { | ||||
|  | @ -321,12 +321,12 @@ function add_child(child_id) | |||
| 
 | ||||
| function paste_photo_clipboard() | ||||
| { | ||||
|     let photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     const photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     api.albums.add_photos(ALBUM_ID, photo_ids, common.refresh); | ||||
| } | ||||
| function unpaste_photo_clipboard() | ||||
| { | ||||
|     let photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     const photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     api.albums.remove_photos(ALBUM_ID, photo_ids, common.refresh); | ||||
| } | ||||
| 
 | ||||
|  | @ -348,8 +348,8 @@ function on_save(ed, edit_element_map, display_element_map) | |||
| 
 | ||||
|         ed.save(); | ||||
| 
 | ||||
|         let title_display = display_element_map["title"]; | ||||
|         let description_display = display_element_map["description"]; | ||||
|         const title_display = display_element_map["title"]; | ||||
|         const description_display = display_element_map["description"]; | ||||
| 
 | ||||
|         document.title = title_display.innerText + " | Albums"; | ||||
| 
 | ||||
|  | @ -360,8 +360,8 @@ function on_save(ed, edit_element_map, display_element_map) | |||
|     } | ||||
| 
 | ||||
|     edit_element_map["title"].value = edit_element_map["title"].value.trim(); | ||||
|     let title = edit_element_map["title"].value; | ||||
|     let description = edit_element_map["description"].value; | ||||
|     const title = edit_element_map["title"].value; | ||||
|     const description = edit_element_map["description"].value; | ||||
| 
 | ||||
|     ed.show_spinner(); | ||||
|     api.albums.edit(ALBUM_ID, title, description, callback); | ||||
|  | @ -376,9 +376,9 @@ function on_cancel(ed, edit_element_map, display_element_map) | |||
|     } | ||||
| } | ||||
| 
 | ||||
| var title_text = document.getElementById("title_text"); | ||||
| var description_text = document.getElementById("description_text"); | ||||
| var ed = new editor.Editor([title_text, description_text], on_open, on_save, on_cancel); | ||||
| const title_text = document.getElementById("title_text"); | ||||
| const description_text = document.getElementById("description_text"); | ||||
| const ed = new editor.Editor([title_text, description_text], on_open, on_save, on_cancel); | ||||
| </script> | ||||
| 
 | ||||
| {% endif %} {## Shared ############################################################################} | ||||
|  | @ -391,7 +391,7 @@ function create_child(title) | |||
|     { | ||||
|         title = undefined; | ||||
|     } | ||||
|     let parent_id = ALBUM_ID; | ||||
|     const parent_id = ALBUM_ID; | ||||
|     api.albums.create(title, parent_id, api.albums.callback_follow); | ||||
| } | ||||
| 
 | ||||
|  | @ -412,7 +412,7 @@ function get_album_card_from_child(element) | |||
| 
 | ||||
| function on_album_drag_start(event) | ||||
| { | ||||
|     let album_card = get_album_card_from_child(event.target); | ||||
|     const album_card = get_album_card_from_child(event.target); | ||||
|     event.dataTransfer.setData("text/plain", album_card.id); | ||||
| } | ||||
| function on_album_drag_end(event) | ||||
|  | @ -424,11 +424,10 @@ function on_album_drag_over(event) | |||
| } | ||||
| function on_album_drag_drop(event) | ||||
| { | ||||
|     let child_id = event.dataTransfer.getData("text"); | ||||
|     let child = document.getElementById(child_id); | ||||
|     child_id = child.dataset.id; | ||||
|     let parent = event.currentTarget; | ||||
|     let parent_id = parent.dataset.id; | ||||
|     const child = document.getElementById(event.dataTransfer.getData("text")); | ||||
|     const child_id = child.dataset.id; | ||||
|     const parent = event.currentTarget; | ||||
|     const parent_id = parent.dataset.id; | ||||
|     event.dataTransfer.clearData(); | ||||
| 
 | ||||
|     if (child_id == parent_id) | ||||
|  | @ -436,8 +435,8 @@ function on_album_drag_drop(event) | |||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     let child_title = child.querySelector('.album_card_title').textContent.trim(); | ||||
|     let parent_title = parent.querySelector('.album_card_title').textContent.trim(); | ||||
|     const child_title = child.querySelector('.album_card_title').textContent.trim(); | ||||
|     const parent_title = parent.querySelector('.album_card_title').textContent.trim(); | ||||
|     if (confirm(`Move\n${child_title}\ninto\n${parent_title}?`)) | ||||
|     { | ||||
|         if (ALBUM_ID) | ||||
|  |  | |||
|  | @ -99,8 +99,8 @@ | |||
| <script type="text/javascript"> | ||||
| function create_bookmark_form() | ||||
| { | ||||
|     let url = document.getElementById("new_bookmark_url").value.trim(); | ||||
|     let title = document.getElementById("new_bookmark_title").value.trim(); | ||||
|     const url = document.getElementById("new_bookmark_url").value.trim(); | ||||
|     const title = document.getElementById("new_bookmark_title").value.trim(); | ||||
|     if (!url) | ||||
|     { | ||||
|         return; | ||||
|  | @ -135,9 +135,9 @@ function on_save(ed, edit_element_map, display_element_map) | |||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     let bookmark_id = ed.misc_data["bookmark_id"]; | ||||
|     let title = edit_element_map["title"].value; | ||||
|     let url = edit_element_map["url"].value; | ||||
|     const bookmark_id = ed.misc_data["bookmark_id"]; | ||||
|     const title = edit_element_map["title"].value; | ||||
|     const url = edit_element_map["url"].value; | ||||
| 
 | ||||
|     ed.show_spinner(); | ||||
|     api.bookmarks.edit(bookmark_id, title, url, callback); | ||||
|  | @ -147,11 +147,11 @@ on_cancel = undefined; | |||
| 
 | ||||
| function create_editors() | ||||
| { | ||||
|     let cards = document.getElementsByClassName("bookmark_card"); | ||||
|     const cards = document.getElementsByClassName("bookmark_card"); | ||||
|     for (const card of cards) | ||||
|     { | ||||
|         let title_div = card.getElementsByClassName("bookmark_title")[0]; | ||||
|         let url_div = card.getElementsByClassName("bookmark_url")[0]; | ||||
|         const title_div = card.getElementsByClassName("bookmark_title")[0]; | ||||
|         const url_div = card.getElementsByClassName("bookmark_url")[0]; | ||||
|         ed = new editor.Editor([title_div, url_div], on_open, on_save, on_cancel); | ||||
|         ed.misc_data["bookmark_id"] = card.dataset.bookmarkId; | ||||
|     } | ||||
|  |  | |||
|  | @ -139,16 +139,16 @@ | |||
| 
 | ||||
| 
 | ||||
| <script type="text/javascript"> | ||||
| var divs = {}; | ||||
| var needed = new Set(); | ||||
| var holder = document.getElementById("photo_card_holder"); | ||||
| const divs = {}; | ||||
| const needed = new Set(); | ||||
| const holder = document.getElementById("photo_card_holder"); | ||||
| 
 | ||||
| var add_box = document.getElementById("add_tag_textbox"); | ||||
| var add_button = document.getElementById("add_tag_button"); | ||||
| const add_box = document.getElementById("add_tag_textbox"); | ||||
| const add_button = document.getElementById("add_tag_button"); | ||||
| common.bind_box_to_button(add_box, add_button); | ||||
| 
 | ||||
| var remove_box = document.getElementById("remove_tag_textbox"); | ||||
| var remove_button = document.getElementById("remove_tag_button"); | ||||
| const remove_box = document.getElementById("remove_tag_textbox"); | ||||
| const remove_button = document.getElementById("remove_tag_button"); | ||||
| common.bind_box_to_button(remove_box, remove_button); | ||||
| 
 | ||||
| function recalculate_needed() | ||||
|  | @ -162,7 +162,7 @@ function recalculate_needed() | |||
|     This function only calculates which ids are needed. The actual fetching of | ||||
|     divs is in `request_more_divs`. | ||||
|     */ | ||||
|     needed = new Set(); | ||||
|     needed.clear(); | ||||
|     for (const photo_id of photo_clipboard.clipboard) | ||||
|     { | ||||
|         if (!(photo_id in divs)) | ||||
|  | @ -178,11 +178,12 @@ function refresh_divs() | |||
|     Add new divs to the page, and remove divs which the user has removed from | ||||
|     their clipboard. | ||||
|     */ | ||||
|     // 'in' instead of 'of' is intentional here because divs is a dict. | ||||
|     for (const photo_id in divs) | ||||
|     { | ||||
|         let photo_div = divs[photo_id]; | ||||
|         let should_keep = photo_clipboard.clipboard.has(photo_id); | ||||
|         let on_page = holder.contains(photo_div); | ||||
|         const photo_div = divs[photo_id]; | ||||
|         const should_keep = photo_clipboard.clipboard.has(photo_id); | ||||
|         const on_page = holder.contains(photo_div); | ||||
|         if (on_page && !should_keep) | ||||
|         { | ||||
|             holder.removeChild(photo_div) | ||||
|  | @ -204,9 +205,9 @@ function request_more_divs() | |||
|     { | ||||
|         return; | ||||
|     } | ||||
|     let url = "/batch/photos/photo_card"; | ||||
|     let data = new FormData(); | ||||
|     let photo_ids = Array.from(needed).join(","); | ||||
|     const url = "/batch/photos/photo_card"; | ||||
|     const data = new FormData(); | ||||
|     const photo_ids = Array.from(needed).join(","); | ||||
|     data.append("photo_ids", photo_ids); | ||||
|     function callback(response) | ||||
|     { | ||||
|  | @ -242,8 +243,8 @@ photo_clipboard.on_save_hooks.push(my_clipboard_load_save_hook); | |||
| 
 | ||||
| function add_remove_tag_callback(response) | ||||
| { | ||||
|     let tagname = response.data.tagname; | ||||
|     let message_area = document.getElementById("message_area"); | ||||
|     const tagname = response.data.tagname; | ||||
|     const message_area = document.getElementById("message_area"); | ||||
|     let message_positivity; | ||||
|     let message_text; | ||||
| 
 | ||||
|  | @ -254,7 +255,7 @@ function add_remove_tag_callback(response) | |||
|     } | ||||
|     else if ("action" in response.data) | ||||
|     { | ||||
|         let action = response.data.action; | ||||
|         const action = response.data.action; | ||||
|         message_positivity = "message_positive"; | ||||
|         if (action == "add") | ||||
|         {message_text = "Added tag " + tagname;} | ||||
|  | @ -270,13 +271,13 @@ function add_tag_form() | |||
|     if (photo_clipboard.clipboard.size == 0) | ||||
|         {return;} | ||||
| 
 | ||||
|     let box = document.getElementById("add_tag_textbox"); | ||||
|     let tagname = box.value.trim(); | ||||
|     const box = document.getElementById("add_tag_textbox"); | ||||
|     const tagname = box.value.trim(); | ||||
|     if (! tagname) | ||||
|         {return} | ||||
| 
 | ||||
|     box.value = ""; | ||||
|     let photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     const photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     api.photos.batch_add_tag(photo_ids, tagname, add_remove_tag_callback); | ||||
| } | ||||
| 
 | ||||
|  | @ -285,13 +286,13 @@ function remove_tag_form() | |||
|     if (photo_clipboard.clipboard.size == 0) | ||||
|         {return;} | ||||
| 
 | ||||
|     let box = document.getElementById("remove_tag_textbox"); | ||||
|     let tagname = box.value.trim(); | ||||
|     const box = document.getElementById("remove_tag_textbox"); | ||||
|     const tagname = box.value.trim(); | ||||
|     if (! tagname) | ||||
|         {return} | ||||
| 
 | ||||
|     box.value = ""; | ||||
|     let photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     const photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     api.photos.batch_remove_tag(photo_ids, tagname, add_remove_tag_callback); | ||||
| } | ||||
| 
 | ||||
|  | @ -302,22 +303,22 @@ function download_zip_form() | |||
|     if (photo_clipboard.clipboard.size == 0) | ||||
|         {return;} | ||||
| 
 | ||||
|     let photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     const photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     api.photos.get_download_zip_token(photo_ids, api.photos.callback_download_zip); | ||||
| } | ||||
| 
 | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| 
 | ||||
| var refresh_metadata_button = document.getElementById("refresh_metadata_button"); | ||||
| const refresh_metadata_button = document.getElementById("refresh_metadata_button"); | ||||
| 
 | ||||
| function refresh_metadata_callback(response) | ||||
| { | ||||
|     window[refresh_metadata_button.dataset.spinnerCloser](); | ||||
|     if ("error_type" in response.data) | ||||
|     { | ||||
|         let message_area = document.getElementById("message_area"); | ||||
|         let message_positivity = "message_negative"; | ||||
|         let message_text = response.data.error_message; | ||||
|         const message_area = document.getElementById("message_area"); | ||||
|         const message_positivity = "message_negative"; | ||||
|         const message_text = response.data.error_message; | ||||
|         common.create_message_bubble(message_area, message_positivity, message_text, 8000); | ||||
|     } | ||||
|     else | ||||
|  | @ -333,7 +334,7 @@ function refresh_metadata_form() | |||
|         return spinner.BAIL; | ||||
|     } | ||||
| 
 | ||||
|     let photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     const photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     api.photos.batch_refresh_metadata(photo_ids, refresh_metadata_callback); | ||||
| } | ||||
| 
 | ||||
|  | @ -341,7 +342,7 @@ function refresh_metadata_form() | |||
| 
 | ||||
| function set_unset_searchhidden_callback(response) | ||||
| { | ||||
|     let message_area = document.getElementById("message_area"); | ||||
|     const message_area = document.getElementById("message_area"); | ||||
|     let message_positivity; | ||||
|     let message_text; | ||||
|     if ("error_type" in response.data) | ||||
|  | @ -361,7 +362,7 @@ function set_searchhidden_form() | |||
|     if (photo_clipboard.clipboard.size == 0) | ||||
|         {return;} | ||||
| 
 | ||||
|     let photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     const photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     api.photos.batch_set_searchhidden(photo_ids, set_unset_searchhidden_callback); | ||||
| } | ||||
| function unset_searchhidden_form() | ||||
|  | @ -369,7 +370,7 @@ function unset_searchhidden_form() | |||
|     if (photo_clipboard.clipboard.size == 0) | ||||
|         {return;} | ||||
| 
 | ||||
|     let photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     const photo_ids = Array.from(photo_clipboard.clipboard); | ||||
|     api.photos.batch_unset_searchhidden(photo_ids, set_unset_searchhidden_callback); | ||||
| } | ||||
| </script> | ||||
|  |  | |||
|  | @ -87,13 +87,13 @@ form h2 | |||
| 
 | ||||
| 
 | ||||
| <script type="text/javascript"> | ||||
| var message_area = document.getElementById("message_area"); | ||||
| const message_area = document.getElementById("message_area"); | ||||
| 
 | ||||
| function login_form(event) | ||||
| { | ||||
|     event.preventDefault(); | ||||
|     let username = document.getElementById("login_input_username").value; | ||||
|     let password = document.getElementById("login_input_password").value; | ||||
|     const username = document.getElementById("login_input_username").value; | ||||
|     const password = document.getElementById("login_input_password").value; | ||||
|     if (username == "" || password == "") | ||||
|     { | ||||
|         common.create_message_bubble(message_area, "message_negative", "Fill out the form, yo."); | ||||
|  | @ -105,10 +105,10 @@ function login_form(event) | |||
| function register_form(event) | ||||
| { | ||||
|     event.preventDefault(); | ||||
|     let username = document.getElementById("register_input_username").value; | ||||
|     let display_name = document.getElementById("register_input_display_name").value; | ||||
|     let password_1 = document.getElementById("register_input_password_1").value; | ||||
|     let password_2 = document.getElementById("register_input_password_2").value; | ||||
|     const username = document.getElementById("register_input_username").value; | ||||
|     const display_name = document.getElementById("register_input_display_name").value; | ||||
|     const password_1 = document.getElementById("register_input_password_1").value; | ||||
|     const password_2 = document.getElementById("register_input_password_2").value; | ||||
|     if (username == "" || password_1 == "" || password_2 == "") | ||||
|     { | ||||
|         common.create_message_bubble(message_area, "message_negative", "Fill out the form, yo."); | ||||
|  | @ -129,6 +129,5 @@ function login_register_callback(response) | |||
|         window.location.href = "/"; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| </script> | ||||
| </html> | ||||
|  |  | |||
|  | @ -282,17 +282,17 @@ | |||
| 
 | ||||
| 
 | ||||
| <script type="text/javascript"> | ||||
| var PHOTO_ID = "{{photo.id}}"; | ||||
| const PHOTO_ID = "{{photo.id}}"; | ||||
| 
 | ||||
| var add_tag_box = document.getElementById('add_tag_textbox'); | ||||
| var add_tag_button = document.getElementById('add_tag_button'); | ||||
| const add_tag_box = document.getElementById('add_tag_textbox'); | ||||
| const add_tag_button = document.getElementById('add_tag_button'); | ||||
| common.bind_box_to_button(add_tag_box, add_tag_button, false); | ||||
| 
 | ||||
| var message_area = document.getElementById('message_area'); | ||||
| const message_area = document.getElementById('message_area'); | ||||
| 
 | ||||
| function add_photo_tag_form() | ||||
| { | ||||
|     let tagname = document.getElementById("add_tag_textbox").value; | ||||
|     const tagname = document.getElementById("add_tag_textbox").value; | ||||
|     if (tagname == "") | ||||
|     { | ||||
|         return; | ||||
|  | @ -308,7 +308,7 @@ function add_photo_tag_callback(response) | |||
|         return; | ||||
|     } | ||||
|     const this_tags = document.getElementById("this_tags"); | ||||
|     let tag_objects = this_tags.getElementsByClassName("tag_object"); | ||||
|     const tag_objects = this_tags.getElementsByClassName("tag_object"); | ||||
|     for (const tag_object of tag_objects) | ||||
|     { | ||||
|         if (tag_object.innerText === response.data.tagname) | ||||
|  | @ -342,12 +342,12 @@ function remove_photo_tag_callback(response) | |||
|     { | ||||
|         return; | ||||
|     } | ||||
|     let tag_objects = document.getElementById("this_tags").getElementsByClassName("tag_object"); | ||||
|     const tag_objects = document.getElementById("this_tags").getElementsByClassName("tag_object"); | ||||
|     for (const tag_object of tag_objects) | ||||
|     { | ||||
|         if (tag_object.innerText === response.data.tagname) | ||||
|         { | ||||
|             let li = tag_object.parentElement; | ||||
|             const li = tag_object.parentElement; | ||||
|             li.parentElement.removeChild(li); | ||||
|         } | ||||
|     } | ||||
|  | @ -416,8 +416,8 @@ function generate_thumbnail_callback(response) | |||
| 
 | ||||
| function generate_thumbnail_for_video_form(event) | ||||
| { | ||||
|     let timestamp = document.querySelector("#right video").currentTime; | ||||
|     let special = {"timestamp": timestamp}; | ||||
|     const timestamp = document.querySelector("#right video").currentTime; | ||||
|     const special = {"timestamp": timestamp}; | ||||
|     api.photos.generate_thumbnail(PHOTO_ID, special, generate_thumbnail_callback) | ||||
| } | ||||
| 
 | ||||
|  | @ -428,7 +428,7 @@ function refresh_metadata_form() | |||
| 
 | ||||
| function set_searchhidden_form(event) | ||||
| { | ||||
|     let checkbox = event.target; | ||||
|     const checkbox = event.target; | ||||
|     if (checkbox.checked) | ||||
|     { | ||||
|         api.photos.set_searchhidden(PHOTO_ID); | ||||
|  | @ -439,12 +439,12 @@ function set_searchhidden_form(event) | |||
|     } | ||||
| } | ||||
| 
 | ||||
| var ZOOM_BG_URL = "url('{{photo|file_link}}')"; | ||||
| const ZOOM_BG_URL = "url('{{photo|file_link}}')"; | ||||
| function enable_hoverzoom(event) | ||||
| { | ||||
|     //console.log("enable zoom"); | ||||
|     let photo_viewer = document.getElementById("photo_viewer"); | ||||
|     let photo_img = photo_viewer.children[0]; | ||||
|     const photo_viewer = document.getElementById("photo_viewer"); | ||||
|     const photo_img = photo_viewer.children[0]; | ||||
|     if ( | ||||
|         photo_img.naturalWidth < photo_viewer.offsetWidth && | ||||
|         photo_img.naturalHeight < photo_viewer.offsetHeight | ||||
|  | @ -463,8 +463,8 @@ function enable_hoverzoom(event) | |||
| function disable_hoverzoom() | ||||
| { | ||||
|     //console.log("disable zoom"); | ||||
|     let photo_viewer = document.getElementById("photo_viewer"); | ||||
|     let photo_img = photo_viewer.children[0]; | ||||
|     const photo_viewer = document.getElementById("photo_viewer"); | ||||
|     const photo_img = photo_viewer.children[0]; | ||||
| 
 | ||||
|     photo_img.style.opacity = "100"; | ||||
|     photo_viewer.style.cursor = ""; | ||||
|  | @ -474,7 +474,7 @@ function disable_hoverzoom() | |||
| } | ||||
| function toggle_hoverzoom(event) | ||||
| { | ||||
|     let photo_img = document.getElementById("photo_viewer").children[0]; | ||||
|     const photo_img = document.getElementById("photo_viewer").children[0]; | ||||
|     if (photo_img.style.opacity === "0") | ||||
|     { | ||||
|         disable_hoverzoom(); | ||||
|  | @ -483,7 +483,7 @@ function toggle_hoverzoom(event) | |||
|     { | ||||
|         enable_hoverzoom(event); | ||||
|     } | ||||
|     let content_body = document.getElementById('content_body'); | ||||
|     const content_body = document.getElementById('content_body'); | ||||
|     if (getComputedStyle(content_body).getPropertyValue("--narrow") == 0) | ||||
|     { | ||||
|         add_tag_box.focus(); | ||||
|  | @ -492,8 +492,8 @@ function toggle_hoverzoom(event) | |||
| 
 | ||||
| function move_hoverzoom(event) | ||||
| { | ||||
|     let photo_viewer = document.getElementById("photo_viewer"); | ||||
|     let photo_img = photo_viewer.children[0]; | ||||
|     const photo_viewer = document.getElementById("photo_viewer"); | ||||
|     const photo_img = photo_viewer.children[0]; | ||||
|     let x; | ||||
|     let y; | ||||
| 
 | ||||
|  | @ -563,7 +563,7 @@ setTimeout( | |||
|     */ | ||||
|     function() | ||||
|     { | ||||
|         let content_body = document.getElementById("content_body"); | ||||
|         const content_body = document.getElementById("content_body"); | ||||
|         if (getComputedStyle(content_body).getPropertyValue("--narrow") == 1) | ||||
|         { | ||||
|             add_tag_box.autofocus = false; | ||||
|  |  | |||
|  | @ -369,26 +369,26 @@ These values should match those of the server itself. The purpose of this dict | |||
| is to know that we DON'T need to include these parameters in the url if the | ||||
| selected form values are these. | ||||
| */ | ||||
| PARAM_DEFAULTS = { | ||||
| const PARAM_DEFAULTS = { | ||||
|     'limit': 50, | ||||
|     'view': 'grid', | ||||
| } | ||||
| function add_searchtag(ul, value, inputted_list, li_class) | ||||
| { | ||||
|     console.log("adding " + value); | ||||
|     let already_have = inputted_list.indexOf(value) !== -1; | ||||
|     const already_have = inputted_list.indexOf(value) !== -1; | ||||
|     if (already_have) | ||||
|     {return;} | ||||
| 
 | ||||
|     inputted_list.push(value); | ||||
|     let new_li = document.createElement("li"); | ||||
|     const new_li = document.createElement("li"); | ||||
|     new_li.className = li_class; | ||||
| 
 | ||||
|     let new_span = document.createElement("span"); | ||||
|     const new_span = document.createElement("span"); | ||||
|     new_span.className = "tag_object"; | ||||
|     new_span.innerHTML = value; | ||||
| 
 | ||||
|     let new_delbutton = document.createElement("button") | ||||
|     const new_delbutton = document.createElement("button") | ||||
|     new_delbutton.classList.add("remove_tag_button"); | ||||
|     new_delbutton.classList.add("red_button"); | ||||
|     new_delbutton.onclick = function(){remove_searchtag(ul, value, inputted_list)}; | ||||
|  | @ -429,15 +429,15 @@ function add_searchtag_from_box(box, inputted_list, li_class) | |||
| function remove_searchtag(ul, value, inputted_list) | ||||
| { | ||||
|     console.log("removing " + value); | ||||
|     let lis = ul.children; | ||||
|     const lis = ul.children; | ||||
|     //console.log(lis); | ||||
|     for (const li of lis) | ||||
|     { | ||||
|         let tag_object = li.children[0]; | ||||
|         const tag_object = li.children[0]; | ||||
|         if (! tag_object.classList.contains("tag_object")) | ||||
|         {continue} | ||||
| 
 | ||||
|         let tagname = tag_object.innerHTML; | ||||
|         const tagname = tag_object.innerHTML; | ||||
|         if (tagname != value) | ||||
|         {continue} | ||||
| 
 | ||||
|  | @ -453,23 +453,23 @@ function remove_searchtag(ul, value, inputted_list) | |||
| function add_new_orderby() | ||||
| { | ||||
|     /* Called by the green + button */ | ||||
|     let ul = document.getElementById("search_builder_orderby_ul"); | ||||
|     let lis = ul.children; | ||||
|     const ul = document.getElementById("search_builder_orderby_ul"); | ||||
|     const lis = ul.children; | ||||
|     if (lis.length >= 9) | ||||
|     { | ||||
|         /* 9 because there are only 9 sortable properties */ | ||||
|         return; | ||||
|     } | ||||
|     prev_li = lis[lis.length - 2]; | ||||
|     let new_li = prev_li.cloneNode(true); | ||||
|     const new_li = prev_li.cloneNode(true); | ||||
|     ul.insertBefore(new_li, prev_li.nextSibling); | ||||
| } | ||||
| 
 | ||||
| function orderby_remove_hook(button) | ||||
| { | ||||
|     /* Called by the red button next to orderby dropdowns */ | ||||
|     let li = button.parentElement; | ||||
|     let ul = li.parentElement; | ||||
|     const li = button.parentElement; | ||||
|     const ul = li.parentElement; | ||||
|     // 2 because keep 1 row and the adder button | ||||
|     if (ul.children.length>2) | ||||
|     { | ||||
|  | @ -492,7 +492,7 @@ function orderby_hide_direction_hook(event) | |||
| 
 | ||||
| function simplify_tagnames(tags) | ||||
| { | ||||
|     let new_tags = []; | ||||
|     const new_tags = []; | ||||
|     for (let tag of tags) | ||||
|     { | ||||
|         tag = tag.split("."); | ||||
|  | @ -518,16 +518,16 @@ function submit_search() | |||
|     add_searchtag_from_box(input_forbids, inputted_forbids, "search_builder_forbids_inputted"); | ||||
| 
 | ||||
|     let has_tag_params = false; | ||||
|     let musts = simplify_tagnames(inputted_musts).join(","); | ||||
|     const musts = simplify_tagnames(inputted_musts).join(","); | ||||
|     if (musts) {parameters.push("tag_musts=" + musts); has_tag_params = true;} | ||||
| 
 | ||||
|     let mays = simplify_tagnames(inputted_mays).join(","); | ||||
|     const mays = simplify_tagnames(inputted_mays).join(","); | ||||
|     if (mays) {parameters.push("tag_mays=" + mays); has_tag_params = true;} | ||||
| 
 | ||||
|     let forbids = simplify_tagnames(inputted_forbids).join(","); | ||||
|     const forbids = simplify_tagnames(inputted_forbids).join(","); | ||||
|     if (forbids) {parameters.push("tag_forbids=" + forbids); has_tag_params = true;} | ||||
| 
 | ||||
|     let expression = document.getElementsByName("tag_expression")[0].value; | ||||
|     const expression = document.getElementsByName("tag_expression")[0].value; | ||||
|     if (expression) | ||||
|     { | ||||
|         //expression = expression.replace(new RegExp(" ", 'g'), "-"); | ||||
|  | @ -535,11 +535,11 @@ function submit_search() | |||
|         has_tag_params = true; | ||||
|     } | ||||
| 
 | ||||
|     let basic_inputs = document.getElementsByClassName("basic_param"); | ||||
|     const basic_inputs = document.getElementsByClassName("basic_param"); | ||||
|     for (const basic_input of basic_inputs) | ||||
|     { | ||||
|         let boxname = basic_input.name; | ||||
|         let box = document.getElementsByName(boxname)[0]; | ||||
|         const boxname = basic_input.name; | ||||
|         const box = document.getElementsByName(boxname)[0]; | ||||
|         let value = box.value; | ||||
|         value = value.split("&").join("%26"); | ||||
|         console.log(value); | ||||
|  | @ -555,18 +555,18 @@ function submit_search() | |||
|         parameters.push(boxname + "=" + value); | ||||
|     } | ||||
| 
 | ||||
|     let orderby_rows = document.getElementsByClassName("search_builder_orderby_li"); | ||||
|     const orderby_rows = document.getElementsByClassName("search_builder_orderby_li"); | ||||
|     let orderby_params = []; | ||||
|     for (const orderby_row of orderby_rows) | ||||
|     { | ||||
|         let column = orderby_row.children[0].value; | ||||
|         const column = orderby_row.children[0].value; | ||||
|         if (column == "random") | ||||
|         { | ||||
|             orderby_params.push(column); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             let sorter = orderby_row.children[1].value; | ||||
|             const sorter = orderby_row.children[1].value; | ||||
|             orderby_params.push(column + "-" + sorter); | ||||
|         } | ||||
|     } | ||||
|  | @ -647,18 +647,18 @@ function tag_input_hook_forbids() | |||
| } | ||||
| 
 | ||||
| tag_autocomplete.init_datalist(); | ||||
| var input_musts = document.getElementById("search_builder_musts_input"); | ||||
| var ul_musts = input_musts.parentElement.parentElement; | ||||
| var input_mays = document.getElementById("search_builder_mays_input"); | ||||
| var ul_mays = input_mays.parentElement.parentElement; | ||||
| var input_forbids = document.getElementById("search_builder_forbids_input"); | ||||
| var ul_forbids = input_forbids.parentElement.parentElement; | ||||
| var input_expression = document.getElementById("search_builder_expression_input"); | ||||
| const input_musts = document.getElementById("search_builder_musts_input"); | ||||
| const ul_musts = input_musts.parentElement.parentElement; | ||||
| const input_mays = document.getElementById("search_builder_mays_input"); | ||||
| const ul_mays = input_mays.parentElement.parentElement; | ||||
| const input_forbids = document.getElementById("search_builder_forbids_input"); | ||||
| const ul_forbids = input_forbids.parentElement.parentElement; | ||||
| const input_expression = document.getElementById("search_builder_expression_input"); | ||||
| 
 | ||||
| /* Prefix the form with the parameters from last search */ | ||||
| var inputted_musts = []; | ||||
| var inputted_mays = []; | ||||
| var inputted_forbids = []; | ||||
| const inputted_musts = []; | ||||
| const inputted_mays = []; | ||||
| const inputted_forbids = []; | ||||
| {% for tagtype in ["musts", "mays", "forbids"] %} | ||||
|     {% set key="tag_" + tagtype %} | ||||
|     {% if search_kwargs[key] %} | ||||
|  |  | |||
|  | @ -259,9 +259,9 @@ h2, h3 | |||
| <script type="text/javascript"> | ||||
| let SPECIFIC_TAG = "{{specific_tag.name}}"; | ||||
| 
 | ||||
| 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'); | ||||
| const add_tag_textbox = document.getElementById('add_tag_textbox'); | ||||
| const add_tag_button = document.getElementById('add_tag_button'); | ||||
| const message_area = document.getElementById('message_area'); | ||||
| common.bind_box_to_button(add_tag_textbox, add_tag_button, false); | ||||
| 
 | ||||
| function tag_object_from_li(li) | ||||
|  | @ -395,8 +395,8 @@ function on_save(ed, edit_element_map, display_element_map) | |||
|         ed.hide_spinner(); | ||||
|         if (response.meta.status == 200) | ||||
|         { | ||||
|             let new_name = response.data.name; | ||||
|             let new_description = response.data.description; | ||||
|             const new_name = response.data.name; | ||||
|             const new_description = response.data.description; | ||||
|             document.title = new_name + " | Tags"; | ||||
|             SPECIFIC_TAG = new_name; | ||||
|             window.history.replaceState(null, null, "/tag/" + new_name); | ||||
|  | @ -411,17 +411,17 @@ function on_save(ed, edit_element_map, display_element_map) | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     let name_display = display_element_map["name"]; | ||||
|     let name_editor = edit_element_map["name"]; | ||||
|     let description_display = display_element_map["description"]; | ||||
|     let description_editor = edit_element_map["description"]; | ||||
|     const name_display = display_element_map["name"]; | ||||
|     const name_editor = edit_element_map["name"]; | ||||
|     const description_display = display_element_map["description"]; | ||||
|     const description_editor = edit_element_map["description"]; | ||||
| 
 | ||||
|     let tag_name = name_display.innerText; | ||||
|     let name = name_editor.value; | ||||
|     let description = description_editor.value; | ||||
|     const tag_name = name_display.innerText; | ||||
|     const new_name = name_editor.value; | ||||
|     const new_description = description_editor.value; | ||||
| 
 | ||||
|     ed.show_spinner(); | ||||
|     api.tags.edit(tag_name, name, description, callback) | ||||
|     api.tags.edit(tag_name, new_name, new_description, callback) | ||||
| } | ||||
| 
 | ||||
| function on_cancel(ed, edit_element_map, display_element_map) | ||||
|  | @ -433,9 +433,9 @@ function on_cancel(ed, edit_element_map, display_element_map) | |||
|     } | ||||
| } | ||||
| 
 | ||||
| var name_text = document.getElementById("name_text"); | ||||
| var description_text = document.getElementById("description_text"); | ||||
| var ed = new editor.Editor([name_text, description_text], on_open, on_save, on_cancel); | ||||
| const name_text = document.getElementById("name_text"); | ||||
| const description_text = document.getElementById("description_text"); | ||||
| const ed = new editor.Editor([name_text, description_text], on_open, on_save, on_cancel); | ||||
| {% endif %} | ||||
| </script> | ||||
| </html> | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue