Files
Data-Coupler/Components/ProfileSelector.razor.cs
T
Alessio 7e450a358b 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
2025-07-02 00:00:05 +02:00

65 lines
1.8 KiB
C#

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;
}
}