diff --git a/config.nims b/config.nims index d311cdf..8320f88 100644 --- a/config.nims +++ b/config.nims @@ -9,4 +9,9 @@ task build, "build": exec "pnpm run build" task watch, "rebuild on change": - exec "watchexec -w src nim js -d:packagesHash:master -o:site/app.js src/app.nim" + exec ( + "watchexec " & + "--project-origin . -w src " & + "nim js -d:packagesHash:master -o:site/app.js src/app.nim" + ) + diff --git a/src/packages.nim b/src/packages.nim index 949a404..09cd9cf 100644 --- a/src/packages.nim +++ b/src/packages.nim @@ -1,10 +1,11 @@ import std/[ algorithm, asyncjs, - strutils, sugar, tables, times + strutils, sugar, tables, times, uri ] import karax/[kbase] import jsony +import ./utils export algorithm, tables, times, asyncjs, sugar proc parseHook*(s: string, i: var int, v: var kstring) = @@ -69,3 +70,14 @@ proc sortVersion*(a, b: NimPackage): int = proc isAlias*(p: NimPackage): bool {.inline.} = p.alias != "" + +proc canonicalUrl*(p: NimPackage): kstring = + var uri = parseUri($p.url) + uri.path = uri.path.replace(".git") + # NOTE: why do I use this? + if uri.path[^1] == '/': + uri.path = uri.path[0..^2] + uri.query = "" + return uri.jss + + diff --git a/src/pages/package.nim b/src/pages/package.nim index eade0e1..0545642 100644 --- a/src/pages/package.nim +++ b/src/pages/package.nim @@ -1,11 +1,15 @@ import std/[algorithm, sugar] -import karax/[kbase, karaxdsl, vdom, jstrutils] +import karax/[kbase, karax, karaxdsl, kdom, vdom, jstrutils, ] import ../[context, packages, style] import ../components/[tag, package] import ../utils import notfound +proc openLink(link: kstring): proc() = + result = proc() = + discard open(window, link, "_self") + proc versionTable(pkg: NimPackage): VNode = var versions = pkg.versions versions.sort((a, b: Version) => cmp(a.time, b.time), order = Descending) @@ -17,7 +21,10 @@ proc versionTable(pkg: NimPackage): VNode = th: text "released" th: text "hash" for version in versions: - tr: + tr( + onClick = openLink(pkg.canonicalUrl & "/tree/" & version.tag.jss), + class = "link" + ): td: text version.tag td: text version.time.format("yyyy-MM-dd") td: text ($version.hash)[0..8] diff --git a/unocss.config.ts b/unocss.config.ts index da38413..975a92c 100644 --- a/unocss.config.ts +++ b/unocss.config.ts @@ -43,7 +43,7 @@ export default defineConfig({ color: ${catppuccinColors.mauve}; cursor: pointer; } - // loading animation + /* loading animation */ .lds-dual-ring { display: inline-block; width: 80px;