admin: Handle challenge info on settings page

This commit is contained in:
nemunaire 2022-05-02 10:59:43 +02:00
parent c713a0a25d
commit 48ee5321a8
2 changed files with 286 additions and 210 deletions

View file

@ -223,6 +223,11 @@ angular.module("FICApp")
'update': {method: 'PUT'},
})
})
.factory("SettingsChallenge", function($resource) {
return $resource("api/challenge.json", null, {
'update': {method: 'PUT'},
})
})
.factory("Scene", function($resource) {
return $resource("api/public/:screenId", { screenId: '@id' }, {
'update': {method: 'PUT'},
@ -494,7 +499,7 @@ angular.module("FICApp")
$scope.monitor = Monitor.get();
})
.controller("SettingsController", function($scope, $rootScope, Settings, ROSettings, $location, $http, $interval) {
.controller("SettingsController", function($scope, $rootScope, Settings, SettingsChallenge, ROSettings, $location, $http, $interval) {
$scope.displayDangerousActions = false;
$scope.config = Settings.get();
$scope.config.$promise.then(function(response) {
@ -505,6 +510,7 @@ angular.module("FICApp")
$rootScope.settings.activateTime = new Date(response.activateTime);
})
$scope.configro = ROSettings.get();
$scope.challenge = SettingsChallenge.get();
$scope.duration = 360;
$scope.exerciceDependChange = function() {
@ -542,6 +548,13 @@ angular.module("FICApp")
}, 1500);
$scope.$on('$destroy', function () { $interval.cancel(progressInterval); });
$scope.saveChallengeInfo = function() {
this.challenge.$update(function(response) {
$scope.addToast('success', 'Infos du challenge mises à jour avec succès !');
}, function(response) {
$scope.addToast('danger', 'An error occurs when saving challenge info:', response.data.errmsg);
});
}
$scope.saveSettings = function(msg) {
if (msg === undefined) { msg = 'New settings saved!'; }
var nStart = this.config.start;

View file

@ -1,9 +1,13 @@
<form ng-submit="saveSettings()" class="row">
<div class="col-8 jumbotron text-light bg-dark">
<h2>Paramètres<button ng-click="regenerate()" class="float-right btn btn-info" type="button"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Regénérer les fichiers statiques</a></h2>
<hr>
<div class="row">
<div class="col-8">
<form ng-submit="saveSettings()" class="card my-3">
<div class="card-header">
<button ng-click="regenerate()" class="float-right btn btn-info" type="button"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Regénérer les fichiers statiques</button>
<h2 class="mb-0">
Paramètres
</h2>
</div>
<div class="card-body">
<input type="hidden" class="form-control form-control-sm" id="lastRegeneration" ng-model="config.generation">
<div class="form-group row">
@ -73,7 +77,7 @@
<div class="form-group row">
<div class="col">
<div class="input-group" style="margin-top: 5px;">
<div class="input-group mt-1">
<div class="input-group-prepend">
<button class="btn btn-sm btn-outline-secondary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" ng-class="{'btn-outline-secondary': !activateTimeCountDown, 'btn-warning': activateTimeCountDown && config.activateTime == settings.activateTime, 'btn-outline-warning': config.activateTime && config.activateTime != settings.activateTime}"><span class="glyphicon glyphicon-record" aria-hidden="true"></span> Propager plus tard</button>
<div class="dropdown-menu">
@ -99,12 +103,70 @@
<button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Propager ces paramètres</button>
</div>
</div>
</div>
</form>
</div>
<div class="col-4 jumbotron text-light bg-dark">
<fieldset class="form-group">
<legend class="col-form-legend">Options</legend>
<form ng-submit="saveChallengeInfo()" class="card my-3">
<div class="card-header">
<button type="submit" class="btn btn-success float-right"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span></button>
<h3 class="mb-0">Infos challenge</h3>
</div>
<div class="card-body">
<div class="form-group row">
<label for="challengeTitle" class="col-sm-3 col-form-label col-form-label-sm">Nom du challenge</label>
<div class="col-sm-9">
<input type="text" class="form-control form-control-sm" id="challengeTitle" ng-model="challenge.title">
</div>
</div>
<div class="form-group row">
<label for="challengeAuthors" class="col-sm-3 col-form-label col-form-label-sm">Auteur du challenge</label>
<div class="col-sm-9">
<input type="text" class="form-control form-control-sm" id="challengeAuthors" ng-model="challenge.authors">
</div>
</div>
<div class="form-group row">
<label for="challengeVideoslink" class="col-sm-3 col-form-label col-form-label-sm">Liens solutions</label>
<div class="col-sm-9">
<input type="text" class="form-control form-control-sm" id="challengeVideoslink" ng-model="challenge.videoslink">
</div>
</div>
<div class="form-group row">
<label for="challengeDescription" class="col-sm-3 col-form-label col-form-label-sm">Description</label>
<div class="col-sm-9">
<textarea class="form-control form-control-sm" id="challengeDescription" ng-model="challenge.description">
</textarea>
</div>
</div>
<div class="form-group row">
<label for="challengeRules" class="col-sm-3 col-form-label col-form-label-sm">Règles</label>
<div class="col-sm-9">
<textarea class="form-control form-control-sm" id="challengeRules" ng-model="challenge.rules">
</textarea>
</div>
</div>
<div class="form-group row">
<label for="challengeYourMission" class="col-sm-3 col-form-label col-form-label-sm">Mission</label>
<div class="col-sm-9">
<textarea class="form-control form-control-sm" id="challengeYourMission" ng-model="challenge.your_mission">
</textarea>
</div>
</div>
</div>
</form>
</div>
<div class="col-4">
<form ng-submit="saveSettings()" class="card my-3">
<div class="card-header">
<h2 class="mb-0">Options</h2>
</div>
<div class="card-body px-0 py-2">
<div class="form-check">
<label class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" ng-model="config.allowRegistration">
@ -211,9 +273,10 @@
</label>
</div>
</fieldset>
</div>
</form>
</div>
</div>
</form>
<div class="card mb-5" ng-show="!config.wip && timeProgression && !displayDangerousActions">
<div class="card-header bg-secondary text-light">