Merge: Mock Github API tests
[nit.git] / contrib / nitrpg / src / templates / panels.nit
index e4e7f8f..8f27a5f 100644 (file)
@@ -217,7 +217,7 @@ class PlayerStatusPanel
        redef fun render_title do
                add "<a href=\"{player.url}\">"
                add " <img class=\"img-circle\" style=\"width: 30px\""
-               add "   src=\"{player.user.avatar_url}\" alt=\"{player.name}\">"
+               add "   src=\"{player.user.avatar_url or else "#"}\" alt=\"{player.name}\">"
                add "</a>&nbsp;&nbsp;{player.link}"
        end
 
@@ -333,7 +333,7 @@ class PodiumPanel
                                        <p>
                                                <a href="{{{player.url}}}">
                                                        <img class="img-circle" style="width: 80px"
-                                                               src="{{{player.user.avatar_url}}}" alt="{{{player.name}}}">
+                                                               src="{{{player.user.avatar_url or else "#"}}}" alt="{{{player.name}}}">
                                                </a>
                                        </p>
                                        <p>{{{player.link}}}</p>
@@ -360,16 +360,67 @@ class PlayerReviewsPanel
 
        redef fun render_title do
                add "<span class=\"glyphicon glyphicon-check\"></span>&nbsp;&nbsp;"
-               add "Review pull requests to gain nitcoins!"
+               add "Review pull requests and comment issues to gain nitcoins!"
        end
 
        redef fun render_body do
                var q = "is:open label:need_review sort:updated-asc " +
                        "-involves:{player.name}"
 
-               var issues = game.repo.search_issues(q)
+               var q2 = "is:open label:request_for_comments sort:updated-asc " +
+                       "-involves:{player.name}"
+
+               var issues = new ArraySet[Issue]
+               issues.add_all game.api.search_repo_issues(game.repo, q)
+               issues.add_all game.api.search_repo_issues(game.repo, q2)
+               if issues.is_empty then
+                       add "<em>No pull request or issue to review 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 or else "#"}}}" 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 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.api.search_repo_issues(game.repo, q)
+               issues.add_all game.api.search_repo_issues(game.repo, q2)
                if issues.is_empty then
-                       add "<em>No pull request to review yet...</em>"
+                       add "<em>No work to do yet...</em>"
                        return
                end
                for issue in issues do
@@ -378,7 +429,7 @@ class PlayerReviewsPanel
                        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}}}">
+                                                src="{{{user.avatar_url or else "#"}}}" alt="{{{uplay.name}}}">
                                        </a>
                                        <div class="media-body">
                                         <h4 class="media-heading">
@@ -502,7 +553,7 @@ class AchievementPanel
                        <a class="media-left" href="{{{player.url}}}">
                                 <span class="badge progress-bar-warning" style="position: absolute">#1</span>
                         <img class=\"img-circle\" style="width:50px"
-                         src="{{{player.user.avatar_url}}}" alt="{{{player.name}}}">
+                                        src="{{{player.user.avatar_url or else "#"}}}" alt="{{{player.name}}}">
                        </a>
                                <div class="media-body">
                                 <h4 class="media-heading">Unlocked first by {{{player.link}}}</h4>