69 lines
3.8 KiB
HTML
69 lines
3.8 KiB
HTML
<div class="d-flex align-items-start">
|
|
<h2 class="text-truncate">
|
|
{{theme.name}} <small class="text-muted" title="{{theme.authors | stripHTML}}">{{theme.authors | stripHTML}}</small>
|
|
</h2>
|
|
<div class="ml-auto d-flex flex-row-reverse text-nowrap">
|
|
<a href="{{theme.forge_link}}" target="_blank" class="ml-2 btn btn-sm btn-dark" ng-if="theme.forge_link"><span class="glyphicon glyphicon-folder-open" aria-hidden="true"></span> Voir sur la forge</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div ng-if="diff">
|
|
<h3>Différences par rapport au dépôt</h3>
|
|
<div ng-repeat="diffline in diff" class="row">
|
|
<a ng-href="{{ diffline.link }}" class="col-3 d-flex align-items-center text-truncate text-monospace" title="{{ diffline.field }}">{{ diffline.field }}</a>
|
|
<div class="col">
|
|
<div class="text-danger"><span class="text-monospace">-</span>{{ diffline.be }}</div>
|
|
<div class="text-success"><span class="text-monospace">+</span>{{ diffline.af }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<hr ng-if="diff" class="my-3">
|
|
|
|
<div class="row">
|
|
<form ng-submit="saveTheme()" class="col-4" ng-if="!(theme.id === 0 && theme.path)">
|
|
<div ng-class="{'form-group': field != 'locked', 'form-check': field == 'locked'}" ng-repeat="field in fields">
|
|
<input type="checkbox" class="form-check-input" id="{{ field }}" ng-model="theme[field]" ng-if="field == 'locked'">
|
|
<label for="{{ field }}">{{ field | capitalize }}</label>
|
|
<input type="text" class="form-control form-control-sm" id="{{ field }}" ng-model="theme[field]" ng-if="field != 'intro' && field != 'locked' && field != 'background_color'">
|
|
<textarea class="form-control form-control-sm" id="{{ field }}" ng-model="theme[field]" ng-if="field == 'intro'"></textarea>
|
|
<input type="color" class="form-control form-control-sm" id="{{ field }}" ng-model="theme[field]" ng-if="field == 'background_color'" color>
|
|
</div>
|
|
<div class="text-right" ng-show="theme.id">
|
|
<button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Save</button>
|
|
<button type="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>
|
|
|
|
<div ng-if="theme.id || theme.path" class="col-md-8" ng-class="{'offset-md-2': theme.id === 0 && theme.path}" ng-controller="ExercicesListController">
|
|
<h3>
|
|
Exercices ({{ exercices.length }})
|
|
<button type="button" ng-click="show('new')" class="float-right btn btn-sm btn-primary ml-2"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Ajouter un exercice</button>
|
|
<div class="float-right btn-group ml-2" role="group">
|
|
<button type="button" ng-click="syncExo()" ng-class="{'disabled': inSync}" class="btn btn-sm btn-light ml-2"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Synchroniser</button>
|
|
<button type="button" ng-click="checkExoSync()" ng-class="{'disabled': inSync}" class="btn btn-sm btn-light" title="Exporter l'exercice actuel"><span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span></button>
|
|
</div>
|
|
</h3>
|
|
|
|
<p><input type="search" class="form-control form-control-sm" placeholder="Search" ng-model="query" autofocus></p>
|
|
<table class="table table-hover table-bordered table-striped table-sm">
|
|
<thead class="thead-dark">
|
|
<tr>
|
|
<th ng-repeat="field in fields">
|
|
{{ field }}
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr ng-repeat="exercice in exercices | filter: query" ng-click="show(exercice.id)">
|
|
<td ng-repeat="field in fields">
|
|
{{ exercice[field] | stripHTML }}
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|