Composition page structure.
This commit is contained in:
parent
a14c241dcf
commit
57176a3aee
@ -2,18 +2,27 @@ package com.jessebrault.site.composition
|
||||
|
||||
import com.jessebrault.site.util.TitleMaker
|
||||
import com.jessebrault.ssg.view.WvcPageView
|
||||
import groovy.transform.Canonical
|
||||
import jakarta.inject.Inject
|
||||
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
class CompositionPage extends WvcPageView {
|
||||
|
||||
@Canonical
|
||||
static class AlternateVersion {
|
||||
final String versionName
|
||||
final String path
|
||||
}
|
||||
|
||||
Composition composition
|
||||
private final TitleMaker titleMaker
|
||||
private final CompositionContainer compositionContainer
|
||||
|
||||
@Inject
|
||||
CompositionPage(TitleMaker titleMaker) {
|
||||
CompositionPage(TitleMaker titleMaker, CompositionContainer compositionContainer) {
|
||||
this.titleMaker = titleMaker
|
||||
this.compositionContainer = compositionContainer
|
||||
}
|
||||
|
||||
String getTitle() {
|
||||
@ -24,4 +33,10 @@ class CompositionPage extends WvcPageView {
|
||||
composition.date.format(DateTimeFormatter.ofPattern('yyyy'))
|
||||
}
|
||||
|
||||
Set<AlternateVersion> getAlternateVersions() {
|
||||
compositionContainer.getAlternateVersions(composition).collect {
|
||||
new AlternateVersion(it.version, "/compositions/${it.slug}")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -11,6 +11,13 @@ import com.jessebrault.site.StandardPage
|
||||
<WhenNotNull item={composition.version} render={<p class="version">$it</p>} />
|
||||
<p class="year">$compositionYear</p>
|
||||
<p class="instrumentation">$composition.instrumentation</p>
|
||||
<WhenNotEmpty items={alternateVersions}>
|
||||
<p>Alternate versions:
|
||||
<ul>
|
||||
<Each items={alternateVersions} transform={<li><a href={it.path}>${it.versionName}</a></li>} />
|
||||
</ul>
|
||||
</p>
|
||||
</WhenNotEmpty>
|
||||
</section>
|
||||
<section class="composition-text">
|
||||
${composition.text.render()}
|
||||
|
@ -35,4 +35,8 @@ class CompositionContainer {
|
||||
this.compositions.findAll { it.categories.contains(category) }
|
||||
}
|
||||
|
||||
Set<Composition> getAlternateVersions(Composition composition) {
|
||||
this.compositions.findAll { it.title == composition.title && it.version != composition.version }
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user