93 lines
2.7 KiB
C#
93 lines
2.7 KiB
C#
using System;
|
|
|
|
using BS.Shared;
|
|
using BS.Shared.DataContracts.Feature.AI;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace BeWo.ViewModel
|
|
{
|
|
public class AiConversationMessageVM : AbstractDCMapperVM<AiConversationMessageDC>
|
|
{
|
|
private bool _IsChecked;
|
|
private string _Message;
|
|
|
|
public AiConversationMessageVM(AiConversationMessageDC dc) : base(dc, dc.Oid is null)
|
|
{
|
|
|
|
}
|
|
|
|
public event EventHandler IsCheckedChanged;
|
|
|
|
public bool IsChecked
|
|
{
|
|
get { return _IsChecked; }
|
|
set
|
|
{
|
|
if (!AreDifferent(IsChecked, value))
|
|
return;
|
|
|
|
_IsChecked = value;
|
|
FirePropertyChanged(nameof(IsChecked));
|
|
IsCheckedChanged?.Invoke(this, EventArgs.Empty);
|
|
}
|
|
}
|
|
|
|
public string Message
|
|
{
|
|
get { return _Message; }
|
|
set
|
|
{
|
|
if (!AreDifferent(Message, value))
|
|
return;
|
|
|
|
_Message = value;
|
|
StoreDirtyInformation(AreDifferent(DataContract.Message, value), nameof(Message));
|
|
FirePropertyChanged(nameof(Message));
|
|
}
|
|
}
|
|
|
|
public AiConversationMessageRole Role => DataContract.Role;
|
|
public string ModelName => DataContract.ModelName;
|
|
public int Duration => DataContract.Duration ?? 0;
|
|
public string DurationSec => ((double)Duration / 1000).ToString("0.#");
|
|
public DateTime Created => DataContract.Created;
|
|
public bool ShowMessage => DataContract.ShowMessage;
|
|
public string UsedPromptbausteinTitle => DataContract.UsedPromptbausteinTitle;
|
|
|
|
/// <summary>True, wenn die Nachricht mittels Promptbaustein erstellt wurde (Titel gecacht).</summary>
|
|
public bool HasUsedPromptbaustein => !string.IsNullOrWhiteSpace(UsedPromptbausteinTitle);
|
|
|
|
/// <summary>Steuert, ob der Prompt ausklappbar ist. False => Button disabled + Tooltip "Versteckt".</summary>
|
|
public bool ShowPrompt => DataContract.ShowPrompt;
|
|
|
|
/// <summary>Prompt-Text des verwendeten Promptbausteins (nur befüllt, wenn ShowPrompt true).</summary>
|
|
public string UsedPromptbausteinContent => DataContract.UsedPromptbausteinContent;
|
|
|
|
/// <summary>Schrittnummer innerhalb der Routine (0-basiert), sonst null.</summary>
|
|
public int? StepCount => DataContract.StepCount;
|
|
|
|
/// <summary>Platzhalter für ausgeblendete Nachrichten: Promptbaustein-Titel, sonst Standardtext.</summary>
|
|
public string HiddenMessageText => string.IsNullOrWhiteSpace(UsedPromptbausteinTitle)
|
|
? "Nachricht ausgeblendet"
|
|
: UsedPromptbausteinTitle;
|
|
|
|
protected override void InitByDataContract(AiConversationMessageDC pDataContract)
|
|
{
|
|
_Message = pDataContract.Message;
|
|
}
|
|
|
|
protected override AiConversationMessageDC MapToDataContract(AiConversationMessageDC pDataContract, bool doCommit)
|
|
{
|
|
pDataContract.Message = _Message;
|
|
|
|
return pDataContract;
|
|
}
|
|
|
|
public void SetIsChecked(bool value)
|
|
{
|
|
_IsChecked = value;
|
|
FirePropertyChanged(nameof(IsChecked));
|
|
}
|
|
}
|
|
}
|