Compare commits

..

10 Commits

Author SHA1 Message Date
Samuele Locatelli 67f0f74fbe Merge branch 'Release/UpdateGestSelect' 2022-10-18 10:11:16 +02:00
Samuele Locatelli d00b4bbb8b Refresh 2022-10-18 10:09:01 +02:00
Samuele Locatelli dd63bb292d Merge remote-tracking branch 'origin/develop' into develop 2022-10-18 09:56:05 +02:00
zaccaria.majid 57bc790074 Merge branch 'develop' of https://gitlab.steamware.net/steamware/mapo-core into develop 2022-10-18 09:55:37 +02:00
zaccaria.majid 41a00ffa45 fix 2 variabili x statRecord e currRecord 2022-10-18 09:55:29 +02:00
Samuele Locatelli 633b5dda6e Fix cache recupero ODL correnti (3 sec redis) 2022-10-18 09:51:43 +02:00
Samuele Locatelli 5d6bef0fc8 Merge tag 'UpdateGestOdlPodl' into develop
Update gestione ODL/PODL
2022-10-18 09:26:34 +02:00
Samuele Locatelli d24b2ada0c Merge branch 'Release/UpdateGestOdlPodl' 2022-10-18 09:26:27 +02:00
Samuele Locatelli 0a9ccffe28 Fix ODL/PODL x setup ed avvio 2022-10-18 09:26:04 +02:00
Samuele Locatelli 207d305327 Merge tag 'UpdateGestSetupOdl' into develop
Fix x test gesiotne ODL (manca vera gestione SE ODL aperto)
2022-10-18 08:43:44 +02:00
14 changed files with 261 additions and 102 deletions
+75 -32
View File
@@ -741,6 +741,47 @@ namespace MP.Data.Controllers
return dbResult; return dbResult;
} }
/// <summary>
/// Recupero Odl CORRENTE x macchina (SE c'è)
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public ODLModel OdlGetCurrentByMacc(string idxMacchina)
{
ODLModel dbResult = new ODLModel();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetODL
.FirstOrDefault(x => x.IdxMacchina == idxMacchina && x.DataInizio != null && x.DataFine == null);
}
return dbResult;
}
/// <summary>
/// Statistiche ODL calcolate (da stored stp_STAT_ODL)
/// </summary>
/// <returns></returns>
public async Task<List<StatODLModel>> OdlStart(int IdxOdl)
{
List<StatODLModel> dbResult = new List<StatODLModel>();
if (IdxOdl > 0)
{
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxODL = new SqlParameter("@IdxODL", IdxOdl);
dbResult = await dbCtx
.DbSetStatOdl
.FromSqlRaw("EXEC stp_STAT_ODL @IdxODL", IdxODL)
.AsNoTracking()
.ToListAsync();
}
}
return dbResult;
}
/// <summary> /// <summary>
/// Elenco parametri validi x una data macchina /// Elenco parametri validi x una data macchina
/// </summary> /// </summary>
@@ -762,6 +803,33 @@ namespace MP.Data.Controllers
return dbResult; return dbResult;
} }
/// <summary>
/// Recupero PODL da chiave
/// </summary>
/// <param name="idxPODL"></param>
/// <returns></returns>
public async Task<PODLModel> PODL_getByKey(int idxPODL)
{
PODLModel dbResult = new PODLModel();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
dbResult = dbCtx
.DbSetPODL
.AsNoTracking()
.Where(x => x.IdxPromessa == idxPODL)
.FirstOrDefault();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante PODL_getByKey{Environment.NewLine}{exc}");
}
}
await Task.Delay(1);
return dbResult;
}
/// <summary> /// <summary>
/// Avvio setup ODL da PODL /// Avvio setup ODL da PODL
/// </summary> /// </summary>
@@ -771,17 +839,19 @@ namespace MP.Data.Controllers
/// <param name="pzPallet"></param> /// <param name="pzPallet"></param>
/// <param name="note"></param> /// <param name="note"></param>
/// <returns></returns> /// <returns></returns>
public async Task<ODLModel> PODL_startSetup(PODLModel editRec, int matrOpr, double tcRich, int pzPallet, string note) public async Task<bool> PODL_startSetup(PODLModel editRec, int matrOpr, double tcRich, int pzPallet, string note)
{ {
ODLModel dbResult = new ODLModel(); bool answ = false;
using (var dbCtx = new MoonProContext(_configuration)) using (var dbCtx = new MoonProContext(_configuration))
{ {
try try
{ {
var currRec = dbCtx var currRec = dbCtx
.DbSetPODL .DbSetPODL
.AsNoTracking()
.Where(x => x.IdxPromessa == editRec.IdxPromessa) .Where(x => x.IdxPromessa == editRec.IdxPromessa)
.FirstOrDefault(); .FirstOrDefault();
if (currRec != null) if (currRec != null)
{ {
// eseguo stored attrezzaggio // eseguo stored attrezzaggio
@@ -793,13 +863,9 @@ namespace MP.Data.Controllers
var Note = new SqlParameter("@Note", note); var Note = new SqlParameter("@Note", note);
var callResult = await dbCtx var callResult = await dbCtx
.Database .Database
.ExecuteSqlRawAsync("EXEC stp_ODL_inizioSetupPromessa @idxPromessa, @MatrOpr, @IdxMacchina @TCRichAttr, @PzPallet, @Note", IdxPromessa, MatrOpr, IdxMacchina, TCRichAttr, PzPallet, Note); .ExecuteSqlRawAsync("EXEC stp_ODL_inizioSetupPromessa @idxPromessa, @MatrOpr, @IdxMacchina, @TCRichAttr, @PzPallet, @Note", IdxPromessa, MatrOpr, IdxMacchina, TCRichAttr, PzPallet, Note);
// recupero info su ODL corrente answ = true;
dbResult = await dbCtx
.DbSetODL
.Where(x => x.IdxMacchina == editRec.IdxMacchina && x.DataInizio != null && x.DataFine == null)
.FirstOrDefaultAsync();
} }
} }
catch (Exception exc) catch (Exception exc)
@@ -808,7 +874,7 @@ namespace MP.Data.Controllers
} }
} }
await Task.Delay(1); await Task.Delay(1);
return dbResult; return answ;
} }
/// <summary> /// <summary>
@@ -911,29 +977,6 @@ namespace MP.Data.Controllers
return answ; return answ;
} }
/// <summary>
/// Statistiche ODL calcolate (da stored stp_STAT_ODL)
/// </summary>
/// <returns></returns>
public async Task<List<StatODLModel>> StatOdl(int IdxOdl)
{
List<StatODLModel> dbResult = new List<StatODLModel>();
if (IdxOdl > 0)
{
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxODL = new SqlParameter("@IdxODL", IdxOdl);
dbResult = await dbCtx
.DbSetStatOdl
.FromSqlRaw("EXEC stp_STAT_ODL @IdxODL", IdxODL)
.AsNoTracking()
.ToListAsync();
}
}
return dbResult;
}
/// <summary> /// <summary>
/// Stato prod macchina /// Stato prod macchina
/// </summary> /// </summary>
+27 -27
View File
@@ -110,7 +110,7 @@ else
<b>@record.DurataMinuti</b> <b>@record.DurataMinuti</b>
</div> </div>
<div> <div>
<button class="btn btn-sm btn-primary py-0" type="button" @onclick="() => selectRecord(record)" data-bs-toggle="modal" data-bs-target="#myModal" title="Mostra statistiche"><i class="fa-solid fa-chart-pie"></i></button> <button class="btn btn-sm btn-primary py-0" type="button" @onclick="() => selectStatRecord(record)" data-bs-toggle="modal" data-bs-target="#myModal" title="Mostra statistiche"><i class="fa-solid fa-chart-pie"></i></button>
</div> </div>
<!-- Modal --> <!-- Modal -->
</td> </td>
@@ -122,26 +122,26 @@ else
<div class="modal-dialog modal-dialog-centered modal-xl"> <div class="modal-dialog modal-dialog-centered modal-xl">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header bg-primary col-12"> <div class="modal-header bg-primary col-12">
@if (currRecord != null) @if (statRecord != null)
{ {
<div class="col-3"> <div class="col-3">
<b class="modal-title fs-1" id="staticBackdropLabel"><b>ODL @currRecord.IdxOdl</b></b> <b class="modal-title fs-1" id="staticBackdropLabel"><b>ODL @statRecord.IdxOdl</b></b>
</div> </div>
<div class="col-6 fs-5"> <div class="col-6 fs-5">
<b>@currRecord.CodArticolo</b> <b>@statRecord.CodArticolo</b>
<div class="small textConsensed text-light">@currRecord.ArticoloNav.DescArticolo</div> <div class="small textConsensed text-light">@statRecord.ArticoloNav.DescArticolo</div>
</div> </div>
<div class="col-2 fs-5"> <div class="col-2 fs-5">
<b>@currRecord.IdxMacchina</b> <b>@statRecord.IdxMacchina</b>
<div class="small textConsensed text-light">@currRecord.MachineNav.Descrizione</div> <div class="small textConsensed text-light">@statRecord.MachineNav.Descrizione</div>
</div> </div>
} }
<div class="col-1 text-end"> <div class="col-1 text-end">
<button type="button" class="btn btn-close" data-bs-dismiss="modal" aria-label="Close" @onclick="TriggerDotNetInstanceMethod"></button> <button type="button" class="btn btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
</div> </div>
<div class="modal-body col-12"> <div class="modal-body col-12">
@if (currRecord != null && showStats) @if (statRecord != null && showStats)
{ {
<div class="d-flex justify-content-between"> <div class="d-flex justify-content-between">
<div class="col-8"> <div class="col-8">
@@ -150,23 +150,23 @@ else
<tbody> <tbody>
<tr> <tr>
<td style="width: 270px"> <td style="width: 270px">
<div class="small textConsensed"><b>N° pezzi:</b> @currRecord.NumPezzi</div> <div class="small textConsensed"><b>N° pezzi:</b> @statRecord.NumPezzi</div>
<div class="small textConsensed"><b>T. Ciclo:</b> @currRecord.Tcassegnato.ToString("N3")</div> <div class="small textConsensed"><b>T. Ciclo:</b> @statRecord.Tcassegnato.ToString("N3")</div>
</td> </td>
<td style="width: 300px"> <td style="width: 300px">
<div class="small d-flex justify-content-between"> <div class="small d-flex justify-content-between">
<div> <div>
<div><b>@($"{@currRecord.DataInizio:yyyy/MM/dd}")</b></div> <div><b>@($"{@statRecord.DataInizio:yyyy/MM/dd}")</b></div>
<div>@($"{@currRecord.DataInizio:ddd HH:mm:ss}")</div> <div>@($"{@statRecord.DataInizio:ddd HH:mm:ss}")</div>
</div> </div>
<div class="p-0"> <div class="p-0">
<i class="fa-solid fa-angles-right"></i> <i class="fa-solid fa-angles-right"></i>
</div> </div>
<div> <div>
@if (@currRecord.DataFine != null) @if (@statRecord.DataFine != null)
{ {
<div><b>@($"{@currRecord.DataFine:yyyy/MM/dd}")</b></div> <div><b>@($"{@statRecord.DataFine:yyyy/MM/dd}")</b></div>
<div>@($"{@currRecord.DataFine:ddd HH:mm:ss}")</div> <div>@($"{@statRecord.DataFine:ddd HH:mm:ss}")</div>
} }
else else
{ {
@@ -192,12 +192,12 @@ else
<tr> <tr>
<td> <td>
<div> <div>
@tradFase(currRecord.KeyRichiesta) @tradFase(statRecord.KeyRichiesta)
</div> </div>
@if (currRecord.Note != "") @if (statRecord.Note != "")
{ {
<div class="small textConsensed text-secondary badge text-bg-light border border-secondary rounded"> <div class="small textConsensed text-secondary badge text-bg-light border border-secondary rounded">
<b class="text-dark"></b> <span class="text-wrap text-start"> @currRecord.Note </span> <b class="text-dark"></b> <span class="text-wrap text-start"> @statRecord.Note </span>
</div> </div>
} }
</td> </td>
@@ -206,25 +206,25 @@ else
</table> </table>
</div> </div>
<div> <div>
@if (currRecord != null) @if (statRecord != null)
{ {
@if (ListOdlStats != null) @if (ListOdlStats != null)
{ {
@foreach (var statRecord in ListOdlStats) @foreach (var stat in ListOdlStats)
{ {
<div class="p-1"> <div class="p-1">
<div class="d-flex justify-content-between"> <div class="d-flex justify-content-between">
<div class="text-uppercase"> <div class="text-uppercase">
@statRecord.Descrizione @stat.Descrizione
</div> </div>
<div> <div>
<b>@(formDurata(statRecord.TotDurata))</b> <b>@(formDurata(stat.TotDurata))</b>
</div> </div>
</div> </div>
<div class="progress"> <div class="progress">
<div class="progress-bar @colorChanger(@statRecord.Css)" role="progressbar" aria-valuenow="0" aria-valuemin="0" style="width: @Math.Round(calcolaPerc(statRecord.TotDurata),0)%; background-color:@statRecord.Css;" aria-valuemax="100">@($"{calcolaPerc(statRecord.TotDurata):N1}%")</div> <div class="progress-bar @colorChanger(@stat.Css)" role="progressbar" aria-valuenow="0" aria-valuemin="0" style="width: @Math.Round(calcolaPerc(stat.TotDurata),0)%; background-color:@stat.Css;" aria-valuemax="100">@($"{calcolaPerc(stat.TotDurata):N1}%")</div>
</div> </div>
</div> </div>
@@ -234,14 +234,14 @@ else
</div> </div>
</div> </div>
<div class="col-4 dcContainer"> <div class="col-4 dcContainer">
@if (currRecord != null && ListOdlStats != null) @if (statRecord != null && ListOdlStats != null)
{ {
<div class="dcBox"> <div class="dcBox">
<ODLPlot SelectedOdl="@currRecord.IdxOdl"></ODLPlot> <ODLPlot SelectedOdl="@statRecord.IdxOdl"></ODLPlot>
</div> </div>
<div class="dcBox dcOverlay d-flex"> <div class="dcBox dcOverlay d-flex">
<div class="align-self-center text-center w-100"> <div class="align-self-center text-center w-100">
<b class="fs-3">@currRecord.DurataMinuti</b> <b class="fs-3">@statRecord.DurataMinuti</b>
</div> </div>
</div> </div>
} }
+29 -6
View File
@@ -48,19 +48,19 @@ namespace MP.SPEC.Components
//oggetto contenente le funzioni del code behind che sono jsInvokable //oggetto contenente le funzioni del code behind che sono jsInvokable
private DotNetObjectReference<ListODL>? objRef; private DotNetObjectReference<ListODL>? objRef;
#if true //FUNZIONA SE IL METODO TriggerDotNetInstanceMethod() E' IN ONCLOCK BOTTONE #if false //FUNZIONA SE IL METODO TriggerDotNetInstanceMethod() E' IN ONCLICK BOTTONE
[JSInvokable]
public void setHelper()
{
objRef = DotNetObjectReference.Create(this);
}
[JSInvokable] [JSInvokable]
public void svuotaRecord() public void svuotaRecord()
{ {
currRecord = null; currRecord = null;
} }
[JSInvokable]
public void setHelper()
{
objRef = DotNetObjectReference.Create(this);
}
public async Task TriggerDotNetInstanceMethod() public async Task TriggerDotNetInstanceMethod()
{ {
await JSRuntime.InvokeVoidAsync("recordDeselect", objRef); await JSRuntime.InvokeVoidAsync("recordDeselect", objRef);
@@ -71,6 +71,8 @@ namespace MP.SPEC.Components
#region Protected Properties #region Protected Properties
[Inject] [Inject]
protected IJSRuntime JSRuntime { get; set; } = null!; protected IJSRuntime JSRuntime { get; set; } = null!;
@@ -90,6 +92,9 @@ namespace MP.SPEC.Components
/// <returns></returns> /// <returns></returns>
protected async Task chiudiOdl() protected async Task chiudiOdl()
{ {
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Sei sicuro di voler chiudere l'ODL corrente?"))
return;
if (currRecord != null) if (currRecord != null)
{ {
// effettua chiusura sul DB // effettua chiusura sul DB
@@ -162,6 +167,22 @@ namespace MP.SPEC.Components
ListOdlStats = null; ListOdlStats = null;
} }
} }
protected async Task selectStatRecord(ODLModel? currRec)
{
showStats = true;
await Task.Delay(1);
statRecord = currRec;
if (currRec != null)
{
showStats = true;
ListOdlStats = await MDService.StatOdl(currRec.IdxOdl);
}
else
{
showStats = false;
ListOdlStats = null;
}
}
protected async Task selRecord(ODLModel? currRec) protected async Task selRecord(ODLModel? currRec)
{ {
@@ -184,6 +205,8 @@ namespace MP.SPEC.Components
private ODLModel? currRecord = null; private ODLModel? currRecord = null;
private ODLModel? statRecord = null;
private List<StatODLModel>? ListOdlStats; private List<StatODLModel>? ListOdlStats;
private List<ODLModel>? ListRecords; private List<ODLModel>? ListRecords;
+21 -6
View File
@@ -144,6 +144,9 @@ namespace MP.SPEC.Components
protected async Task startOdl(PODLModel selRec) protected async Task startOdl(PODLModel selRec)
{ {
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Sei sicuro di voler avviare PODL selezionato?"))
return;
if (selRec != null) if (selRec != null)
{ {
int idxEvento = 0; int idxEvento = 0;
@@ -154,9 +157,12 @@ namespace MP.SPEC.Components
await callStartSetup(selRec.IdxMacchina); await callStartSetup(selRec.IdxMacchina);
await Task.Delay(1); await Task.Delay(1);
// chiamo stored stp_ODL_inizioSetupPromessa e recupero ODL corrente // chiamo stored stp_ODL_inizioSetupPromessa e recupero ODL corrente
var newOdl = await MDService.POdlDoSetup(selRec); bool fatto = await MDService.POdlDoSetup(selRec);
if (newOdl != null) if (fatto)
{ {
var currPOdl = await MDService.PODL_getByKey(selRec.IdxPromessa);
var newOdl = await MDService.OdlGetByKey(currPOdl.IdxOdl);
// registro evento... // registro evento...
idxEvento = 2; idxEvento = 2;
evMess = $"Inizio Setup | PODL {selRec.IdxPromessa}"; evMess = $"Inizio Setup | PODL {selRec.IdxPromessa}";
@@ -244,7 +250,13 @@ namespace MP.SPEC.Components
{ {
// compongo URL e chiamo // compongo URL e chiamo
string restUrl = $"IOB/addTask2Exe/{idxMacc}?taskName={taskName}&taskVal={taskVal}"; string restUrl = $"IOB/addTask2Exe/{idxMacc}?taskName={taskName}&taskVal={taskVal}";
var response = await MpIoApiCall.callMpIoUrlGet(restUrl); try
{
var response = await MpIoApiCall.callMpIoUrlGet(restUrl);
}
catch(Exception exc)
{
}
} }
/// <summary> /// <summary>
@@ -292,8 +304,8 @@ namespace MP.SPEC.Components
/// <returns></returns> /// <returns></returns>
private bool canStartOdl(string idxMacchina) private bool canStartOdl(string idxMacchina)
{ {
// fare!!! var currOdl = MDService.OdlGetCurrentByMacc(idxMacchina);
bool answ = idxMacchina.Contains("BAG"); bool answ = currOdl == null;
return answ; return answ;
} }
@@ -326,7 +338,10 @@ namespace MP.SPEC.Components
if (string.IsNullOrEmpty(codArticolo)) if (string.IsNullOrEmpty(codArticolo))
{ {
var currOdl = await MDService.OdlGetByKey(idxODL); var currOdl = await MDService.OdlGetByKey(idxODL);
codArticolo = currOdl.CodArticolo; if (currOdl != null)
{
codArticolo = currOdl.CodArticolo;
}
} }
// scrivo evento scriviRigaEventoBarcode // scrivo evento scriviRigaEventoBarcode
+1 -1
View File
@@ -61,7 +61,7 @@ namespace MP.SPEC.Components
{ {
Data.Add(record.TotDurata); Data.Add(record.TotDurata);
Labels.Add($"{record.Descrizione} - {record.TotDurata:N1}min"); Labels.Add($"{record.Descrizione} - {record.TotDurata:N1}min");
colors.Add(record.Css); colors.Add($"{record.Css}");
} }
await Task.Delay(1); await Task.Delay(1);
isLoading = false; isLoading = false;
+51 -2
View File
@@ -664,6 +664,44 @@ namespace MP.SPEC.Data
return dbResult; return dbResult;
} }
/// <summary>
/// ODL corrente x macchina
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public ODLModel OdlGetCurrentByMacc(string idxMacchina)
{
ODLModel dbResult = new ODLModel();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
string readType = "DB";
string currKey = $"{redisOdlCurrByMac}:{idxMacchina}";
// cerco in redis dato valore sel macchina...
RedisValue rawData = redisDb.StringGet(currKey);
if (rawData.HasValue)
{
dbResult = JsonConvert.DeserializeObject<ODLModel>($"{rawData}");
readType = "REDIS";
}
else
{
dbResult = dbController.OdlGetCurrentByMacc(idxMacchina);
// serializzp e salvo...
rawData = JsonConvert.SerializeObject(dbResult);
redisDb.StringSet(currKey, rawData, TimeSpan.FromSeconds(3));
}
if (dbResult == null)
{
dbResult = new ODLModel();
}
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Debug($"OdlGetCurrentByMacc | Read from {readType}: {ts.TotalMilliseconds}ms");
return dbResult;
}
/// <summary> /// <summary>
/// Elenco di tutti i parametri filtrati x macchina /// Elenco di tutti i parametri filtrati x macchina
/// </summary> /// </summary>
@@ -700,6 +738,16 @@ namespace MP.SPEC.Data
return result; return result;
} }
/// <summary>
/// Recupero PODL da chiave
/// </summary>
/// <param name="idxPODL"></param>
/// <returns></returns>
public async Task<PODLModel> PODL_getByKey(int idxPODL)
{
return await dbController.PODL_getByKey(idxPODL);
}
/// <summary> /// <summary>
/// Eliminazione record selezionato /// Eliminazione record selezionato
/// </summary> /// </summary>
@@ -715,7 +763,7 @@ namespace MP.SPEC.Data
/// </summary> /// </summary>
/// <param name="currRec"></param> /// <param name="currRec"></param>
/// <returns></returns> /// <returns></returns>
public async Task<ODLModel> POdlDoSetup(PODLModel currRec) public async Task<bool> POdlDoSetup(PODLModel currRec)
{ {
return await dbController.PODL_startSetup(currRec, 0, 1, 1, ""); return await dbController.PODL_startSetup(currRec, 0, 1, 1, "");
} }
@@ -736,7 +784,7 @@ namespace MP.SPEC.Data
/// <returns></returns> /// <returns></returns>
public Task<List<StatODLModel>> StatOdl(int IdxOdl) public Task<List<StatODLModel>> StatOdl(int IdxOdl)
{ {
return dbController.StatOdl(IdxOdl); return dbController.OdlStart(IdxOdl);
} }
public async Task<bool> updateDossierValue(Dossiers currDoss, FluxLogDTO editFL) public async Task<bool> updateDossierValue(Dossiers currDoss, FluxLogDTO editFL)
@@ -812,6 +860,7 @@ namespace MP.SPEC.Data
private const string redisDossByMac = redisBaseAddr + "SPEC:Cache:DossByMac"; private const string redisDossByMac = redisBaseAddr + "SPEC:Cache:DossByMac";
private const string redisFluxByMac = redisBaseAddr + "SPEC:Cache:FluxByMac"; private const string redisFluxByMac = redisBaseAddr + "SPEC:Cache:FluxByMac";
private const string redisOdlCurrByMac = redisBaseAddr + "SPEC:Cache:OdlByMac";
private const string redisMacByFlux = redisBaseAddr + "SPEC:Cache:MacByFlux"; private const string redisMacByFlux = redisBaseAddr + "SPEC:Cache:MacByFlux";
private const string redisMacList = redisBaseAddr + "SPEC:Cache:MacList"; private const string redisMacList = redisBaseAddr + "SPEC:Cache:MacList";
+1 -1
View File
@@ -5,7 +5,7 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MP.SPEC</RootNamespace> <RootNamespace>MP.SPEC</RootNamespace>
<Version>6.16.2210.1808</Version> <Version>6.16.2210.1810</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body> <body>
<i>Modulo MAPOSPEC </i> <i>Modulo MAPOSPEC </i>
<h4>Versione: 6.16.2210.1808</h4> <h4>Versione: 6.16.2210.1810</h4>
<br /> Note di rilascio: <br /> Note di rilascio:
<ul> <ul>
<li> <li>
+1 -1
View File
@@ -1 +1 @@
6.16.2210.1808 6.16.2210.1810
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<item> <item>
<version>6.16.2210.1808</version> <version>6.16.2210.1810</version>
<url>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip</url> <url>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html</changelog> <changelog>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory> <mandatory>false</mandatory>
+19
View File
@@ -326,4 +326,23 @@ a,
min-width: 8rem; min-width: 8rem;
min-height: 4rem; min-height: 4rem;
} }
}
/* Colori!*/
blue {
color: purple;
background-color: purple;
}
.dc_yellow {
color: yellow;
background-color: yellow;
}
.dc_gray {
color: gray;
}
.dc_red {
color: red;
}
.dc_green {
color: green;
background-color: green;
} }
+21
View File
@@ -375,4 +375,25 @@ a, .btn-link {
min-width: @blSCut * 8; min-width: @blSCut * 8;
min-height: @blSCut * 4; min-height: @blSCut * 4;
} }
}
/* Colori!*/
blue {
color: purple;
background-color: purple;
}
.dc_yellow {
color: yellow;
background-color: yellow;
}
.dc_gray {
color: gray;
}
.dc_red {
color: red;
}
.dc_green {
color: green;
background-color: green;
} }
+1 -1
View File
File diff suppressed because one or more lines are too long
+12 -23
View File
@@ -1,15 +1,4 @@
//window.recordDeselect = (dotNetHelper) => { ////TENTATIVO POPOLAMENTO HELPER PER POTER INVOCARE IL METODO DOPO
// var myModalEl = document.getElementById('myModal')
// myModalEl.addEventListener('hidden.bs.modal', function (event) {
// // do something...
// //dotNetHelper.invokeMethodAsync('TriggerDotNetInstanceMethod');
// return dotNetHelper.invokeMethodAsync('svuotaRecord');
// console.log("fatto");
// });
//};
//TENTATIVO POPOLAMENTO HELPER PER POTER INVOCARE IL METODO DOPO
//let helper; //let helper;
//window.setHelper = (dotNetHelper) => { //window.setHelper = (dotNetHelper) => {
@@ -18,15 +7,15 @@
// return dotNetHelper.invokeMethodAsync('setHelper'); // return dotNetHelper.invokeMethodAsync('setHelper');
//} //}
//BECCA QUANDO LA MODALE VIENE CHIUSA ED ESEGUE ////BECCA QUANDO LA MODALE VIENE CHIUSA ED ESEGUE
document.addEventListener('click', function (e) { //document.addEventListener('click', function (e) {
if (e.target.id === 'myModal') { // if (e.target.id === 'myModal') {
console.log('chiuso'); // console.log('chiuso');
return helper.invokeMethodAsync('svuotaRecord'); // //return helper.invokeMethodAsync('svuotaRecord');
console.log("fatto"); // console.log("fatto");
} else { // } else {
console.log('aperto'); // console.log('aperto');
} // }
e.stopPropagation(); // e.stopPropagation();
}, false); //}, false);