nitrpg: add new player panel for work to do
authorJean Privat <jean@pryen.org>
Wed, 22 Apr 2015 16:11:36 +0000 (23:11 +0700)
committerJean Privat <jean@pryen.org>
Thu, 23 Apr 2015 07:08:19 +0000 (14:08 +0700)
Signed-off-by: Jean Privat <jean@pryen.org>

contrib/nitrpg/src/templates/panels.nit
contrib/nitrpg/src/web.nit

index 1883f30..97078ab 100644 (file)
@@ -397,6 +397,52 @@ class PlayerReviewsPanel
        end
 end
 
+# A `Panel` that displays the work assigned or tagged.
+class PlayerWorkPanel
+       super Panel
+
+       # Repo to display.
+       var game: Game
+
+       # Player to display customized list for.
+       var player: Player
+
+       redef fun render_title do
+               add "<span class=\"glyphicon glyphicon-check\"></span>&nbsp;&nbsp;"
+               add "Do your tasks to gain nitcoins!"
+       end
+
+       redef fun render_body do
+               var q = "is:open label:need_work sort:updated-asc author:{player.name}"
+               var q2 = "is:open sort:updated-asc assignee:{player.name}"
+
+               var issues = new ArraySet[Issue]
+               issues.add_all game.repo.search_issues(q).as(not null)
+               issues.add_all game.repo.search_issues(q2).as(not null)
+               if issues.is_empty then
+                       add "<em>No work to do yet...</em>"
+                       return
+               end
+               for issue in issues do
+                       var user = issue.user
+                       var uplay = user.player(game)
+                       add """<div class="media">
+                               <a class="media-left" href="{{{uplay.url}}}">
+                                        <img class=\"img-circle\" style="width:50px"
+                                          src="{{{user.avatar_url}}}" alt="{{{uplay.name}}}">
+                                       </a>
+                                       <div class="media-body">
+                                        <h4 class="media-heading">
+                                               {{{issue.link}}} {{{issue.title}}}
+                                       </h4>
+                                        <span class="text-muted">opened by </span>
+                                        {{{uplay.link}}}
+                                       </div>
+                                  </div>"""
+               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`...
index 5f4992e..38ed68e 100644 (file)
@@ -233,6 +233,7 @@ class PlayerHome
                page.side_panels.clear
                page.side_panels.add new PlayerStatusPanel(game, player)
                page.flow_panels.add new PlayerReviewsPanel(game, player)
+               page.flow_panels.add new PlayerWorkPanel(game, player)
                page.flow_panels.add new AchievementsListPanel(player)
                page.flow_panels.add new EventListPanel(player, list_limit, list_from)
                rsp.body = page.write_to_string