Вывод полей из LINQ-запроса в Диаграмму Ганта

Вы можете настроить произвольные поля для вывода в диаграмме Ганта, которые будут наиболее точно отвечать вашим потребностям и бизнес-процессу.
По умолчанию все дополнительные поля, которые настроит администратор системы, у пользователя в интерфейсе Ганта будут скрыты, но при необходимости пользователь может:

  1. вывести их через стандартный инструмент отображения скрытых колонок в табличной части диаграммы,
  2. сохранить это представление для дальнейшей работы.
Для корректной работы функционала необходимо, чтобы запрос возвращал данные.

Пример пошаговой настройки изложен здесь: «Как вывести "Отклонение базового плана" и "Статус отклонения" в Диаграмму Ганта».

Вы можете настроить для отображения в диаграмме Ганта поля из любого настроенного LINQ-запроса, в котором:

  • включена опция «Может использоваться в диаграмме Ганта»;
  • есть поле ObjectId (т.е. запрос возвращает записи о данных по объектам дерева проектов).
Эта настройка – сквозная для всей системы. Настроить разные LINQ-запросы для вывода в Диаграмме Ганта нельзя.

Если в системе нет ни одного подходящего LINQ-запроса, то раздел содержит только текст «Нет ни одного источника данных с колонкой «ObjectId»».

Выберите тот LINQ-запрос в выпадающем списке, поля из которого хотите вывести в Гант → Настроить.

Вы можете выводить поля из LINQ-запроса выборочно. Вы сами определяете, что именно нужно выводить в Ганте, отмечая чек-боксом в колонке те поля, которые должны появиться у пользователя в «Пользовательских колонках» в Ганте.

По умолчанию все чек-боксы не активны.

  • «Название поля» – то название поля, который возвращает LINQ-запрос.
    • Поле ObjectId настроить нельзя.
  • «Псевдоним» – то, как это поле будет отображаться в диаграмме Ганта в интерфейсе пользователя. По умолчанию название не указано.

Поле «Тип» содержит выпадающий список с типами данных полей.

Поддерживаемые типы данных:

  • Строка. Без указания формата данных. Значение по умолчанию.
  • Число.
    При указании данного типа правее отображается выпадающий список с указанием формата данных.
    Три значения с сортировкой сверху-вниз: «Число», «Денежный» и «Процент».
    По умолчанию указывается формат «Число».
    Используются региональные настройки операционной системы.
  • Дата. При указании данного типа правее отображается выпадающий список с указанием формата данных. Два значения с сортировкой сверху-вниз: «Дата» и «Дата и время». По умолчанию указывается формат «Дата». Использовать региональные настройки операционной системы.
  • Индикатор:
    • При указании данного типа правее добавляется подсказка и кнопка «Добавить» для добавления нового индикатора.
    • При нажатии на кнопку «Добавить» добавляется индикатор соответствующего цвета.
      • Цвет индикатора определяется на основе уже добавленных индикаторов по следующему алгоритму сверху вниз:
        • Добавить индикатор с зеленым цветом (63D16F) по умолчанию, если его нет.
        • Добавить индикатор с оранжевым цветом (F6B40E) по умолчанию, если его нет.
        • Добавить индикатор с красным цветом (EE1927) по умолчанию, если его нет.
        • Если индикаторы со всеми тремя цветами выше присутствуют, то добавить индикатор с синим цветом (00C2FF) по умолчанию.
      • У каждого индикатора есть поле ввода для указания логического выражения. Поддерживаются числа и операторы сравнения (=, !=, >=, ⇐, >, <).
        • Проверка на корректность составленного логического выражения не производится.
        • Логика сопоставления значения конкретному индикатору осуществляется по принципу их расположения сверху вниз до первого выполнения условия.
          К примеру, логическое выражение составлено так:
          если А > 10, то зеленый индикатор; 
          если А > 20, то красный индикатор

          то значению А = 25 будет присвоен зеленый индикатор, т.к. по порядку расположения индикаторов сверху вниз условие зеленого индикатора выполнилось первым и остальные не проверяются.

        • Любой индикатор можно удалить.
        • Цвет каждого индикатора можно изменить через стандартную палитру.

По нажатию на кнопку «Сохранить» страница «Настройка полей из LINQ-запроса…» закрывается. Открывается страница «Настройка диаграммы Ганта»:

Если настройка уже произведена, и поля для отображения выбраны, они выводятся на странице «Настройка диаграммы Ганта» в виде краткой таблицы, содержащей название включенного поля и его тип, соответственно.

  • Если у поля указан псевдоним, то отображается он.
  • Если нет, то название поля из LINQ-запроса.

Над таблицей отображается название настроенного LINQ-запроса.

Созданную настройку можно отвязать и создать новую – кнопка «Отвязать настройки».

Если в колонке (Отображать в диаграмме Ганта) страницы «Настройка полей из LINQ-запроса «Название_запроса» не активен ни один чекбокс, то в разделе «Настройка полей из LINQ-запроса» страницы «Настройка диаграммы Ганта» отображается выпадающий список с LINQ-запросами и кнопкой «Настроить».

При этом настройки для раннее настраиваемого LINQ-запроса сохраняются, если снова выбрать его и нажать «Настроить».

Изменения одинаковы для диаграммы Ганта, открытой с уровня любого объекта Системы.

В выпадающем списке (у любой из колонок диаграммы Ганта) выводится новый пункт «Пользовательские столбцы». Пункт виден, только если к Ганту настроен и привязан LINQ-запрос.

При наведении на пункт «Пользовательские столбцы» выводится список с названиями тех полей LINQ запроса, у которых активирован чекбокс в колонке (Отображать в диаграмме Ганта).

Названия полей LINQ-запроса берутся из колонки «Псевдоним», если оно заполнено. Если не заполнено, то из колонки «Название».

Каждое поле имеет чекбокс. По умолчанию не отмечен.

При активации чекбокса:

  • В таблицу диаграммы Ганта добавляется соответствующее поле LINQ-запроса с данными.
  • Запрос данных по полю LINQ-запроса происходит следующим образом:
    • LINQ-запросу передается идентификатор объекта, с карточки которого открыта диаграмма Ганта.
    • LINQ-запросом возвращается таблица с данными, включающая поля:
    • ObjectId – идентификаторы объекта (который был передан LINQ-запросу) и всех его дочерних объектов.

Происходит сопоставление идентификаторов объектов, подгруженных в диаграмму Ганта, с идентификаторами объектов поля ObjectId и заполнение поля соответствующими данными.

Запрос данных по полю происходит разово. Данные сохраняются до обновления страницы с диаграммой Ганта.

Поля LINQ-запроса доступны только для просмотра.

Поля с типом «Индикатор»:

  • Содержат индикатор в форме круга, выровненный по центру ячейки поля.
  • Цвет индикатора согласно настроенному логическому выражению.
  • Размер индикатора вписан в высоту ячейки поля.

Если данные ячейки поля не соответствуют ни одному заданному логическому выражению (или выражения составлены некорректно), то индикатор в ней не отображается, ячейка поля пустая.

При сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»), сохраняется видимость и порядок полей LINQ-запроса согласно выбранным настройкам.

При изменении настроек видимости полей на странице «Настройка полей из LINQ-запроса «Название_запроса»» изменяются и сохраненные настройки отображения диаграммы Ганта.
Например, если у поля LINQ-запроса был деактивирован чекбокс в колонке (Отображать в диаграмме Ганта), то из таблицы диаграммы Ганта данное поле пропадает, несмотря на то, что оно было отображено при сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»).

Если у соответствующего объекта, загруженного в диаграмму Ганта, LINQ-запрос по соответствующему полю вернул пустое значение, то и в соответствующей строке этого поля отображается пустое значение.

Экспорт диаграммы Ганта:

  • в .pdf и .png поддерживает поля LINQ-запроса;
  • в .xls не поддерживает поля LINQ-запроса.

Если тип у включенного для отображения поля LINQ-запроса не может быть сконвертирован в тип, указанный в колонке «Тип», то в диаграмме Ганта данное поле отображает пустые данные. Ошибка в диаграмме Ганта не выводится.

Если поле LINQ-запроса отображено в диаграмме Ганта, то при изменении типа поля в самом LINQ-запросе (когда возникает ситуация невозможности конвертации в тип, указанный в колонке «Тип»), поле отображает пустые данные. Ошибка в диаграмме Ганта не выводится.

Переименованное поле в LINQ-запросе расценивается, как новое поле.

Проверка на корректность составленного логического выражения у типа «Индикатор» не производится. В диаграмме Ганта у соответствующего поля с некорректно составленным логическим выражением отображается пустое значение.

С целью фильтрации возвращаемых данных LINQ-запрос должен учитывать передаваемый диаграммой Ганта идентификатор объекта (RootProjectId) с карточки которого она открыта. Требование не обязательное и необходимо для оптимизации запроса. Для оптимизации запроса добавьте в него следующую строку:

var objectID = parameters.GetValueOrDefault<Guid>("RootProjectId", new Guid("daba2cbb-a4a9-4708-9366-5dd3ead1f172"));

где

  • RootProjectId – передаваемый диаграммой Ганта идентификатор объекта,
  • new Guid(«daba2cbb-a4a9-4708-9366-5dd3ead1f172») – идентификатор любого объекта системы, необходимый для отладки запроса.

LINQ-запрос должен обязательно возвращать поле ObjectId – идентификаторы объекта (который был передан LINQ-запросу диаграммой Ганта) и всех его дочерних объектов.
В противном случае данный запрос не будет виден в списке для привязки к диаграмме Ганта.