X-Git-Url: http://nitlanguage.org diff --git a/contrib/nitrpg/src/templates/panels.nit b/contrib/nitrpg/src/templates/panels.nit index 0a49241..14538c5 100644 --- a/contrib/nitrpg/src/templates/panels.nit +++ b/contrib/nitrpg/src/templates/panels.nit @@ -17,7 +17,7 @@ # Panels templates for `nitpg`. module panels -import templates_base +import templates_events # A panel can be displayed in a html page. # @@ -107,12 +107,14 @@ class GameStatusPanel redef fun render_title do add "  " - add "{game.name}" + add "{game.link}" end redef fun render_body do add "{game.load_players.length}" - add " players

" + add " players
" + add "{game.stats["achievements"]}" + add " achievements

" add "{game.stats["pulls"]} pull requests" add " ({game.stats["pulls_open"]} open)
" add "{game.stats["issues"]} issues" @@ -135,8 +137,7 @@ class PlayerStatusPanel add "" add " \"{player.name}\"" - add "  " - add "{player.name}" + add "  {player.link}" end redef fun render_body do @@ -145,10 +146,10 @@ class PlayerStatusPanel add "

ranked " add " # {ranking[player.name]}

" add "{player.nitcoins} nitcoins

" + add "{player.stats["achievements"]} achievements

" add "{player.stats["pulls"]} pull requests
" add "{player.stats["issues"]} issues
" add "{player.stats["commits"]} commits" - end end @@ -172,9 +173,7 @@ class ShortListPlayersPanel end (new PlayerCoinComparator).sort(players) for player in players do - add "" - add player.name - add " ({player.nitcoins})
" + add "{player.nitcoins} - {player.link}
" end end end @@ -210,7 +209,7 @@ class ListPlayersPanel for player in players do add "" add " {rank}" - add " {player.name}" + add " {player.link}" add " {player.nitcoins}" add "" rank += 1 @@ -256,7 +255,7 @@ class PodiumPanel src="{{{player.user.avatar_url}}}" alt="{{{player.name}}}">

-

{{{player.name}}}

+

{{{player.link}}}

{{{player.nitcoins}}}

@@ -293,18 +292,146 @@ class PlayerReviewsPanel return end for issue in issues do + var user = issue.user + var uplay = user.player(game) add """
- + {{{issue.user.login}}} + src="{{{user.avatar_url}}}" alt="{{{uplay.name}}}">

- #{{{issue.number}}} {{{issue.title}}}

+ {{{issue.link}}} {{{issue.title}}} + opened by - {{{issue.user.login}}} + {{{uplay.link}}}
""" end end end + +# A `Panel` that displays a pagined list of events stored in the `entity`. +# +# This way the panel can be used to view events stored under `Game`, `Player`... +class EventListPanel + super Panel + + # Entity to load the events from. + var entity: GameEntity + + # Number of events to display. + var limit: Int + + # From where to start? + var from: Int + + redef fun render_title do + add "  " + add "Last events" + end + + redef fun render_body do + var events = entity.load_events + if events.is_empty then + add "No event yet..." + return + end + # check input + if limit < 0 then limit = 10 + if from < 0 then from = 0 + # display events + for i in [from .. from + limit] do + if i >= events.length then break + add events[i].tpl_event.media_item + end + # pagination + if limit > events.length then return + add "
" + add """
""" + if from > 0 then + add """ + """ + end + if from + limit < events.length then + add """ + + """ + end + add "
" + end +end + +# Achievement unlocked list panel. +class AchievementsListPanel + super Panel + + # Entity to load the events from. + var entity: GameEntity + + redef fun render_title do + add "  " + add "Achievements unlocked" + end + + redef fun render_body do + var achs = entity.load_achievements.values.to_a + if achs.is_empty then + add "No achievement yet..." + return + end + for ach in achs do add ach.list_item + end +end + +# Achievement detail panel. +class AchievementPanel + super Panel + + # Achievement to display. + var achievement: Achievement + + redef fun render_title do + add "  " + add "Achievement details" + end + + redef fun render_body do + add """

+ +{{{achievement.reward}}} + {{{achievement.name}}} +

+

{{{achievement.desc}}}

""" + + var events = achievement.load_events + + if events.is_empty then + add "Never unlocked..." + return + end + + var event = events.last + var tpl = event.tpl_event + var player = tpl.player + add "
" + add """
+ + #1 + {{{player.name}}} + +
+

Unlocked first by {{{player.link}}}

+ at {{{event.time}}} +
+
""" + + if events.length > 1 then + add """


Also unlocked by + {{{events.length}}} players.

""" + end + end +end