Aggiunto cloning lingua

This commit is contained in:
Samuele Locatelli
2026-05-29 19:34:56 +02:00
parent 1d43e05045
commit 1c735ea3ec
5 changed files with 54 additions and 3 deletions
@@ -42,6 +42,16 @@
return false;
}
// creo nuova lingua se non esistesse...
var recLang = await dbCtx.DbSetLingua.FirstOrDefaultAsync(x => x.Lingua == linguaDest);
if (recLang == null)
{
recLang = new LinguaModel() { Lingua = linguaDest, Note = $"Cloned from {linguaOrig}" };
await dbCtx.DbSetLingua.AddAsync(recLang);
await dbCtx.SaveChangesAsync();
}
// 2. Proietto nei nuovi record...
var listNew = listOrig.Select(x => new VocabolarioModel()
{
+7 -1
View File
@@ -4,6 +4,7 @@
Lingua
</div>
<div class="px-1">
<div class="input-group input-group-sm" title="ricerca">
<select class="form-select" @bind="@selLingua" @bind:after="FiltLingua">
@if (string.IsNullOrEmpty(selLingua))
{
@@ -13,7 +14,12 @@
{
<option value="@item.Lingua">@item.Lingua</option>
}
</select>
</select>
@if (!string.IsNullOrEmpty(selLingua))
{
<button class="btn btn-info" @onclick="DoClone"><i class="fa-solid fa-wand-magic-sparkles"></i></button>
}
</div>
</div>
</div>
<div class="card-body">
@@ -12,6 +12,9 @@ namespace Lux.UI.Components.Compo.Admin
[Parameter]
public EventCallback<VocabolarioModel> EC_Updated { get; set; }
[Parameter]
public EventCallback<string> EC_ReqClone { get; set; }
[Parameter]
public List<LinguaModel> ListLingue { get; set; } = null!;
@@ -31,6 +34,12 @@ namespace Lux.UI.Components.Compo.Admin
}
}
private async Task DoClone()
{
if (!string.IsNullOrEmpty(selLingua))
await EC_ReqClone.InvokeAsync(selLingua);
}
#endregion Protected Methods
#region Private Fields
+3 -2
View File
@@ -39,10 +39,10 @@
{
<div class="row">
<div class="col-6">
<VocabMan ListLingue="@ListLingue" AllRecord="FullVocab" SearchVal="@SearchVal" EC_Updated="UpdateRec"></VocabMan>
<VocabMan ListLingue="@ListLingue" AllRecord="FullVocab" SearchVal="@SearchVal" EC_Updated="UpdateRec" EC_ReqClone="DoCloneLang"></VocabMan>
</div>
<div class="col-6">
<VocabMan ListLingue="@ListLingue" AllRecord="FullVocab" SearchVal="@SearchVal" EC_Updated="UpdateRec"></VocabMan>
<VocabMan ListLingue="@ListLingue" AllRecord="FullVocab" SearchVal="@SearchVal" EC_Updated="UpdateRec" EC_ReqClone="DoCloneLang"></VocabMan>
</div>
</div>
}
@@ -50,4 +50,5 @@
</div>
<BootstrapModal @ref=Modal Title=@mTitle Message=@mMessage Mode="BootstrapModal.ModalMode.Confirm" UserOptions=@modalOpt></BootstrapModal>
@@ -1,4 +1,5 @@
using EgwCoreLib.Lux.Data.DbModel.Admin;
using EgwCoreLib.Razor;
namespace Lux.UI.Components.Pages
{
@@ -86,6 +87,30 @@ namespace Lux.UI.Components.Pages
await ReloadDataAsync();
}
private async Task DoCloneLang(string origLang)
{
mTitle = "Attenzione";
mMessage = "Sicuro di voler duplicare il vocabolario della lingua selezionata?\n" +
$"Sorgente: {origLang}";
mMode = BootstrapModal.ModalMode.Confirm;
modalOpt = new();
modalOpt.Add(true, "Si");
modalOpt.Add(false, "No");
if (!await Modal!.ShowAsync<bool>())
return;
// dovrebbe chiedere nuova lingua...
string destLang = "FR";
// ora duplica...
await VService.CloneAsync(origLang, destLang);
await ReloadDataAsync();
}
private BootstrapModal Modal = new();
private string mTitle = "";
private string mMessage = "";
private BootstrapModal.ModalMode mMode = BootstrapModal.ModalMode.ND;
private Dictionary<bool, string> modalOpt = new Dictionary<bool, string>();
#endregion Private Methods
}
}