From 5063fc6f289ab5a31242bb426fccf1bea57dee5d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hozman?= <tomas.hozman@pm.me>
Date: Tue, 30 Aug 2022 23:50:20 +0200
Subject: [PATCH] added dark versions of avatar icons

---
 VERSION                                   |  2 +-
 generator/static/js/avatar/internal_ui.js | 42 ++++++++++++++++++++---
 generator/templates/avatar_internal.html  |  4 +--
 generator/templates/avatar_public.html    |  2 ++
 generator/views/generator.py              |  9 ++++-
 5 files changed, 50 insertions(+), 9 deletions(-)

diff --git a/VERSION b/VERSION
index 1c99cf0e..e516bb9d 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.4.4
+1.4.5
diff --git a/generator/static/js/avatar/internal_ui.js b/generator/static/js/avatar/internal_ui.js
index 23215901..e27b3fcc 100644
--- a/generator/static/js/avatar/internal_ui.js
+++ b/generator/static/js/avatar/internal_ui.js
@@ -591,8 +591,18 @@ $("#localization-selection").on(
 		
 		if (data.url !== undefined && data.url !== null) {
 			$("#localization-permalink-wrapper").css("display", "block");
-			$("#localization-permalink").attr("href", data.url);
-			$("#localization-permalink").html(data.url);
+			
+			let url = data.url;
+			
+			if (
+				$("#color-scheme-selection").select2("data").length !== 0 &&
+				$("#color-scheme-selection").select2("data")[0].element.dataset.colorScheme === "white-on-black"
+			) {
+				url += "?tmava=ano";
+			}
+			
+			$("#localization-permalink").attr("href", url);
+			$("#localization-permalink").html(url);
 		} else {
 			$("#localization-permalink-wrapper").css("display", "none");
 		}
@@ -634,8 +644,18 @@ $("#icon-selection").on(
 		
 		if (dataset.url !== undefined && dataset.url !== null) {
 			$("#icon-permalink-wrapper").css("display", "block");
-			$("#icon-permalink").attr("href", dataset.url);
-			$("#icon-permalink").html(dataset.url);
+			
+			let url = dataset.url;
+			
+			if (
+				$("#color-scheme-selection").select2("data").length !== 0 &&
+				$("#color-scheme-selection").select2("data")[0].element.dataset.colorScheme === "white-on-black"
+			) {
+				url += "?tmava=ano";
+			}
+			
+			$("#icon-permalink").attr("href", url);
+			$("#icon-permalink").html(url);
 		} else {
 			$("#icon-permalink-wrapper").css("display", "none");
 		}
@@ -682,7 +702,19 @@ $("#color-scheme-selection").select2({
 $("#color-scheme-selection").on(
 	"select2:select",
 	function(event) {
-		template.setColorScheme(event.params.data.element.dataset.colorScheme);
+		const colorScheme = event.params.data.element.dataset.colorScheme;
+		
+		template.setColorScheme(colorScheme);
+		
+		for (const permalink of $("#icon-permalink,#localization-permalink")) {
+			if (colorScheme === "white-on-black") {
+				permalink.innerHTML += "?tmava=ano";
+			} else {
+				permalink.innerHTML = permalink.innerHTML.replace("?tmava=ano", "");
+			}
+			
+			permalink.href = permalink.innerHTML;
+		}
 	}
 );
 
diff --git a/generator/templates/avatar_internal.html b/generator/templates/avatar_internal.html
index fc7679c8..3e307490 100644
--- a/generator/templates/avatar_internal.html
+++ b/generator/templates/avatar_internal.html
@@ -1673,10 +1673,10 @@
 							data-image-source="{{ url_for('static', filename='images/black-on-white.png') }}"
 							data-color-scheme="black-on-white"
 						>Černá na bílém pozadí</option>
-						<!--<option
+						<option
 							data-image-source="{{ url_for('static', filename='images/white-on-black.png') }}"
 							data-color-scheme="white-on-black"
-						>Bílá na černém pozadí</option>-->
+						>Bílá na černém pozadí</option>
 					</select>
 					
 					<br><br>
diff --git a/generator/templates/avatar_public.html b/generator/templates/avatar_public.html
index 29af78ca..21002e4a 100644
--- a/generator/templates/avatar_public.html
+++ b/generator/templates/avatar_public.html
@@ -123,6 +123,8 @@
 		
 		<script type="text/javascript">
 			function init() {
+				template.setColorScheme("{% if dark %}white-on-black{% else %}black-on-white{% endif %}");
+				
 				{% if icon_localization is not none %}
 					template.darkIconDefaultSource = "{{ url_for(
 						'static',
diff --git a/generator/views/generator.py b/generator/views/generator.py
index 99dfe3cc..6c53b29c 100644
--- a/generator/views/generator.py
+++ b/generator/views/generator.py
@@ -31,6 +31,7 @@ ICON_HEIGHT_SPECIAL_MULTIPLIERS = {
 }
 
 ICON_OFFSET_BOTTOM_SPECIAL_MULTIPLIERS = {
+	"jihlava": 2.5,
 	"kladno": 0,
 	"louny": 0,
 	"louny-bila-na-fialove": 0,
@@ -327,6 +328,11 @@ def view_avatar_generator_with_localization(
 	):
 		raise werkzeug.exceptions.NotFound
 	
+	dark = (
+		flask.request.args.get("tmava", "ne")
+		== "ano"
+	)
+	
 	icon_height_multiplier = 1
 	icon_offset_bottom_multiplier = 1
 	
@@ -339,7 +345,8 @@ def view_avatar_generator_with_localization(
 		icon_localization=icon_localization,
 		base_localization=base_localization,
 		icon_height_multiplier=icon_height_multiplier,
-		icon_offset_bottom_multiplier=icon_offset_bottom_multiplier
+		icon_offset_bottom_multiplier=icon_offset_bottom_multiplier,
+		dark=dark
 	), http.client.OK
 
 
-- 
GitLab