Improve bootstrap 4 support

This commit is contained in:
nemunaire 2017-12-17 16:07:04 +01:00
commit 384fc20ae8
17 changed files with 181 additions and 139 deletions

View file

@ -474,10 +474,14 @@ angular.module("FICApp")
$scope.event = Event.get({ eventId: $routeParams.eventId });
$scope.fields = ["kind", "txt", "time"];
$scope.kinds = {
"alert-secondary": "Par défaut",
"alert-primary": "Mise en valeur",
"alert-info": "Info",
"alert-warning": "Warning",
"alert-success": "Success",
"alert-danger": "Danger",
"alert-light": "Clair",
"alert-dark": "Foncé",
};
$scope.saveEvent = function() {

View file

@ -1,8 +1,12 @@
<h2>&Eacute;vénements<a ng-click="clearEvents()" class="pull-right btn btn-danger"><span class="glyphicon glyphicon-remove-sign" aria-hidden="true"></span> Vider la liste</a><a ng-click="show('new')" class="pull-right btn btn-primary" style="margin-right: 10px"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Ajouter un événement</a></h2>
<h2>
&Eacute;vénements
<button ng-click="clearEvents()" class="float-right btn btn-sm btn-danger"><span class="glyphicon glyphicon-remove-sign" aria-hidden="true"></span> Vider la liste</button>
<button ng-click="show('new')" class="float-right btn btn-sm btn-primary" style="margin-right: 10px"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Ajouter un événement</button>
</h2>
<p><input type="search" class="form-control" placeholder="Search" ng-model="query"></p>
<table class="table table-hover table-bordered">
<thead>
<table class="table table-hover table-bordered table-striped table-sm">
<thead class="thead-dark">
<tr>
<th ng-repeat="field in fields">
{{ field }}

View file

@ -1,18 +1,18 @@
<h2>&Eacute;vénement</h2>
<form ng-submit="saveEvent()" class="form-horizontal">
<div class="form-group" ng-repeat="field in fields">
<label for="{{ field }}" class="col-sm-1 control-label">{{ field | capitalize }}</label>
<form ng-submit="saveEvent()">
<div class="form-group row" ng-repeat="field in fields">
<label for="{{ field }}" class="col-sm-1 col-form-label">{{ field | capitalize }}</label>
<div class="col-sm-11">
<input type="text" class="form-control" id="{{ field }}" ng-model="event[field]" ng-show="field != 'kind' && field != 'time'">
<input type="datetime" class="form-control" id="{{ field }}" ng-model="event[field]" ng-show="field == 'time' && event.id">
<select class="form-control" id="{{ field }}" ng-model="event[field]" ng-options="k as v for (k, v) in kinds" ng-show="field == 'kind'">
<select class="custom-select" id="{{ field }}" ng-model="event[field]" ng-options="k as v for (k, v) in kinds" ng-show="field == 'kind'">
</select>
</div>
</div>
<div class="text-right" ng-show="event.id">
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Save</button>
<a class="btn btn-danger" ng-click="deleteEvent()"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Delete</a>
<button class="btn btn-danger" ng-click="deleteEvent()"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Delete</button>
</div>
<div class="text-right" ng-show="!event.id">
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Ajouter l'événement</button>

View file

@ -1,9 +1,9 @@
<h2>Exercices
<a ng-click="syncFull()" ng-class="{'disabled': inSync}" class="pull-right btn btn-default"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Synchroner</a>
<button ng-click="syncFull()" ng-class="{'disabled': inSync}" class="float-right btn btn-sm btn-secondary"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Synchroniser</button>
<small style="height: 0px;">
<div class="checkbox pull-right"><label><input type="checkbox" ng-model="syncFiles"> Fichiers</label></div>
<div class="checkbox pull-right"><label><input type="checkbox" ng-model="syncHints"> Indices</label></div>
<div class="checkbox pull-right"><label><input type="checkbox" ng-model="syncKeys"> Flags</label></div>
<div class="checkbox float-right"><label><input type="checkbox" ng-model="syncFiles"> Fichiers</label></div>
<div class="checkbox float-right"><label><input type="checkbox" ng-model="syncHints"> Indices</label></div>
<div class="checkbox float-right"><label><input type="checkbox" ng-model="syncKeys"> Flags</label></div>
</small>
</h2>
@ -13,8 +13,8 @@
<div>
<p><input type="search" class="form-control" placeholder="Search" ng-model="query"></p>
<table class="table table-hover table-bordered">
<thead>
<table class="table table-hover table-bordered table-striped table-sm">
<thead class="thead-dark">
<tr>
<th ng-repeat="field in fields">
{{ field }}

View file

@ -1,21 +1,21 @@
<h2>{{exercice.title}}</h2>
<form class="form-horizontal" ng-submit="saveExercice()">
<div class="form-group" ng-repeat="field in fields">
<label for="{{ field }}" class="col-xs-1 control-label">{{ field | capitalize }}</label>
<div class="col-xs-11">
<input type="text" class="form-control" id="{{ field }}" ng-model="exercice[field]" ng-show="field != 'statement' && field != 'overview' && field != 'depend' && field != 'gain' && field != 'coefficient'">
<input type="text" class="form-control" id="{{ field }}" ng-model="exercice[field]" ng-show="field == 'gain'" integer>
<input type="text" class="form-control" id="{{ field }}" ng-model="exercice[field]" ng-show="field == 'coefficient'" float>
<textarea class="form-control" id="{{field}}" ng-model="exercice[field]" ng-show="field == 'statement' || field == 'overview'"></textarea>
<select class="form-control" id="{{field}}" ng-model="exercice[field]" ng-options="ex.id as ex.title for ex in exercices" ng-show="field == 'depend'">
<form ng-submit="saveExercice()">
<div class="form-group row" ng-repeat="field in fields">
<label for="{{ field }}" class="col-sm-1 col-form-label-sm">{{ field | capitalize }}</label>
<div class="col-sm-11">
<input type="text" class="form-control form-control-sm" id="{{ field }}" ng-model="exercice[field]" ng-show="field != 'statement' && field != 'overview' && field != 'depend' && field != 'gain' && field != 'coefficient'">
<input type="text" class="form-control form-control-sm" id="{{ field }}" ng-model="exercice[field]" ng-show="field == 'gain'" integer>
<input type="text" class="form-control form-control-sm" id="{{ field }}" ng-model="exercice[field]" ng-show="field == 'coefficient'" float>
<textarea class="form-control form-control-sm" id="{{field}}" ng-model="exercice[field]" ng-show="field == 'statement' || field == 'overview'"></textarea>
<select class="form-control form-control-sm" id="{{field}}" ng-model="exercice[field]" ng-options="ex.id as ex.title for ex in exercices" ng-show="field == 'depend'">
<option value="">Aucune</option>
</select>
</div>
</div>
<div class="text-right" ng-show="exercice.id">
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Save</button>
<a class="btn btn-danger" ng-click="deleteExercice()"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Delete</a>
<button class="btn btn-danger" ng-click="deleteExercice()"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Delete</button>
</div>
<div class="text-right" ng-show="!exercice.id">
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Create exercice</button>
@ -27,26 +27,28 @@
<div class="row" ng-show="exercice.id">
<div class="col-md-4" ng-controller="ExerciceHintsController">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Indices<a ng-click="syncHints()" class="pull-right btn btn-xs btn-default" style="margin-left: 7px"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span></a><a ng-click="addHint()" class="pull-right btn btn-xs btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></a></h3>
<div class="card border-info">
<div class="card-header">
<button ng-click="addHint()" class="float-right btn btn-sm btn-primary" style="margin-left: 7px"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></button>
<button ng-click="syncHints()" class="float-right btn btn-sm btn-light"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span></button>
<h4 style="margin:0">Indices</h4>
</div>
<div class="list-group">
<form ng-submit="saveHint()" class="list-group-item form-horizontal" ng-repeat="hint in hints">
<div class="form-group">
<label for="htitle{{hint.id}}" class="col-xs-2 control-label">Titre</label>
<label for="htitle{{hint.id}}" class="col-xs-2 col-form-label">Titre</label>
<div class="col-xs-10">
<input type="text" id="htitle{{hint.id}}" ng-model="hint.title" class="form-control">
</div>
</div>
<div class="form-group">
<label for="hcnt{{hint.id}}" class="col-xs-2 control-label">Contenu</label>
<label for="hcnt{{hint.id}}" class="col-xs-2 col-form-label">Contenu</label>
<div class="col-xs-10">
<textarea class="form-control" id="hcnt{{hint.id}}" ng-model="hint.content"></textarea>
</div>
</div>
<div class="form-group">
<label for="hcost{{hint.id}}" class="col-xs-2 control-label">Coût</label>
<label for="hcost{{hint.id}}" class="col-xs-2 col-form-label">Coût</label>
<div class="col-xs-10">
<input type="text" id="hcost{{hint.id}}" ng-model="hint.cost" class="form-control" integer>
</div>
@ -59,9 +61,11 @@
</div>
<div class="col-md-4" ng-controller="ExerciceFilesController">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Téléchargements<a ng-click="syncFiles()" class="pull-right btn btn-xs btn-default" style="margin-left: 7px"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span></a><a ng-click="addFile()" class="pull-right btn btn-xs btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></a></h3>
<div class="card border-secondary">
<div class="card-header">
<button ng-click="addFile()" class="float-right btn btn-sm btn-primary" style="margin-left: 7px"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></button>
<button ng-click="syncFiles()" class="float-right btn btn-sm btn-light"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span></button>
<h4 style="margin:0">Téléchargements</h4>
</div>
<div class="list-group">
<form ng-submit="saveFile()" class="list-group-item form" ng-repeat="file in files">
@ -77,14 +81,16 @@
</div>
<div class="col-md-4" ng-controller="ExerciceKeysController">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Drapeaux<a ng-click="syncKeys()" class="pull-right btn btn-xs btn-default" style="margin-left: 7px"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span></a><a ng-click="addKey()" class="pull-right btn btn-xs btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></a></h3>
<div class="card border-success">
<div class="card-header">
<button ng-click="addKey()" class="float-right btn btn-sm btn-primary" style="margin-left: 7px"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></button>
<button ng-click="syncKeys()" class="float-right btn btn-sm btn-light"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span></button>
<h4>Drapeaux</h4>
</div>
<div class="list-group">
<form ng-submit="saveKey()" class="list-group-item form-horizontal" ng-repeat="key in keys">
<div class="form-group" id="key-{{key.id}}">
<label for="klabel{{key.id}}" class="col-xs-2 control-label">Intitulé</label>
<label for="klabel{{key.id}}" class="col-xs-2 col-form-label">Intitulé</label>
<div class="col-xs-8">
<input type="text" id="klabel{{key.id}}" ng-model="key.type" class="form-control">
</div>
@ -93,7 +99,7 @@
</div>
</div>
<div class="form-group" ng-show="key.id">
<label for="kvalue{{key.id}}" class="col-xs-2 control-label">Hash</label>
<label for="kvalue{{key.id}}" class="col-xs-2 col-form-label">Hash</label>
<div class="col-xs-8">
<input type="text" id="kvalue{{key.id}}" ng-model="key.value" class="form-control">
</div>
@ -102,7 +108,7 @@
</div>
</div>
<div class="form-group" ng-show="!key.id">
<label for="kvalue{{key.id}}" class="col-xs-2 control-label">Clef brute</label>
<label for="kvalue{{key.id}}" class="col-xs-2 col-form-label">Clef brute</label>
<div class="col-xs-8">
<input type="text" id="kvalue{{key.id}}" ng-model="key.key" class="form-control">
</div>

View file

@ -72,32 +72,42 @@
<div class="col-sm-10">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" ng-model="config.allowRegistration"> Activer les inscriptions
<label class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" ng-model="config.allowRegistration">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">Activer les inscriptions</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" ng-model="config.denyNameChange"> Interdire les changements de nom d'équipe
<label class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" ng-model="config.denyNameChange">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">Interdire les changements de nom d'équipe</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" ng-model="config.enableResolutionRoute"> Activer la route montrant les solutions
<label class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" ng-model="config.enableResolutionRoute">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">Activer la route montrant les solutions</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" ng-model="config.partialValidation"> Activer la validation partielle des challenges
<label class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" ng-model="config.partialValidation">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">Activer la validation partielle des challenges</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" ng-model="config.enableExerciceDepend"> Activer les dépendances des exercices
<label class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" ng-model="config.enableExerciceDepend">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">Activer les dépendances des exercices</span>
</label>
</div>
@ -113,12 +123,12 @@
</div>
<div class="text-right">
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Propager ces paramètres</button>
<button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Propager ces paramètres</button>
</div>
</form>
</div>
<div class="card-deck">
<div class="card-deck" style="margin-bottom: 35px">
<div class="card">
<button ng-click="reset('challenges')" class="btn btn-secondary" type="button"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Effacer les challenges et les thèmes</button>
</div>

View file

@ -1,37 +1,37 @@
<h1>
{{ team.name }}
<span ng-show="team.name != team.initialName"> ({{ team.initialName}})</span>
<a ng-click="showStats()" class="pull-right btn btn-primary" style="margin-right: 10px" ng-if="team.id">
<button ng-click="showStats()" class="float-right btn btn- btn-primary" style="margin-right: 10px" ng-if="team.id">
<span class="glyphicon glyphicon-list" aria-hidden="true"></span>
Statistiques
</a>
</button>
</h1>
<div class="col-lg-8">
<form ng-submit="saveTeam()" class="form-horizontal">
<div class="form-group" ng-if="team.id">
<label for="idTeam" class="col-sm-2 control-label">Identifiant</label>
<form ng-submit="saveTeam()">
<div class="form-group row" ng-if="team.id">
<label for="idTeam" class="col-sm-2 col-form-label-sm">Identifiant</label>
<div class="col-sm-10">
{{ team.id }}
<input type="text" readonly class="form-control-sm form-control-plaintext text-light" ng-model="team.id">
</div>
</div>
<div class="form-group" ng-if="team.id">
<label for="initialName" class="col-sm-2 control-label">Nom initial</label>
<div class="form-group row" ng-if="team.id">
<label for="initialName" class="col-sm-2 col-form-label-sm">Nom initial</label>
<div class="col-sm-10">
{{ team.initialName }}
<input type="text" readonly class="form-control-sm form-control-plaintext text-light" ng-model="team.initialName">
</div>
</div>
<div class="form-group" ng-repeat="field in fields">
<label for="{{ field }}" class="col-sm-2 control-label">{{ field | capitalize }}</label>
<div class="form-group row" ng-repeat="field in fields">
<label for="{{ field }}" class="col-sm-2 col-form-label-sm">{{ field | capitalize }}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="{{ field }}" ng-model="team[field]" ng-if="field != 'color'">
<input type="color" class="form-control" id="{{ field }}{{ member.id }}" ng-model="team[field]" ng-if="field == 'color'" color>
<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>
</div>
</div>
<div class="text-right" ng-show="team.id">
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Save</button>
<a class="btn btn-danger" ng-click="deleteTeam()"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Delete</a>
<button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Save</button>
<button class="btn btn-danger" ng-click="deleteTeam()"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Delete</button>
</div>
<div class="text-right" ng-show="!team.id">
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Create team</button>
@ -40,51 +40,48 @@
<hr>
<form ng-submit="saveTeamMembers()" class="col-md-7 form-horizontal" ng-if="team.id" ng-controller="TeamMembersController">
<div class="panel panel-default">
<div class="panel-heading">
<div class="card-deck">
<form ng-submit="saveTeamMembers()" class="card" ng-if="team.id" ng-controller="TeamMembersController">
<div class="card-header">
<div class="panel-title">
<span class="glyphicon glyphicon-user" aria-hidden="true"></span> Membres
<button type="submit" class="pull-right btn btn-xs btn-primary" style="margin-left: 10px">
<span class="glyphicon glyphicon-save" aria-hidden="true"></span> Save members</button>
<a ng-click="newMember()" class="pull-right btn btn-xs btn-default">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Add member</a>
<button type="submit" class="float-right btn btn-sm btn-primary" style="margin-left: 10px">
<span class="glyphicon glyphicon-save" aria-hidden="true"></span> Save</button>
<button ng-click="newMember()" class="float-right btn btn-sm btn-secondary">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span></button>
</div>
</div>
<div class="panel-body" ng-if="members.length == 0">
<div class="card-body" ng-if="members.length == 0">
This team has no member!
</div>
<div class="list-group-item" ng-repeat="member in members">
<div class="form-group" ng-repeat="field in fields">
<label for="{{ field }}{{ member.id }}" class="col-sm-3 control-label">{{ field | capitalize }}</label>
<div class="col-sm-8">
<input type="text" class="form-control" id="{{ field }}{{ member.id }}" ng-model="member[field]">
<div class="form-group row" ng-repeat="field in fields">
<label for="{{ field }}{{ member.id }}" class="col-sm-4 col-form-label-sm">{{ field | capitalize }}</label>
<div class="col-sm-6">
<input type="text" class="form-control form-control-sm" id="{{ field }}{{ member.id }}" ng-model="member[field]">
</div>
<div class="col-sm-1" ng-if="$first">
<a ng-click="removeMember(member)" class="pull-right btn btn-primary"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></a>
<div class="col-sm-2" ng-if="$first">
<button ng-click="removeMember(member)" class="float-right btn btn-sm btn-primary"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></button>
</div>
</div>
</div>
</div>
</form>
</form>
<div class="col-md-5" ng-if="team.id">
<div class="panel panel-primary">
<div class="panel-heading">
<div class="panel-title">
<span class="glyphicon glyphicon-certificate" aria-hidden="true"></span>
Certificate
<span class="label label-success" ng-if="hasCertificate">Generated</span>
<span class="label label-danger" ng-if="!hasCertificate">Not found</span>
</div>
<div class="card">
<div class="card-header">
<span class="glyphicon glyphicon-certificate" aria-hidden="true"></span>
Certificate
<span class="badge badge-success" ng-if="hasCertificate">Generated</span>
<span class="badge badge-danger" ng-if="!hasCertificate">Not found</span>
</div>
<div class="panel-body">
<a ng-click="generateCertificate()" class="btn btn-success" ng-if="!hasCertificate">
<span class="glyphicon glyphicon-certificate" aria-hidden="true"></span> Generate certificate</a>
<a ng-click="revokeCertificate()" class="btn btn-danger" ng-if="hasCertificate">
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Revoke certificate</a>
<div class="card-body">
<button ng-click="generateCertificate()" class="btn btn-success" ng-if="!hasCertificate">
<span class="glyphicon glyphicon-certificate" aria-hidden="true"></span> Generate certificate</button>
<button ng-click="revokeCertificate()" class="btn btn-danger" ng-if="hasCertificate">
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Revoke certificate</button>
</div>
</div>
</div>
</div>

View file

@ -1,12 +1,12 @@
<h2>
&Eacute;quipes
<a ng-click="show('new')" class="pull-right btn btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Ajouter une équipe</a>
<a ng-click="show('print')" class="pull-right btn btn-default" style="margin-right: 10px;"><span class="glyphicon glyphicon-print" aria-hidden="true"></span> Imprimer les équipes</a>
<button ng-click="show('new')" class="float-right btn btn-sm btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Ajouter une équipe</button>
<button ng-click="show('print')" class="float-right btn btn-sm btn-secondary" style="margin-right: 10px;"><span class="glyphicon glyphicon-print" aria-hidden="true"></span> Imprimer les équipes</button>
</h2>
<p><input type="search" class="form-control" placeholder="Search" ng-model="query"></p>
<table class="table table-hover table-bordered">
<thead>
<table class="table table-hover table-bordered table-striped table-sm">
<thead class="thead-dark">
<tr>
<th ng-repeat="field in fields">
{{ field }}

View file

@ -26,7 +26,7 @@
<div ng-if="team.name != team.initialName">{{ team.initialName }}</div>
</td>
<td ng-controller="TeamMembersController" style="padding: 0;">
<table class="table table-hover table-condensed" style="margin: 0;">
<table class="table table-hover table-sm" style="margin: 0;">
<tr class="row" ng-repeat="member in members">
<td class="col-sm-3" ng-repeat="field in fields">
{{ member[field] }}

View file

@ -9,9 +9,15 @@
.RdYlGn .q7-8{fill:rgb(70,80,80)}
</style>
<h1>{{ team.name }}<span ng-if="team.name != team.initialName"> ({{ team.initialName}})</span> <small><span ng-repeat="member in members"><span ng-if="$last && !$first"> et </span><span ng-if="$middle">, </span>{{ member.firstname | capitalize }} <em ng-if="member.nickname">{{ member.nickname }}</em> {{ member.lastname | capitalize }}</span></small></h1>
<h1>
{{ team.name }}
<span ng-if="team.name != team.initialName"> ({{ team.initialName}})</span>
<small>
<span ng-repeat="member in members"><span ng-if="$last && !$first"> et </span><span ng-if="$middle">, </span>{{ member.firstname | capitalize }} <em ng-if="member.nickname">{{ member.nickname }}</em> {{ member.lastname | capitalize }}</span>
</small>
</h1>
<div ng-controller="TeamExercicesController">
<div ng-controller="TeamExercicesController" class="bg-light text-dark">
<dl class="dl-horizontal">
<dt>Points</dt>
@ -40,8 +46,7 @@
<div class="clearfix"></div>
<div class="container" ng-controller="TeamStatsController">
<div class="row">
<div class="row" ng-controller="TeamStatsController">
<div class="col-sm-6" id="pieLevels">
<h4 class="text-center">Tentatives par niveaux</h4>
</div>
@ -49,6 +54,5 @@
<h4 class="text-center">Tentatives par thèmes</h4>
</div>
</div>
</div>
</div>

View file

@ -1,8 +1,12 @@
<h2>Thèmes<a ng-click="sync()" ng-class="{'disabled': inSync}" class="pull-right btn btn-default"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Synchroniser</a> <a ng-click="show('new')" class="pull-right btn btn-primary" style="margin-right: 10px;"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Ajouter un thème</a></h2>
<h2>
Thèmes
<button ng-click="show('new')" class="float-right btn btn-sm btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Ajouter un thème</button>
<button ng-click="sync()" ng-class="{'disabled': inSync}" class="float-right btn btn-sm btn-secondary" style="margin-right: 10px;"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Synchroniser</button>
</h2>
<p><input type="search" class="form-control" placeholder="Search" ng-model="query"></p>
<table class="table table-hover table-bordered">
<thead>
<table class="table table-hover table-bordered table-striped">
<thead class="thead-dark">
<tr>
<th ng-repeat="field in fields">
{{ field }}

View file

@ -1,27 +1,33 @@
<h2>{{theme.name}} <small>{{theme.authors}}</small></h2>
<form ng-submit="saveTheme()" class="form-horizontal">
<div class="form-group" ng-repeat="field in fields">
<label for="{{ field }}" class="col-sm-1 control-label">{{ field | capitalize }}</label>
<form ng-submit="saveTheme()">
<div class="form-group row" ng-repeat="field in fields">
<label for="{{ field }}" class="col-sm-1 col-form-label-sm">{{ field | capitalize }}</label>
<div class="col-sm-11">
<input type="text" class="form-control" id="{{ field }}" ng-model="theme[field]">
<input type="text" class="form-control form-control-sm" id="{{ field }}" ng-model="theme[field]">
</div>
</div>
<div class="text-right" ng-show="theme.id">
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Save</button>
<a class="btn btn-danger" ng-click="deleteTheme()"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Delete</a>
<button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Save</button>
<button class="btn btn-danger" ng-click="deleteTheme()"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Delete</button>
</div>
<div class="text-right" ng-show="!theme.id">
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Create theme</button>
</div>
</form>
<hr>
<div ng-show="theme.id" ng-controller="ExercicesListController">
<h3>Exercices<a ng-click="syncExo()" ng-class="{'disabled': inSync}" class="pull-right btn btn-sm btn-default"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Synchroniser</a> <a ng-click="show('new')" class="pull-right btn btn-sm btn-primary" style="margin-right: 10px;"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Ajouter un exercice</a></h3>
<h3>
Exercices
<button ng-click="show('new')" class="float-right btn btn-sm btn-primary" style="margin-left: 10px;"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Ajouter un exercice</button>
<button ng-click="syncExo()" ng-class="{'disabled': inSync}" class="float-right btn btn-sm btn-light"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Synchroniser</button>
</h3>
<p><input type="search" class="form-control" placeholder="Search" ng-model="query"></p>
<table class="table table-hover table-bordered">
<thead>
<table class="table table-hover table-bordered table-striped table-sm">
<thead class="thead-dark">
<tr>
<th ng-repeat="field in fields">
{{ field }}