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

+
+
Default tag color:
+ +
+ 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