admin: Make propagation time smarter
continuous-integration/drone/push Build is running Details

This commit is contained in:
nemunaire 2022-02-03 16:56:34 +01:00
parent 2cd40e64ab
commit 5e4c14c634
3 changed files with 44 additions and 3 deletions

View File

@ -578,10 +578,14 @@ angular.module("FICApp")
$scope.saveSettings();
});
}
$scope.updateActivateTime = function() {
$rootScope.settings.activateTime = this.config.activateTime;
}
$scope.updActivateTime = function(modulo) {
var ts = Math.floor((new Date(this.config.end) - Date.now()) / (60000 * modulo)) * (60000 * modulo);
var ts = Math.floor((new Date(this.config.end) - Date.now() - (60000 * modulo / 2)) / (60000 * modulo)) * (60000 * modulo);
var d = new Date(this.config.end) - ts;
this.config.activateTime = new Date(d).toISOString();
this.updateActivateTime();
}
$scope.reset = function(type) {
var txts = {

View File

@ -125,6 +125,23 @@ angular.module("FICApp")
}
}
})
.filter("timer", function() {
return function(input) {
input = Math.floor(input / 1000);
var res = ""
if (input >= 3600) {
res += Math.floor(input / 3600) + ":";
input = input % 3600;
}
if (input >= 60) {
res += Math.floor(input / 60) + "'";
input = input % 60;
}
return res + (input>9?input:"0"+input) + '"';
}
})
.filter("since", function() {
return function(passed) {
if (passed < 120000) {
@ -261,6 +278,19 @@ angular.module("FICApp")
}
$rootScope.timeProgression = 1 - remain / ($rootScope.settings.end - $rootScope.settings.start);
$rootScope.timeRemaining = remain;
if ($rootScope.settings.activateTime) {
var now = new Date();
var actTime = new Date($rootScope.settings.activateTime);
if (actTime > now)
$rootScope.activateTimeCountDown = actTime - now;
else
$rootScope.activateTimeCountDown = null;
} else {
$rootScope.activateTimeCountDown = null;
}
remain = remain / 1000;

View File

@ -96,7 +96,7 @@
<div class="col">
<div class="input-group" style="margin-top: 5px;">
<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"><span class="glyphicon glyphicon-record" aria-hidden="true"></span> Propager plus tard</button>
<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">
<a class="dropdown-item" ng-click="updActivateTime(2)">modulo 2 minutes</a>
<a class="dropdown-item" ng-click="updActivateTime(5)">modulo 5 minutes</a>
@ -104,10 +104,17 @@
<a class="dropdown-item" ng-click="updActivateTime(15)">modulo 15 minutes</a>
<a class="dropdown-item" ng-click="updActivateTime(20)">modulo 20 minutes</a>
<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="config.activateTime = '0001-01-01T00:00:00Z'" ng-show="activateTimeCountDown">annuler la propagation</a>
</div>
</div>
<input type="text" class="form-control form-control-sm" id="activateTime" ng-model="config.activateTime">
<input type="text" class="form-control form-control-sm" id="activateTime" ng-model="config.activateTime" ng-change="updateActivateTime()">
</div>
<small ng-if="activateTimeCountDown">
Propagation dans : {{ activateTimeCountDown | timer }}
Il restera : {{ timeRemaining - activateTimeCountDown | timer }}
</small>
</div>
<div class="col text-right">
<button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Propager ces paramètres</button>