diff --git a/timetagger/app/dialogs.py b/timetagger/app/dialogs.py
index 116e024..2a70b85 100644
--- a/timetagger/app/dialogs.py
+++ b/timetagger/app/dialogs.py
@@ -1646,6 +1646,10 @@ def open(self, mode, record, callback=None):
self._delete_but2.onclick = self._delete2
self.maindiv.addEventListener("click", self._autocompleter.clear)
+ # Generate the next random tag color
+ color = utils.color_random()
+ window.simplesettings.set("next_random_color", color)
+
# Enable for some more info (e.g. during dev)
if False:
for x in [f"ID: {record.key}", f"Modified: {dt.time2localstr(record.mt)}"]:
@@ -2148,7 +2152,7 @@ def _set_default_color(self):
self._set_color(self._default_color)
def _set_random_color(self):
- clr = "#" + Math.floor(Math.random() * 16777215).toString(16)
+ clr = utils.color_random()
self._set_color(clr)
def _set_color(self, clr):
@@ -3920,9 +3924,18 @@ def open(self, callback=None):
\uf085 Misc
+
+ Show elapsed time below start-button
+
@@ -3971,6 +3984,7 @@ def open(self, callback=None):
_, # Time repr header
self._repr_form,
_, # Misc header
+ self._tag_form,
self._stopwatch_label,
_, # hr
_, # Section: per device
@@ -4032,6 +4046,12 @@ def open(self, callback=None):
self._today_end_offset.value = today_end_offset
self._today_end_offset.onchange = self._on_today_end_offset_change
+ # Tag color
+ tag_color = window.simplesettings.get("tag_color")
+ self._tag_color = self._tag_form.children[1]
+ self._tag_color.value = tag_color
+ self._tag_color.onchange = self._on_tag_color_change
+
# Stopwatch
show_stopwatch = window.simplesettings.get("show_stopwatch")
self._stopwatch_check = self._stopwatch_label.children[0]
@@ -4128,6 +4148,10 @@ def _on_stopwatch_check(self):
show_stopwatch = bool(self._stopwatch_check.checked)
window.simplesettings.set("show_stopwatch", show_stopwatch)
+ def _on_tag_color_change(self):
+ tag_color = self._tag_color.value
+ window.simplesettings.set("tag_color", tag_color)
+
class GuideDialog(BaseDialog):
"""Dialog to have quick access to the guide."""
diff --git a/timetagger/app/stores.py b/timetagger/app/stores.py
index fa3c37a..5d43e58 100644
--- a/timetagger/app/stores.py
+++ b/timetagger/app/stores.py
@@ -358,7 +358,15 @@ def get_tag_info(self, tagz):
def get_color_for_tag(self, tag):
info = self.get_tag_info(tag)
color = info.get("color", "")
- return color or window.front.COLORS.acc_clr
+ if not color:
+ if window.simplesettings.get("tag_color") == "tag_name":
+ color = utils.color_from_name(tag)
+ elif window.simplesettings.get("tag_color") == "random":
+ color = window.simplesettings.get("next_random_color")
+ else:
+ color = window.front.COLORS.acc_clr
+ self.set_tag_info(tag, {"color": color})
+ return color
class RecordStore(BaseStore):
diff --git a/timetagger/app/utils.py b/timetagger/app/utils.py
index 4139d01..7470314 100644
--- a/timetagger/app/utils.py
+++ b/timetagger/app/utils.py
@@ -105,6 +105,12 @@ def color_from_name(name):
return _lasthashedcolors[name]
+def color_random():
+ """Generate a random color"""
+ clr = "#" + Math.floor(Math.random() * 16777215).toString(16).padStart(6, "0")
+ return clr
+
+
def create_palettes():
# The Github color palette, consisting of 8 strong colors and 8 lighter variants.
# The difference between these variants is pretty big.
@@ -629,6 +635,7 @@ def __init__(self):
"today_snap_offset": "",
"today_end_offset": "",
"show_stopwatch": True,
+ "tag_color": "default",
}
# The data store for synced source
self._store = None