Нов тип колона на изглед се дефинира от приложение, когато трябва да представи или свои собствени данни, или набор от данни по по-сложен начин. Например, може да се наложи да покаже броя на коментарите, свързани с текущия ред. За да постигне това, то трябва да извлече споделената стойност X за реда и да направи заявка към своите таблици за свързаните данни за коментари. За да дефинирате тип колона на изглед, създайте клас, който наследява интерфейса ITfSpaceViewColumnTypeAddon
.
Важен аспект е дефиницията за картографиране на данни, която картографира имена_на_колони към псевдоними. Това позволява компоненти на изглед, специфични за приложението, да се използват с различни набори от данни, които имат различни имена на колони.
Seed Project | GitHub |
namespace WebVella.Tefter.Seeds.Addons;
public class SampleViewColumnType : ITfSpaceViewColumnTypeAddon
{
public const string ID = "cbe7a847-72a5-4af5-af7f-98771e043f14";
public const string NAME = "Percent";
public const string DESCRIPTION = "displays percent based of value between 0 and specified in settings value";
public const string FLUENT_ICON_NAME = "PercentSymbol";
public const string ALIAS = "Value";
public Guid Id { get; init; } = new Guid(ID);
public string Name { get; init; } = NAME;
public string Description { get; init; } = DESCRIPTION;
public string FluentIconName { get; init; } = FLUENT_ICON_NAME;
public List<TfSpaceViewColumnAddonDataMapping> DataMapping { get; init; }
public Guid? DefaultComponentId { get; init; }
public List<Guid> SupportedComponents { get; set; } = new();
public List<string> FilterAliases { get; init; }
public List<string> SortAliases { get; init; }
public List<Guid> SupportedAddonTypes { get; init; } = new();
public SampleViewColumnType()
{
DataMapping = new List<TfSpaceViewColumnAddonDataMapping>
{
new TfSpaceViewColumnAddonDataMapping
{
Alias = ALIAS,
Description = "this column is compatible with all column types, but its intended use is with text",
SupportedDatabaseColumnTypes = new List<TfDatabaseColumnType> {
TfDatabaseColumnType.ShortText,
TfDatabaseColumnType.Text
}
}
};
FilterAliases = new List<string>() { ALIAS };
SortAliases = new List<string> { ALIAS };
DefaultComponentId = new Guid(SampleDisplayViewColumnComponent.ID);
}
}