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

Добавление кликабельной иконки-тега для строк в истории заданий

Добавление кликабельной иконки-тега для строк в истории заданий

Для каждой строки в истории заданий можно добавить иконку-тег слева от имени типа задания, по клику на которой выполняется некоторое действие. Например, иконку-скрепку, при клике по которой открывается карточка с файлами, приложенными к заданию.

Note

Расширения на теги в истории заданий доступны, начиная со сборки 2.4.

Для этого пишется расширение ICardUIExtension, в котором в истории заданий context.Model.TryGetTaskHistory() для всех строк taskHistory.EnumerateHierarchy(), которые связаны с типовыми задачами, устанавливается тег item.SetTag(...).

using Tessa.Cards; using Tessa.Extensions.Default.Shared.Workflow.Wf; using Tessa.Localization; using Tessa.UI; using Tessa.UI.Cards; using Tessa.UI.Cards.Tasks;

namespace Tessa.Extensions.Client { public sealed class TaskHistoryTagUIExtension : CardUIExtension { public override void Initialized(ICardUIExtensionContext context) { TaskHistoryViewModel taskHistory = context.Model.TryGetTaskHistory(); if (taskHistory != null) { foreach (TaskHistoryItemViewModel item in taskHistory.EnumerateHierarchy()) { // для каждого задания в истории, которое связано с типовым процессом исполнения (задачами) // выводим кнопку-скрепку

if (WfHelper.TaskTypeIsResolution(item.Model.TypeID)) { item.SetTag("Thin43", "Открыть вложения", new DelegateCommand(p => { // код выполняется в UIContext-е карточки ICardModel model = UIContext.Current.CardEditor.CardModel;

// информация по строке с заданием доступна из параметра p var taskItem = (TaskHistoryItemViewModel) p;

// здесь можно открыть карточку с приложенными файлами через this.uiHost TessaDialog.ShowMessage(string.Format( "Текущая карточка '{0}'. Тип задания '{1}'.", model.Digest, LocalizationManager.Localize(taskItem.Model.TypeCaption))); })); } } } } }

[Registrator] public sealed class Registrator : RegistratorBase { public override void RegisterExtensions(IExtensionContainer extensionContainer) { extensionContainer .RegisterExtension<ICardUIExtension, TaskHistoryTagUIExtension>(x => x .WithOrder(ExtensionStage.AfterPlatform, 1) .WithSingleton() .WhenCardTypes("Contract")) // только для договорных документов ; } } }

Back to top