feat: Aggiunto sistema completo di gestione profili per Data Coupler
- Creata nuova libreria Components con componenti Blazor riutilizzabili * ProfileSelector: dropdown per selezione profili salvati * ProfileSaver: componente per salvare configurazioni correnti come profili * ProfileManagement: modale per gestione profili salvati * ProfileQuickActions: bottoni azioni rapide per operazioni sui profili - Esteso CredentialManager con entità e servizi per DataCouplerProfile * Aggiunto modello DataCouplerProfile con configurazioni mapping e metadati * Implementata migrazione Entity Framework per memorizzazione profili * Creato DataCouplerProfileService per operazioni CRUD * Aggiunto CredentialDbContextFactory per operazioni database design-time - Migliorato componente principale DataCoupler con integrazione profili * Integrata funzionalità caricamento/salvataggio profili * Aggiunto selettore profili nella parte superiore dell'interfaccia * Mantenuta retrocompatibilità con funzionalità esistenti * Migliorata esperienza utente con gestione configurazioni salvate - Aggiornata struttura progetto e dipendenze * Aggiunto progetto Components alla soluzione * Aggiornati riferimenti progetti e import * Rimosso progetto obsoleto TestDatabaseFix Questo aggiornamento migliora significativamente il flusso di lavoro permettendo agli utenti di salvare, caricare e gestire configurazioni complete di accoppiamento dati come
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using CredentialManager.Models;
|
||||
|
||||
namespace Components;
|
||||
|
||||
public partial class ProfileSelector
|
||||
{
|
||||
[Parameter] public List<DataCouplerProfile>? Profiles { get; set; }
|
||||
[Parameter] public EventCallback<DataCouplerProfile> OnProfileLoaded { get; set; }
|
||||
[Parameter] public EventCallback OnManageProfiles { get; set; }
|
||||
[Parameter] public bool IsLoading { get; set; }
|
||||
|
||||
private int SelectedProfileId { get; set; }
|
||||
private string LoadMessage { get; set; } = "";
|
||||
private string LoadMessageType { get; set; } = "info";
|
||||
|
||||
private void OnProfileSelected(ChangeEventArgs e)
|
||||
{
|
||||
if (int.TryParse(e.Value?.ToString(), out int profileId))
|
||||
{
|
||||
SelectedProfileId = profileId;
|
||||
}
|
||||
else
|
||||
{
|
||||
SelectedProfileId = 0;
|
||||
}
|
||||
LoadMessage = "";
|
||||
}
|
||||
|
||||
private async Task LoadSelectedProfile()
|
||||
{
|
||||
if (SelectedProfileId == 0 || Profiles == null)
|
||||
return;
|
||||
|
||||
var selectedProfile = Profiles.FirstOrDefault(p => p.Id == SelectedProfileId);
|
||||
if (selectedProfile != null)
|
||||
{
|
||||
LoadMessage = $"Profilo '{selectedProfile.Name}' caricato con successo!";
|
||||
LoadMessageType = "success";
|
||||
await OnProfileLoaded.InvokeAsync(selectedProfile);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadMessage = "Errore nel caricamento del profilo selezionato.";
|
||||
LoadMessageType = "danger";
|
||||
}
|
||||
}
|
||||
|
||||
private async Task OpenProfileManagement()
|
||||
{
|
||||
await OnManageProfiles.InvokeAsync();
|
||||
}
|
||||
|
||||
public void ClearMessage()
|
||||
{
|
||||
LoadMessage = "";
|
||||
}
|
||||
|
||||
public void SetMessage(string message, string type = "info")
|
||||
{
|
||||
LoadMessage = message;
|
||||
LoadMessageType = type;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user