Перейти к содержанию

Изменение цвета фона в заданиях и сообщениях форумов

Изменение цвета фона в заданиях и сообщениях форумов

Цвет фона для заданий можно указывать на сервере или на клиенте в расширениях CardGetExtension, используя свойства CardTask.Background в списке заданий card.Tasks. Однако, может быть необходимо динамически изменить цвет на клиенте в CardUIExtension в зависимости от любых условий.

Ниже приведён пример расширения, которое применяется в платформе для окраски заданий в цвета, указанные в диалоге “Мои задания”, для функциональных ролей “Автор” и “Исполнитель”, а также для окраски сообщений форумов.

Tip

Расширение уже присутствует в платформе с версии 3.4.0, не добавляйте его в свой проект расширений один-в-один. Используйте в качестве примера, как сделать окраску заданий или сообщений форумов по аналогии, для добавленных в проекте функциональных ролей.

using System.Collections.ObjectModel; using System.Threading.Tasks; using System.Windows.Media; using Tessa.Cards; using Tessa.Themes; using Tessa.UI; using Tessa.UI.Cards; using Tessa.UI.Cards.Forums; using Tessa.UI.Cards.Tasks;

namespace Tessa.Extensions.Platform.Client.UI { public sealed class PersonalizationUIExtension : CardUIExtension { public PersonalizationUIExtension(IUserSettings userSettings) { this.userSettings = userSettings; }

private readonly IUserSettings userSettings;

public override Task Initialized(ICardUIExtensionContext context) { ICardModel model = context.Model; if (model.CardType.Flags.HasNot(CardTypeFlags.AllowTasks)) { return Task.CompletedTask; }

Color? topicItemColor = this.userSettings.TopicItemColor; ObservableCollection<ITaskItemViewModel> taskItems;

if (topicItemColor.HasValue && (taskItems = model.TryGetTaskItems()) != null) { foreach (ITaskItemViewModel taskItem in taskItems) { if (taskItem is TopicItemViewModel topicItem) { topicItem.ThemeBackground = topicItemColor.Value; } } }

return model.ModifyTasksAsync( (task, m) => { CardTaskFlags flags = task.TaskModel.CardTask.Flags;

task.ThemeBackground = flags.Has(CardTaskFlags.PerformerDeputy) ? this.userSettings.GetTaskColors(CardFunctionRoles.PerformerID).DeputyColor ?? ThemeManager.Current.Theme.GetColor(ThemeProperty.TaskPerformerDeputyBackground) : flags.Has(CardTaskFlags.Performer) ? this.userSettings.GetTaskColors(CardFunctionRoles.PerformerID).NormalColor ?? ThemeManager.Current.Theme.GetColor(ThemeProperty.TaskPerformerBackground) : flags.Has(CardTaskFlags.AuthorDeputy) ? this.userSettings.GetTaskColors(CardFunctionRoles.AuthorID).DeputyColor ?? ThemeManager.Current.Theme.GetColor(ThemeProperty.TaskAuthorDeputyBackground) : flags.Has(CardTaskFlags.Author) ? this.userSettings.GetTaskColors(CardFunctionRoles.AuthorID).NormalColor ?? ThemeManager.Current.Theme.GetColor(ThemeProperty.TaskAuthorBackground) : this.userSettings.TaskColor;

return Task.CompletedTask; }); } } }

Back to top