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

Изменение цвета фона в заданиях

Изменение цвета фона в заданиях

Цвет фона для заданий можно указывать на сервере или на клиенте в расширениях 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; }

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