Фильтр ссылок

Фильтр в контроле «Ссылки»

Есть задача, как отфильтровать результаты в контроле «Ссылки», используемом в Web клиенте Docsvision. Контрол располагается в карточке документа, который имеет множество ссылок и все они отображаются, но требовалось отобразить только те, что имеют определенный тип. Я был удивлен, когда узнал, что в настройках контрола через конструктор разметок нет возможности настроить фильтр по типу ссылки, хотя такая возможность была в настройках контрола для Windows клиента. Начал искать пути решения и такое было найдено: реализовать собственное расширение. Ниже приведу пример, который позволяет выполнить задуманное. Не являюсь разработчиком, возможно у вас будет более правильный и элегантный вариант кода:

import { layoutManager } from "@docsvision/webclient/System/LayoutManager";

export function filterLinksByTypeLink(sender, e) {
    var cotrolLinks = layoutManager.cardLayout.controls.links;
    var linksType = ["8e40f327-9517-4a43-998d-bf2bd619588d", "7db9044e-91b7-447d-8caa-5e5a4967b8d4"];
    cotrolLinks.params.linksFilter = function (item) {       
         if (linksType.includes(item.data.linkTypeId)) {
                return true;
         };
    };
}

Согласно этому коду, мы находим наш контрол, с названием, в данном случае link. Далее в массив linksType передаем идентификаторы тех типов, что необходимо отображать, в данном случае сравнение происходит с свойством linkTypeId.

Кроме этого, возможно выполнить сравнение по:

  • cardId — идентификатор карточки;
  • cardKindId — идентификатору вида карточки, например, показывать только карточки вида «Входящий»;
  • cardTypeId — по типу карточки, например, только типа «Документ» или «Задание»;
  • creationDate — по дате создания;
  • displayName — по отображаемому имени;
  • linkId — по типу ссылки;
  • linkTypeName — по названию типа ссылки, например, показывать только с типом ссылки «В ответ на»;

Таким образом, в контроле links будут выведены только те ссылки, что пройдут фильтр, согласно заданным условиям.


Опубликовано

в

от


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *