From b387f011d8ca044313b318fe2e1c5afff7b293cb Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Tue, 28 Jan 2020 14:01:13 +0100 Subject: [PATCH] admin: add exercices stats accordion --- admin/api/exercice.go | 16 ++++++++++++++++ admin/static/js/app.js | 7 +++++++ admin/static/views/exercice.html | 18 ++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/admin/api/exercice.go b/admin/api/exercice.go index 3ca19709..2a4eeb27 100644 --- a/admin/api/exercice.go +++ b/admin/api/exercice.go @@ -22,6 +22,8 @@ func init() { router.PATCH("/api/exercices/:eid", apiHandler(exerciceHandler(partUpdateExercice))) 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.PATCH("/api/exercices/:eid/history.json", apiHandler(exerciceHandler(updateExerciceHistory))) 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() } +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 { IdTeam int64 `json:"team_id"` Kind string diff --git a/admin/static/js/app.js b/admin/static/js/app.js index cf0a4815..d78f79ca 100644 --- a/admin/static/js/app.js +++ b/admin/static/js/app.js @@ -240,6 +240,9 @@ angular.module("FICApp") .factory("ExerciceHistory", function($resource) { 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) { return $resource("/api/exercices/:exerciceId/files/:fileId", { exerciceId: '@idExercice', fileId: '@id' }, { 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) { $scope.claims = ExerciceClaims.query({ exerciceId: $routeParams.exerciceId }); $scope.assignees = ClaimAssignee.query(); diff --git a/admin/static/views/exercice.html b/admin/static/views/exercice.html index 17216329..af825ddf 100644 --- a/admin/static/views/exercice.html +++ b/admin/static/views/exercice.html @@ -49,6 +49,24 @@ +
+
+

Statistiques

+
+
+
+
Nombre de tentatives
+
+ +
Nombre d'équipes
+
+ +
Défi validé par
+
+
+
+
+

Téléchargements