Merge branch 'Release/Update202506_03'
This commit is contained in:
@@ -31,6 +31,89 @@ namespace MP.Data.Controllers
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce info dimensione, tabelle e num righe DB gestiti
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<DbSizeModel> AllDbInfo()
|
||||
{
|
||||
List<DbSizeModel> dbResult = new List<DbSizeModel>();
|
||||
string stp_DbInfo = @"
|
||||
;WITH TableRowCounts AS (
|
||||
SELECT
|
||||
t.name AS TableName,
|
||||
SUM(p.rows) AS RowNum
|
||||
FROM sys.tables t
|
||||
JOIN sys.partitions p ON t.object_id = p.object_id
|
||||
WHERE p.index_id IN (0, 1) -- heap or clustered index
|
||||
GROUP BY t.name
|
||||
),
|
||||
LargestTable AS (
|
||||
SELECT TOP 1 RowNum, TableName
|
||||
FROM TableRowCounts
|
||||
ORDER BY RowNum DESC
|
||||
)
|
||||
SELECT
|
||||
DB_name() as DbName,
|
||||
CAST(SUM(size) * 8.0 / 1024 AS DECIMAL(18,2)) AS DbSizeMb,
|
||||
(SELECT COUNT(*) FROM sys.tables) AS NumTables,
|
||||
(SELECT TableName FROM LargestTable) AS BigTable,
|
||||
(SELECT RowNum FROM LargestTable) AS BigTableRows
|
||||
FROM sys.master_files
|
||||
WHERE database_id = DB_ID();
|
||||
";
|
||||
|
||||
// leggo per DB principale
|
||||
if (!string.IsNullOrEmpty(_configuration.GetConnectionString("MP.All")))
|
||||
{
|
||||
using (var dbCtx = new MoonProContext(_configuration))
|
||||
{
|
||||
var singleRes = dbCtx
|
||||
.DbSetDbSize
|
||||
.FromSqlRaw(stp_DbInfo)
|
||||
.AsEnumerable()
|
||||
.FirstOrDefault();
|
||||
if (singleRes != null)
|
||||
{
|
||||
dbResult.Add(singleRes);
|
||||
}
|
||||
}
|
||||
}
|
||||
// leggo per FluxLog
|
||||
if (!string.IsNullOrEmpty(_configuration.GetConnectionString("MP.FluxLog")))
|
||||
{
|
||||
using (var dbCtx = new MoonPro_FluxContext(_configuration))
|
||||
{
|
||||
var singleRes = dbCtx
|
||||
.DbSetDbSize
|
||||
.FromSqlRaw(stp_DbInfo)
|
||||
.AsEnumerable()
|
||||
.FirstOrDefault();
|
||||
if (singleRes != null)
|
||||
{
|
||||
dbResult.Add(singleRes);
|
||||
}
|
||||
}
|
||||
}
|
||||
// leggo per Stats
|
||||
if (!string.IsNullOrEmpty(_configuration.GetConnectionString("MP.Stats")))
|
||||
{
|
||||
using (var dbCtx = new MoonPro_STATSContext(_configuration))
|
||||
{
|
||||
var singleRes = dbCtx
|
||||
.DbSetDbSize
|
||||
.FromSqlRaw(stp_DbInfo)
|
||||
.AsEnumerable()
|
||||
.FirstOrDefault();
|
||||
if (singleRes != null)
|
||||
{
|
||||
dbResult.Add(singleRes);
|
||||
}
|
||||
}
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco da tabella Config
|
||||
/// </summary>
|
||||
|
||||
@@ -9,6 +9,7 @@ using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using ZXing;
|
||||
using static MP.Core.Objects.Enums;
|
||||
|
||||
namespace MP.Data.Controllers
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace MP.Data.DbModels
|
||||
{
|
||||
public class DbSizeModel
|
||||
{
|
||||
[Key]
|
||||
public string DbName { get; set; } = "";
|
||||
public decimal DbSizeMb { get; set; } = 0;
|
||||
public int NumTables { get; set; } = 0;
|
||||
public string BigTable { get; set; } = "";
|
||||
public long BigTableRows { get; set; } = 0;
|
||||
}
|
||||
}
|
||||
@@ -38,6 +38,7 @@ namespace MP.Data
|
||||
#region Public Properties
|
||||
|
||||
|
||||
public virtual DbSet<DbSizeModel> DbSetDbSize { get; set; }
|
||||
public virtual DbSet<AlarmLogModel> DbSetAlarmLog { get; set; }
|
||||
public virtual DbSet<AnagKeyValueModel> DbSetAKV { get; set; }
|
||||
public virtual DbSet<AnagEventiModel> DbSetAnagEventi { get; set; }
|
||||
@@ -122,6 +123,14 @@ namespace MP.Data
|
||||
{
|
||||
string connString = _configuration.GetConnectionString("MP.Data");
|
||||
if (string.IsNullOrEmpty(connString))
|
||||
{
|
||||
connString = _configuration.GetConnectionString("MP.All");
|
||||
}
|
||||
if (string.IsNullOrEmpty(connString))
|
||||
{
|
||||
connString = _configuration.GetConnectionString("MP.Land");
|
||||
}
|
||||
if (string.IsNullOrEmpty(connString))
|
||||
{
|
||||
connString = _configuration.GetConnectionString("MP.Mon");
|
||||
}
|
||||
@@ -129,10 +138,6 @@ namespace MP.Data
|
||||
{
|
||||
connString = _configuration.GetConnectionString("MP.STATS");
|
||||
}
|
||||
if (string.IsNullOrEmpty(connString))
|
||||
{
|
||||
connString = _configuration.GetConnectionString("MP.Land");
|
||||
}
|
||||
|
||||
optionsBuilder.UseSqlServer(connString);
|
||||
//optionsBuilder.UseSqlServer("Server=SQL2016DEV;Database=MoonPro;Trusted_Connection=True;");
|
||||
|
||||
@@ -48,6 +48,7 @@ namespace MP.Data
|
||||
#region Public Properties
|
||||
|
||||
|
||||
public virtual DbSet<DbSizeModel> DbSetDbSize { get; set; }
|
||||
public virtual DbSet<AnagArticoliModel> DbSetArticoli { get; set; }
|
||||
public virtual DbSet<MacchineModel> DbSetMacchine { get; set; }
|
||||
public virtual DbSet<FluxLogModel> DbSetFluxLog { get; set; }
|
||||
|
||||
@@ -36,6 +36,7 @@ namespace MP.Data
|
||||
|
||||
#region Public Properties
|
||||
|
||||
public virtual DbSet<DbSizeModel> DbSetDbSize { get; set; }
|
||||
public virtual DbSet<AnagFLTransModel> DbSetAnagFLTrans { get; set; }
|
||||
public virtual DbSet<StatsAnagArticoli> DbSetArticoli { get; set; }
|
||||
public virtual DbSet<AzioniUL> DbSetAzioniUL { get; set; }
|
||||
|
||||
@@ -47,6 +47,41 @@ namespace MP.Data.Services
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce info dimensione, tabelle e num righe DB
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<DbSizeModel> AllDbInfo()
|
||||
{
|
||||
// setup parametri costanti
|
||||
string source = "DB";
|
||||
Stopwatch sw = new Stopwatch();
|
||||
sw.Start();
|
||||
List<DbSizeModel> result = new List<DbSizeModel>();
|
||||
// cerco in redis...
|
||||
string currKey = $"{redisBaseKey}:DbInfo:ALL";
|
||||
RedisValue rawData = redisDb.StringGet(currKey);
|
||||
if (rawData.HasValue)
|
||||
{
|
||||
result = JsonConvert.DeserializeObject<List<DbSizeModel>>($"{rawData}");
|
||||
source = "REDIS";
|
||||
}
|
||||
else
|
||||
{
|
||||
result = dbController.AllDbInfo();
|
||||
// serializzo e salvo...
|
||||
rawData = JsonConvert.SerializeObject(result);
|
||||
redisDb.StringSet(currKey, rawData, UltraFastCache);
|
||||
}
|
||||
if (result == null)
|
||||
{
|
||||
result = new List<DbSizeModel>();
|
||||
}
|
||||
sw.Stop();
|
||||
Log.Debug($"AllDbInfo | {source} | {sw.Elapsed.TotalMilliseconds}ms");
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco INFO IOB da tab Macchine gestite + RemoteRebootLog
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<div class="card shadow">
|
||||
<div class="card-header bg-success bg-opacity-50 bg-gradient">
|
||||
<div class="fs-5 fw-bold">Current DB Info</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (ListRecord == null || ListRecord.Count == 0)
|
||||
{
|
||||
<div class="alert alert-info fs-5">Nessun record disponibile</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<table class="table table-sm table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><i class="fa-solid fa-database"></i> DB <Sorter ParamName="DbName" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
|
||||
<th class="text-end"><Sorter ParamName="DbSizeMb" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter> <i class="fa-solid fa-memory"></i> Size (Mb)</th>
|
||||
<th class="text-end"><Sorter ParamName="NumTable" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter> Num Tab</th>
|
||||
<th class="text-end"><Sorter ParamName="BigTable" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter> Biggest Tab</th>
|
||||
<th class="text-end"><Sorter ParamName="BigTableRows" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter> Num Rows</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var item in ListRecord)
|
||||
{
|
||||
<tr>
|
||||
<td>@item.DbName</td>
|
||||
<td class="text-end">@item.DbSizeMb.ToString("N2")</td>
|
||||
<td class="text-end">@item.NumTables</td>
|
||||
<td class="text-end">@item.BigTable</td>
|
||||
<td class="text-end">@item.BigTableRows.ToString("N0")</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
using EgwCoreLib.Razor;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using MP.Data.DbModels;
|
||||
using MP.Data.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace MP.Land.Components
|
||||
{
|
||||
public partial class DbInfoMan
|
||||
{
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected LandDataService LDService { get; set; }
|
||||
|
||||
protected List<DbSizeModel> ListRecord { get; set; } = new List<DbSizeModel>();
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
ReloadData();
|
||||
}
|
||||
|
||||
protected void SortRequested(Sorter.SortCallBack e)
|
||||
{
|
||||
if (sortField == e.ParamName)
|
||||
{
|
||||
sortAsc = e.IsAscending;
|
||||
}
|
||||
sortField = e.ParamName;
|
||||
RefreshDisplay();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private bool sortAsc = true;
|
||||
|
||||
private string sortField = "";
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private void RefreshDisplay()
|
||||
{
|
||||
// se ho ordinamento riordino...
|
||||
if (!string.IsNullOrEmpty(sortField))
|
||||
{
|
||||
switch (sortField)
|
||||
{
|
||||
case "DbName":
|
||||
if (sortAsc)
|
||||
{
|
||||
ListRecord = ListRecord.OrderBy(x => x.DbName).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
ListRecord = ListRecord.OrderByDescending(x => x.DbName).ToList();
|
||||
}
|
||||
break;
|
||||
|
||||
case "DbSizeMb":
|
||||
if (sortAsc)
|
||||
{
|
||||
ListRecord = ListRecord.OrderBy(x => x.DbSizeMb).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
ListRecord = ListRecord.OrderByDescending(x => x.DbSizeMb).ToList();
|
||||
}
|
||||
break;
|
||||
|
||||
case "NumTable":
|
||||
if (sortAsc)
|
||||
{
|
||||
ListRecord = ListRecord.OrderBy(x => x.NumTables).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
ListRecord = ListRecord.OrderByDescending(x => x.NumTables).ToList();
|
||||
}
|
||||
break;
|
||||
|
||||
case "BigTable":
|
||||
if (sortAsc)
|
||||
{
|
||||
ListRecord = ListRecord.OrderBy(x => x.BigTable).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
ListRecord = ListRecord.OrderByDescending(x => x.BigTable).ToList();
|
||||
}
|
||||
break;
|
||||
|
||||
case "BigTableRows":
|
||||
if (sortAsc)
|
||||
{
|
||||
ListRecord = ListRecord.OrderBy(x => x.BigTableRows).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
ListRecord = ListRecord.OrderByDescending(x => x.BigTableRows).ToList();
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
ListRecord = ListRecord.OrderBy(x => x.DbName).ToList();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ReloadData()
|
||||
{
|
||||
ListRecord = LDService.AllDbInfo();
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<RootNamespace>MP.Land</RootNamespace>
|
||||
<Version>6.16.2507.0111</Version>
|
||||
<Version>6.16.2507.0411</Version>
|
||||
<Configurations>Debug;Release;Debug_LiManDebug</Configurations>
|
||||
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
|
||||
<RunAnalyzersDuringBuild>True</RunAnalyzersDuringBuild>
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
@page "/DbInfo"
|
||||
|
||||
<DbInfoMan></DbInfoMan>
|
||||
@@ -0,0 +1,25 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
|
||||
namespace MP.Land.Pages
|
||||
{
|
||||
public partial class DbInfo : ComponentBase
|
||||
{
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected Data.LMessageService MServ { get; set; } = null!;
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
MServ.ShowSearch = true;
|
||||
MServ.PageName = "DB Info";
|
||||
MServ.PageIcon = "fas fa-database";
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
}
|
||||
}
|
||||
@@ -157,6 +157,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
LicServ.AKVList = new List<AppAuth.Models.AnagKeyValueModel>();
|
||||
await Task.Delay(100);
|
||||
await DataService.FlushRedisCache();
|
||||
await TServ.FlushCache();
|
||||
await TServ.FlushCacheAsync();
|
||||
await Task.Delay(200);
|
||||
|
||||
// redireziono
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>Modulo Tablet MAPO - DotNet6</i>
|
||||
<h4>Versione: 6.16.2507.0111</h4>
|
||||
<h4>Versione: 6.16.2507.0411</h4>
|
||||
<br />
|
||||
Note di rilascio:
|
||||
<ul>
|
||||
|
||||
@@ -1 +1 @@
|
||||
6.16.2507.0111
|
||||
6.16.2507.0411
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>6.16.2507.0111</version>
|
||||
<version>6.16.2507.0411</version>
|
||||
<url>https://nexus.steamware.net/repository/SWS/MP-LAND/stable/LAST/MP.Land.zip</url>
|
||||
<changelog>https://nexus.steamware.net/repository/SWS/MP-LAND/stable/LAST/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
|
||||
@@ -99,6 +99,15 @@
|
||||
</div>
|
||||
@if (IsSuperAdmin)
|
||||
{
|
||||
<div class="nav-item px-2">
|
||||
<NavLink class="nav-link py-0 px-2 mb-0" href="DbInfo">
|
||||
<span class="fas fa-database fs-4 pe-2" aria-hidden="true"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">DBs Info</span>
|
||||
}
|
||||
</NavLink>
|
||||
</div>
|
||||
<div class="nav-item px-2">
|
||||
<NavLink class="nav-link py-0 px-2 mb-0" href="TaskScheduler">
|
||||
<span class="fas fa-stopwatch fs-4 pe-2" aria-hidden="true"></span>
|
||||
|
||||
@@ -58,9 +58,11 @@
|
||||
"ConnectionStrings": {
|
||||
"DefaultConnection": "Server=SQL2016DEV;Database=MoonPro;Trusted_Connection=True;MultipleActiveResultSets=true",
|
||||
"MP.All": "Server=SQL2016DEV;Database=MoonPro;User ID=sa;Password=keyhammer16;integrated security=False;MultipleActiveResultSets=True;App=MP.Land;",
|
||||
"MP.FluxLog": "Server=SQL2016DEV;Database=MoonPro_FluxData;User ID=sa;Password=keyhammer16;integrated security=False;MultipleActiveResultSets=True;App=MP.Land;",
|
||||
"MP.Land": "Server=SQL2016DEV;Database=MoonPro;User ID=sa;Password=keyhammer16;integrated security=False;MultipleActiveResultSets=True;App=MP.Land;",
|
||||
"MP.Land.Auth": "Server=SQL2016DEV;Database=MoonPro_Anagrafica;User ID=sa;Password=keyhammer16;integrated security=False;MultipleActiveResultSets=True;App=MP.Land;",
|
||||
"MP.Tab": "Server=SQL2016DEV;Database=MoonPro; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.Land;",
|
||||
"MP.Stats": "Server=SQL2016DEV;Database=MoonPro_STATS; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.Land;",
|
||||
//"Redis": "redis.ufficio:26379, serviceName=devel, defaultDatabase=1, keepAlive=180, connectTimeout=5000, syncTimeout=5000, asyncTimeout=5000, abortConnect=false, ssl=false, allowAdmin=true",
|
||||
"Redis": "redis.ufficio:26379, serviceName=devel, DefaultDatabase=5, keepAlive=180, connectTimeout=15000, syncTimeout=15000, asyncTimeout=15000, abortConnect=false, ssl=false, allowAdmin=true"
|
||||
},
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<RootNamespace>MP.Prog</RootNamespace>
|
||||
<Version>6.16.2504.0909</Version>
|
||||
<Version>6.16.2507.0315</Version>
|
||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace MP.Prog.Pages
|
||||
{
|
||||
await Task.Delay(10);
|
||||
await FDService.FlushRedisCache();
|
||||
await TServ.FlushCache();
|
||||
await TServ.FlushCacheAsync();
|
||||
message = "Reset done, now redirect!";
|
||||
|
||||
await Task.Delay(100);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>Modulo gestione Programmi MAPO</i>
|
||||
<h4>Versione: 6.16.2504.0909</h4>
|
||||
<h4>Versione: 6.16.2507.0315</h4>
|
||||
<br />
|
||||
Note di rilascio:
|
||||
<ul>
|
||||
|
||||
@@ -1 +1 @@
|
||||
6.16.2504.0909
|
||||
6.16.2507.0315
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>6.16.2504.0909</version>
|
||||
<version>6.16.2507.0315</version>
|
||||
<url>https://nexus.steamware.net/repository/SWS/MP-PROG/stable/LAST/MP.Prog.zip</url>
|
||||
<changelog>https://nexus.steamware.net/repository/SWS/MP-PROG/stable/LAST/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
<InputDateTime id="dtFine" class="form-control form-control-sm" @bind-Value="@DateEnd"></InputDateTime>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<label for="idxMacc" class="small">macchina:</label>
|
||||
<div class="col" style="min-width: 10rem;">
|
||||
<label class="small">macchina:</label>
|
||||
<div class="input-group input-group-sm">
|
||||
<select @bind="@IdxMacchina" class="form-select">
|
||||
@foreach (var item in ddlMacchine)
|
||||
@@ -46,7 +46,7 @@
|
||||
{
|
||||
<div class="col">
|
||||
<div class="form-group mb-0">
|
||||
<label for="idxMacc" class="small">azione:</label>
|
||||
<label class="small">azione:</label>
|
||||
<div class="input-group input-group-sm">
|
||||
<select @bind="@Azione" class="form-select" disabled="@(!CommessaEnabled)">
|
||||
@foreach (var item in ddlAzioni)
|
||||
@@ -58,60 +58,68 @@
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="col">
|
||||
<div class="form-group mb-0">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<label class="input-group-text">commessa:</label>
|
||||
</div>
|
||||
<input class="form-control form-control-sm" @bind="@SearchCom" placeholder="search (> @minChar char)" disabled="@(!CommessaEnabled)" />
|
||||
</div>
|
||||
@if (!string.IsNullOrEmpty(SearchCom) && SearchCom.Length >= minChar)
|
||||
{
|
||||
<div class="col" style="min-width: 10rem;">
|
||||
@if (!OnlyEnergy)
|
||||
{
|
||||
<label class="small">commessa:</label>
|
||||
<div class="form-group mb-0">
|
||||
<div class="input-group input-group-sm">
|
||||
<select @bind="@KeyRichiesta" class="form-select" disabled="@(!CommessaEnabled)">
|
||||
@foreach (var item in ddlCommesse)
|
||||
{
|
||||
<option value="@item.ValueField">@item.LabelField</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
@* <InputSelect @bind-Value="@KeyRichiesta" id="KeyRich" class="form-control form-control-sm" title="Macchina" disabled="@(!CommessaEnabled)">
|
||||
@foreach (var item in ddlCommesse)
|
||||
@if (string.IsNullOrEmpty(SearchCom))
|
||||
{
|
||||
<option value="@item.ValueField">@item.LabelField</option>
|
||||
<button class="btn btn-sm btn-outline-secondary"><i class="fa-solid fa-rotate-right"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-sm btn-primary" @onclick="ResetCom"><i class="fa-solid fa-rotate-right"></i></button>
|
||||
}
|
||||
<input class="form-control form-control-sm" @bind="@SearchCom" placeholder="search (> @minChar char)" disabled="@(!CommessaEnabled)" />
|
||||
@if (!string.IsNullOrEmpty(SearchCom) && SearchCom.Length >= minChar)
|
||||
{
|
||||
<select @bind="@KeyRichiesta" class="form-select" style="min-width: 9rem;" disabled="@(!CommessaEnabled)">
|
||||
@foreach (var item in ddlCommesse)
|
||||
{
|
||||
<option value="@item.ValueField">@item.LabelField</option>
|
||||
}
|
||||
</select>
|
||||
}
|
||||
</InputSelect> *@
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="form-group mb-0">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<label class="input-group-text">articolo:</label>
|
||||
</div>
|
||||
<input class="form-control form-control-sm" @bind="@SearchArt" placeholder="search (> @minChar char)" />
|
||||
</div>
|
||||
@if (!string.IsNullOrEmpty(SearchArt) && SearchArt.Length >= minChar)
|
||||
{
|
||||
}
|
||||
</div>
|
||||
<div class="col" style="min-width: 10rem;">
|
||||
@if (!OnlyEnergy)
|
||||
{
|
||||
<label class="small">articolo:</label>
|
||||
<div class="form-group mb-0">
|
||||
<div class="input-group input-group-sm">
|
||||
<select @bind="@CodArticolo" class="form-select">
|
||||
@foreach (var item in ddlArticoli)
|
||||
{
|
||||
<option value="@item.ValueField">@item.LabelField</option>
|
||||
}
|
||||
</select>
|
||||
@if (string.IsNullOrEmpty(SearchArt))
|
||||
{
|
||||
<button class="btn btn-sm btn-outline-secondary"><i class="fa-solid fa-rotate-right"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-sm btn-primary" @onclick="ResetArt"><i class="fa-solid fa-rotate-right"></i></button>
|
||||
}
|
||||
<input class="form-control form-control-sm" @bind="@SearchArt" placeholder="search (> @minChar char)" />
|
||||
@if (!string.IsNullOrEmpty(SearchArt) && SearchArt.Length >= minChar)
|
||||
{
|
||||
<select @bind="@CodArticolo" class="form-select small" style="min-width: 9rem;">
|
||||
@foreach (var item in ddlArticoli)
|
||||
{
|
||||
<option value="@item.ValueField">@item.LabelField</option>
|
||||
}
|
||||
</select>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-2">
|
||||
<div class="form-group mb-0">
|
||||
<label for="btnReset" class="small">reset</label><br />
|
||||
<button id="btnReset" class="btn btn-info btn-sm btn-block" Clicked="resetFilter"><span class="oi oi-loop-circular"></span></button>
|
||||
<button id="btnReset" class="btn btn-info btn-sm btn-block" @onclick="ResetFilter"><span class="oi oi-loop-circular"></span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -207,8 +207,20 @@ namespace MP.Stats.Components
|
||||
await reloadData();
|
||||
}
|
||||
|
||||
protected void resetFilter()
|
||||
protected void ResetArt()
|
||||
{
|
||||
SearchArt = "";
|
||||
}
|
||||
|
||||
protected void ResetCom()
|
||||
{
|
||||
SearchCom = "";
|
||||
}
|
||||
|
||||
protected void ResetFilter()
|
||||
{
|
||||
SearchArt = "";
|
||||
SearchCom = "";
|
||||
filterReset.InvokeAsync(SelFilter);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<RootNamespace>MP.Stats</RootNamespace>
|
||||
<UserSecretsId>826e877c-ba70-4253-84cb-d0b1cafd4440</UserSecretsId>
|
||||
<Version>6.16.2507.0315</Version>
|
||||
<Version>6.16.2507.0315</Version>
|
||||
<Version>6.16.2507.0408</Version>
|
||||
<Version>6.16.2507.0408</Version>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<NoWarn>$(NoWarn);1591</NoWarn>
|
||||
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
|
||||
|
||||
@@ -20,8 +20,21 @@
|
||||
<div class="card-footer d-flex justify-content-between">
|
||||
<div class="px-0">
|
||||
<div class="input-group flex-nowrap">
|
||||
<span class="input-group-text" id="addon-wrapping">Max Points</span>
|
||||
<input type="number" class="form-control" @bind="MaxPoints">
|
||||
<span class="input-group-text" id="addon-wrapping">Res</span>
|
||||
<select @bind="@ReqRes" class="form-select">
|
||||
@foreach (var item in Enum.GetValues(typeof(ResolutionLevel)))
|
||||
{
|
||||
<option value="@item">@item</option>
|
||||
}
|
||||
</select>
|
||||
@if (ReqRes == ResolutionLevel.Custom)
|
||||
{
|
||||
<input type="number" class="form-control" @bind="MaxPoints">
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="input-group-text small text-secondary">@MaxPoints</span>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
|
||||
@@ -141,6 +141,45 @@ namespace MP.Stats.Pages
|
||||
private List<FLModel> PlotRecords;
|
||||
private List<FLModel> SearchRecords;
|
||||
|
||||
protected ResolutionLevel ReqRes
|
||||
{
|
||||
get => _reqRes;
|
||||
set
|
||||
{
|
||||
if (_reqRes != value)
|
||||
{
|
||||
_reqRes = value;
|
||||
if (value < ResolutionLevel.Custom)
|
||||
{
|
||||
int scale = 256;
|
||||
switch (value)
|
||||
{
|
||||
case ResolutionLevel.Low:
|
||||
MaxPoints = (int)Math.Round(totalCount / 10 / (double)scale) * scale;
|
||||
break;
|
||||
case ResolutionLevel.Med:
|
||||
MaxPoints = (int)Math.Round(totalCount / 3 / (double)scale) * scale;
|
||||
break;
|
||||
case ResolutionLevel.High:
|
||||
MaxPoints = (int)Math.Round(totalCount / (double)scale) * scale;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private ResolutionLevel _reqRes = ResolutionLevel.Low;
|
||||
|
||||
protected enum ResolutionLevel
|
||||
{
|
||||
Low,
|
||||
Med,
|
||||
High,
|
||||
Custom
|
||||
}
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>Modulo statistiche MAPO</i>
|
||||
<h4>Versione: 6.16.2507.0315</h4>
|
||||
<h4>Versione: 6.16.2507.0408</h4>
|
||||
<br />
|
||||
Note di rilascio:
|
||||
<ul>
|
||||
|
||||
@@ -1 +1 @@
|
||||
6.16.2507.0315
|
||||
6.16.2507.0408
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>6.16.2507.0315</version>
|
||||
<version>6.16.2507.0408</version>
|
||||
<url>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/MP.Stats.zip</url>
|
||||
<changelog>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
}
|
||||
else if (SearchRecords.Count==0)
|
||||
{
|
||||
<div class="alert alert-info fs-5">Nessun record trovato dati i criteri espressi</div>
|
||||
<div class="alert alert-info fs-5">Nessun record trovato</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user