admin: add exercices stats accordion
This commit is contained in:
parent
f4c74f57d6
commit
b387f011d8
@ -22,6 +22,8 @@ func init() {
|
|||||||
router.PATCH("/api/exercices/:eid", apiHandler(exerciceHandler(partUpdateExercice)))
|
router.PATCH("/api/exercices/:eid", apiHandler(exerciceHandler(partUpdateExercice)))
|
||||||
router.DELETE("/api/exercices/:eid", apiHandler(exerciceHandler(deleteExercice)))
|
router.DELETE("/api/exercices/:eid", apiHandler(exerciceHandler(deleteExercice)))
|
||||||
|
|
||||||
|
router.GET("/api/exercices/:eid/stats.json", apiHandler(exerciceHandler(getExerciceStats)))
|
||||||
|
|
||||||
router.GET("/api/exercices/:eid/history.json", apiHandler(exerciceHandler(getExerciceHistory)))
|
router.GET("/api/exercices/:eid/history.json", apiHandler(exerciceHandler(getExerciceHistory)))
|
||||||
router.PATCH("/api/exercices/:eid/history.json", apiHandler(exerciceHandler(updateExerciceHistory)))
|
router.PATCH("/api/exercices/:eid/history.json", apiHandler(exerciceHandler(updateExerciceHistory)))
|
||||||
router.DELETE("/api/exercices/:eid/history.json", apiHandler(exerciceHandler(delExerciceHistory)))
|
router.DELETE("/api/exercices/:eid/history.json", apiHandler(exerciceHandler(delExerciceHistory)))
|
||||||
@ -167,6 +169,20 @@ func getExerciceHistory(exercice fic.Exercice, body []byte) (interface{}, error)
|
|||||||
return exercice.GetHistory()
|
return exercice.GetHistory()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type exerciceStats struct {
|
||||||
|
TeamTries int64 `json:"team_tries"`
|
||||||
|
TotalTries int64 `json:"total_tries"`
|
||||||
|
SolvedCount int64 `json:"solved_count"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func getExerciceStats(e fic.Exercice, body []byte) (interface{}, error) {
|
||||||
|
return exerciceStats{
|
||||||
|
TeamTries: e.TriedTeamCount(),
|
||||||
|
TotalTries: e.TriedCount(),
|
||||||
|
SolvedCount: e.SolvedCount(),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
type uploadedExerciceHistory struct {
|
type uploadedExerciceHistory struct {
|
||||||
IdTeam int64 `json:"team_id"`
|
IdTeam int64 `json:"team_id"`
|
||||||
Kind string
|
Kind string
|
||||||
|
@ -240,6 +240,9 @@ angular.module("FICApp")
|
|||||||
.factory("ExerciceHistory", function($resource) {
|
.factory("ExerciceHistory", function($resource) {
|
||||||
return $resource("/api/exercices/:exerciceId/history.json", { exerciceId: '@id' })
|
return $resource("/api/exercices/:exerciceId/history.json", { exerciceId: '@id' })
|
||||||
})
|
})
|
||||||
|
.factory("ExerciceStats", function($resource) {
|
||||||
|
return $resource("/api/exercices/:exerciceId/stats.json", { exerciceId: '@id' })
|
||||||
|
})
|
||||||
.factory("ExerciceFile", function($resource) {
|
.factory("ExerciceFile", function($resource) {
|
||||||
return $resource("/api/exercices/:exerciceId/files/:fileId", { exerciceId: '@idExercice', fileId: '@id' }, {
|
return $resource("/api/exercices/:exerciceId/files/:fileId", { exerciceId: '@idExercice', fileId: '@id' }, {
|
||||||
update: {method: 'PUT'}
|
update: {method: 'PUT'}
|
||||||
@ -1456,6 +1459,10 @@ angular.module("FICApp")
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
.controller("ExerciceStatsController", function($scope, ExerciceStats, $routeParams) {
|
||||||
|
$scope.stats = ExerciceStats.get({ exerciceId: $routeParams.exerciceId });
|
||||||
|
})
|
||||||
|
|
||||||
.controller("ExerciceClaimsController", function($scope, ExerciceClaims, Team, ClaimAssignee, $routeParams, $location) {
|
.controller("ExerciceClaimsController", function($scope, ExerciceClaims, Team, ClaimAssignee, $routeParams, $location) {
|
||||||
$scope.claims = ExerciceClaims.query({ exerciceId: $routeParams.exerciceId });
|
$scope.claims = ExerciceClaims.query({ exerciceId: $routeParams.exerciceId });
|
||||||
$scope.assignees = ClaimAssignee.query();
|
$scope.assignees = ClaimAssignee.query();
|
||||||
|
@ -49,6 +49,24 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="card border-secondary" ng-controller="ExerciceStatsController">
|
||||||
|
<div class="card-header bg-primary text-light" type="button" data-toggle="collapse" data-target="#collapseStats" aria-expanded="true" aria-controls="collapseStats">
|
||||||
|
<h4 class="m-0"><small class="glyphicon glyphicon-chevron-right" aria-hidden="true"></small> Statistiques</h4>
|
||||||
|
</div>
|
||||||
|
<div class="collapse show" id="collapseStats" aria-labelledby="headingStats" data-parent="#accordionExercice">
|
||||||
|
<dl class="row mt-2 ml-2">
|
||||||
|
<dt class="col-sm-6 text-truncate" title="Nombre de tentatives">Nombre de tentatives</dt>
|
||||||
|
<dd class="col-sm-6"><ng-pluralize count="stats.total_tries" when="{'0': 'aucune tentative', 'one': '{} tentative', 'other': '{} tentatives'}"></ng-pluralize></dd>
|
||||||
|
|
||||||
|
<dt class="col-sm-6 text-truncate" title="Nombre d'équipes">Nombre d'équipes</dt>
|
||||||
|
<dd class="col-sm-6"><ng-pluralize count="stats.team_tries" when="{'0': 'aucune équipe', 'one': '{} équipe', 'other': '{} équipes'}"></ng-pluralize></dd>
|
||||||
|
|
||||||
|
<dt class="col-sm-6 text-truncate" title="Défi validé par">Défi validé par</dt>
|
||||||
|
<dd class="col-sm-6"><ng-pluralize count="stats.solved_count" when="{'0': 'aucune équipe', 'one': '{} équipe', 'other': '{} équipes'}"></ng-pluralize></dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="card border-secondary" ng-controller="ExerciceFilesController">
|
<div class="card border-secondary" ng-controller="ExerciceFilesController">
|
||||||
<div class="card-header bg-secondary text-light" type="button" data-toggle="collapse" data-target="#collapseFiles" aria-expanded="true" aria-controls="collapseFiles">
|
<div class="card-header bg-secondary text-light" type="button" data-toggle="collapse" data-target="#collapseFiles" aria-expanded="true" aria-controls="collapseFiles">
|
||||||
<h4 class="m-0"><small class="glyphicon glyphicon-chevron-right" aria-hidden="true"></small> Téléchargements</h4>
|
<h4 class="m-0"><small class="glyphicon glyphicon-chevron-right" aria-hidden="true"></small> Téléchargements</h4>
|
||||||
|
Loading…
Reference in New Issue
Block a user