This commit is contained in:
nemunaire 2016-01-21 05:00:15 +01:00
parent 0247c89b02
commit 3aafb15f19
4 changed files with 50 additions and 4 deletions

View File

@ -98,7 +98,7 @@ func nginxGenTeam() (string, error) {
type exportedTeam struct {
Name string `json:"name"`
Color string `json:"color"`
Rank int64 `json:"rank"`
Rank int `json:"rank"`
Points int64 `json:"score"`
Members []fic.Member `json:"members"`
}
@ -106,6 +106,8 @@ type exportedTeam struct {
func exportTeams() (interface{}, error) {
if teams, err := fic.GetTeams(); err != nil {
return nil, err
} else if rank, err := fic.GetRank(); err != nil {
return nil, err
} else {
ret := map[string]exportedTeam{}
for _, team := range teams {
@ -117,7 +119,7 @@ func exportTeams() (interface{}, error) {
ret[fmt.Sprintf("%d", team.Id)] = exportedTeam{
team.Name,
fmt.Sprintf("#%x", team.Color),
1,
rank[team.Id],
points,
members,
}

View File

@ -6,8 +6,8 @@ angular.module("FICApp", ["ngRoute"])
templateUrl: "views/team-edit.html"
})
.when("/rank", {
controller: "TeamListController",
templateUrl: "views/team-list.html"
controller: "RankController",
templateUrl: "views/rank.html"
})
.when("/:theme", {
controller: "ExerciceController",

View File

@ -0,0 +1,18 @@
<p><input type="search" class="form-control" placeholder="Rechercher" ng-model="query"></p>
<table class="table table-hover table-bordered table-striped">
<thead>
<tr>
<th ng-repeat="field in fields" ng-click="order(field)">
{{ field }}
<span class="glyphicon" ng-show="rankOrder === field" ng-class="{'glyphicon-up': !reverse, 'glyphicon-down': reverse}"></span>
</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="team in rank | filter: query | orderBy:rankOrder:reverse" ng-click="show(team.id)" ng-show="team.rank">
<td ng-repeat="field in fields">
{{ team[field] }}
</td>
</tr>
</tbody>
</table>

View File

@ -81,6 +81,32 @@ func (t Team) GetPoints() (int64, error) {
}
}
func GetRank() (map[int64]int, error) {
if rows, err := DBQuery("SELECT id_team, SUM(E.gain) AS score, MAX(S.time) FROM exercice_solved S INNER JOIN exercices E ON E.id_exercice = S.id_exercice GROUP BY id_team HAVING score > 0 ORDER BY score ASC, time ASC"); err != nil {
return nil, err
} else {
defer rows.Close()
rank := map[int64]int{}
nteam := 0
for rows.Next() {
nteam += 1
var tid int64
var score int64
var tzzz int64
if err := rows.Scan(&tid, &score, &tzzz); err != nil {
return nil, err
}
rank[tid] = nteam
}
if err := rows.Err(); err != nil {
return nil, err
}
return rank, nil
}
}
func (t Team) HasAccess(e Exercice) bool {
if e.Depend == nil {
return true