154 lines
8.5 KiB
HTML
154 lines
8.5 KiB
HTML
<h2>{{exercice.title}}</h2>
|
|
|
|
<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>
|
|
<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>
|
|
</div>
|
|
</form>
|
|
|
|
<hr>
|
|
|
|
<div class="row mb-5" ng-show="exercice.id">
|
|
|
|
<div class="col-md-4" ng-controller="ExerciceHintsController">
|
|
<div class="card border-info">
|
|
<div class="card-header bg-info text-light">
|
|
<button ng-click="addHint()" class="float-right btn btn-sm btn-primary ml-2"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></button>
|
|
<button ng-click="syncHints()" class="float-right btn btn-sm btn-light ml-2"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span></button>
|
|
<h4 class="m-0">Indices</h4>
|
|
</div>
|
|
<div class="list-group">
|
|
<form ng-submit="saveHint()" class="list-group-item form-horizontal bg-light text-dark" ng-repeat="hint in hints">
|
|
<input type="text" id="htitle{{hint.id}}" ng-model="hint.title" class="form-control form-control-sm" placeholder="Titre">
|
|
<textarea class="form-control form-control-sm" id="hcnt{{hint.id}}" ng-model="hint.content" ng-if="!hint.file"></textarea>
|
|
<p ng-if="hint.file">
|
|
Fichier : <samp>{{ hint.file }}</samp><br>
|
|
Hash : <samp class="cksum">{{ hint.content }}</samp><br>
|
|
</p>
|
|
<div class="row">
|
|
<div class="col-8 input-group input-group-sm mb-3">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text" id="inputGroup-sizing-sm">Coût</span>
|
|
</div>
|
|
<input type="text" id="hcost{{hint.id}}" ng-model="hint.cost" class="form-control" integer>
|
|
</div>
|
|
<div class="col-4">
|
|
<button type="submit" class="btn btn-sm btn-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span></button>
|
|
<button ng-click="deleteHint()" class="btn btn-sm btn-danger" ng-show="hint.id"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-4" ng-controller="ExerciceFilesController">
|
|
<div class="card border-secondary">
|
|
<div class="card-header bg-secondary text-light">
|
|
<button ng-click="addFile()" class="float-right btn btn-sm btn-primary ml-2"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></button>
|
|
<button ng-click="syncFiles()" class="float-right btn btn-sm btn-light ml-2"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span></button>
|
|
<h4 class="m-0">Téléchargements</h4>
|
|
</div>
|
|
<div class="list-group">
|
|
<form ng-submit="saveFile()" class="list-group-item bg-light text-dark" ng-repeat="file in files">
|
|
<div class="row form-group">
|
|
<input type="text" ng-model="file.name" class="col form-control form-control-sm" placeholder="Nom de fichier">
|
|
<a href="{{file.path}}" class="btn btn-sm btn-secondary col-auto"><span class="glyphicon glyphicon-download" aria-hidden="true"></span></a>
|
|
<button type="submit" class="btn btn-sm btn-success col-auto"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span></button><br>
|
|
<button ng-click="deleteFile()" class="btn btn-sm btn-danger col-auto"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></button>
|
|
</div>
|
|
Taille : <span title="{{ file.size }} octets">{{ file.size | size }}</span><br>
|
|
BLAKE2b sum : <samp class="cksum">{{ file.checksum | cksum }}</samp>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-4" ng-controller="ExerciceKeysController">
|
|
<div class="card border-success">
|
|
<div class="card-header bg-success text-light">
|
|
<button ng-click="addKey()" class="float-right btn btn-sm btn-primary ml-2"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></button>
|
|
<button ng-click="syncKeys()" class="float-right btn btn-sm btn-light ml-2"><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 bg-light text-dark" ng-repeat="key in keys">
|
|
<div class="form-group row" id="key-{{key.id}}">
|
|
<input type="text" id="klabel{{key.id}}" ng-model="key.label" class="col form-control" placeholder="Intitulé">
|
|
<div class="col-auto" ng-show="key.id">
|
|
<button ng-click="deleteKey()" class="btn btn-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></button>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row" ng-show="key.id">
|
|
<input type="text" id="kvalue{{key.id}}" ng-model="key.value" class="col form-control" placeholder="Condensat">
|
|
<div class="col-auto">
|
|
<button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span></button>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row" ng-show="!key.id">
|
|
<input type="text" id="kvalue{{key.id}}" ng-model="key.key" class="col form-control" placeholder="Chaîne à valider">
|
|
<div class="col-auto">
|
|
<button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span></button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card border-success mt-2" ng-controller="ExerciceMCQKeysController">
|
|
<div class="card-header bg-success text-light">
|
|
<button ng-click="addQuiz()" class="float-right btn btn-sm btn-primary ml-2"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></button>
|
|
<h4>Quizz</h4>
|
|
</div>
|
|
<div class="list-group">
|
|
<form ng-submit="saveQuiz()" class="list-group-item form-horizontal bg-light text-dark" ng-repeat="(qk,q) in quiz">
|
|
<div class="form-group row" id="quiz-{{q.id}}">
|
|
<input type="text" id="qlabel{{q.id}}" ng-model="q.title" class="col form-control" placeholder="Intitulé">
|
|
<div class="col-auto" ng-show="q.id">
|
|
<button type="button" ng-click="deleteQuiz()" class="btn btn-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></button>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row" ng-repeat="(ck,choice) in q.entries">
|
|
<div class="col form-check">
|
|
<label class="custom-control custom-checkbox">
|
|
<input class="custom-control-input" type="checkbox" ng-model="choice.response">
|
|
<span class="custom-control-label">
|
|
<input type="text" id="kchoice{{q.id}}-{{choice.id}}" ng-model="choice.label" class="form-control form-control-sm" placeholder="Intitulé">
|
|
</span>
|
|
</label>
|
|
</div>
|
|
<div class="col-auto">
|
|
<button type="button" ng-click="deleteChoice()" class="btn btn-sm btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></button>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-auto">
|
|
<button type="button" ng-click="addChoice()" class="btn btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Ajouter un choix</button>
|
|
</div>
|
|
<div class="col-auto">
|
|
<button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span></button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|