Synchronize Etiquette common.js and YCDL common.js.

master
voussoir 2020-06-17 13:38:20 -07:00
parent e1033d0138
commit d6ca8206b4
1 changed files with 27 additions and 0 deletions

View File

@ -133,6 +133,32 @@ function html_to_element(html)
return template.content.firstChild; return template.content.firstChild;
} }
common.init_atag_merge_params =
function init_atag_merge_params()
{
/*
To create an <a> tag where the ?parameters written on the href are merged
with the parameters of the current page URL, give it the class
"merge_params". If the URL and href contain the same parameter, the href
takes priority.
Example:
URL: ?filter=hello&orderby=score
href: "?orderby=date"
Result: "?filter=hello&orderby=date"
*/
var as = Array.from(document.getElementsByClassName("merge_params"));
page_params = new URLSearchParams(window.location.search);
as.forEach(function(a){
var a_params = new URLSearchParams(a.search);
var new_params = new URLSearchParams();
page_params.forEach(function(value, key) {new_params.set(key, value); });
a_params.forEach(function(value, key) {new_params.set(key, value); });
a.search = new_params.toString();
a.classList.remove("merge_params");
});
}
common.init_button_with_confirm = common.init_button_with_confirm =
function init_button_with_confirm() function init_button_with_confirm()
{ {
@ -258,6 +284,7 @@ function refresh()
common.on_pageload = common.on_pageload =
function on_pageload() function on_pageload()
{ {
common.init_atag_merge_params();
common.init_button_with_confirm(); common.init_button_with_confirm();
} }
document.addEventListener("DOMContentLoaded", common.on_pageload); document.addEventListener("DOMContentLoaded", common.on_pageload);