From 1790a3f5447907338cdbbfc9f44256cf74f36e31 Mon Sep 17 00:00:00 2001 From: Joel Stålnacke Date: Sat, 2 Aug 2025 18:28:44 +0300 Subject: Rebrand to Aamukampa --- Aamukampa.Core/Aamukampa.Core.fsproj | 18 ++ Aamukampa.Core/Library.fs | 27 ++ Aamukampa.Core/Types.fs | 42 ++++ Aamukampa.Core/Views.fs | 88 +++++++ Aamukampa.Frontend/Aamukampa.Frontend.fsproj | 21 ++ Aamukampa.Frontend/App.fs | 33 +++ Aamukampa.Frontend/index.html | 11 + Aamukampa.Frontend/package.json | 10 + Aamukampa.Frontend/vite.config.ts | 25 ++ Aamukampa.Frontend/yarn.lock | 360 +++++++++++++++++++++++++++ Aamukampa.Web/Aamukampa.Web.fsproj | 28 +++ Aamukampa.Web/Modules/Index.fs | 31 +++ Aamukampa.Web/Program.fs | 23 ++ Aamukampa.Web/Properties/launchSettings.json | 23 ++ Aamukampa.Web/appsettings.Development.json | 8 + Aamukampa.Web/appsettings.json | 9 + Aamukampa.Web/wwwroot/js/app.js | 3 + Aamukampa.Web/wwwroot/styles.css | 72 ++++++ Aamukampa.sln | 34 +++ TJLaskuri.Core/Library.fs | 27 -- TJLaskuri.Core/TJLaskuri.Core.fsproj | 18 -- TJLaskuri.Core/Types.fs | 42 ---- TJLaskuri.Core/Views.fs | 88 ------- TJLaskuri.Frontend/App.fs | 33 --- TJLaskuri.Frontend/Message.fs | 4 - TJLaskuri.Frontend/TJLaskuri.Frontend.fsproj | 22 -- TJLaskuri.Frontend/index.html | 11 - TJLaskuri.Frontend/package.json | 10 - TJLaskuri.Frontend/vite.config.ts | 25 -- TJLaskuri.Frontend/yarn.lock | 360 --------------------------- TJLaskuri.Web/Modules/Index.fs | 31 --- TJLaskuri.Web/Program.fs | 23 -- TJLaskuri.Web/Properties/launchSettings.json | 23 -- TJLaskuri.Web/TJLaskuri.Web.fsproj | 28 --- TJLaskuri.Web/appsettings.Development.json | 8 - TJLaskuri.Web/appsettings.json | 9 - TJLaskuri.Web/wwwroot/styles.css | 72 ------ TJLaskuri.sln | 34 --- 38 files changed, 866 insertions(+), 868 deletions(-) create mode 100644 Aamukampa.Core/Aamukampa.Core.fsproj create mode 100644 Aamukampa.Core/Library.fs create mode 100644 Aamukampa.Core/Types.fs create mode 100644 Aamukampa.Core/Views.fs create mode 100644 Aamukampa.Frontend/Aamukampa.Frontend.fsproj create mode 100644 Aamukampa.Frontend/App.fs create mode 100644 Aamukampa.Frontend/index.html create mode 100644 Aamukampa.Frontend/package.json create mode 100644 Aamukampa.Frontend/vite.config.ts create mode 100644 Aamukampa.Frontend/yarn.lock create mode 100644 Aamukampa.Web/Aamukampa.Web.fsproj create mode 100644 Aamukampa.Web/Modules/Index.fs create mode 100644 Aamukampa.Web/Program.fs create mode 100644 Aamukampa.Web/Properties/launchSettings.json create mode 100644 Aamukampa.Web/appsettings.Development.json create mode 100644 Aamukampa.Web/appsettings.json create mode 100644 Aamukampa.Web/wwwroot/js/app.js create mode 100644 Aamukampa.Web/wwwroot/styles.css create mode 100644 Aamukampa.sln delete mode 100644 TJLaskuri.Core/Library.fs delete mode 100644 TJLaskuri.Core/TJLaskuri.Core.fsproj delete mode 100644 TJLaskuri.Core/Types.fs delete mode 100644 TJLaskuri.Core/Views.fs delete mode 100644 TJLaskuri.Frontend/App.fs delete mode 100644 TJLaskuri.Frontend/Message.fs delete mode 100644 TJLaskuri.Frontend/TJLaskuri.Frontend.fsproj delete mode 100644 TJLaskuri.Frontend/index.html delete mode 100644 TJLaskuri.Frontend/package.json delete mode 100644 TJLaskuri.Frontend/vite.config.ts delete mode 100644 TJLaskuri.Frontend/yarn.lock delete mode 100644 TJLaskuri.Web/Modules/Index.fs delete mode 100644 TJLaskuri.Web/Program.fs delete mode 100644 TJLaskuri.Web/Properties/launchSettings.json delete mode 100644 TJLaskuri.Web/TJLaskuri.Web.fsproj delete mode 100644 TJLaskuri.Web/appsettings.Development.json delete mode 100644 TJLaskuri.Web/appsettings.json delete mode 100644 TJLaskuri.Web/wwwroot/styles.css delete mode 100644 TJLaskuri.sln diff --git a/Aamukampa.Core/Aamukampa.Core.fsproj b/Aamukampa.Core/Aamukampa.Core.fsproj new file mode 100644 index 0000000..bc6029f --- /dev/null +++ b/Aamukampa.Core/Aamukampa.Core.fsproj @@ -0,0 +1,18 @@ + + + + net9.0 + true + + + + + + + + + + + + + diff --git a/Aamukampa.Core/Library.fs b/Aamukampa.Core/Library.fs new file mode 100644 index 0000000..aa7b7ea --- /dev/null +++ b/Aamukampa.Core/Library.fs @@ -0,0 +1,27 @@ +namespace TJLaskuri.Core + +open System + +module Domain = + // TODO: More precise time: hours, minutes + // TODO: Time until service starts + + let getStartDate kontingent = + match serviceStartDates.TryGetValue(kontingent) with + | true, startDate -> Some startDate + | false, _ -> None + + let getEndDate kontingent serviceTime = + getStartDate kontingent + |> Option.map (fun startDate -> + ServiceTime.getDays serviceTime + |> fun x -> x - 1 // Count start date as well + |> startDate.AddDays) + + let getTimeCompleted kontingent (now : DateTime) = + getStartDate kontingent + |> Option.map (fun date -> now.AddDays(1) - date) + + let getTimeLeft kontingent serviceTime (now : DateTime) = + getEndDate kontingent serviceTime + |> Option.map (fun date -> date - now) diff --git a/Aamukampa.Core/Types.fs b/Aamukampa.Core/Types.fs new file mode 100644 index 0000000..0c5b2d4 --- /dev/null +++ b/Aamukampa.Core/Types.fs @@ -0,0 +1,42 @@ +namespace TJLaskuri.Core + +open System +open System.Collections.Generic + +[] +module Types = + /// Saapumiserä/kontingent N/Year + /// For example, 2/25 is { N = 2; Year = 2025 } + // Year field is first so that kontingents are sorted year first + type Kontingent = { Year : int; N : int } + + type ServiceTime = + | OneSixFive + | TwoFiveFive + | ThreeFourSeven + + module ServiceTime = + let getDays = function + | OneSixFive -> 165 + | TwoFiveFive -> 255 + | ThreeFourSeven -> 347 + + let kontingent n year = { N = n; Year = year } + + let serviceStartDates = + let date day month year = + DateTime((year : int), month, day) + let entry n year endDate = + let k = kontingent n year + KeyValuePair( + k, endDate) + + Dictionary([ + entry 2 2024 (date 8 7 2024) + entry 1 2025 (date 6 1 2025) + entry 2 2025 (date 7 7 2025) + entry 1 2026 (date 5 1 2026) + entry 2 2026 (date 6 7 2026) + entry 1 2027 (date 4 1 2027) + entry 2 2027 (date 5 7 2027) + ]) diff --git a/Aamukampa.Core/Views.fs b/Aamukampa.Core/Views.fs new file mode 100644 index 0000000..939acec --- /dev/null +++ b/Aamukampa.Core/Views.fs @@ -0,0 +1,88 @@ +namespace TJLaskuri.Core.Views + +open System +open Falco.Markup +open Elem +open Attr +open Text + +module Document = + let view documentBody = + html [ lang "fi" ] [ + head [] [ + meta [ charset "utf-8" ] + meta [ name "viewport"; content "width=device-width" ] + Elem.title [] [ raw "TJ-laskuri" ] + script [ type' "module"; src "/js/app.js" ] [] + link [ rel "stylesheet"; href "/styles.css" ] + ] + body [] [ + documentBody + ] + ] + +module Main = + type Model = { + TimeLeft : TimeSpan + TimeCompleted : TimeSpan + } + + let view model = + main [] [ + div [ class' "counter" ] [ + Elem.span [ class' "counter_title" ] [ + raw "Tänään jäljellä" + ] + Elem.span [ class' "counter_value" ] [ + enc (string <| Math.Ceiling model.TimeLeft.TotalDays) + ] + Elem.span [ class' "counter_mornings" ] [ + raw " aamua" + ] + ] + + div [ class' "progress-bar" ] [ + let p = 100.0 * (1.0 - model.TimeLeft / (model.TimeLeft + model.TimeCompleted)) + let cssWidth = sprintf "%s%%" (p.ToString("F2")) + + div [ + class' "progress-bar_value" + style <| + sprintf "background-color: green; width: %s" + cssWidth + ] [ + span <| sprintf "%s %%" (p.ToString("F2")) + ] + ] + + Elem.p [ + style "text-align: center; font-size: 1.5rem;" + ] [ + enc "2/25 347" + ] + + // div [] [ + // Elem.label [ for' "kontingent-select" ] [ raw "Saapumiserä:" ] + // select [ id "kontingent-select" ] [ + // option [ value "1/25" ] [ enc "1/25" ] + // option [ value "2/25" ] [ enc "2/25" ] + // option [ value "1/26" ] [ enc "1/26" ] + // option [ value "2/26" ] [ enc "2/26" ] + // ] + // ] + + // div [] [ + // Elem.p [] [ + // span "Tunteina" + // enc (string model.TimeLeft.TotalHours) + // ] + // Elem.p [] [ + // span "Sekunteina" + // enc (string model.TimeLeft.TotalSeconds) + // ] + // Elem.p [] [ + // span "Aamuja ohi " + // enc (string <| Math.Floor model.TimeCompleted.TotalDays) + // ] + // ] + ] diff --git a/Aamukampa.Frontend/Aamukampa.Frontend.fsproj b/Aamukampa.Frontend/Aamukampa.Frontend.fsproj new file mode 100644 index 0000000..f00fb49 --- /dev/null +++ b/Aamukampa.Frontend/Aamukampa.Frontend.fsproj @@ -0,0 +1,21 @@ + + + + Exe + net9.0 + + + + + + + + + + + + + + + + diff --git a/Aamukampa.Frontend/App.fs b/Aamukampa.Frontend/App.fs new file mode 100644 index 0000000..c83ed6a --- /dev/null +++ b/Aamukampa.Frontend/App.fs @@ -0,0 +1,33 @@ +open System +open Browser.Dom +open TJLaskuri.Core + +DateTime.Now +|> printfn "It is %O" + +let k = kontingent 2 2025 +let st = ThreeFourSeven + +let currentTime = + // DateTime(2025, 7, 5) + // DateTime(2026, 6, 18) + // DateTime(2026, 6, 17) + DateTime.Today + // DateTime.Now + // Domain.getStartDate k |> Option.get + +// currentTime +// |> Domain.getTimeLeft k st +// |> function +// | Some left -> +// let el = document.createElement "p" +// el.innerHTML <- sprintf "Tänään jäljellä:
%O
aamua" left.TotalDays +// document.body.appendChild(el) |> ignore +// | None -> +// printfn "Error: unknown kontingent" +// +// let startDate = Domain.getStartDate k |> Option.get +// let el = document.createElement "p" +// el.innerHTML <- sprintf "Aloituspäivä: %O
Aamuja ohi %d" +// startDate (Domain.getTimeCompleted k currentTime |> Option.get).Days +// document.body.appendChild(el) |> ignore diff --git a/Aamukampa.Frontend/index.html b/Aamukampa.Frontend/index.html new file mode 100644 index 0000000..79b1c82 --- /dev/null +++ b/Aamukampa.Frontend/index.html @@ -0,0 +1,11 @@ + + + + + + TJ-laskuri + + + + + diff --git a/Aamukampa.Frontend/package.json b/Aamukampa.Frontend/package.json new file mode 100644 index 0000000..0632bcb --- /dev/null +++ b/Aamukampa.Frontend/package.json @@ -0,0 +1,10 @@ +{ + "name": "TJLaskuri.Frontend", + "version": "1.0.0", + "type": "module", + "main": "App.fs.js", + "license": "EUPL-1.2", + "devDependencies": { + "vite": "^7.0.6" + } +} diff --git a/Aamukampa.Frontend/vite.config.ts b/Aamukampa.Frontend/vite.config.ts new file mode 100644 index 0000000..2dd7341 --- /dev/null +++ b/Aamukampa.Frontend/vite.config.ts @@ -0,0 +1,25 @@ +import { defineConfig } from 'vite' + +// https://vitejs.dev/config/ +export default defineConfig({ + clearScreen: false, + server: { + watch: { + ignored: [ + "**/*.fs" // Don't watch F# files + ] + }, + }, + build: { + rollupOptions: { + output: { + // Remove hash from output so we can copy the file + // to the content root of the web app + entryFileNames: `[name].js`, + + // chunkFileNames: `[name].js`, + // assetFileNames: `[name].[ext]` + } + } + } +}) diff --git a/Aamukampa.Frontend/yarn.lock b/Aamukampa.Frontend/yarn.lock new file mode 100644 index 0000000..3b997b1 --- /dev/null +++ b/Aamukampa.Frontend/yarn.lock @@ -0,0 +1,360 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@esbuild/aix-ppc64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz#a1414903bb38027382f85f03dda6065056757727" + integrity sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA== + +"@esbuild/android-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz#c859994089e9767224269884061f89dae6fb51c6" + integrity sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w== + +"@esbuild/android-arm@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.8.tgz#96a8f2ca91c6cd29ea90b1af79d83761c8ba0059" + integrity sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw== + +"@esbuild/android-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.8.tgz#a3a626c4fec4a024a9fa8c7679c39996e92916f0" + integrity sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA== + +"@esbuild/darwin-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz#a5e1252ca2983d566af1c0ea39aded65736fc66d" + integrity sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw== + +"@esbuild/darwin-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz#5271b0df2bb12ce8df886704bfdd1c7cc01385d2" + integrity sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg== + +"@esbuild/freebsd-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz#d0a0e7fdf19733b8bb1566b81df1aa0bb7e46ada" + integrity sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA== + +"@esbuild/freebsd-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz#2de8b2e0899d08f1cb1ef3128e159616e7e85343" + integrity sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw== + +"@esbuild/linux-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz#a4209efadc0c2975716458484a4e90c237c48ae9" + integrity sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w== + +"@esbuild/linux-arm@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz#ccd9e291c24cd8d9142d819d463e2e7200d25b19" + integrity sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg== + +"@esbuild/linux-ia32@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz#006ad1536d0c2b28fb3a1cf0b53bcb85aaf92c4d" + integrity sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg== + +"@esbuild/linux-loong64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz#127b3fbfb2c2e08b1397e985932f718f09a8f5c4" + integrity sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ== + +"@esbuild/linux-mips64el@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz#837d1449517791e3fa7d82675a2d06d9f56cb340" + integrity sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw== + +"@esbuild/linux-ppc64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz#aa2e3bd93ab8df084212f1895ca4b03c42d9e0fe" + integrity sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ== + +"@esbuild/linux-riscv64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz#a340620e31093fef72767dd28ab04214b3442083" + integrity sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg== + +"@esbuild/linux-s390x@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz#ddfed266c8c13f5efb3105a0cd47f6dcd0e79e71" + integrity sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg== + +"@esbuild/linux-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz#9a4f78c75c051e8c060183ebb39a269ba936a2ac" + integrity sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ== + +"@esbuild/netbsd-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz#902c80e1d678047926387230bc037e63e00697d0" + integrity sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw== + +"@esbuild/netbsd-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz#2d9eb4692add2681ff05a14ce99de54fbed7079c" + integrity sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg== + +"@esbuild/openbsd-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz#89c3b998c6de739db38ab7fb71a8a76b3fa84a45" + integrity sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ== + +"@esbuild/openbsd-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz#2f01615cf472b0e48c077045cfd96b5c149365cc" + integrity sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ== + +"@esbuild/openharmony-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz#a201f720cd2c3ebf9a6033fcc3feb069a54b509a" + integrity sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg== + +"@esbuild/sunos-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz#07046c977985a3334667f19e6ab3a01a80862afb" + integrity sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w== + +"@esbuild/win32-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz#4a5470caf0d16127c05d4833d4934213c69392d1" + integrity sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ== + +"@esbuild/win32-ia32@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz#3de3e8470b7b328d99dbc3e9ec1eace207e5bbc4" + integrity sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg== + +"@esbuild/win32-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz#610d7ea539d2fcdbe39237b5cc175eb2c4451f9c" + integrity sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw== + +"@rollup/rollup-android-arm-eabi@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz#292e25953d4988d3bd1af0f5ebbd5ee4d65c90b4" + integrity sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA== + +"@rollup/rollup-android-arm64@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz#053b3def3451e6fc1a9078188f22799e868d7c59" + integrity sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ== + +"@rollup/rollup-darwin-arm64@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz#98d90445282dec54fd05440305a5e8df79a91ece" + integrity sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ== + +"@rollup/rollup-darwin-x64@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz#fe05f95a736423af5f9c3a59a70f41ece52a1f20" + integrity sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA== + +"@rollup/rollup-freebsd-arm64@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz#41e1fbdc1f8c3dc9afb6bc1d6e3fb3104bd81eee" + integrity sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg== + +"@rollup/rollup-freebsd-x64@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz#69131e69cb149d547abb65ef3b38fc746c940e24" + integrity sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw== + +"@rollup/rollup-linux-arm-gnueabihf@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz#977ded91c7cf6fc0d9443bb9c0a064e45a805267" + integrity sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA== + +"@rollup/rollup-linux-arm-musleabihf@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz#dc034fc3c0f0eb5c75b6bc3eca3b0b97fd35f49a" + integrity sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ== + +"@rollup/rollup-linux-arm64-gnu@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz#5e92613768d3de3ffcabc965627dd0a59b3e7dfc" + integrity sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng== + +"@rollup/rollup-linux-arm64-musl@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz#2a44f88e83d28b646591df6e50aa0a5a931833d8" + integrity sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg== + +"@rollup/rollup-linux-loongarch64-gnu@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz#bd5897e92db7fbf7dc456f61d90fff96c4651f2e" + integrity sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA== + +"@rollup/rollup-linux-ppc64-gnu@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz#a7065025411c14ad9ec34cc1cd1414900ec2a303" + integrity sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw== + +"@rollup/rollup-linux-riscv64-gnu@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz#17f9c0c675e13ef4567cfaa3730752417257ccc3" + integrity sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ== + +"@rollup/rollup-linux-riscv64-musl@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz#bc6ed3db2cedc1ba9c0a2183620fe2f792c3bf3f" + integrity sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw== + +"@rollup/rollup-linux-s390x-gnu@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz#440c4f6753274e2928e06d2a25613e5a1cf97b41" + integrity sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA== + +"@rollup/rollup-linux-x64-gnu@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz#1e936446f90b2574ea4a83b4842a762cc0a0aed3" + integrity sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA== + +"@rollup/rollup-linux-x64-musl@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz#c6f304dfba1d5faf2be5d8b153ccbd8b5d6f1166" + integrity sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA== + +"@rollup/rollup-win32-arm64-msvc@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz#b4ad4a79219892aac112ed1c9d1356cad0566ef5" + integrity sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g== + +"@rollup/rollup-win32-ia32-msvc@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz#b1b22eb2a9568048961e4a6f540438b4a762aa62" + integrity sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ== + +"@rollup/rollup-win32-x64-msvc@4.46.2": + version "4.46.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz#87079f137b5fdb75da11508419aa998cc8cc3d8b" + integrity sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg== + +"@types/estree@1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +esbuild@^0.25.0: + version "0.25.8" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.8.tgz#482d42198b427c9c2f3a81b63d7663aecb1dda07" + integrity sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.8" + "@esbuild/android-arm" "0.25.8" + "@esbuild/android-arm64" "0.25.8" + "@esbuild/android-x64" "0.25.8" + "@esbuild/darwin-arm64" "0.25.8" + "@esbuild/darwin-x64" "0.25.8" + "@esbuild/freebsd-arm64" "0.25.8" + "@esbuild/freebsd-x64" "0.25.8" + "@esbuild/linux-arm" "0.25.8" + "@esbuild/linux-arm64" "0.25.8" + "@esbuild/linux-ia32" "0.25.8" + "@esbuild/linux-loong64" "0.25.8" + "@esbuild/linux-mips64el" "0.25.8" + "@esbuild/linux-ppc64" "0.25.8" + "@esbuild/linux-riscv64" "0.25.8" + "@esbuild/linux-s390x" "0.25.8" + "@esbuild/linux-x64" "0.25.8" + "@esbuild/netbsd-arm64" "0.25.8" + "@esbuild/netbsd-x64" "0.25.8" + "@esbuild/openbsd-arm64" "0.25.8" + "@esbuild/openbsd-x64" "0.25.8" + "@esbuild/openharmony-arm64" "0.25.8" + "@esbuild/sunos-x64" "0.25.8" + "@esbuild/win32-arm64" "0.25.8" + "@esbuild/win32-ia32" "0.25.8" + "@esbuild/win32-x64" "0.25.8" + +fdir@^6.4.4, fdir@^6.4.6: + version "6.4.6" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.6.tgz#2b268c0232697063111bbf3f64810a2a741ba281" + integrity sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w== + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^4.0.2, picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +postcss@^8.5.6: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +rollup@^4.40.0: + version "4.46.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.46.2.tgz#09b1a45d811e26d09bed63dc3ecfb6831c16ce32" + integrity sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg== + dependencies: + "@types/estree" "1.0.8" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.46.2" + "@rollup/rollup-android-arm64" "4.46.2" + "@rollup/rollup-darwin-arm64" "4.46.2" + "@rollup/rollup-darwin-x64" "4.46.2" + "@rollup/rollup-freebsd-arm64" "4.46.2" + "@rollup/rollup-freebsd-x64" "4.46.2" + "@rollup/rollup-linux-arm-gnueabihf" "4.46.2" + "@rollup/rollup-linux-arm-musleabihf" "4.46.2" + "@rollup/rollup-linux-arm64-gnu" "4.46.2" + "@rollup/rollup-linux-arm64-musl" "4.46.2" + "@rollup/rollup-linux-loongarch64-gnu" "4.46.2" + "@rollup/rollup-linux-ppc64-gnu" "4.46.2" + "@rollup/rollup-linux-riscv64-gnu" "4.46.2" + "@rollup/rollup-linux-riscv64-musl" "4.46.2" + "@rollup/rollup-linux-s390x-gnu" "4.46.2" + "@rollup/rollup-linux-x64-gnu" "4.46.2" + "@rollup/rollup-linux-x64-musl" "4.46.2" + "@rollup/rollup-win32-arm64-msvc" "4.46.2" + "@rollup/rollup-win32-ia32-msvc" "4.46.2" + "@rollup/rollup-win32-x64-msvc" "4.46.2" + fsevents "~2.3.2" + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +tinyglobby@^0.2.14: + version "0.2.14" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.14.tgz#5280b0cf3f972b050e74ae88406c0a6a58f4079d" + integrity sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ== + dependencies: + fdir "^6.4.4" + picomatch "^4.0.2" + +vite@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/vite/-/vite-7.0.6.tgz#7866ccb176db4bbeec0adfb3f907f077881591d0" + integrity sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg== + dependencies: + esbuild "^0.25.0" + fdir "^6.4.6" + picomatch "^4.0.3" + postcss "^8.5.6" + rollup "^4.40.0" + tinyglobby "^0.2.14" + optionalDependencies: + fsevents "~2.3.3" diff --git a/Aamukampa.Web/Aamukampa.Web.fsproj b/Aamukampa.Web/Aamukampa.Web.fsproj new file mode 100644 index 0000000..b9bf516 --- /dev/null +++ b/Aamukampa.Web/Aamukampa.Web.fsproj @@ -0,0 +1,28 @@ + + + + net9.0 + + + + + + + + + + + + + + + + + + + + + diff --git a/Aamukampa.Web/Modules/Index.fs b/Aamukampa.Web/Modules/Index.fs new file mode 100644 index 0000000..7623779 --- /dev/null +++ b/Aamukampa.Web/Modules/Index.fs @@ -0,0 +1,31 @@ +module TJLaskuri.Web.Modules.Index + +open System +open Falco +open TJLaskuri.Core + +[] +module Views = + open TJLaskuri.Core.Views + + type Model = { + Counter : Main.Model + } + + let view model = + Main.view model.Counter + |> Document.view + +let get : HttpHandler = + fun ctx -> + let time = DateTime.Now + let kontingent = kontingent 2 2025 + let timeLeft = Domain.getTimeLeft kontingent ThreeFourSeven time |> Option.get + let completed = Domain.getTimeCompleted kontingent time |> Option.get + + view { + Counter = { + TimeLeft = timeLeft + TimeCompleted = completed + } + } |> Response.ofHtml <| ctx diff --git a/Aamukampa.Web/Program.fs b/Aamukampa.Web/Program.fs new file mode 100644 index 0000000..831d8a8 --- /dev/null +++ b/Aamukampa.Web/Program.fs @@ -0,0 +1,23 @@ +open Microsoft.AspNetCore.Builder +open Microsoft.Extensions.Hosting +open Falco +open Falco.Routing +open TJLaskuri.Web.Modules + +let endpoints = [ + get "/" Index.get + ] + +[] +let main args = + let builder = WebApplication.CreateBuilder(args) + let app = builder.Build() + + app.MapStaticAssets() |> ignore + + app + .UseRouting() + .UseFalco(endpoints) + .Run() + + 0 // Exit code diff --git a/Aamukampa.Web/Properties/launchSettings.json b/Aamukampa.Web/Properties/launchSettings.json new file mode 100644 index 0000000..6d3fec3 --- /dev/null +++ b/Aamukampa.Web/Properties/launchSettings.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5270", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7106;http://localhost:5270", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Aamukampa.Web/appsettings.Development.json b/Aamukampa.Web/appsettings.Development.json new file mode 100644 index 0000000..ff66ba6 --- /dev/null +++ b/Aamukampa.Web/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Aamukampa.Web/appsettings.json b/Aamukampa.Web/appsettings.json new file mode 100644 index 0000000..4d56694 --- /dev/null +++ b/Aamukampa.Web/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/Aamukampa.Web/wwwroot/js/app.js b/Aamukampa.Web/wwwroot/js/app.js new file mode 100644 index 0000000..6da3f46 --- /dev/null +++ b/Aamukampa.Web/wwwroot/js/app.js @@ -0,0 +1,3 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();const D=Symbol("numeric");function Ie(e){return typeof e=="number"||typeof e=="bigint"||e?.[D]}function ze(e,t){return typeof e=="number"||typeof e=="bigint"?et?1:0:e.CompareTo(t)}function re(e,t){return typeof e=="number"?e*t:typeof e=="bigint"?e*BigInt(t):e[D]().multiply(t)}function U(e,t){return typeof e=="number"?e.toFixed(t):typeof e=="bigint"?e:e[D]().toFixed(t)}function z(e,t){return typeof e=="number"?e.toPrecision(t):typeof e=="bigint"?e:e[D]().toPrecision(t)}function J(e,t){return typeof e=="number"?e.toExponential(t):typeof e=="bigint"?e:e[D]().toExponential(t)}function K(e){return typeof e=="number"?(Number(e)>>>0).toString(16):typeof e=="bigint"?BigInt.asUintN(64,e).toString(16):e[D]().toHex()}function G(e){return Array.isArray(e)||ArrayBuffer.isView(e)}function Je(e){return e!=null&&typeof e.GetEnumerator=="function"}function Ke(e){return e!=null&&typeof e.CompareTo=="function"}function We(e){return e!=null&&typeof e.Equals=="function"}function Oe(e){return e!=null&&typeof e.GetHashCode=="function"}function Ye(e){return e!=null&&typeof e.Dispose=="function"}function k(e){Ye(e)&&e.Dispose()}function N(){return null}function W(e,t){return Object.getPrototypeOf(e)?.constructor===Object.getPrototypeOf(t)?.constructor}class Ze{constructor(t){this.iter=t,this.current=N()}"System.Collections.Generic.IEnumerator`1.get_Current"(){return this.current}"System.Collections.IEnumerator.get_Current"(){return this.current}"System.Collections.IEnumerator.MoveNext"(){const t=this.iter.next();return this.current=t.value,!t.done}"System.Collections.IEnumerator.Reset"(){throw new Error("JS iterators cannot be reset")}Dispose(){}}function b(e){return Je(e)?e.GetEnumerator():new Ze(e[Symbol.iterator]())}function oe(e){return{next(){const t=e["System.Collections.IEnumerator.MoveNext"](),n=t?e["System.Collections.Generic.IEnumerator`1.get_Current"]():void 0;return{done:!t,value:n}}}}function a(e,t){return e.toString(10).padStart(t,"0")}function he(e){const t=e;return typeof t.offset=="number"?t.offset:e.kind===1?0:e.getTimezoneOffset()*-6e4}class p{static id(t){return p.idMap.has(t)||p.idMap.set(t,++p.count),p.idMap.get(t)}}p.idMap=new WeakMap;p.count=0;function ue(e){let t=0,n=5381;const r=e.length;for(;t$(n));return Z(t)}else return A(p.id(e))}}}function tt(e){return Qe(e)}function nt(e,t,n){if(e==null)return t==null;if(t==null||e.length!==t.length)return!1;for(let r=0;rr+" = "+w(s,t+1)).join(` + `)+" }":n?.name??""}}return String(e)}function ut(e,t){if(t.length===0)return e;{let n,r=!0;return t.length===1?(n=w(t[0]),r=n.indexOf(" ")>=0):n=t.map(s=>w(s)).join(", "),e+(r?" (":" ")+n+(r?")":"")}}class lt{get name(){return this.cases()[this.tag]}toJSON(){return this.fields.length===0?this.name:[this.name].concat(this.fields)}toString(){return ut(this.name,this.fields)}GetHashCode(){const t=this.fields.map(n=>$(n));return t.splice(0,0,A(this.tag)),Z(t)}Equals(t){return this===t?!0:W(this,t)&&this.tag===t.tag?De(this.fields,t.fields):!1}CompareTo(t){return this===t?0:W(this,t)?this.tag===t.tag?Me(this.fields,t.fields):this.tagt+" = "+w(n)).join(` + `)+" }"}function ft(e){const t=Object.values(e).map(n=>$(n));return Z(t)}function ht(e,t){if(e===t)return!0;if(W(e,t)){const n=Object.keys(e);for(let r=0;rt,this.setter=r=>{t=r})}}const mt=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dt=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],yt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],bt=["January","February","March","April","May","June","July","August","September","October","November","December"];function y(e,t,n){let r=0,s=t;for(;s=e.length-1?-1:e.charCodeAt(t+1)}function St(e,t){let n=t;const r=e[t];let s="",i=!1;for(;t=0&&g!==37)r+=2,i+=le(o,String.fromCharCode(g),n);else throw new Error("Invalid format string");break;case"\\":const d=ge(t,r);if(d>=0)r+=2,i+=String.fromCharCode(d);else throw new Error("Invalid format string");break;default:r++,i+=l;break}}return i}function me(e){return e.kind||0}function O(e){const t=e<0;e=Math.abs(e);const n=~~(e/36e5),r=e%36e5/6e4;return(t?"-":"+")+a(n,2)+":"+a(r,2)}function Y(e,t){const n=e.toISOString();return t==="first"?n.substring(0,n.indexOf("T")):n.substring(n.indexOf("T")+1,n.length-1)}function Ct(e,t){if(t)return e.toISOString();{const n=e.kind==null?!0:e.kind===2;return a(e.getFullYear(),4)+"-"+a(e.getMonth()+1,2)+"-"+a(e.getDate(),2)+"T"+a(e.getHours(),2)+":"+a(e.getMinutes(),2)+":"+a(e.getSeconds(),2)+"."+a(e.getMilliseconds(),3)+(n?O(e.getTimezoneOffset()*-6e4):"")}}function pt(e,t){const n=e.toISOString();return n.substring(0,n.length-1)+O(t)}function wt(e,t){const n=new Date(e.getTime()+(e.offset??0));if(typeof t!="string")return n.toISOString().replace(/\.\d+/,"").replace(/[A-Z]|\.\d+/g," ")+O(e.offset??0);if(t.length===1)switch(t){case"D":case"d":return Y(n,"first");case"T":case"t":return Y(n,"second");case"O":case"o":return pt(n,e.offset??0);default:throw new Error("Unrecognized Date print format")}else return le(n,t,!0)}function Et(e,t){const n=e.kind===1;if(typeof t!="string")return n?e.toUTCString():e.toLocaleString();if(t.length===1)switch(t){case"D":case"d":return n?Y(e,"first"):e.toLocaleDateString();case"T":case"t":return n?Y(e,"second"):e.toLocaleTimeString();case"O":case"o":return Ct(e,n);default:throw new Error("Unrecognized Date print format")}else return le(e,t,n)}function Ge(e,t,n){return e.offset!=null?wt(e,t):Et(e,t)}function X(e,t){const n=new Date(e);return n.kind=(t??0)|0,n}function Ne(e,t,n,r=0,s=0,i=0,o=0,l){const c=l===1?new Date(Date.UTC(e,t-1,n,r,s,i,o)):new Date(e,t-1,n,r,s,i,o);e<=99&&(l===1?c.setUTCFullYear(e,t-1,n):c.setFullYear(e,t-1,n));const u=c.getTime();if(isNaN(u))throw new Error("The parameters describe an unrepresentable Date.");return X(u,l)}function Ae(){return X(Date.now(),2)}function _t(){return It(Ae())}function kt(e){return e.kind===2?e:X(e.getTime(),2)}function It(e){return Ne(Ot(e),F(e),se(e),0,0,0,0,e.kind)}function se(e){return e.kind===1?e.getUTCDate():e.getDate()}function R(e){return e.kind===1?e.getUTCHours():e.getHours()}function B(e){return e.kind===1?e.getUTCMilliseconds():e.getMilliseconds()}function de(e){return e.kind===1?e.getUTCMinutes():e.getMinutes()}function F(e){return(e.kind===1?e.getUTCMonth():e.getMonth())+1}function ye(e){return e.kind===1?e.getUTCSeconds():e.getSeconds()}function Ot(e){return e.kind===1?e.getUTCFullYear():e.getFullYear()}function be(e){return e.kind===1?e.getUTCDay():e.getDay()}const M=/(^|[^%])%([0+\- ]*)(\*|\d+)?(?:\.(\d+))?(\w)/g,Tt=/\{(\d+)(,-?\d+)?(?:\:([a-zA-Z])(\d{0,2})|\:(.+?))?\}/g;function je(e,t){return ze(e,t)<0}function Dt(e){return{input:e,cont:Ft(e)}}function $t(e,t){return typeof t=="string"?e(t):t.cont(e)}function Mt(e){return $t(t=>console.log(t),e)}function vt(e,t,n,r,s){let i="";if(t=t||"",s=s||"",Ie(e))switch(s.toLowerCase()!=="x"&&(je(e,0)?(e=re(e,-1),i="-"):t.indexOf(" ")>=0?i=" ":t.indexOf("+")>=0&&(i="+")),r=r==null?null:parseInt(r,10),s){case"f":case"F":r=r??6,e=U(e,r);break;case"g":case"G":e=r!=null?z(e,r):z(e);break;case"e":case"E":e=r!=null?J(e,r):J(e);break;case"x":e=K(e);break;case"X":e=K(e).toUpperCase();break;default:e=String(e);break}else e instanceof Date?e=Ge(e):e=w(e);if(n=typeof n=="number"?n:parseInt(n,10),isNaN(n))e=i+e;else{const o=t.indexOf("0")>=0,l=t.indexOf("-")>=0,c=l||!o?" ":"0";c==="0"?(e=j(e,n-i.length,c,l),e=i+e):e=j(i+e,n,c,l)}return e}function He(e,t,n,r="",s=-1){return(...i)=>{let o=r;const l=t.slice(),c=n.slice();for(const u of i){const[,,h,m,S,C]=c[0];let g=m;if(s>=0)g=s,s=-1;else if(g==="*"){if(u<0)throw new Error("Non-negative number required");s=u;continue}o+=l[0],o+=vt(u,h,g,S,C),l.splice(0,1),c.splice(0,1)}return c.length===0?(o+=l[0],e(o)):He(e,l,c,o,s)}}function Ft(e){return t=>{M.lastIndex=0;const n=[],r=[];let s=0,i=M.exec(e);for(;i;){const o=i.index+(i[1]||"").length;n.push(e.substring(s,o).replace(/%%/g,"%")),r.push(i),s=M.lastIndex,M.lastIndex-=1,i=M.exec(e)}return n.length===0?t(e.replace(/%%/g,"%")):(n.push(e.substring(s).replace(/%%/g,"%")),He(t,n,r))}}function Gt(e,...t){let n;return n=e,n.replace(Tt,(r,s,i,o,l,c)=>{if(s<0||s>=t.length)throw new Error("Index must be greater or equal to zero and less than the arguments' length.");let u=t[s];if(Ie(u))switch(l=l==null?null:parseInt(l,10),o){case"f":case"F":l=l??2,u=U(u,l);break;case"g":case"G":u=l!=null?z(u,l):z(u);break;case"e":case"E":u=l!=null?J(u,l):J(u);break;case"p":case"P":l=l??2,u=U(re(u,100),l)+" %";break;case"d":case"D":u=l!=null?ee(String(u),l,"0"):String(u);break;case"x":case"X":u=l!=null?ee(K(u),l,"0"):K(u),o==="X"&&(u=u.toUpperCase());break;default:if(c){let h="";u=c.replace(/([0#,]+)(\.[0#]+)?/,(m,S,C)=>{je(u,0)&&(u=re(u,-1),h="-"),C=C==null?"":C.substring(1),u=U(u,Math.max(C.length,0));let[g,d]=u.split(".");d||(d="");const E=S.replace(/,/g,"").replace(/^#+/,"").length;g=ee(g,E,"0");const _=C.replace(/#+$/,"").length;if(_>d.length?d=At(d,_,"0"):_0){const Q=g.length%3,x=Math.floor(g.length/3);let fe=Q>0?g.substr(0,Q)+(x>0?",":""):"";for(let P=0;P0?g+"."+d:g}),u=h+u}}else u instanceof Date?u=Ge(u,c||o):u=w(u);return i=parseInt((i||" ").substring(1),10),isNaN(i)||(u=j(String(u),Math.abs(i)," ",i<0)),u})}function Nt(e,t){return Array.isArray(t)?t.join(e):Array.from(t).join(e)}function j(e,t,n,r){n=n||" ",t=t-e.length;for(let s=0;s=e.length)throw new Error("Index was outside the bounds of the array.\\nParameter name: index");e[t]=n}class Vt extends ve{constructor(t,n){super(),this.head=t,this.tail=n}toString(){return"["+Nt("; ",this)+"]"}Equals(t){const n=this;return n===t?!0:((s,i)=>{e:for(;;){const o=s,l=i,c=o.tail,u=l.tail;if(c!=null)if(u!=null){const h=f(c),m=f(u);if(I(o.head,l.head)){s=h,i=m;continue e}else return!1}else return!1;else return u==null}})(n,t)}GetHashCode(){return((r,s,i)=>{e:for(;;){const o=r,l=s,c=i,u=c.tail;if(u!=null){const h=f(u);if(o>18)return l|0;r=o+1,s=(l<<1)+$(c.head)+631*o,i=h;continue e}else return l|0}})(0,0,this)|0}toJSON(){const t=this;return Array.from(t)}CompareTo(t){return((s,i)=>{e:for(;;){const o=s,l=i,c=o.tail,u=l.tail;if(c!=null)if(u!=null){const h=f(c),m=f(u),S=V(o.head,l.head)|0;if(S===0){s=h,i=m;continue e}else return S|0}else return 1;else return u!=null?-1:0}})(this,t)|0}GetEnumerator(){return Pt(this)}[Symbol.iterator](){return oe(b(this))}"System.Collections.IEnumerable.GetEnumerator"(){return b(this)}}class qt{constructor(t){this.xs=t,this.it=this.xs,this.current=N()}"System.Collections.Generic.IEnumerator`1.get_Current"(){return this.current}"System.Collections.IEnumerator.get_Current"(){return this.current}"System.Collections.IEnumerator.MoveNext"(){const t=this,n=t.it.tail;if(n!=null){const r=f(n);return t.current=t.it.head,t.it=r,!0}else return!1}"System.Collections.IEnumerator.Reset"(){const t=this;t.it=t.xs,t.current=N()}Dispose(){}}function Pt(e){return new qt(e)}function Rt(e){return e.tail==null}function Bt(e){return((n,r)=>{e:for(;;){const s=n,o=r.tail;if(o!=null){n=s+1,r=f(o);continue e}else return s|0}})(0,e)|0}function Ut(e){if(e.tail!=null)return e.head;throw new Error(Ve+"\\nParameter name: list")}function Lt(e){const t=e.tail;if(t!=null)return f(t);throw new Error(Ve+"\\nParameter name: list")}function zt(e){const t=Bt(e)|0,n=Ht(new Array(t),0,t,null);return((s,i)=>{e:for(;;){const o=s,l=i;if(!Rt(l)){qe(n,o,Ut(l)),s=o+1,i=Lt(l);continue e}break}})(0,e),n}const Jt="Enumeration already finished.",Kt="Enumeration has not started. Call MoveNext.",Wt="Reset is not supported on this enumerator.";function Yt(){throw new Error(Wt)}function Pe(){throw new Error(Kt)}function ie(){throw new Error(Jt)}class Zt{constructor(t){this.f=t}toString(){const t=this;let n=0,r="seq [";const s=b(t);try{for(;n<4&&s["System.Collections.IEnumerator.MoveNext"]();)n>0&&(r=r+"; "),r=r+w(s["System.Collections.Generic.IEnumerator`1.get_Current"]()),n=n+1|0;return n===4&&(r=r+"; ..."),r+"]"}finally{k(s)}}GetEnumerator(){return this.f()}[Symbol.iterator](){return oe(b(this))}"System.Collections.IEnumerable.GetEnumerator"(){return this.f()}}function Xt(e){return new Zt(e)}class Qt{constructor(t,n,r){this.current=t,this.next=n,this.dispose=r}"System.Collections.Generic.IEnumerator`1.get_Current"(){return this.current()}"System.Collections.IEnumerator.get_Current"(){return this.current()}"System.Collections.IEnumerator.MoveNext"(){return this.next()}"System.Collections.IEnumerator.Reset"(){Yt()}Dispose(){this.dispose()}}function Re(e,t,n){return new Qt(e,t,n)}function xt(e){let t,n,r=!1,s=!1,i;const o=()=>{if(s=!0,n!=null){const l=f(n);try{k(l)}finally{n=void 0}}if(t!=null){const l=f(t);try{k(l)}finally{t=void 0}}};return Re(()=>(r?s&&ie():Pe(),i!=null?f(i):ie()),()=>{let l;if(r||(r=!0),s)return!1;{let c;for(;c==null;){const u=t,h=n;if(u!=null)if(h!=null){const m=f(h);if(m["System.Collections.IEnumerator.MoveNext"]())i=ce(m["System.Collections.Generic.IEnumerator`1.get_Current"]()),c=!0;else try{k(m)}finally{n=void 0}}else{const m=f(u);m["System.Collections.IEnumerator.MoveNext"]()?n=(l=m["System.Collections.Generic.IEnumerator`1.get_Current"](),b(l)):(o(),c=!1)}else t=b(e)}return f(c)}},()=>{s||o()})}function en(e,t,n){let r=!1,s,i=ce(e());const o=()=>{if(i!=null){const c=f(i);try{n(c)}finally{i=void 0}}},l=()=>{try{o()}finally{s=void 0}};return Re(()=>(r||Pe(),s!=null?f(s):ie()),()=>{if(r||(r=!0),i!=null){const c=f(i);let u;try{u=t(c)}catch(h){throw l(),h}return u!=null?(s=u,!0):(l(),!1)}else return!1},o)}function tn(e,t){t==null&&jt(e)}function ae(e){return Xt(e)}function Be(e){return tn("source",e),b(e)}function Se(e){return ae(()=>b(e()))}function nn(e){return ae(()=>xt(e))}function Ce(e){return e instanceof Vt?zt(e):Array.from(e)}function rn(e,t,n){return ae(()=>en(e,t,n))}function Ue(e,t,n){const r=Be(n);try{let s=t;for(;r["System.Collections.IEnumerator.MoveNext"]();)s=e(s,r["System.Collections.Generic.IEnumerator`1.get_Current"]());return s}finally{k(r)}}function sn(e,t){Ue((n,r)=>{e(r)},void 0,t)}function on(e,t){Ue((n,r)=>(e(n,r),n+1|0),0,t)}function v(e,t){return rn(()=>Be(t),n=>n["System.Collections.IEnumerator.MoveNext"]()?ce(e(n["System.Collections.Generic.IEnumerator`1.get_Current"]())):void 0,n=>{k(n)})}function un(e,t,n){return e.has(t)?(n.contents=e.get(t),!0):!1}function H(e,t){if(e.has(t))return e.get(t);throw new Error(`The given key '${t}' was not present in the dictionary.`)}class ln{constructor(t,n){const r=new Fe(N());this.comparer=n,r.contents=this,this.hashMap=new Map([]),this["init@9"]=1;const s=b(t);try{for(;s["System.Collections.IEnumerator.MoveNext"]();){const i=s["System.Collections.Generic.IEnumerator`1.get_Current"]();te(r.contents,i[0],i[1])}}finally{k(s)}}get[Symbol.toStringTag](){return"Dictionary"}toJSON(){const t=this;return Array.from(t)}"System.Collections.IEnumerable.GetEnumerator"(){return b(this)}GetEnumerator(){return b(nn(this.hashMap.values()))}[Symbol.iterator](){return oe(b(this))}"System.Collections.Generic.ICollection`1.Add2B595"(t){te(this,t[0],t[1])}"System.Collections.Generic.ICollection`1.Clear"(){pe(this)}"System.Collections.Generic.ICollection`1.Contains2B595"(t){const r=L(this,t[0]);let s;switch(r!=null&&I(f(r)[1],t[1])?(s=0,f(r)):s=1,s){case 0:return!0;default:return!1}}"System.Collections.Generic.ICollection`1.CopyToZ3B4C077E"(t,n){on((s,i)=>{qe(t,n+s,i)},this)}"System.Collections.Generic.ICollection`1.get_Count"(){return we(this)|0}"System.Collections.Generic.ICollection`1.get_IsReadOnly"(){return!1}"System.Collections.Generic.ICollection`1.Remove2B595"(t){const n=this,r=L(n,t[0]);return r!=null?(I(f(r)[1],t[1])&&ne(n,t[0]),!0):!1}"System.Collections.Generic.IDictionary`2.Add5BDDA1"(t,n){te(this,t,n)}"System.Collections.Generic.IDictionary`2.ContainsKey2B595"(t){return ke(this,t)}"System.Collections.Generic.IDictionary`2.get_Item2B595"(t){return Ee(this,t)}"System.Collections.Generic.IDictionary`2.set_Item5BDDA1"(t,n){_e(this,t,n)}"System.Collections.Generic.IDictionary`2.get_Keys"(){const t=this;return Ce(Se(()=>v(n=>n[0],t)))}"System.Collections.Generic.IDictionary`2.Remove2B595"(t){return ne(this,t)}"System.Collections.Generic.IDictionary`2.TryGetValue6DC89625"(t,n){const s=L(this,t);if(s!=null){const i=f(s);return n.contents=i[1],!0}else return!1}"System.Collections.Generic.IDictionary`2.get_Values"(){const t=this;return Ce(Se(()=>v(n=>n[1],t)))}get size(){return we(this)|0}clear(){pe(this)}delete(t){return ne(this,t)}entries(){return v(n=>[n[0],n[1]],this)}get(t){return Ee(this,t)}has(t){return ke(this,t)}keys(){return v(n=>n[0],this)}set(t,n){const r=this;return _e(r,t,n),r}values(){return v(n=>n[1],this)}forEach(t,n){const r=this;sn(s=>{t(s[1],s[0],r)},r)}}function q(e,t){const n=e.comparer.GetHashCode(t)|0;let r,s=N();return r=[un(e.hashMap,n,new Fe(()=>s,i=>{s=i})),s],r[0]?[!0,n,r[1].findIndex(i=>e.comparer.Equals(t,i[0]))]:[!1,n,-1]}function L(e,t){const n=q(e,t);let r;switch(n[0]&&n[2]>-1?r=0:r=1,r){case 0:return H(e.hashMap,n[1])[n[2]];default:return}}function pe(e){e.hashMap.clear()}function we(e){let t=0,n=b(e.hashMap.values());try{for(;n["System.Collections.IEnumerator.MoveNext"]();){const r=n["System.Collections.Generic.IEnumerator`1.get_Current"]();t=t+r.length|0}}finally{k(n)}return t|0}function Ee(e,t){const n=L(e,t);if(n!=null)return f(n)[1];throw new Error("The item was not found in collection")}function _e(e,t,n){const r=q(e,t);r[0]?r[2]>-1?H(e.hashMap,r[1])[r[2]]=[t,n]:H(e.hashMap,r[1]).push([t,n]):e.hashMap.set(r[1],[[t,n]])}function te(e,t,n){const r=q(e,t);if(r[0]){if(r[2]>-1)throw new Error(Gt("An item with the same key has already been added. Key: {0}",t));H(e.hashMap,r[1]).push([t,n])}else e.hashMap.set(r[1],[[t,n]])}function ke(e,t){const n=q(e,t);let r;switch(n[0]&&n[2]>-1?r=0:r=1,r){case 0:return!0;default:return!1}}function ne(e,t){const n=q(e,t);let r;switch(n[0]&&n[2]>-1?r=0:r=1,r){case 0:return H(e.hashMap,n[1]).splice(n[2],1),!0;default:return!1}}class cn extends ve{constructor(t,n){super(),this.Year=t|0,this.N=n|0}}class an extends lt{constructor(t,n){super(),this.tag=t,this.fields=n}cases(){return["OneSixFive","TwoFiveFive","ThreeFourSeven"]}}function Le(e,t){return new cn(t,e)}(()=>{const e=(n,r,s)=>Ne(s,r,n),t=(n,r,s)=>[Le(n,r),s];return new ln([t(2,2024,e(8,7,2024)),t(1,2025,e(6,1,2025)),t(2,2025,e(7,7,2025)),t(1,2026,e(5,1,2026)),t(2,2026,e(6,7,2026)),t(1,2027,e(4,1,2027)),t(2,2027,e(5,7,2027))],{Equals:I,GetHashCode:tt})})();(function(){const e=Ae();Mt(Dt("It is %O"))(e)})();Le(2,2025);new an(2,[]);_t(); diff --git a/Aamukampa.Web/wwwroot/styles.css b/Aamukampa.Web/wwwroot/styles.css new file mode 100644 index 0000000..66a6ef5 --- /dev/null +++ b/Aamukampa.Web/wwwroot/styles.css @@ -0,0 +1,72 @@ +* { + box-sizing: border-box; + max-width: none; +} + +html { + font-size: 100%; +} + +@font-face { + font-family: 'Cooper Black'; + font-weight: normal; + font-style: normal; + font-display: swap; + src: + local('Cooper Black'), + url('https://cdn.jsdelivr.net/npm/fonts-archive-cooper-black/CooperBlack-Regular.woff2') format('woff2'), + url('https://cdn.jsdelivr.net/npm/fonts-archive-cooper-black/CooperBlack-Regular.woff') format('woff'), + url('https://cdn.jsdelivr.net/npm/fonts-archive-cooper-black/CooperBlack-Regular.otf') format('opentype'), + url('https://cdn.jsdelivr.net/npm/fonts-archive-cooper-black/CooperBlack-Regular.ttf') format('truetype'); +} + +body { + font-family: "Cooper Black", serif; + font-weight: bold; + max-width: 50rem; + margin: 0 auto; + padding: 1rem; +} + +.counter { + padding: 2rem; + text-align: center; + font-size: 2.5rem; + font-weight: 900; +} + +.counter_title { + display: block; + font-size: 1.2em; +} + +.counter_value { + display: block; + margin: 0; + font-weight: 900; + font-size: 2.5em; +} + +.counter_mornings { + display: block; +} + +.progress-bar { + height: 25px; + border-radius: 5px; + border: 1px solid black; + background-color: lightgrey; +} + +.progress-bar_value { + color: white; + height: 100%; + display: flex; + padding: 0 10px; + justify-content: flex-end; + align-items: center; + white-space: nowrap; + text-align: center; + border-radius: 5px; + min-width: 0; +} diff --git a/Aamukampa.sln b/Aamukampa.sln new file mode 100644 index 0000000..4774825 --- /dev/null +++ b/Aamukampa.sln @@ -0,0 +1,34 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Aamukampa.Web", "Aamukampa.Web\Aamukampa.Web.fsproj", "{33F70526-6D59-4B2C-8FBA-EA1AACD40492}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Aamukampa.Frontend", "Aamukampa.Frontend\Aamukampa.Frontend.fsproj", "{9BD313D6-00B1-4483-B6FB-1F166B087EDB}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Aamukampa.Core", "Aamukampa.Core\Aamukampa.Core.fsproj", "{E08D484F-BEF1-48A9-AC1A-73F8E934FDA7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {33F70526-6D59-4B2C-8FBA-EA1AACD40492}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {33F70526-6D59-4B2C-8FBA-EA1AACD40492}.Debug|Any CPU.Build.0 = Debug|Any CPU + {33F70526-6D59-4B2C-8FBA-EA1AACD40492}.Release|Any CPU.ActiveCfg = Release|Any CPU + {33F70526-6D59-4B2C-8FBA-EA1AACD40492}.Release|Any CPU.Build.0 = Release|Any CPU + {9BD313D6-00B1-4483-B6FB-1F166B087EDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9BD313D6-00B1-4483-B6FB-1F166B087EDB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9BD313D6-00B1-4483-B6FB-1F166B087EDB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9BD313D6-00B1-4483-B6FB-1F166B087EDB}.Release|Any CPU.Build.0 = Release|Any CPU + {E08D484F-BEF1-48A9-AC1A-73F8E934FDA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E08D484F-BEF1-48A9-AC1A-73F8E934FDA7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E08D484F-BEF1-48A9-AC1A-73F8E934FDA7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E08D484F-BEF1-48A9-AC1A-73F8E934FDA7}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/TJLaskuri.Core/Library.fs b/TJLaskuri.Core/Library.fs deleted file mode 100644 index aa7b7ea..0000000 --- a/TJLaskuri.Core/Library.fs +++ /dev/null @@ -1,27 +0,0 @@ -namespace TJLaskuri.Core - -open System - -module Domain = - // TODO: More precise time: hours, minutes - // TODO: Time until service starts - - let getStartDate kontingent = - match serviceStartDates.TryGetValue(kontingent) with - | true, startDate -> Some startDate - | false, _ -> None - - let getEndDate kontingent serviceTime = - getStartDate kontingent - |> Option.map (fun startDate -> - ServiceTime.getDays serviceTime - |> fun x -> x - 1 // Count start date as well - |> startDate.AddDays) - - let getTimeCompleted kontingent (now : DateTime) = - getStartDate kontingent - |> Option.map (fun date -> now.AddDays(1) - date) - - let getTimeLeft kontingent serviceTime (now : DateTime) = - getEndDate kontingent serviceTime - |> Option.map (fun date -> date - now) diff --git a/TJLaskuri.Core/TJLaskuri.Core.fsproj b/TJLaskuri.Core/TJLaskuri.Core.fsproj deleted file mode 100644 index bc6029f..0000000 --- a/TJLaskuri.Core/TJLaskuri.Core.fsproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - net9.0 - true - - - - - - - - - - - - - diff --git a/TJLaskuri.Core/Types.fs b/TJLaskuri.Core/Types.fs deleted file mode 100644 index 0c5b2d4..0000000 --- a/TJLaskuri.Core/Types.fs +++ /dev/null @@ -1,42 +0,0 @@ -namespace TJLaskuri.Core - -open System -open System.Collections.Generic - -[] -module Types = - /// Saapumiserä/kontingent N/Year - /// For example, 2/25 is { N = 2; Year = 2025 } - // Year field is first so that kontingents are sorted year first - type Kontingent = { Year : int; N : int } - - type ServiceTime = - | OneSixFive - | TwoFiveFive - | ThreeFourSeven - - module ServiceTime = - let getDays = function - | OneSixFive -> 165 - | TwoFiveFive -> 255 - | ThreeFourSeven -> 347 - - let kontingent n year = { N = n; Year = year } - - let serviceStartDates = - let date day month year = - DateTime((year : int), month, day) - let entry n year endDate = - let k = kontingent n year - KeyValuePair( - k, endDate) - - Dictionary([ - entry 2 2024 (date 8 7 2024) - entry 1 2025 (date 6 1 2025) - entry 2 2025 (date 7 7 2025) - entry 1 2026 (date 5 1 2026) - entry 2 2026 (date 6 7 2026) - entry 1 2027 (date 4 1 2027) - entry 2 2027 (date 5 7 2027) - ]) diff --git a/TJLaskuri.Core/Views.fs b/TJLaskuri.Core/Views.fs deleted file mode 100644 index 939acec..0000000 --- a/TJLaskuri.Core/Views.fs +++ /dev/null @@ -1,88 +0,0 @@ -namespace TJLaskuri.Core.Views - -open System -open Falco.Markup -open Elem -open Attr -open Text - -module Document = - let view documentBody = - html [ lang "fi" ] [ - head [] [ - meta [ charset "utf-8" ] - meta [ name "viewport"; content "width=device-width" ] - Elem.title [] [ raw "TJ-laskuri" ] - script [ type' "module"; src "/js/app.js" ] [] - link [ rel "stylesheet"; href "/styles.css" ] - ] - body [] [ - documentBody - ] - ] - -module Main = - type Model = { - TimeLeft : TimeSpan - TimeCompleted : TimeSpan - } - - let view model = - main [] [ - div [ class' "counter" ] [ - Elem.span [ class' "counter_title" ] [ - raw "Tänään jäljellä" - ] - Elem.span [ class' "counter_value" ] [ - enc (string <| Math.Ceiling model.TimeLeft.TotalDays) - ] - Elem.span [ class' "counter_mornings" ] [ - raw " aamua" - ] - ] - - div [ class' "progress-bar" ] [ - let p = 100.0 * (1.0 - model.TimeLeft / (model.TimeLeft + model.TimeCompleted)) - let cssWidth = sprintf "%s%%" (p.ToString("F2")) - - div [ - class' "progress-bar_value" - style <| - sprintf "background-color: green; width: %s" - cssWidth - ] [ - span <| sprintf "%s %%" (p.ToString("F2")) - ] - ] - - Elem.p [ - style "text-align: center; font-size: 1.5rem;" - ] [ - enc "2/25 347" - ] - - // div [] [ - // Elem.label [ for' "kontingent-select" ] [ raw "Saapumiserä:" ] - // select [ id "kontingent-select" ] [ - // option [ value "1/25" ] [ enc "1/25" ] - // option [ value "2/25" ] [ enc "2/25" ] - // option [ value "1/26" ] [ enc "1/26" ] - // option [ value "2/26" ] [ enc "2/26" ] - // ] - // ] - - // div [] [ - // Elem.p [] [ - // span "Tunteina" - // enc (string model.TimeLeft.TotalHours) - // ] - // Elem.p [] [ - // span "Sekunteina" - // enc (string model.TimeLeft.TotalSeconds) - // ] - // Elem.p [] [ - // span "Aamuja ohi " - // enc (string <| Math.Floor model.TimeCompleted.TotalDays) - // ] - // ] - ] diff --git a/TJLaskuri.Frontend/App.fs b/TJLaskuri.Frontend/App.fs deleted file mode 100644 index c83ed6a..0000000 --- a/TJLaskuri.Frontend/App.fs +++ /dev/null @@ -1,33 +0,0 @@ -open System -open Browser.Dom -open TJLaskuri.Core - -DateTime.Now -|> printfn "It is %O" - -let k = kontingent 2 2025 -let st = ThreeFourSeven - -let currentTime = - // DateTime(2025, 7, 5) - // DateTime(2026, 6, 18) - // DateTime(2026, 6, 17) - DateTime.Today - // DateTime.Now - // Domain.getStartDate k |> Option.get - -// currentTime -// |> Domain.getTimeLeft k st -// |> function -// | Some left -> -// let el = document.createElement "p" -// el.innerHTML <- sprintf "Tänään jäljellä:
%O
aamua" left.TotalDays -// document.body.appendChild(el) |> ignore -// | None -> -// printfn "Error: unknown kontingent" -// -// let startDate = Domain.getStartDate k |> Option.get -// let el = document.createElement "p" -// el.innerHTML <- sprintf "Aloituspäivä: %O
Aamuja ohi %d" -// startDate (Domain.getTimeCompleted k currentTime |> Option.get).Days -// document.body.appendChild(el) |> ignore diff --git a/TJLaskuri.Frontend/Message.fs b/TJLaskuri.Frontend/Message.fs deleted file mode 100644 index 40a26f0..0000000 --- a/TJLaskuri.Frontend/Message.fs +++ /dev/null @@ -1,4 +0,0 @@ -namespace TJLaskuri.Frontend - -module Message = - let get name = sprintf "Hello %s" name diff --git a/TJLaskuri.Frontend/TJLaskuri.Frontend.fsproj b/TJLaskuri.Frontend/TJLaskuri.Frontend.fsproj deleted file mode 100644 index ffa3e11..0000000 --- a/TJLaskuri.Frontend/TJLaskuri.Frontend.fsproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - - - - - - - diff --git a/TJLaskuri.Frontend/index.html b/TJLaskuri.Frontend/index.html deleted file mode 100644 index 79b1c82..0000000 --- a/TJLaskuri.Frontend/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - TJ-laskuri - - - - - diff --git a/TJLaskuri.Frontend/package.json b/TJLaskuri.Frontend/package.json deleted file mode 100644 index 0632bcb..0000000 --- a/TJLaskuri.Frontend/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "TJLaskuri.Frontend", - "version": "1.0.0", - "type": "module", - "main": "App.fs.js", - "license": "EUPL-1.2", - "devDependencies": { - "vite": "^7.0.6" - } -} diff --git a/TJLaskuri.Frontend/vite.config.ts b/TJLaskuri.Frontend/vite.config.ts deleted file mode 100644 index 2dd7341..0000000 --- a/TJLaskuri.Frontend/vite.config.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { defineConfig } from 'vite' - -// https://vitejs.dev/config/ -export default defineConfig({ - clearScreen: false, - server: { - watch: { - ignored: [ - "**/*.fs" // Don't watch F# files - ] - }, - }, - build: { - rollupOptions: { - output: { - // Remove hash from output so we can copy the file - // to the content root of the web app - entryFileNames: `[name].js`, - - // chunkFileNames: `[name].js`, - // assetFileNames: `[name].[ext]` - } - } - } -}) diff --git a/TJLaskuri.Frontend/yarn.lock b/TJLaskuri.Frontend/yarn.lock deleted file mode 100644 index 3b997b1..0000000 --- a/TJLaskuri.Frontend/yarn.lock +++ /dev/null @@ -1,360 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@esbuild/aix-ppc64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz#a1414903bb38027382f85f03dda6065056757727" - integrity sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA== - -"@esbuild/android-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz#c859994089e9767224269884061f89dae6fb51c6" - integrity sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w== - -"@esbuild/android-arm@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.8.tgz#96a8f2ca91c6cd29ea90b1af79d83761c8ba0059" - integrity sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw== - -"@esbuild/android-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.8.tgz#a3a626c4fec4a024a9fa8c7679c39996e92916f0" - integrity sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA== - -"@esbuild/darwin-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz#a5e1252ca2983d566af1c0ea39aded65736fc66d" - integrity sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw== - -"@esbuild/darwin-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz#5271b0df2bb12ce8df886704bfdd1c7cc01385d2" - integrity sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg== - -"@esbuild/freebsd-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz#d0a0e7fdf19733b8bb1566b81df1aa0bb7e46ada" - integrity sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA== - -"@esbuild/freebsd-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz#2de8b2e0899d08f1cb1ef3128e159616e7e85343" - integrity sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw== - -"@esbuild/linux-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz#a4209efadc0c2975716458484a4e90c237c48ae9" - integrity sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w== - -"@esbuild/linux-arm@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz#ccd9e291c24cd8d9142d819d463e2e7200d25b19" - integrity sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg== - -"@esbuild/linux-ia32@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz#006ad1536d0c2b28fb3a1cf0b53bcb85aaf92c4d" - integrity sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg== - -"@esbuild/linux-loong64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz#127b3fbfb2c2e08b1397e985932f718f09a8f5c4" - integrity sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ== - -"@esbuild/linux-mips64el@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz#837d1449517791e3fa7d82675a2d06d9f56cb340" - integrity sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw== - -"@esbuild/linux-ppc64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz#aa2e3bd93ab8df084212f1895ca4b03c42d9e0fe" - integrity sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ== - -"@esbuild/linux-riscv64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz#a340620e31093fef72767dd28ab04214b3442083" - integrity sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg== - -"@esbuild/linux-s390x@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz#ddfed266c8c13f5efb3105a0cd47f6dcd0e79e71" - integrity sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg== - -"@esbuild/linux-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz#9a4f78c75c051e8c060183ebb39a269ba936a2ac" - integrity sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ== - -"@esbuild/netbsd-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz#902c80e1d678047926387230bc037e63e00697d0" - integrity sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw== - -"@esbuild/netbsd-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz#2d9eb4692add2681ff05a14ce99de54fbed7079c" - integrity sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg== - -"@esbuild/openbsd-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz#89c3b998c6de739db38ab7fb71a8a76b3fa84a45" - integrity sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ== - -"@esbuild/openbsd-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz#2f01615cf472b0e48c077045cfd96b5c149365cc" - integrity sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ== - -"@esbuild/openharmony-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz#a201f720cd2c3ebf9a6033fcc3feb069a54b509a" - integrity sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg== - -"@esbuild/sunos-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz#07046c977985a3334667f19e6ab3a01a80862afb" - integrity sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w== - -"@esbuild/win32-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz#4a5470caf0d16127c05d4833d4934213c69392d1" - integrity sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ== - -"@esbuild/win32-ia32@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz#3de3e8470b7b328d99dbc3e9ec1eace207e5bbc4" - integrity sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg== - -"@esbuild/win32-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz#610d7ea539d2fcdbe39237b5cc175eb2c4451f9c" - integrity sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw== - -"@rollup/rollup-android-arm-eabi@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz#292e25953d4988d3bd1af0f5ebbd5ee4d65c90b4" - integrity sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA== - -"@rollup/rollup-android-arm64@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz#053b3def3451e6fc1a9078188f22799e868d7c59" - integrity sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ== - -"@rollup/rollup-darwin-arm64@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz#98d90445282dec54fd05440305a5e8df79a91ece" - integrity sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ== - -"@rollup/rollup-darwin-x64@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz#fe05f95a736423af5f9c3a59a70f41ece52a1f20" - integrity sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA== - -"@rollup/rollup-freebsd-arm64@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz#41e1fbdc1f8c3dc9afb6bc1d6e3fb3104bd81eee" - integrity sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg== - -"@rollup/rollup-freebsd-x64@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz#69131e69cb149d547abb65ef3b38fc746c940e24" - integrity sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw== - -"@rollup/rollup-linux-arm-gnueabihf@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz#977ded91c7cf6fc0d9443bb9c0a064e45a805267" - integrity sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA== - -"@rollup/rollup-linux-arm-musleabihf@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz#dc034fc3c0f0eb5c75b6bc3eca3b0b97fd35f49a" - integrity sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ== - -"@rollup/rollup-linux-arm64-gnu@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz#5e92613768d3de3ffcabc965627dd0a59b3e7dfc" - integrity sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng== - -"@rollup/rollup-linux-arm64-musl@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz#2a44f88e83d28b646591df6e50aa0a5a931833d8" - integrity sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg== - -"@rollup/rollup-linux-loongarch64-gnu@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz#bd5897e92db7fbf7dc456f61d90fff96c4651f2e" - integrity sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA== - -"@rollup/rollup-linux-ppc64-gnu@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz#a7065025411c14ad9ec34cc1cd1414900ec2a303" - integrity sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw== - -"@rollup/rollup-linux-riscv64-gnu@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz#17f9c0c675e13ef4567cfaa3730752417257ccc3" - integrity sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ== - -"@rollup/rollup-linux-riscv64-musl@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz#bc6ed3db2cedc1ba9c0a2183620fe2f792c3bf3f" - integrity sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw== - -"@rollup/rollup-linux-s390x-gnu@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz#440c4f6753274e2928e06d2a25613e5a1cf97b41" - integrity sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA== - -"@rollup/rollup-linux-x64-gnu@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz#1e936446f90b2574ea4a83b4842a762cc0a0aed3" - integrity sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA== - -"@rollup/rollup-linux-x64-musl@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz#c6f304dfba1d5faf2be5d8b153ccbd8b5d6f1166" - integrity sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA== - -"@rollup/rollup-win32-arm64-msvc@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz#b4ad4a79219892aac112ed1c9d1356cad0566ef5" - integrity sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g== - -"@rollup/rollup-win32-ia32-msvc@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz#b1b22eb2a9568048961e4a6f540438b4a762aa62" - integrity sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ== - -"@rollup/rollup-win32-x64-msvc@4.46.2": - version "4.46.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz#87079f137b5fdb75da11508419aa998cc8cc3d8b" - integrity sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg== - -"@types/estree@1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" - integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== - -esbuild@^0.25.0: - version "0.25.8" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.8.tgz#482d42198b427c9c2f3a81b63d7663aecb1dda07" - integrity sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q== - optionalDependencies: - "@esbuild/aix-ppc64" "0.25.8" - "@esbuild/android-arm" "0.25.8" - "@esbuild/android-arm64" "0.25.8" - "@esbuild/android-x64" "0.25.8" - "@esbuild/darwin-arm64" "0.25.8" - "@esbuild/darwin-x64" "0.25.8" - "@esbuild/freebsd-arm64" "0.25.8" - "@esbuild/freebsd-x64" "0.25.8" - "@esbuild/linux-arm" "0.25.8" - "@esbuild/linux-arm64" "0.25.8" - "@esbuild/linux-ia32" "0.25.8" - "@esbuild/linux-loong64" "0.25.8" - "@esbuild/linux-mips64el" "0.25.8" - "@esbuild/linux-ppc64" "0.25.8" - "@esbuild/linux-riscv64" "0.25.8" - "@esbuild/linux-s390x" "0.25.8" - "@esbuild/linux-x64" "0.25.8" - "@esbuild/netbsd-arm64" "0.25.8" - "@esbuild/netbsd-x64" "0.25.8" - "@esbuild/openbsd-arm64" "0.25.8" - "@esbuild/openbsd-x64" "0.25.8" - "@esbuild/openharmony-arm64" "0.25.8" - "@esbuild/sunos-x64" "0.25.8" - "@esbuild/win32-arm64" "0.25.8" - "@esbuild/win32-ia32" "0.25.8" - "@esbuild/win32-x64" "0.25.8" - -fdir@^6.4.4, fdir@^6.4.6: - version "6.4.6" - resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.6.tgz#2b268c0232697063111bbf3f64810a2a741ba281" - integrity sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w== - -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -nanoid@^3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" - integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== - -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^4.0.2, picomatch@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" - integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== - -postcss@^8.5.6: - version "8.5.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" - integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== - dependencies: - nanoid "^3.3.11" - picocolors "^1.1.1" - source-map-js "^1.2.1" - -rollup@^4.40.0: - version "4.46.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.46.2.tgz#09b1a45d811e26d09bed63dc3ecfb6831c16ce32" - integrity sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg== - dependencies: - "@types/estree" "1.0.8" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.46.2" - "@rollup/rollup-android-arm64" "4.46.2" - "@rollup/rollup-darwin-arm64" "4.46.2" - "@rollup/rollup-darwin-x64" "4.46.2" - "@rollup/rollup-freebsd-arm64" "4.46.2" - "@rollup/rollup-freebsd-x64" "4.46.2" - "@rollup/rollup-linux-arm-gnueabihf" "4.46.2" - "@rollup/rollup-linux-arm-musleabihf" "4.46.2" - "@rollup/rollup-linux-arm64-gnu" "4.46.2" - "@rollup/rollup-linux-arm64-musl" "4.46.2" - "@rollup/rollup-linux-loongarch64-gnu" "4.46.2" - "@rollup/rollup-linux-ppc64-gnu" "4.46.2" - "@rollup/rollup-linux-riscv64-gnu" "4.46.2" - "@rollup/rollup-linux-riscv64-musl" "4.46.2" - "@rollup/rollup-linux-s390x-gnu" "4.46.2" - "@rollup/rollup-linux-x64-gnu" "4.46.2" - "@rollup/rollup-linux-x64-musl" "4.46.2" - "@rollup/rollup-win32-arm64-msvc" "4.46.2" - "@rollup/rollup-win32-ia32-msvc" "4.46.2" - "@rollup/rollup-win32-x64-msvc" "4.46.2" - fsevents "~2.3.2" - -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== - -tinyglobby@^0.2.14: - version "0.2.14" - resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.14.tgz#5280b0cf3f972b050e74ae88406c0a6a58f4079d" - integrity sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ== - dependencies: - fdir "^6.4.4" - picomatch "^4.0.2" - -vite@^7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/vite/-/vite-7.0.6.tgz#7866ccb176db4bbeec0adfb3f907f077881591d0" - integrity sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg== - dependencies: - esbuild "^0.25.0" - fdir "^6.4.6" - picomatch "^4.0.3" - postcss "^8.5.6" - rollup "^4.40.0" - tinyglobby "^0.2.14" - optionalDependencies: - fsevents "~2.3.3" diff --git a/TJLaskuri.Web/Modules/Index.fs b/TJLaskuri.Web/Modules/Index.fs deleted file mode 100644 index 7623779..0000000 --- a/TJLaskuri.Web/Modules/Index.fs +++ /dev/null @@ -1,31 +0,0 @@ -module TJLaskuri.Web.Modules.Index - -open System -open Falco -open TJLaskuri.Core - -[] -module Views = - open TJLaskuri.Core.Views - - type Model = { - Counter : Main.Model - } - - let view model = - Main.view model.Counter - |> Document.view - -let get : HttpHandler = - fun ctx -> - let time = DateTime.Now - let kontingent = kontingent 2 2025 - let timeLeft = Domain.getTimeLeft kontingent ThreeFourSeven time |> Option.get - let completed = Domain.getTimeCompleted kontingent time |> Option.get - - view { - Counter = { - TimeLeft = timeLeft - TimeCompleted = completed - } - } |> Response.ofHtml <| ctx diff --git a/TJLaskuri.Web/Program.fs b/TJLaskuri.Web/Program.fs deleted file mode 100644 index 831d8a8..0000000 --- a/TJLaskuri.Web/Program.fs +++ /dev/null @@ -1,23 +0,0 @@ -open Microsoft.AspNetCore.Builder -open Microsoft.Extensions.Hosting -open Falco -open Falco.Routing -open TJLaskuri.Web.Modules - -let endpoints = [ - get "/" Index.get - ] - -[] -let main args = - let builder = WebApplication.CreateBuilder(args) - let app = builder.Build() - - app.MapStaticAssets() |> ignore - - app - .UseRouting() - .UseFalco(endpoints) - .Run() - - 0 // Exit code diff --git a/TJLaskuri.Web/Properties/launchSettings.json b/TJLaskuri.Web/Properties/launchSettings.json deleted file mode 100644 index 6d3fec3..0000000 --- a/TJLaskuri.Web/Properties/launchSettings.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/launchsettings.json", - "profiles": { - "http": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "applicationUrl": "http://localhost:5270", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "https": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "applicationUrl": "https://localhost:7106;http://localhost:5270", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} diff --git a/TJLaskuri.Web/TJLaskuri.Web.fsproj b/TJLaskuri.Web/TJLaskuri.Web.fsproj deleted file mode 100644 index 6cd0654..0000000 --- a/TJLaskuri.Web/TJLaskuri.Web.fsproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - net9.0 - - - - - - - - - - - - - - - - - - - - - diff --git a/TJLaskuri.Web/appsettings.Development.json b/TJLaskuri.Web/appsettings.Development.json deleted file mode 100644 index ff66ba6..0000000 --- a/TJLaskuri.Web/appsettings.Development.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } -} diff --git a/TJLaskuri.Web/appsettings.json b/TJLaskuri.Web/appsettings.json deleted file mode 100644 index 4d56694..0000000 --- a/TJLaskuri.Web/appsettings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*" -} diff --git a/TJLaskuri.Web/wwwroot/styles.css b/TJLaskuri.Web/wwwroot/styles.css deleted file mode 100644 index 66a6ef5..0000000 --- a/TJLaskuri.Web/wwwroot/styles.css +++ /dev/null @@ -1,72 +0,0 @@ -* { - box-sizing: border-box; - max-width: none; -} - -html { - font-size: 100%; -} - -@font-face { - font-family: 'Cooper Black'; - font-weight: normal; - font-style: normal; - font-display: swap; - src: - local('Cooper Black'), - url('https://cdn.jsdelivr.net/npm/fonts-archive-cooper-black/CooperBlack-Regular.woff2') format('woff2'), - url('https://cdn.jsdelivr.net/npm/fonts-archive-cooper-black/CooperBlack-Regular.woff') format('woff'), - url('https://cdn.jsdelivr.net/npm/fonts-archive-cooper-black/CooperBlack-Regular.otf') format('opentype'), - url('https://cdn.jsdelivr.net/npm/fonts-archive-cooper-black/CooperBlack-Regular.ttf') format('truetype'); -} - -body { - font-family: "Cooper Black", serif; - font-weight: bold; - max-width: 50rem; - margin: 0 auto; - padding: 1rem; -} - -.counter { - padding: 2rem; - text-align: center; - font-size: 2.5rem; - font-weight: 900; -} - -.counter_title { - display: block; - font-size: 1.2em; -} - -.counter_value { - display: block; - margin: 0; - font-weight: 900; - font-size: 2.5em; -} - -.counter_mornings { - display: block; -} - -.progress-bar { - height: 25px; - border-radius: 5px; - border: 1px solid black; - background-color: lightgrey; -} - -.progress-bar_value { - color: white; - height: 100%; - display: flex; - padding: 0 10px; - justify-content: flex-end; - align-items: center; - white-space: nowrap; - text-align: center; - border-radius: 5px; - min-width: 0; -} diff --git a/TJLaskuri.sln b/TJLaskuri.sln deleted file mode 100644 index 9062dd4..0000000 --- a/TJLaskuri.sln +++ /dev/null @@ -1,34 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "TJLaskuri.Web", "TJLaskuri.Web\TJLaskuri.Web.fsproj", "{33F70526-6D59-4B2C-8FBA-EA1AACD40492}" -EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "TJLaskuri.Frontend", "TJLaskuri.Frontend\TJLaskuri.Frontend.fsproj", "{9BD313D6-00B1-4483-B6FB-1F166B087EDB}" -EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "TJLaskuri.Core", "TJLaskuri.Core\TJLaskuri.Core.fsproj", "{E08D484F-BEF1-48A9-AC1A-73F8E934FDA7}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {33F70526-6D59-4B2C-8FBA-EA1AACD40492}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {33F70526-6D59-4B2C-8FBA-EA1AACD40492}.Debug|Any CPU.Build.0 = Debug|Any CPU - {33F70526-6D59-4B2C-8FBA-EA1AACD40492}.Release|Any CPU.ActiveCfg = Release|Any CPU - {33F70526-6D59-4B2C-8FBA-EA1AACD40492}.Release|Any CPU.Build.0 = Release|Any CPU - {9BD313D6-00B1-4483-B6FB-1F166B087EDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9BD313D6-00B1-4483-B6FB-1F166B087EDB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9BD313D6-00B1-4483-B6FB-1F166B087EDB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9BD313D6-00B1-4483-B6FB-1F166B087EDB}.Release|Any CPU.Build.0 = Release|Any CPU - {E08D484F-BEF1-48A9-AC1A-73F8E934FDA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E08D484F-BEF1-48A9-AC1A-73F8E934FDA7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E08D484F-BEF1-48A9-AC1A-73F8E934FDA7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E08D484F-BEF1-48A9-AC1A-73F8E934FDA7}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal -- cgit v1.2.3