diff options
Diffstat (limited to 'settings.js')
| -rw-r--r-- | settings.js | 78 | 
1 files changed, 78 insertions, 0 deletions
| diff --git a/settings.js b/settings.js new file mode 100644 index 0000000..a82281d --- /dev/null +++ b/settings.js @@ -0,0 +1,78 @@ +/* Set all the settings any time someone loads a page */ +function set_settings() +{ +	change_theme(); +	remove_titles(); +	remove_text(); +} + +/* Initialize the settings page by flipping the switches and such */ +function settings_init() +{ +	document.getElementById("page_theme").checked = (localStorage.getItem("theme") === "dark"); +	document.getElementById("page_titles").checked = (localStorage.getItem("remove_titles") === "true"); +	document.getElementById("page_text").checked = (localStorage.getItem("remove_text") === "true"); +} + +/* Change the users preferred theme. */ +function change_theme() +{ +	let theme; +	try { +		/* Settings page */ +		theme = (document.getElementById("page_theme").checked) ? "dark" : "light"; +	} catch { +		/* Index page */ +		theme = (localStorage.getItem("theme") === "dark") ? "dark" : "light"; +	} + +	document.documentElement.setAttribute("theme", theme); +	localStorage.setItem("theme", theme); +} + +/* Remove unnecessary titles */ +function remove_titles() +{ +	let checked; +	try { +		/* Settings page */ +		checked = document.getElementById("page_titles").checked; +	} catch { +		/* Index page */ +		if (localStorage.getItem("remove_titles") === "true") +			checked = true; +		else +			checked = false; +	} + +	if (checked && !window.location.href.endsWith("settings.html")) +		for (let element of document.getElementsByTagName("h3")) +			element.classList.add("hidden"); +	localStorage.setItem("remove_titles", checked.toString()); +} + +/* Remove unnecessary text */ +function remove_text() +{ +	let checked; +	try { +		/* Settings page */ +		checked = document.getElementById("page_text").checked; +	} catch { +		/* Index page */ +		if (localStorage.getItem("remove_text") === "true") +			checked = true; +		else +			checked = false; +	} + +	if (checked) +		for (let element of document.getElementsByClassName("toggleable")) +			element.classList.add("hidden"); +	localStorage.setItem("remove_text", checked.toString()); +} + +/* Conform to the users preferences */ +if (window.location.href.endsWith("settings.html")) +	settings_init(); +set_settings(); |