feat(EnvelopeLocked): Timer mit CSS-Konfiguration und Javascript-Ereignis hinzugefügt.

- Ablauf über Home-Controller-Ansichtsdaten hinzugefügt
This commit is contained in:
Developer 02
2024-11-30 01:56:02 +01:00
parent cdec5485c6
commit fa44b82493
12 changed files with 99 additions and 14 deletions

View File

@@ -1,4 +1,5 @@
@using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
@using Newtonsoft.Json
@{
var nonce = _accessor.HttpContext?.Items["csp-nonce"] as string;
var logo = _logoOpt.Value;
@@ -6,6 +7,7 @@
var userCulture = ViewData["UserCulture"] as Culture;
bool viaSms = ViewData["ViaSms"] is bool _viaSms && _viaSms;
var accessCodeName = viaSms ? "smsCode" : "accessCode";
DateTime? expiration = ViewData["Expiration"] is DateTime _expiration ? _expiration : null;
}
<div class="page container py-4 px-4">
<header class="text-center">
@@ -35,6 +37,10 @@
login
</span>
</button>
@if (expiration is not null)
{
<div id="sms-timer" class="alert alert-primary" role="alert">00:00</div>
}
</div>
</form>
</div>
@@ -52,4 +58,30 @@
<p>@_localizer[viaSms ? WebKey.LockedSmsTfaFooterBody : WebKey.LockedFooterBody]</p>
</details>
</section>
</div>
</div>
<script nonce="@nonce">
var expiration = new Date(@Html.Raw(JsonConvert.SerializeObject(expiration)));
const element = document.getElementById("sms-timer");
const interval = setInterval(function () {
var now = new Date();
var diffInMillis = expiration - now;
if (diffInMillis <= 0) {
element.textContent = "00:00";
clearInterval(interval);
return;
}
var minutes = Math.floor(diffInMillis / 1000 / 60);
var seconds = Math.floor((diffInMillis / 1000) % 60);
var formattedMinutes = minutes.toString().padStart(2, '0');
var formattedSeconds = seconds.toString().padStart(2, '0');
var remainingTime = `${formattedMinutes}:${formattedSeconds}`;
element.textContent = remainingTime;
}, 1000);
</script>