199 lines
11 KiB
Plaintext
199 lines
11 KiB
Plaintext
|
|
<div class="card shadow">
|
|
<div class="card-header">
|
|
<div class="d-flex justify-content-between">
|
|
<div class="px-1">
|
|
<h4>Statistiche Update & Versioni</h4>
|
|
</div>
|
|
<div class="px-1">
|
|
<div class="d-flex">
|
|
@if (HasFiltClienti)
|
|
{
|
|
<div class="input-group">
|
|
<span class="input-group-text text-bg-dark">Cliente</span>
|
|
<select @bind="@CodInstSel" class="form-select form-select-sm">
|
|
<option value="">--- Tutti ---</option>
|
|
@if (ListInstall != null)
|
|
{
|
|
foreach (var item in ListInstall)
|
|
{
|
|
<option value="@item.CodInst">@item.CodInst</option>
|
|
}
|
|
}
|
|
</select>
|
|
</div>
|
|
}
|
|
@if (HasFiltImpiego)
|
|
{
|
|
<div class="input-group ps-2">
|
|
<span class="input-group-text text-bg-primary">Device</span>
|
|
<select @bind="@CodImpSel" class="form-select form-select-sm">
|
|
<option value="">--- Tutte ---</option>
|
|
@if (ListDevices != null)
|
|
{
|
|
foreach (var item in ListDevices)
|
|
{
|
|
<option value="@item.Key">@item.Value.DevName</option>
|
|
}
|
|
}
|
|
</select>
|
|
</div>
|
|
}
|
|
<div class="input-group ps-2">
|
|
<span class="input-group-text text-bg-secondary">Tipologia</span>
|
|
<select @bind="@CodTipoApp" class="form-select form-select-sm">
|
|
@if (ListDevices != null)
|
|
{
|
|
foreach (var item in Core.Enum.AppType)
|
|
{
|
|
<option value="@item.Key">@item.Value</option>
|
|
}
|
|
}
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card-body py-1">
|
|
@if (isLoading)
|
|
{
|
|
<LoadingData></LoadingData>
|
|
}
|
|
else
|
|
{
|
|
@if (DoEditConfig)
|
|
{
|
|
<div class="modal modal-xl fade show" tabindex="-1" style="display:block; background-color: rgba(10,10,10,.6);" aria-modal="true" role="dialog" data-bs-backdrop="static" data-bs-keyboard="false">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h1 class="modal-title fs-5" id="exampleModalLabel">Remote setup | <b>@DevName</b></h1>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" title="Chiudi" @onclick="ToggleParamConfig"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<TargetSetup TargetListRaw="@TgtListRaw" EC_SaveConfig="ConfigUpdated"></TargetSetup>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
<div class="row">
|
|
<div class="col-2 px-1">
|
|
<ul class="list-group shadow">
|
|
<li class="list-group-item active">
|
|
<b>Update</b> info
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-start">
|
|
<div>
|
|
Clienti <sub>(licenze)</sub>
|
|
</div>
|
|
<button class="btn btn-sm py-0 @cssBtnCli" @onclick="TglFiltCli">@InfoStats.UpdaterList.Count</button>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-start">
|
|
<div>
|
|
Istanze <sub>(# upd)</sub>
|
|
</div>
|
|
<span class="badge text-bg-primary rounded-pill">@InfoStats.TotalUpdaterAct</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-start">
|
|
<div>
|
|
Upd.Score <sub>(all)</sub>
|
|
</div>
|
|
<span class="badge text-bg-primary rounded-pill">@($"{InfoStats.GlobalUpdateScore:P1}")</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-start">
|
|
<div>
|
|
Call / Hour <sub>(last)</sub>
|
|
</div>
|
|
<span class="badge text-bg-primary rounded-pill">@InfoStats.LastCallHour</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-start">
|
|
<div>
|
|
Call / Day <sub>(last)</sub>
|
|
</div>
|
|
<span class="badge text-bg-primary rounded-pill">@InfoStats.LastCallDay</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-start">
|
|
<div>
|
|
App Requested <sub>(all)</sub>
|
|
</div>
|
|
<span class="badge text-bg-primary rounded-pill">@InfoStats.ReqCountApp.Count()</span>
|
|
</li>
|
|
</ul>
|
|
@if (HasFiltImpiego)
|
|
{
|
|
<div class="card shadow mt-2">
|
|
<div class="card-header px-2">
|
|
<div class="py-0 small">
|
|
@foreach (var item in DetailFilt)
|
|
{
|
|
<div class="d-flex justify-content-between align-items-start">
|
|
<div class="px-1">
|
|
@item.Key
|
|
</div>
|
|
<div class="px-1">
|
|
<b>@item.Value</b>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
<div class="card-body px-2">
|
|
<div class="py-1">
|
|
<button class="btn w-100 btn-sm btn-primary" @onclick="() => SendTask(Core.Enum.EgwAccTask.ForceCheck)" title="Richiesta verifica Applicazioni & Releases">Update App Info</button>
|
|
</div>
|
|
<div class="py-1">
|
|
<button class="btn w-100 btn-sm btn-info" @onclick="() => SendTask(Core.Enum.EgwAccTask.DeviceInfoGet)" title="Richiesta update Device Info">Update Device Info</button>
|
|
</div>
|
|
<div class="py-1">
|
|
<button class="btn w-100 btn-sm btn-warning" @onclick="() => SendTask(Core.Enum.EgwAccTask.OxyLicenseGet)" title="Richiesta udpate info licenza">Update Info Licenza</button>
|
|
</div>
|
|
|
|
<div class="py-1">
|
|
<button class="btn w-100 btn-sm btn-outline-success" @onclick="() => SendTask(Core.Enum.EgwAccTask.BackupSendConf)" title="Effettua ZIP delle conf + invio a LiMan">Backup+Send Conf</button>
|
|
</div>
|
|
|
|
@if (!string.IsNullOrEmpty(CodImpSel))
|
|
{
|
|
<div class="py-1">
|
|
<button class="btn w-100 btn-sm btn-dark" @onclick="ToggleParamConfig" title="Editing parametri AppControlCenter">EgwACC Config</button>
|
|
</div>
|
|
<div class="py-1">
|
|
<button class="btn w-100 btn-sm btn-danger" @onclick="SendReboot" title="Forza reboot + update AppControlCenter">Reboot AppControlCenter</button>
|
|
</div>
|
|
}
|
|
|
|
<div class="py-2">
|
|
<button class="btn w-100 btn-sm btn-success" @onclick="() => ResetTaskReq()" title="Annulla richieste assegnate">Reset Task Assegnati</button>
|
|
</div>
|
|
</div>
|
|
<div class="card-footer p-0">
|
|
<div class="d-flex justify-content-evenly rounded">
|
|
<div class="small w-100 text-center @BtnState(TaskReq.Count)">Req. <b>@TaskReq.Count</b></div>
|
|
<div class="small w-100 text-center @BtnState(TaskRun.Count)">Run. <b>@TaskRun.Count</b></div>
|
|
<div class="small w-100 text-center @BtnState(TaskDone.Count)">Done <b>@TaskDone.Count</b></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
<div class="col-10 px-1">
|
|
@if (InfoStats == null)
|
|
{
|
|
<div class="alert alert-warning">Nessuna statistica disponibile</div>
|
|
}
|
|
else
|
|
{
|
|
<InstAppRelStatus AppStats="InfoStats.InstallStatus" AppRelList="InfoStats.InstallRelList"></InstAppRelStatus>
|
|
}
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
<div class="card-footer text-end small">
|
|
last updated: @InfoStats.LastUpdated
|
|
</div>
|
|
</div>
|
|
|