You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
2.0 KiB
C#
47 lines
2.0 KiB
C#
|
1 month ago
|
using Avalonia.Controls;
|
||
|
|
using Avalonia.Controls.Templates;
|
||
|
|
using Avalonia.Markup.Xaml.Templates;
|
||
|
|
using AI.Models;
|
||
|
|
|
||
|
|
namespace AI.Converters
|
||
|
|
{
|
||
|
|
public class MessageTemplateSelector : IDataTemplate
|
||
|
|
{
|
||
|
|
public required DataTemplate TextMessageTemplate { get; set; }
|
||
|
|
public required DataTemplate FileMessageTemplate { get; set; }
|
||
|
|
public required DataTemplate WorkflowStatusTemplate { get; set; }
|
||
|
|
public required DataTemplate FormMessageTemplate { get; set; }
|
||
|
|
public required DataTemplate TableMessageTemplate { get; set; }
|
||
|
|
public required DataTemplate ColumnMatchMessageTemplate { get; set; }
|
||
|
|
public required DataTemplate ParameterSetMessageTemplate { get; set; }
|
||
|
|
public required DataTemplate XyzLoadCardTemplate { get; set; }
|
||
|
|
public required DataTemplate GriddingParamCardTemplate { get; set; }
|
||
|
|
|
||
|
|
public Control? Build(object? param)
|
||
|
|
{
|
||
|
|
if (param is ChatMessageModel message)
|
||
|
|
{
|
||
|
|
return message.Type switch
|
||
|
|
{
|
||
|
|
MessageType.File => FileMessageTemplate.Build(param),
|
||
|
|
MessageType.WorkflowStatus => WorkflowStatusTemplate.Build(param),
|
||
|
|
MessageType.Form => FormMessageTemplate.Build(param),
|
||
|
|
MessageType.Table => TableMessageTemplate.Build(param),
|
||
|
|
MessageType.ColumnMatch => ColumnMatchMessageTemplate.Build(param),
|
||
|
|
MessageType.ParameterSet => ParameterSetMessageTemplate.Build(param),
|
||
|
|
MessageType.KnowledgeBase => TextMessageTemplate?.Build(param),
|
||
|
|
MessageType.XyzLoadCard => XyzLoadCardTemplate.Build(param),
|
||
|
|
MessageType.GriddingParamCard => GriddingParamCardTemplate.Build(param),
|
||
|
|
_ => TextMessageTemplate?.Build(param),
|
||
|
|
};
|
||
|
|
}
|
||
|
|
return TextMessageTemplate?.Build(param);
|
||
|
|
}
|
||
|
|
|
||
|
|
public bool Match(object? data)
|
||
|
|
{
|
||
|
|
return data is ChatMessageModel;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|