2017-04-02 10:43:48 +00:00
|
|
|
<h1>
|
|
|
|
{{ team.name }}
|
2019-01-17 12:51:44 +00:00
|
|
|
<button type="button" ng-click="showScore()" class="float-right btn btn-primary mr-1" ng-if="team.id">
|
|
|
|
Score
|
|
|
|
</button>
|
|
|
|
<button type="button" ng-click="showStats()" class="float-right btn btn-primary mr-1" ng-if="team.id">
|
2017-04-02 10:43:48 +00:00
|
|
|
<span class="glyphicon glyphicon-list" aria-hidden="true"></span>
|
|
|
|
Statistiques
|
2017-12-17 15:07:04 +00:00
|
|
|
</button>
|
2017-04-02 10:43:48 +00:00
|
|
|
</h1>
|
2017-01-28 18:36:28 +00:00
|
|
|
|
2017-12-21 20:25:23 +00:00
|
|
|
<div class="row">
|
2017-11-12 23:57:48 +00:00
|
|
|
<div class="col-lg-8">
|
|
|
|
|
2017-12-17 15:07:04 +00:00
|
|
|
<form ng-submit="saveTeam()">
|
2018-01-07 23:17:46 +00:00
|
|
|
<div class="row" ng-if="team.id">
|
2017-12-17 15:07:04 +00:00
|
|
|
<label for="idTeam" class="col-sm-2 col-form-label-sm">Identifiant</label>
|
2019-01-21 01:35:03 +00:00
|
|
|
<div class="col-sm-auto">
|
2018-01-07 23:17:46 +00:00
|
|
|
<input type="text" readonly class="form-control-sm form-control-plaintext" ng-model="team.id">
|
2017-01-28 18:36:28 +00:00
|
|
|
</div>
|
2019-01-21 01:35:03 +00:00
|
|
|
<div class="col-sm">
|
|
|
|
<div class="form-check">
|
|
|
|
<label class="custom-control custom-checkbox">
|
|
|
|
<input class="custom-control-input" type="checkbox" ng-model="team.active">
|
|
|
|
<span class="custom-control-label">Équipe active (inclure lors des générations)</span>
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
</div>
|
2017-01-28 18:36:28 +00:00
|
|
|
</div>
|
2018-01-07 23:17:46 +00:00
|
|
|
<div class="row" ng-repeat="field in fields">
|
2017-12-17 15:07:04 +00:00
|
|
|
<label for="{{ field }}" class="col-sm-2 col-form-label-sm">{{ field | capitalize }}</label>
|
2017-01-28 18:36:28 +00:00
|
|
|
<div class="col-sm-10">
|
2017-12-17 15:07:04 +00:00
|
|
|
<input type="text" class="form-control form-control-sm" id="{{ field }}" ng-model="team[field]" ng-if="field != 'color'">
|
|
|
|
<input type="color" class="form-control form-control-sm" id="{{ field }}{{ member.id }}" ng-model="team[field]" ng-if="field == 'color'" color>
|
2017-01-28 18:36:28 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="text-right" ng-show="team.id">
|
2017-12-17 15:07:04 +00:00
|
|
|
<button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Save</button>
|
2018-11-18 20:34:08 +00:00
|
|
|
<button type="button" class="btn btn-danger" ng-click="deleteTeam()"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Delete</button>
|
2017-01-28 18:36:28 +00:00
|
|
|
</div>
|
|
|
|
<div class="text-right" ng-show="!team.id">
|
2017-11-03 23:30:05 +00:00
|
|
|
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Create team</button>
|
2017-01-28 18:36:28 +00:00
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
|
|
|
|
<hr>
|
|
|
|
|
2017-12-17 15:07:04 +00:00
|
|
|
<div class="card-deck">
|
|
|
|
<form ng-submit="saveTeamMembers()" class="card" ng-if="team.id" ng-controller="TeamMembersController">
|
2018-01-07 23:17:46 +00:00
|
|
|
<div class="card-header bg-info text-light">
|
2018-06-24 16:19:19 +00:00
|
|
|
<button type="submit" class="float-right btn btn-sm btn-primary ml-2">
|
2018-01-07 23:17:46 +00:00
|
|
|
<span class="glyphicon glyphicon-save" aria-hidden="true"></span> Save</button>
|
2018-11-18 20:34:08 +00:00
|
|
|
<button type="button" ng-click="newMember()" class="float-right btn btn-sm btn-secondary ml-2">
|
2018-01-07 23:17:46 +00:00
|
|
|
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span></button>
|
2018-06-24 16:19:19 +00:00
|
|
|
<h4 class="m-0"><span class="glyphicon glyphicon-user" aria-hidden="true"></span> Membres</h4>
|
2017-04-04 23:56:14 +00:00
|
|
|
</div>
|
2018-01-07 23:17:46 +00:00
|
|
|
<div class="card-body bg-light text-dark" ng-if="members.length == 0">
|
2017-04-04 23:56:14 +00:00
|
|
|
This team has no member!
|
|
|
|
</div>
|
2018-01-07 23:17:46 +00:00
|
|
|
<div class="list-group-item bg-light text-dark" ng-repeat="member in members">
|
|
|
|
<div class="row" ng-repeat="field in fields">
|
|
|
|
<label for="{{ field }}{{ member.id }}" class="col-auto col-form-label-sm">{{ field | capitalize }}</label>
|
|
|
|
<div class="col">
|
2017-12-17 15:07:04 +00:00
|
|
|
<input type="text" class="form-control form-control-sm" id="{{ field }}{{ member.id }}" ng-model="member[field]">
|
2017-04-04 23:56:14 +00:00
|
|
|
</div>
|
2017-12-17 15:07:04 +00:00
|
|
|
<div class="col-sm-2" ng-if="$first">
|
2018-11-18 20:34:08 +00:00
|
|
|
<button type="button" ng-click="removeMember(member)" class="float-right btn btn-sm btn-primary"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></button>
|
2017-04-04 23:56:14 +00:00
|
|
|
</div>
|
2017-01-28 18:36:28 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
2017-12-17 15:07:04 +00:00
|
|
|
</form>
|
2017-11-12 23:57:48 +00:00
|
|
|
|
2017-12-17 15:07:04 +00:00
|
|
|
<div class="card">
|
2018-01-07 23:17:46 +00:00
|
|
|
<div class="card-header bg-primary text-light">
|
2017-12-17 15:07:04 +00:00
|
|
|
<span class="glyphicon glyphicon-certificate" aria-hidden="true"></span>
|
2018-01-21 13:18:26 +00:00
|
|
|
Certificates
|
|
|
|
<span class="badge badge-success" ng-if="certificates.length">Generated</span>
|
|
|
|
<span class="badge badge-danger" ng-if="!certificates.length">Not found</span>
|
2017-11-12 23:57:48 +00:00
|
|
|
</div>
|
2018-01-07 23:17:46 +00:00
|
|
|
<div class="card-body bg-light text-dark">
|
2018-01-21 13:18:26 +00:00
|
|
|
<dl class="dl-horizontal" ng-repeat="cert in certificates">
|
|
|
|
<dt>
|
|
|
|
Numéro de série
|
|
|
|
<button type="button" class="btn btn-sm btn-primary float-right" ng-click="dissociateCertificate(cert)">Dissocier</button>
|
|
|
|
</dt>
|
|
|
|
<dd>
|
|
|
|
{{ cert.id }}
|
|
|
|
<span class="badge badge-danger" ng-if="cert.revoked">Révoqué</span>
|
|
|
|
</dd>
|
|
|
|
<dt>
|
|
|
|
Date de création
|
|
|
|
<a class="btn btn-sm btn-success float-right" href="../api/certs/{{ cert.id }}">Télécharger</a>
|
|
|
|
</dt>
|
|
|
|
<dd>{{ cert.creation }}</dd>
|
|
|
|
<dt>Mot de passe</dt>
|
|
|
|
<dd>{{ cert.password }}</dd>
|
|
|
|
<dt ng-if="cert.revoked">Date de révocation</dt>
|
|
|
|
<dd ng-if="cert.revoked">{{ cert.revoked }}</dd>
|
|
|
|
</dl>
|
2017-11-12 23:57:48 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
2017-12-17 15:07:04 +00:00
|
|
|
|
2017-11-12 23:57:48 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="col-lg-4">
|
2018-01-07 23:17:46 +00:00
|
|
|
<table ng-controller="TeamHistoryController" class="table table-hover table-striped table-bordered bg-primary text-light">
|
2017-11-12 23:57:48 +00:00
|
|
|
<tbody>
|
2018-12-09 18:26:34 +00:00
|
|
|
<tr ng-repeat="row in history" ng-class="{'bg-ffound': row.kind == 'flag_found', 'bg-mfound': row.kind == 'mcq_found', 'bg-wchoices': row.kind == 'wchoices', 'bg-success': row.kind == 'solved', 'bg-info': row.kind == 'hint', 'bg-warning': row.kind == 'tries'}">
|
2017-12-21 20:25:23 +00:00
|
|
|
<td>
|
2019-01-17 12:51:44 +00:00
|
|
|
<nobr title="{{ row.time }}">{{ row.time | date:"mediumTime" }}</nobr><br>{{ row.kind }}
|
2017-12-21 20:25:23 +00:00
|
|
|
</td>
|
2017-11-12 23:57:48 +00:00
|
|
|
<td>
|
|
|
|
<span ng-if="row.primary_title">
|
|
|
|
<a href="exercices/{{ row.primary }}">{{ row.primary_title }}</a>
|
|
|
|
</span>
|
|
|
|
<span ng-if="!row.primary_title">{{ row.primary }}</span>
|
|
|
|
<span ng-if="row.secondary_title">
|
2018-12-02 03:52:48 +00:00
|
|
|
:
|
|
|
|
<a href="exercices/{{ row.primary }}#key-{{ row.secondary }}" ng-if="row.kind == 'key_found'">{{ row.secondary_title }}</a>
|
|
|
|
<a href="exercices/{{ row.primary }}#quizz-{{ row.secondary }}" ng-if="row.kind == 'mcq_found'">{{ row.secondary_title }}</a>
|
|
|
|
<a href="exercices/{{ row.primary }}#hint-{{ row.secondary }}" ng-if="row.kind == 'hint'">{{ row.secondary_title }}</a>
|
2017-11-12 23:57:48 +00:00
|
|
|
</span>
|
|
|
|
<span ng-if="!row.secondary_title && row.secondary && row.kind == 'solved'">(coeff x{{ row.secondary }})</span>
|
|
|
|
<span ng-if="!row.secondary_title && row.secondary && row.kind != 'solved'">: {{ row.secondary }}</span>
|
|
|
|
</td>
|
2017-12-21 20:25:23 +00:00
|
|
|
<td style="vertical-align: middle; padding: 0">
|
2018-11-18 20:34:08 +00:00
|
|
|
<button type="button" ng-click="delHistory(row)" class="float-right btn btn-sm btn-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></button>
|
2017-12-21 20:25:23 +00:00
|
|
|
</td>
|
2017-11-12 23:57:48 +00:00
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
2017-12-21 20:25:23 +00:00
|
|
|
</div>
|