From caee81b53567e4593d2efe906037e479471b9230 Mon Sep 17 00:00:00 2001 From: lola <73595848+lola-cmd@users.noreply.github.com> Date: Mon, 13 Oct 2025 07:39:01 +0200 Subject: [PATCH] feat: if user click on a table data cell, the data in the cell is used to filter the displayed KaptenAllocEntries. --- src/main/scala/pgkn/pages/KaptenAlloc.scala | 32 ++++++++++++++------- styles/pages/kapten-alloc.css | 5 ++++ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/main/scala/pgkn/pages/KaptenAlloc.scala b/src/main/scala/pgkn/pages/KaptenAlloc.scala index 471464d..7cc7d3b 100644 --- a/src/main/scala/pgkn/pages/KaptenAlloc.scala +++ b/src/main/scala/pgkn/pages/KaptenAlloc.scala @@ -72,8 +72,18 @@ object KaptenAlloc: private def renderTableRow( entry: pgkn.model.FormattedKaptenAllocEntry, selectedId: Option[String], - showToast: Var[Boolean] + showToast: Var[Boolean], + searchQuery: Var[String] ): HtmlElement = + + def tdFilter(data: String): HtmlElement = { + td( + span(data, + onClick.mapTo(data) --> searchQuery + ) + ) + } + tr( dataAttr("entry-id") := entry.id, className := selectedId @@ -81,15 +91,15 @@ object KaptenAlloc: .map(_ => "selected") .getOrElse(""), onMountCallback(ctx => scrollToEntry(ctx, entry.id, selectedId)), - onClick --> (_ => copyEntryLink(entry.id, showToast)), - td(entry.entryType), - td(entry.dateStr), - td(entry.weekNum), - td(entry.dayStr), - td(entry.timeStr), - td(entry.group), - td(entry.room), - td(entry.supervisor) + //onClick --> (_ => copyEntryLink(entry.id, showToast)), + tdFilter(entry.entryType), + tdFilter(entry.dateStr), + tdFilter(entry.weekNum), + tdFilter(entry.dayStr), + tdFilter(entry.timeStr), + tdFilter(entry.group), + tdFilter(entry.room), + tdFilter(entry.supervisor) ) def apply( @@ -259,7 +269,7 @@ object KaptenAlloc: ), tbody( children <-- filteredFormattedEntries.map( - _.map(entry => renderTableRow(entry, selectedId, showToast)) + _.map(entry => renderTableRow(entry, selectedId, showToast, searchQuery)) ) ) ) diff --git a/styles/pages/kapten-alloc.css b/styles/pages/kapten-alloc.css index ab418b0..1d85aca 100644 --- a/styles/pages/kapten-alloc.css +++ b/styles/pages/kapten-alloc.css @@ -109,6 +109,11 @@ cursor: pointer; } +.kapten-alloc-table tbody tr:nth-child(n + 1) span:hover { + text-decoration: underline; + color: var(--color-text); +} + .kapten-alloc-table tbody tr:nth-child(odd) { background-color: var(--color-bg); }