diff --git a/admin/static/js/app.js b/admin/static/js/app.js index 7916997c..176aafb3 100644 --- a/admin/static/js/app.js +++ b/admin/static/js/app.js @@ -464,7 +464,9 @@ angular.module("FICApp") response.data.start = new Date(response.data.start); response.data.end = new Date(response.data.end); response.data.generation = new Date(response.data.generation); - $rootScope.settings = response.data; + if ($rootScope.settings && $rootScope.settings.activateTime instanceof Date) + response.data.activateTime = $rootScope.settings.activateTime; + $rootScope.settings = response.data; $rootScope.recvTime(response); }) } @@ -564,7 +566,8 @@ angular.module("FICApp") $scope.nextsettings = NextSettings.query(); $scope.erase = false; $scope.editNextSettings = function(ns) { - $scope.activateTime = ns.date; + $scope.activateTime = new Date(ns.date); + $rootScope.settings.activateTime = $scope.activateTime; $scope.erase = true; Object.keys(ns.values).forEach(function(k) { $scope.config[k] = ns.values[k]; @@ -594,7 +597,7 @@ angular.module("FICApp") }) $scope.challenge = SettingsChallenge.get(); $scope.duration = 360; - $scope.activateTime = "0001-01-01T00:00:00Z"; + $scope.activateTime = ""; $scope.challenge.$promise.then(function(c) { if (c.duration) $scope.duration = c.duration; @@ -656,8 +659,9 @@ angular.module("FICApp") this.config.unlockedChallengeDepth = (this.config.enableExerciceDepend?this.config.unlockedChallengeDepth:-1) this.config.disablesubmitbutton = (this.config.disabledsubmitbutton?this.config.disablesubmitbutton:'') var updateQuery = {}; - if (this.activateTime && this.activateTime != '0001-01-01T00:00:00Z') { + if (this.activateTime && this.activateTime != '') { updateQuery['t'] = this.activateTime; + this.activateTime = null; } if (this.erase) { updateQuery['erase'] = true; @@ -676,6 +680,7 @@ angular.module("FICApp") $rootScope.settings.end = null; } $rootScope.settings.generation = new Date(nGen); + $scope.updateActivateTime(); }, function(response) { $scope.addToast('danger', 'An error occurs when saving settings:', response.data.errmsg); }); @@ -694,10 +699,15 @@ angular.module("FICApp") $rootScope.settings.activateTime = this.activateTime; } $scope.updActivateTime = function(modulo) { + if (modulo) { var ts = Math.floor((new Date(this.config.end) - $rootScope.getSrvTime().getTime() - (60000 * modulo / 2)) / (60000 * modulo)) * (60000 * modulo); var d = new Date(this.config.end) - ts; this.activateTime = new Date(d); this.updateActivateTime(); + } else { + this.activateTime = null; + this.updateActivateTime(); + } } $scope.reset = function(type) { var txts = { diff --git a/admin/static/js/common.js b/admin/static/js/common.js index 103e16a1..05574e36 100644 --- a/admin/static/js/common.js +++ b/admin/static/js/common.js @@ -139,7 +139,9 @@ angular.module("FICApp") res += Math.floor(input / 3600) + ":"; input = input % 3600; } - if (input >= 60) { + if (res || input >= 60) { + if (res && Math.floor(input / 60) <= 9) + res += "0"; res += Math.floor(input / 60) + "'"; input = input % 60; } diff --git a/admin/static/views/settings.html b/admin/static/views/settings.html index f488d4ed..68dbe111 100644 --- a/admin/static/views/settings.html +++ b/admin/static/views/settings.html @@ -16,13 +16,13 @@ <a class="dropdown-item" ng-click="updActivateTime(30)">modulo 30 minutes</a> <a class="dropdown-item" ng-click="updActivateTime(60)">modulo 60 minutes</a> <a class="dropdown-item" ng-click="updActivateTime(90)">modulo 90 minutes</a> - <a class="dropdown-item" ng-click="activateTime = '0001-01-01T00:00:00Z'" ng-show="activateTimeCountDown">annuler la propagation</a> + <a class="dropdown-item" ng-click="updActivateTime(null)" ng-show="activateTimeCountDown">annuler la propagation</a> </div> </div> <input type="datetime-local" class="form-control form-control-sm" id="activateTime" ng-model="activateTime" ng-change="updateActivateTime()"> </div> <small ng-if="activateTimeCountDown"> - Propagation dans : {{ activateTimeCountDown | timer }} + Propagation dans : {{ activateTimeCountDown | timer }}. Il restera : {{ timeRemaining - activateTimeCountDown | timer }} </small> </div>