Skip to content

Commit fa27cdf

Browse files
committed
implement #100
1 parent 0e9049d commit fa27cdf

40 files changed

+607
-256
lines changed

Assets/css/Main.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/css/Main.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
import HTML
2+
import UnixTime
3+
4+
extension Swiftinit
5+
{
6+
struct PackageCard
7+
{
8+
private
9+
let package:Unidoc.PackageOutput
10+
11+
init(_ package:Unidoc.PackageOutput)
12+
{
13+
self.package = package
14+
}
15+
}
16+
}
17+
extension Swiftinit.PackageCard:HyperTextOutputStreamable
18+
{
19+
static
20+
func += (li:inout HTML.ContentEncoder, self:Self)
21+
{
22+
li[.p]
23+
{
24+
$0[.span]
25+
{
26+
$0[.a]
27+
{
28+
$0.href = "\(Swiftinit.Tags[self.package.metadata.symbol])"
29+
} = self.package.metadata.repo?.origin.name ??
30+
self.package.metadata.symbol.identifier
31+
32+
$0[.span] { $0.class = "owner" } = self.package.metadata.repo?.origin.owner
33+
}
34+
35+
if let repo:Unidoc.PackageRepo = self.package.metadata.repo
36+
{
37+
$0[.span] { $0.class = "license" } = repo.license?.name ?? "Unknown License"
38+
}
39+
else
40+
{
41+
$0[.span] { $0.class = "placeholder" } = "Local"
42+
}
43+
}
44+
45+
li[.p] = self.package.metadata.repo?.origin.about
46+
47+
li[.p, { $0.class = "chyron" }]
48+
{
49+
if let release:Unidoc.EditionMetadata = self.package.release
50+
{
51+
$0[.span] { $0.class = "release" } = "\(release.patch)"
52+
}
53+
else
54+
{
55+
$0[.span] { $0.class = "placeholder" } = "No releases"
56+
}
57+
58+
guard
59+
let repo:Unidoc.PackageRepo = self.package.metadata.repo
60+
else
61+
{
62+
return
63+
}
64+
65+
$0[.span]
66+
{
67+
switch repo.origin
68+
{
69+
case .github(let origin):
70+
let age:Age = .init(.now() - .millisecond(origin.pushed.value))
71+
$0[.span]
72+
{
73+
$0.class = "pushed"
74+
$0.title = """
75+
This package’s repository was last pushed to \(age.long).
76+
"""
77+
} = age.short
78+
}
79+
80+
$0[.span]
81+
{
82+
$0.class = "stars"
83+
$0.title = """
84+
This package’s repository has
85+
\(repo.stars) \(repo.stars != 1 ? "stars" : "star").
86+
"""
87+
} = "\(repo.stars)"
88+
}
89+
}
90+
}
91+
}

Sources/SwiftinitPages/Surfaces/Packages/Swiftinit.PackagesCreatedEndpoint.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ extension Swiftinit
1111
struct PackagesCreatedEndpoint:Mongo.PipelineEndpoint, Mongo.SingleBatchEndpoint
1212
{
1313
public
14-
let query:Unidoc.PackagesCreatedQuery
14+
let query:Unidoc.PackagesQuery<Unidoc.PackageCreated>
1515
public
16-
var batch:[Unidoc.PackageMetadata]
16+
var batch:[Unidoc.PackageOutput]
1717

1818
@usableFromInline
1919
let date:Timestamp.Date

Sources/SwiftinitPages/Surfaces/Packages/Swiftinit.PackagesCreatedPage.swift

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ extension Swiftinit
99
struct PackagesCreatedPage
1010
{
1111
private
12-
let packages:[Unidoc.PackageMetadata]
12+
let packages:[Unidoc.PackageOutput]
1313
private
1414
let date:Timestamp.Date
1515

16-
init(packages:[Unidoc.PackageMetadata], on date:Timestamp.Date)
16+
init(packages:[Unidoc.PackageOutput], on date:Timestamp.Date)
1717
{
1818
self.packages = packages
1919
self.date = date
@@ -47,15 +47,9 @@ extension Swiftinit.PackagesCreatedPage:Swiftinit.ApplicationPage
4747

4848
$0[.ol, { $0.class = "packages" }]
4949
{
50-
for package:Unidoc.PackageMetadata in self.packages
50+
for package:Unidoc.PackageOutput in self.packages
5151
{
52-
$0[.li]
53-
{
54-
$0[.a]
55-
{
56-
$0.href = "\(Swiftinit.Tags[package.symbol])"
57-
} = "\(package.symbol)"
58-
}
52+
$0[.li] = Swiftinit.PackageCard.init(package)
5953
}
6054
}
6155
}

Sources/SwiftinitPages/Surfaces/Packages/Swiftinit.RealmPage.swift

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ extension Swiftinit
66
struct RealmPage
77
{
88
let metadata:Unidoc.RealmMetadata
9-
let packages:[Unidoc.PackageMetadata]
9+
let packages:[Unidoc.PackageOutput]
1010
let user:Unidoc.User?
1111

1212
private
1313
init(metadata:Unidoc.RealmMetadata,
14-
packages:[Unidoc.PackageMetadata],
14+
packages:[Unidoc.PackageOutput],
1515
user:Unidoc.User?)
1616
{
1717
self.metadata = metadata
@@ -26,11 +26,11 @@ extension Swiftinit.RealmPage
2626
{
2727
let output:Unidoc.RealmQuery.Output = output
2828

29-
var packages:[Unidoc.PackageMetadata] = output.packages
29+
var packages:[Unidoc.PackageOutput] = output.packages
3030
let metadata:Unidoc.RealmMetadata = output.metadata
3131
let user:Unidoc.User? = (consume output).user
3232

33-
packages.sort { $0.symbol < $1.symbol }
33+
packages.sort { $0.metadata.symbol < $1.metadata.symbol }
3434

3535
self.init(metadata: metadata, packages: packages, user: user)
3636
}
@@ -63,15 +63,9 @@ extension Swiftinit.RealmPage:Swiftinit.ApplicationPage
6363
$0[.h2] = "Realm members"
6464
$0[.ol, { $0.class = "packages" }]
6565
{
66-
for package:Unidoc.PackageMetadata in self.packages
66+
for package:Unidoc.PackageOutput in self.packages
6767
{
68-
$0[.li]
69-
{
70-
$0[.a]
71-
{
72-
$0.href = "\(Swiftinit.Tags[package.symbol])"
73-
} = "\(package.symbol)"
74-
}
68+
$0[.li] = Swiftinit.PackageCard.init(package)
7569
}
7670
}
7771
}

Sources/SwiftinitPages/Surfaces/Swiftinit.HomePage.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ extension Swiftinit.HomePage:Swiftinit.RenderablePage
105105
$0[.span] = item.refname
106106
}
107107

108-
$0[.p] { $0.class = "age" } = "\(age)"
108+
$0[.p] { $0.class = "age" } = age.long
109109
}
110110
}
111111
}
@@ -134,7 +134,7 @@ extension Swiftinit.HomePage:Swiftinit.RenderablePage
134134
} = item.volume.symbol.version
135135
}
136136

137-
$0[.p] { $0.class = "age" } = "\(age)"
137+
$0[.p] { $0.class = "age" } = age.long
138138
}
139139
}
140140
}

0 commit comments

Comments
 (0)