Composition page structure.

This commit is contained in:
JesseBrault0709 2024-06-07 10:29:06 +02:00
parent a14c241dcf
commit 57176a3aee
3 changed files with 27 additions and 1 deletions

View File

@ -2,18 +2,27 @@ package com.jessebrault.site.composition
import com.jessebrault.site.util.TitleMaker import com.jessebrault.site.util.TitleMaker
import com.jessebrault.ssg.view.WvcPageView import com.jessebrault.ssg.view.WvcPageView
import groovy.transform.Canonical
import jakarta.inject.Inject import jakarta.inject.Inject
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
class CompositionPage extends WvcPageView { class CompositionPage extends WvcPageView {
@Canonical
static class AlternateVersion {
final String versionName
final String path
}
Composition composition Composition composition
private final TitleMaker titleMaker private final TitleMaker titleMaker
private final CompositionContainer compositionContainer
@Inject @Inject
CompositionPage(TitleMaker titleMaker) { CompositionPage(TitleMaker titleMaker, CompositionContainer compositionContainer) {
this.titleMaker = titleMaker this.titleMaker = titleMaker
this.compositionContainer = compositionContainer
} }
String getTitle() { String getTitle() {
@ -24,4 +33,10 @@ class CompositionPage extends WvcPageView {
composition.date.format(DateTimeFormatter.ofPattern('yyyy')) composition.date.format(DateTimeFormatter.ofPattern('yyyy'))
} }
Set<AlternateVersion> getAlternateVersions() {
compositionContainer.getAlternateVersions(composition).collect {
new AlternateVersion(it.version, "/compositions/${it.slug}")
}
}
} }

View File

@ -11,6 +11,13 @@ import com.jessebrault.site.StandardPage
<WhenNotNull item={composition.version} render={<p class="version">$it</p>} /> <WhenNotNull item={composition.version} render={<p class="version">$it</p>} />
<p class="year">$compositionYear</p> <p class="year">$compositionYear</p>
<p class="instrumentation">$composition.instrumentation</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>
<section class="composition-text"> <section class="composition-text">
${composition.text.render()} ${composition.text.render()}

View File

@ -35,4 +35,8 @@ class CompositionContainer {
this.compositions.findAll { it.categories.contains(category) } this.compositions.findAll { it.categories.contains(category) }
} }
Set<Composition> getAlternateVersions(Composition composition) {
this.compositions.findAll { it.title == composition.title && it.version != composition.version }
}
} }