Merge branch 'release/TestReload_01'
This commit is contained in:
@@ -1,8 +1,13 @@
|
||||
@if (IsRicTimb)
|
||||
{
|
||||
<div class="cardContainerMancTimb">
|
||||
<div class="data">
|
||||
<span>@($"{oraRichiesta:dddd dd MMMM}")</span>
|
||||
<div class="cardContainerMancTimb py-2 px-3">
|
||||
<div class="data d-flex justify-content-between">
|
||||
<div class="px-0">
|
||||
<span>@($"{oraRichiesta:dddd}")</span>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<span>@($"{oraRichiesta:dd MMMM}")</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oraRichiesta">
|
||||
<input @bind="oraRichiesta" type="time" step="300" />
|
||||
@@ -13,10 +18,14 @@ else
|
||||
{
|
||||
@if (!isCompactMode)
|
||||
{
|
||||
|
||||
<div class="cardContainer @cardCss">
|
||||
<div class="data">
|
||||
<span>@($"{dtCurr:dddd dd MMMM}")</span>
|
||||
<div class="cardContainer @cardCss py-2 px-3">
|
||||
<div class="data d-flex justify-content-between">
|
||||
<div class="px-0">
|
||||
<span>@($"{dtCurr:dddd}")</span>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<span>@($"{dtCurr:dd MMMM}")</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ora">
|
||||
<div class="d-flex justify-content-center">
|
||||
@@ -33,11 +42,16 @@ else
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="cardContainerCompact @cardCss">
|
||||
<div class="cardContainerCompact @cardCss py-1 px-3">
|
||||
<div class="dataComp">
|
||||
<span>@($"{dtCurr:dddd}")</span>
|
||||
<span>@($"{dtCurr:dd MMMM}")</span>
|
||||
|
||||
<div class="data d-flex justify-content-between">
|
||||
<div class="px-0">
|
||||
<span>@($"{dtCurr:dddd}")</span>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<span>@($"{dtCurr:dd MMMM}")</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ora">
|
||||
<div class="d-flex justify-content-center">
|
||||
<div>
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
}
|
||||
.cardContainerCompact .dataComp {
|
||||
font-weight: bold;
|
||||
padding-top: 1.5rem;
|
||||
padding-left: 1.5rem;
|
||||
/*padding-top: 1.5rem;*/
|
||||
/*padding-left: 1.5rem;*/
|
||||
position: relative;
|
||||
text-transform: uppercase;
|
||||
font-size: 1rem;
|
||||
@@ -49,8 +49,8 @@
|
||||
}
|
||||
.data {
|
||||
font-weight: bold;
|
||||
padding-top: 1.5rem;
|
||||
padding-left: 1.5rem;
|
||||
/*padding-top: 1.5rem;*/
|
||||
/*padding-left: 1.5rem;*/
|
||||
position: relative;
|
||||
font-size: 1.25rem;
|
||||
text-transform: uppercase;
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
|
||||
.cardContainerCompact .dataComp {
|
||||
font-weight: bold;
|
||||
padding-top: 1.5rem;
|
||||
padding-left: 1.5rem;
|
||||
/*padding-top: 1.5rem;*/
|
||||
/*padding-left: 1.5rem;*/
|
||||
position: relative;
|
||||
text-transform: uppercase;
|
||||
font-size: 1rem;
|
||||
@@ -47,8 +47,8 @@
|
||||
|
||||
.data {
|
||||
font-weight: bold;
|
||||
padding-top: 1.5rem;
|
||||
padding-left: 1.5rem;
|
||||
/*padding-top: 1.5rem;*/
|
||||
/*padding-left: 1.5rem;*/
|
||||
position: relative;
|
||||
font-size: 1.25rem;
|
||||
text-transform: uppercase;
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
.cardContainerAll{border-radius:12px;width:100%;box-shadow:0 3px 4px rgba(0,0,0,.7);color:#fff;}.cardContainer{border-radius:12px;width:100%;box-shadow:0 3px 4px rgba(0,0,0,.7);color:#fff;min-height:8.5rem;padding-bottom:1rem;}.cardContainerCompact{border-radius:12px;width:100%;box-shadow:0 3px 4px rgba(0,0,0,.7);color:#fff;min-height:4rem;}.cardContainerCompact .dataComp{font-weight:bold;padding-top:1.5rem;padding-left:1.5rem;position:relative;text-transform:uppercase;font-size:1rem;}.cardContainerCompact .ora{width:100%;font-weight:bold;position:relative;font-size:3.5rem;text-align:center;font-size:2.8rem;}.cardContainerMancTimb{padding-bottom:1rem;min-height:8.5rem;border-radius:12px;width:100%;box-shadow:0 3px 4px rgba(0,0,0,.7);color:#fff;background-color:#2980b9;}.titolo{font-size:1rem;}.data{font-weight:bold;padding-top:1.5rem;padding-left:1.5rem;position:relative;font-size:1.25rem;text-transform:uppercase;display:flex;justify-content:space-between;}.ora{width:100%;font-weight:bold;position:relative;font-size:3.5rem;text-align:center;}.oraRichiesta{width:100%;font-weight:bold;position:relative;font-size:2rem;text-align:center;padding-top:1.5rem;}.oraRichiesta input{border-radius:.5rem;border:0;padding:.25rem;}.defaultCard{background-color:rgba(0,128,255,.8);}.cardEntrata{background-color:#9b59b6;}.cardUscita{background-color:#4caf50;}.txtSec{font-weight:normal;font-size:2rem;}.pulse-warning{box-shadow:0 0 20px 5px rgba(0,128,255,.8);animation:pulse-warning 2.5s infinite;}@-webkit-keyframes pulse-warning{0%{-webkit-box-shadow:0 0 20px 5px rgba(0,128,255,.8);color:#fff;}70%{-webkit-box-shadow:0 0 20px 5px rgba(0,128,255,0);}100%{-webkit-box-shadow:0 0 20px 5px rgba(0,128,255,.8);color:#fff;}}@keyframes pulse-warning{0%{-moz-box-shadow:0 0 20px 5px rgba(0,128,255,.8);box-shadow:0 0 20px 5px rgba(0,128,255,.8);color:#fff;}70%{-moz-box-shadow:0 0 20px 5px rgba(0,128,255,0);box-shadow:0 0 20px 5px rgba(0,128,255,0);}100%{-moz-box-shadow:0 0 20px 5px rgba(255,170,0,.8);box-shadow:0 0 20px 5px rgba(0,128,255,.8);color:#fff;}}
|
||||
.cardContainerAll{border-radius:12px;width:100%;box-shadow:0 3px 4px rgba(0,0,0,.7);color:#fff;}.cardContainer{border-radius:12px;width:100%;box-shadow:0 3px 4px rgba(0,0,0,.7);color:#fff;min-height:8.5rem;padding-bottom:1rem;}.cardContainerCompact{border-radius:12px;width:100%;box-shadow:0 3px 4px rgba(0,0,0,.7);color:#fff;min-height:4rem;}.cardContainerCompact .dataComp{font-weight:bold;position:relative;text-transform:uppercase;font-size:1rem;}.cardContainerCompact .ora{width:100%;font-weight:bold;position:relative;font-size:3.5rem;text-align:center;font-size:2.8rem;}.cardContainerMancTimb{padding-bottom:1rem;min-height:8.5rem;border-radius:12px;width:100%;box-shadow:0 3px 4px rgba(0,0,0,.7);color:#fff;background-color:#2980b9;}.titolo{font-size:1rem;}.data{font-weight:bold;position:relative;font-size:1.25rem;text-transform:uppercase;display:flex;justify-content:space-between;}.ora{width:100%;font-weight:bold;position:relative;font-size:3.5rem;text-align:center;}.oraRichiesta{width:100%;font-weight:bold;position:relative;font-size:2rem;text-align:center;padding-top:1.5rem;}.oraRichiesta input{border-radius:.5rem;border:0;padding:.25rem;}.defaultCard{background-color:rgba(0,128,255,.8);}.cardEntrata{background-color:#9b59b6;}.cardUscita{background-color:#4caf50;}.txtSec{font-weight:normal;font-size:2rem;}.pulse-warning{box-shadow:0 0 20px 5px rgba(0,128,255,.8);animation:pulse-warning 2.5s infinite;}@-webkit-keyframes pulse-warning{0%{-webkit-box-shadow:0 0 20px 5px rgba(0,128,255,.8);color:#fff;}70%{-webkit-box-shadow:0 0 20px 5px rgba(0,128,255,0);}100%{-webkit-box-shadow:0 0 20px 5px rgba(0,128,255,.8);color:#fff;}}@keyframes pulse-warning{0%{-moz-box-shadow:0 0 20px 5px rgba(0,128,255,.8);box-shadow:0 0 20px 5px rgba(0,128,255,.8);color:#fff;}70%{-moz-box-shadow:0 0 20px 5px rgba(0,128,255,0);box-shadow:0 0 20px 5px rgba(0,128,255,0);}100%{-moz-box-shadow:0 0 20px 5px rgba(255,170,0,.8);box-shadow:0 0 20px 5px rgba(0,128,255,.8);color:#fff;}}
|
||||
@@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<Version>3.0.2402.2715</Version>
|
||||
<Version>3.0.2403.0119</Version>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<PackageProjectUrl>www.egalware.com</PackageProjectUrl>
|
||||
<Description>GPW Smart UI</Description>
|
||||
|
||||
@@ -40,6 +40,10 @@
|
||||
|
||||
<script src="_framework/blazor.server.js" autostart="false"></script>
|
||||
|
||||
@* Modifica da https://github.com/dotnet/aspnetcore/issues/32113 *@
|
||||
<script src="lib/boot.js"></script>
|
||||
|
||||
|
||||
@*Gestione autoriconnessione: https://github.com/dotnet/aspnetcore/issues/38305 (vedere anche https://docs.microsoft.com/it-it/aspnet/core/blazor/fundamentals/signalr?view=aspnetcore-6.0#modify-the-reconnection-handler-blazor-server)*@
|
||||
@* <script>
|
||||
Blazor.start({
|
||||
@@ -66,7 +70,7 @@
|
||||
});
|
||||
});
|
||||
</script> *@
|
||||
<script>
|
||||
@* <script>
|
||||
Blazor.start({
|
||||
reconnectionOptions: {
|
||||
maxRetries: 3000,
|
||||
@@ -81,7 +85,10 @@
|
||||
document.location.reload();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</script> *@
|
||||
|
||||
|
||||
@* Versione alternativa da testare... https://github.com/dotnet/aspnetcore/issues/10325 *@
|
||||
|
||||
<script type="text/javascript" src="lib/font-awesome/js/all.min.js"></script>
|
||||
<script type="text/javascript" src="lib/Chart.js/chart.js"></script>
|
||||
|
||||
@@ -0,0 +1,149 @@
|
||||
(() => {
|
||||
class DefaultReconnectionHandler {
|
||||
_currentReconnectionProcess = null
|
||||
|
||||
constructor(overrideDisplay) {
|
||||
this._reconnectionDisplay = overrideDisplay
|
||||
this._reconnectCallback = Blazor.reconnect;
|
||||
}
|
||||
|
||||
onConnectionDown(options, _error) {
|
||||
if (!this._reconnectionDisplay) {
|
||||
const modal = document.getElementById(options.dialogId)
|
||||
this._reconnectionDisplay = new UserSpecifiedDisplay(modal, options.maxRetries, document);
|
||||
}
|
||||
if (!this._currentReconnectionProcess) {
|
||||
this._currentReconnectionProcess = new ReconnectionProcess(
|
||||
options,
|
||||
this._reconnectCallback,
|
||||
this._reconnectionDisplay
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
onConnectionUp() {
|
||||
if (this._currentReconnectionProcess) {
|
||||
this._currentReconnectionProcess.dispose()
|
||||
this._currentReconnectionProcess = null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ReconnectionProcess {
|
||||
isDisposed = false
|
||||
|
||||
constructor(options, reconnectCallback, display) {
|
||||
this.reconnectCallback = reconnectCallback
|
||||
this.reconnectDisplay = display
|
||||
this.reconnectDisplay.show()
|
||||
this.attemptPeriodicReconnection(options)
|
||||
}
|
||||
|
||||
dispose() {
|
||||
this.isDisposed = true
|
||||
this.reconnectDisplay.hide()
|
||||
}
|
||||
|
||||
async attemptPeriodicReconnection(options) {
|
||||
for (let i = 0; i < options.maxRetries; i++) {
|
||||
this.reconnectDisplay.update(i + 1)
|
||||
if (this.isDisposed) {
|
||||
break
|
||||
}
|
||||
try {
|
||||
const result = await Blazor.reconnect()
|
||||
if (!result) {
|
||||
// If the server responded and refused to reconnect, reload the page
|
||||
location.reload();
|
||||
return;
|
||||
}
|
||||
return;
|
||||
} catch (err) {
|
||||
}
|
||||
await this.delay(options.retryIntervalMilliseconds)
|
||||
}
|
||||
|
||||
location.reload()
|
||||
}
|
||||
|
||||
delay(durationMilliseconds) {
|
||||
return new Promise(resolve => setTimeout(resolve, durationMilliseconds))
|
||||
}
|
||||
}
|
||||
|
||||
class UserSpecifiedDisplay {
|
||||
static ShowClassName = "components-reconnect-show"
|
||||
|
||||
static HideClassName = "components-reconnect-hide"
|
||||
|
||||
static FailedClassName = "components-reconnect-failed"
|
||||
|
||||
static RejectedClassName = "components-reconnect-rejected"
|
||||
|
||||
static MaxRetriesId = "components-reconnect-max-retries"
|
||||
|
||||
static CurrentAttemptId = "components-reconnect-current-attempt"
|
||||
|
||||
constructor(dialog, maxRetries, document) {
|
||||
this.dialog = dialog
|
||||
this.maxRetries = maxRetries
|
||||
this.document = document
|
||||
this.document = document
|
||||
|
||||
const maxRetriesElement = this.document.getElementById(
|
||||
UserSpecifiedDisplay.MaxRetriesId
|
||||
)
|
||||
|
||||
if (maxRetriesElement) {
|
||||
maxRetriesElement.innerText = this.maxRetries.toString()
|
||||
}
|
||||
}
|
||||
|
||||
show() {
|
||||
this.removeClasses()
|
||||
this.dialog.classList.add(UserSpecifiedDisplay.ShowClassName)
|
||||
}
|
||||
|
||||
update(currentAttempt) {
|
||||
const currentAttemptElement = this.document.getElementById(
|
||||
UserSpecifiedDisplay.CurrentAttemptId
|
||||
)
|
||||
|
||||
if (currentAttemptElement) {
|
||||
currentAttemptElement.innerText = currentAttempt.toString()
|
||||
}
|
||||
}
|
||||
|
||||
hide() {
|
||||
this.removeClasses()
|
||||
this.dialog.classList.add(UserSpecifiedDisplay.HideClassName)
|
||||
}
|
||||
|
||||
failed() {
|
||||
this.removeClasses()
|
||||
this.dialog.classList.add(UserSpecifiedDisplay.FailedClassName)
|
||||
}
|
||||
|
||||
rejected() {
|
||||
this.removeClasses()
|
||||
this.dialog.classList.add(UserSpecifiedDisplay.RejectedClassName)
|
||||
}
|
||||
|
||||
removeClasses() {
|
||||
this.dialog.classList.remove(
|
||||
UserSpecifiedDisplay.ShowClassName,
|
||||
UserSpecifiedDisplay.HideClassName,
|
||||
UserSpecifiedDisplay.FailedClassName,
|
||||
UserSpecifiedDisplay.RejectedClassName
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Blazor.start({
|
||||
reconnectionHandler: new DefaultReconnectionHandler(),
|
||||
reconnectionOptions: {
|
||||
maxRetries: 6,
|
||||
retryIntervalMilliseconds: 3000
|
||||
}
|
||||
});
|
||||
})();
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>GPW - Gestione Presenze Web</i>
|
||||
<h4>Versione: 3.0.2402.2816</h4>
|
||||
<h4>Versione: 3.0.2403.0119</h4>
|
||||
<br /> Note di rilascio:
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
@@ -1 +1 @@
|
||||
3.0.2402.2816
|
||||
3.0.2403.0119
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>3.0.2402.2816</version>
|
||||
<url>http://nexus.steamware.net/repository/SWS/GPW/stable/GPW.UI.zip</url>
|
||||
<version>3.0.2403.0119</version>
|
||||
<url>http://nexus.steamware.net/repository/SWS/GPW/stable/GPW.Smart.zip</url>
|
||||
<changelog>http://nexus.steamware.net/repository/SWS/GPW/stable/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
</item>
|
||||
|
||||
Reference in New Issue
Block a user