@(u: User, as: Iterable[lila.activity.ActivityView])(implicit ctx: Context) @import ActivityHtml._ @import lila.activity.activities._ @import lila.activity.model._ @renderPatron(p: Patron) = {
@trans.activity.supportedNbMonths.plural(p.months, p.months, Html(s"""Patron"""))
} @renderPractice(p: Map[lila.practice.PracticeStudy, Int]) = {
@p.toList.sortBy(-_._2).zipWithIndex.map { case ((study, nb), i) => { @if(i == 1) {
} @trans.activity.practicedNbPositions.plural(nb, nb, Html(s"""${study.name}"""))
} } @if(p.size > 1) {
}
} @renderPuzzles(p: Puzzles) = {
@scoreHtml(p.score)
@trans.activity.solvedNbPuzzles.pluralSame(p.score.size) @p.score.rp.filterNot(_.isEmpty).map(ratingProgHtml)
} @renderGames(games: Games) = { @games.value.toList.sortBy(-_._2.size).map { case (pt, score) => {
@scoreHtml(score)
@trans.activity.playedNbGames.plural(score.size, score.size, pt.name) @score.rp.filterNot(_.isEmpty).map(ratingProgHtml)
} } } @renderPosts(posts: Map[lila.forum.Topic, List[lila.forum.Post]]) = {
@posts.map { case (topic, posts) => { @trans.activity.postedNbMessages.plural(posts.size, posts.size, Html(s"""${escapeHtml(shorten(topic.name, 70))}"""))
@posts.map { post => }
} }
} @renderCorresMoves(nb: Int, povs: List[Pov]) = {
@trans.activity.playedNbMoves.plural(nb, nb, povs.size)
@povs.map { pov => @if(pov.game.variant.exotic) { @pov.game.variant.name } else { @pov.game.opening.fold("Game")(_.opening.name) } vs @playerLink(pov.opponent, withRating = true, withDiff = false, withOnline = true, link = true)
}
} @renderCorresEnds(score: Score, povs: List[Pov]) = {
@trans.activity.completedNbGames.pluralSame(score.size) @score.rp.filterNot(_.isEmpty).map(ratingProgHtml) @scoreHtml(score)
@povs.map { pov => @pov.game.wonBy(pov.color) match { case Some(true) => {Victory} case Some(false) => {Defeat} case _ => {Draw} } vs @playerLink(pov.opponent, withRating = true, withDiff = false, withOnline = true, link = true)
}
} @renderFollows(all: Follows) = {
@List(all.in.map(_ -> true), all.out.map(_ -> false)).flatten.map { case (f, in) => { @if(in) { @trans.activity.gainedNbFollowers.pluralSame(f.actualNb) } else { @trans.activity.followedNbPlayers.pluralSame(f.actualNb) }
@htmlList(f.ids.map(id => userIdLink(id.some))) @f.nb.map { nb => and @(nb - maxSubEntries) more }
} }
} @renderSimul(s: lila.simul.Simul) = {
@s.name simul by @userIdLink(s.hostId.some) @scoreHtml(Score(s.wins, s.losses, s.draws, none))
} @renderSimuls(simuls: List[lila.simul.Simul]) = {
@simuls.groupBy(_.isHost(u.some)).map { case (isHost, simuls) => { @if(isHost) { @trans.activity.hostedNbSimuls.pluralSame(simuls.size) } else { @trans.activity.joinedNbSimuls.pluralSame(simuls.size) }
@simuls.map(renderSimul)
} }
} @renderStudies(studies: List[lila.study.Study.IdName]) = {
@trans.activity.createdNbStudies.pluralSame(studies.size)
@studies.map { s => @s.name
}
} @renderTeams(teams: Teams) = {
@trans.activity.joinedNbTeams.pluralSame(teams.value.size)
@htmlList(teams.value.map(id => teamLink(id)))
} @tourLink(t: lila.tournament.LeaderboardApi.Entry) = { @tournamentIdToName(t.tourId) } @renderTours(tours: lila.activity.ActivityView.Tours) = {
@trans.activity.competedInNbTournaments.pluralSame(tours.nb)
@tours.best.map { t => @trans.activity.rankedInTournament.plural(t.nbGames, Html(s"""${t.rank}"""), (t.rankRatio.value * 100).toInt atLeast 1, t.nbGames, tourLink(t))
}
} @renderStream() = {
Hosted a live stream
} @renderSignup() = {
@trans.activity.signedUp()
}
@as.map { a =>

@semanticDate(a.interval.getStart)

@a.patron.map(renderPatron) @a.practice.map(renderPractice) @a.puzzles.map(renderPuzzles) @a.games.map(renderGames) @a.posts.map(renderPosts) @a.corresMoves.map { case (nb, povs) => { @renderCorresMoves(nb, povs) } } @a.corresEnds.map { case (score, povs) => { @renderCorresEnds(score, povs) } } @a.follows.map(renderFollows) @a.simuls.map(renderSimuls) @a.studies.map(renderStudies) @a.tours.map(renderTours) @a.teams.map(renderTeams) @if(a.stream) { @renderStream() } @if(a.signup) { @renderSignup() }
}