diff --git a/package-lock.json b/package-lock.json index 27110f1..49f7832 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pgkn", - "version": "0.0.0", + "version": "1.4.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pgkn", - "version": "0.0.0", + "version": "1.4.2", "devDependencies": { "@scala-js/vite-plugin-scalajs": "^1.1.0", "vite": "npm:rolldown-vite@7.1.14" diff --git a/package.json b/package.json index 0d63368..1cd5dd3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pgkn", "private": true, - "version": "1.4.2", + "version": "1.5.0", "type": "module", "scripts": { "dev": "vite", diff --git a/public/gifs/dropping_soon.gif b/public/gifs/dropping_soon.gif new file mode 100644 index 0000000..2d30f78 Binary files /dev/null and b/public/gifs/dropping_soon.gif differ diff --git a/src/main/scala/pgkn/pages/KaptenAlloc.scala b/src/main/scala/pgkn/pages/KaptenAlloc.scala index 442bc33..677f900 100644 --- a/src/main/scala/pgkn/pages/KaptenAlloc.scala +++ b/src/main/scala/pgkn/pages/KaptenAlloc.scala @@ -97,31 +97,57 @@ object KaptenAlloc: selectedId: Option[String] ): HtmlElement = val searchQuery = Var("") - val showPassed = Var(selectedId.isDefined) + val showTodayOnly = Var(false) + val caseSensitive = Var(false) val showToast = Var(false) val timeFilteredEntries = KaptenAllocDataService.entries - .combineWith(showPassed.signal) - .map((entries, showPassedSessions) => - if showPassedSessions then entries + .combineWith(showTodayOnly.signal) + .map((entries, showTodayOnly) => + if !showTodayOnly then entries else - val now = new js.Date().getTime() - entries.filter(_.time.toDouble >= now) + val startOfToday = + val d = new js.Date(); + d.setHours(0,0,0,0); + d.getTime(); + val endOfToday = + val d = new js.Date(); + d.setHours(23,59,59,59); + d.getTime(); + entries.filter(entry => + entry.time.toDouble >= startOfToday && + entry.time.toDouble <= endOfToday + ) ) + val formattedEntries = timeFilteredEntries.map(_.map(_.toFormatted)) val filteredFormattedEntries = formattedEntries .combineWith(searchQuery.signal) - .map((entries, query) => + .combineWith(caseSensitive.signal) + .map((entries, query, isCaseSensitive) => if query.trim.isEmpty then entries else - val terms = query.toLowerCase.split("\\s+").filter(_.nonEmpty) + val terms = if isCaseSensitive then + query.split("\\s+").filter(_.nonEmpty) + else + query.toLowerCase.split("\\s+").filter(_.nonEmpty) entries.filter(entry => terms.forall(term => - entry.entryType.toLowerCase.contains(term) || + if isCaseSensitive then + entry.entryType.contains(term) || + entry.dateStr.contains(term) || + entry.weekNum.contains(term) || + entry.dayStr.contains(term) || + entry.timeStr.contains(term) || + entry.group.contains(term) || + entry.room.contains(term) || + entry.supervisor.contains(term) + else + entry.entryType.toLowerCase.contains(term) || entry.dateStr.toLowerCase.contains(term) || entry.weekNum.toLowerCase.contains(term) || entry.dayStr.toLowerCase.contains(term) || @@ -212,10 +238,18 @@ object KaptenAlloc: label( input( typ := "checkbox", - checked <-- showPassed.signal, - onInput.mapToChecked --> showPassed + checked <-- showTodayOnly.signal, + onInput.mapToChecked --> showTodayOnly + ), + span("Idag?") + ), + label( + input( + typ := "checkbox", + checked <-- caseSensitive.signal, + onInput.mapToChecked --> caseSensitive ), - span("Inkludera passerade tider") + span("Versalkänslig") ) ), div( diff --git a/src/main/scala/pgkn/pages/Sigrid.scala b/src/main/scala/pgkn/pages/Sigrid.scala index 6262f3e..3389e9e 100644 --- a/src/main/scala/pgkn/pages/Sigrid.scala +++ b/src/main/scala/pgkn/pages/Sigrid.scala @@ -9,6 +9,9 @@ object Sigrid: mainTag( NavHeader(router), div( - p("Sigrid: Coming soon") + styleAttr := "display: flex; justify-self: center;", + img(src:="/gifs/dropping_soon.gif", + width:= "30rem" + ) ) )