Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
product:linq:gantt [04.02.2021 20:15] maynproduct:linq:gantt [14.10.2025 10:28] (текущий) ekaterina.menkhuzina
Строка 1: Строка 1:
 ====== Вывод полей из LINQ-запроса в Диаграмму Ганта ====== ====== Вывод полей из LINQ-запроса в Диаграмму Ганта ======
 +{{tag>Реализация:настройка}} 
  
-<callout type="danger">Статья в разработке!</callout>+Вы можете настроить произвольные поля для вывода в диаграмме Ганта, которые будут наиболее точно отвечать вашим потребностям и бизнес-процессу.  \\   
 +По умолчанию все дополнительные поля, которые настроит администратор системы, у пользователя в интерфейсе Ганта будут скрыты, но при необходимости пользователь может: 
 +  - вывести их через стандартный инструмент отображения скрытых колонок в табличной части диаграммы, 
 +  - сохранить это представление для дальнейшей работы.  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_15.png?nolink |}}</image>
  
-[[product/linq/gantt/example_1|Как вывести "Отклонение базового плана" и "Статус отклонения" в Диаграмму Ганта]]+<callout type="success">Для корректной работы функционала необходимо, чтобы запрос возвращал данные. </callout>
  
-=====Механизм настройки отображения в диаграмме Ганта полей из LINQ-запроса=====+Пример пошаговой настройки изложен здесь: "[[product/linq/gantt/example_1|Как вывести "Отклонение базового плана" и "Статус отклоненияв Диаграмму Ганта]]".
  
-Пункт «Диаграмма Ганта» представляет собой новую отдельную страницу «Настройка диаграммы Ганта» с двумя разделами настроек диаграммы Ганта:+=====Доступные для вывода LINQ-запросы=====
  
-  * Настройка полей из LINQ-запроса. +Вы можете настроить для отображения в [[product/objects/gant|диаграмме Ганта]] поля из любого настроенного [[product:linq:new|LINQ-запроса]], в котором: 
-  * Визуальные настройки.+  * включена опция «Может использоваться в диаграмме Ганта»; 
 +  * есть поле ObjectId (т.е. запрос возвращает записи о данных по [[product:objects:object_tree|объектам дерева проектов]]).
  
-Раздел «Настройка полей из LINQ-запроса» страницы «Настройка диаграммы Ганта»: +<callout type="primary" icon="true">Эта настройка -- сквозная для всей системы. Настроить разные LINQ-запросы для вывода в Диаграмме Ганта нельзя.</callout>
-  * Содержит выпадающий список с названиями всех LINQ-запросов, созданных в Системе, в которых одновременно: +
-    * включена опция «Может использоваться в диаграмме Ганта». +
-    * возвращается колонка ObjectId (в поле ObjectId должны содержаться ID объектов Системы). +
-  * Cодержит кнопку «Настроить» по нажатию на которую в одной и той же вкладке браузера открывается отдельная страница «Настройка полей из LINQ-запроса «Название_запроса»».  +
-  * Если в системе нет ни одного подходящего LINQ-запроса, то раздел содержит только текст «Нет ни одного источника данных с колонкой "ObjectId"» (без кавычек).+
  
-Страница «Настройка полей из LINQ-запроса «Название_запроса»» содержит таблицу с колонками: +Если в системе нет ни одного подходящего LINQ-запроса, то раздел содержит только текст «Нет ни одного источника данных с колонкой "ObjectId"». 
-  * (Отображать в диаграмме Ганта). Содержит чекбокс, отвечающий за отображение соответствующего поля LINQ-запроса в диаграмме Ганта. Чекбокс по умолчанию выключен. + 
-  * «Название поля». Содержит список названий полей, который возвращает LINQ-запрос. Поле ObjectId без возможности настройки (чекбокс «Отображать в диаграмме Ганта» неактивен)+Выберите тот LINQ-запрос в выпадающем списке, поля из которого хотите вывести в Гант -> Настроить. 
-  * «Псевдоним». Содержит строковое поле ввода для указания названия соответствующего поля LINQ-запроса, которое будет отображаться в диаграмме Ганта. По умолчанию название не указано. + 
-  «Тип». Содержит выпадающий список с типами данных полей. По умолчанию указан тип «Строка»+<image shape="thumbnail">{{ :product:linq:gantt_settings_2.png |}}</image> 
-  Поддерживаемые типы данных: + 
-  * Число.  \\  При указании данного типа правее отображается выпадающий список с указанием формата данных.  \\  Три значения с сортировкой сверху-вниз: «Число», «Денежный» и «Процент».  \\  По умолчанию указывается формат «Число».   \\  Используются региональные настройки операционной системы. +===== Настройка полей из LINQ-запроса===== 
-  * Дата. При указании данного типа правее отображается выпадающий список с указанием формата данных. Два значения с сортировкой сверху-вниз: «Дата» и «Дата и время». По умолчанию указывается формат «Дата». Использовать региональные настройки операционной системы. + 
-  * Индикатор: +==== Какие поля выводить ==== 
-    * При указании данного типа правее добавляется подсказка   и кнопка   «Добавить» для добавления нового индикатора.  +Вы можете выводить поля из LINQ-запроса выборочно. Вы сами определяете, что именно нужно выводить в Ганте, отмечая чек-боксом в колонке {{:product:linq:gantt:linq_example_12.png?nolink}} те поля, которые должны появиться у пользователя в "Пользовательских колонках" в Ганте. 
-    * При нажатии на кнопку   «Добавить» добавляется индикатор соответствующего цвета. + 
 +По умолчанию все чек-боксы не активны. 
 + 
 +==== Название и Псевдоним ==== 
 +  * «Название поля» -- то название поля, который возвращает LINQ-запрос. 
 +    * Поле ObjectId настроить нельзя.  
 +  * «Псевдоним» -- токак это поле будет отображаться в диаграмме Ганта в интерфейсе пользователя. По умолчанию название не указано. 
 + 
 +==== Тип поля ==== 
 +Поле «Тип» содержит выпадающий список с типами данных полей.  
 + 
 +Поддерживаемые типы данных: 
 +  * **Строка**. Без указания формата данных. Значение по умолчанию. 
 +  * **Число**.  \\  При указании данного типа правее отображается выпадающий список с указанием формата данных.  \\  Три значения с сортировкой сверху-вниз: «Число», «Денежный» и «Процент».  \\  По умолчанию указывается формат «Число».   \\  Используются региональные настройки операционной системы. 
 +  * **Дата**. При указании данного типа правее отображается выпадающий список с указанием формата данных. Два значения с сортировкой сверху-вниз: «Дата» и «Дата и время». По умолчанию указывается формат «Дата». Использовать региональные настройки операционной системы. 
 +  * **Индикатор**
 +    * При указании данного типа правее добавляется подсказка и кнопка «Добавить» для добавления нового индикатора.  
 +    * При нажатии на кнопку «Добавить» добавляется индикатор соответствующего цвета. 
       * Цвет индикатора определяется на основе уже добавленных индикаторов по следующему алгоритму сверху вниз:       * Цвет индикатора определяется на основе уже добавленных индикаторов по следующему алгоритму сверху вниз:
         * Добавить индикатор с зеленым цветом (63D16F) по умолчанию, если его нет.         * Добавить индикатор с зеленым цветом (63D16F) по умолчанию, если его нет.
Строка 37: Строка 54:
       * У каждого индикатора есть поле ввода для указания логического выражения. Поддерживаются числа и операторы сравнения (=, !=, >=, <=, >, <).       * У каждого индикатора есть поле ввода для указания логического выражения. Поддерживаются числа и операторы сравнения (=, !=, >=, <=, >, <).
         * Проверка на корректность составленного логического выражения не производится.         * Проверка на корректность составленного логического выражения не производится.
-        * Логика сопоставления значения конкретному индикатору осуществляется по принципу их расположения сверху вниз до первого выполнения условия. К примеру, логическое выражение составлено так +        * Логика сопоставления значения конкретному индикатору осуществляется по принципу их расположения сверху вниз до первого выполнения условия. \\ К примеру, логическое выражение составлено так: <code> 
-          если А > 10, то зеленый индикатор +если А > 10, то зеленый индикатор 
-          если А > 20, то красный индикатор,  +если А > 20, то красный индикатор</code> то значению А = 25 будет присвоен зеленый индикатор, т.к. по порядку расположения индикаторов сверху вниз условие зеленого индикатора выполнилось первым и остальные не проверяются. 
-            * то значению А = 25 будет присвоен зеленый индикатор, т.к. по порядку расположения индикаторов сверху вниз условие зеленого индикатора выполнилось первым и остальные не проверяются. +        * Любой индикатор можно удалить
-        * У каждого индикатора есть кнопка   для его удаления+        * Цвет каждого индикатора можно изменить через стандартную палитру. 
-        * У каждого индикатора есть возможность смены его цвета путем выбора цвета из имеющейся палитры, либо указанием в соответствующем поле ввода шестнадцатеричного кода цвета. + 
-  * Строка. Без указания формата данныхЗначение по умолчанию+<image shape="thumbnail">{{ :product:linq:gantt:linq_example_11.png }}</image> 
-  + 
-По нажатию на кнопку «Сохранить» страница «Настройка полей из LINQ-запроса «Название_запроса» закрывается. Открывается страница «Настройка диаграммы Ганта»:+По нажатию на кнопку «Сохранить» страница «Настройка полей из LINQ-запроса...» закрывается. Открывается страница «Настройка диаграммы Ганта»: 
 + 
 +==== Проверка настройки ==== 
 +Если настройка уже произведена, и поля для отображения выбраны, они выводятся на странице "Настройка диаграммы Ганта" в виде краткой таблицы, содержащей название включенного поля и его тип, соответственно.
  
-Настроить дополнительные поля для отображения в диаграмме Ганта можно только на основании какого-то одного LINQ-запроса.+<image shape="thumbnail">{{ :product:linq:gantt:linq_example_14.png?nolink |}}</image>
  
-Если такая настройка произведена, и поля для отображения выбраны, они должны выводиться на странице "Настройка диаграммы Ганта" в виде краткой таблицы, содержащая название включенного поля и его тип, соответственно. 
   * Если у поля указан псевдоним, то отображается он.    * Если у поля указан псевдоним, то отображается он. 
   * Если нет, то название поля из LINQ-запроса.   * Если нет, то название поля из LINQ-запроса.
Строка 56: Строка 75:
 Созданную настройку можно отвязать и создать новую -- кнопка "Отвязать настройки". Созданную настройку можно отвязать и создать новую -- кнопка "Отвязать настройки".
  
-Если в колонке   (Отображать в диаграмме Ганта) страницы «Настройка полей из LINQ-запроса «Название_запроса» не активен ни один чекбокс, то в разделе «Настройка полей из LINQ-запроса» страницы «Настройка диаграммы Ганта» отображается выпадающий список с LINQ-запросами  и кнопкой «Настроить»:+Если в колонке {{:product:linq:gantt:linq_example_12.png?nolink}} (Отображать в диаграмме Ганта) страницы «Настройка полей из LINQ-запроса «Название_запроса» не активен ни один чекбокс, то в разделе «Настройка полей из LINQ-запроса» страницы «Настройка диаграммы Ганта» отображается выпадающий список с LINQ-запросами  и кнопкой «Настроить».
  
 При этом настройки для раннее настраиваемого LINQ-запроса сохраняются, если снова выбрать его и нажать «Настроить». При этом настройки для раннее настраиваемого LINQ-запроса сохраняются, если снова выбрать его и нажать «Настроить».
Строка 64: Строка 83:
 Изменения одинаковы для диаграммы Ганта, открытой с уровня любого объекта Системы. Изменения одинаковы для диаграммы Ганта, открытой с уровня любого объекта Системы.
  
-В выпадающем списке (у любой из колонок диаграммы Ганта) добавить новый пункт «Пользовательские столбцы». Расположить под пунктом «Столбцы». Пункт виден, когда настроен и привязан LINQ-запрос в портлете «Настройка полей из LINQ-запроса» страницы администрирования «Настойка диаграммы Ганта».+==== Как пользователю вывести поля в Ганте ==== 
 +В выпадающем списке (у любой из колонок диаграммы Ганта) выводится новый пункт «Пользовательские столбцы». Пункт виден, только если к Ганту настроен и привязан LINQ-запрос.
  
-При наведении на пункт «Пользовательские столбцы» выводится список с названиями тех полей LINQ запроса, у которых активирован чекбокс в колонке   (Отображать в диаграмме Ганта).+При наведении на пункт «Пользовательские столбцы» выводится список с названиями тех полей LINQ запроса, у которых активирован чекбокс в колонке {{:product:linq:gantt:linq_example_12.png?nolink}} (Отображать в диаграмме Ганта).
  
-Названия полей LINQ-запроса берутся из колонки «Псевдоним» (п.п. 4.1.5.3), если оно заполнено. Если не заполнено, то из колонки «Название» (п.п. 4.1.5.2).+<image shape="thumbnail">{{ :product:linq:gantt:linq_example_15.png?nolink |}}</image> 
 + 
 +Названия полей LINQ-запроса берутся из колонки «Псевдоним», если оно заполнено. Если не заполнено, то из колонки «Название».
  
 Каждое поле имеет чекбокс. По умолчанию не отмечен.  Каждое поле имеет чекбокс. По умолчанию не отмечен. 
Строка 83: Строка 105:
 Запрос данных по полю происходит разово. Данные сохраняются до обновления страницы с диаграммой Ганта. Запрос данных по полю происходит разово. Данные сохраняются до обновления страницы с диаграммой Ганта.
  
-Поля LINQ-запроса доступны только для просмотра.+<callout type="primary">Поля LINQ-запроса доступны только для просмотра.</callout>
  
 +==== Правила отображение Индикатора ====
 Поля с типом «Индикатор»: Поля с типом «Индикатор»:
   * Содержат индикатор в форме круга, выровненный по центру ячейки поля.    * Содержат индикатор в форме круга, выровненный по центру ячейки поля. 
Строка 94: Строка 117:
 При сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»), сохраняется видимость и порядок полей LINQ-запроса согласно выбранным настройкам. При сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»), сохраняется видимость и порядок полей LINQ-запроса согласно выбранным настройкам.
  
-При изменении настроек видимости полей на странице «Настройка полей из LINQ-запроса «Название_запроса»» изменяются и сохраненные настройки отображения диаграммы Ганта. К примеру, если у поля LINQ-запроса был деактивирован чекбокс в колонке   (Отображать в диаграмме Ганта), то из таблицы диаграммы Ганта данное поле пропадает, не смотря на то, что оно было отображено при сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»).+При изменении настроек видимости полей на странице «Настройка полей из LINQ-запроса «Название_запроса»» изменяются и сохраненные настройки отображения диаграммы Ганта.  \\ 
 +//Например, если у поля LINQ-запроса был деактивирован чекбокс в колонке {{:product:linq:gantt:linq_example_12.png?nolink}} (Отображать в диаграмме Ганта), то из таблицы диаграммы Ганта данное поле пропадает, несмотря на то, что оно было отображено при сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»).//
  
-Диаграмма Ганта поддерживает те типы полей LINQ-запроса, которые содержатся в списке колонки «Тип» (п.п. 4.1.5.4) на странице «Настройка полей из LINQ-запроса «Название_запроса»».+Если у соответствующего объекта, загруженного в диаграмму Ганта, LINQ-запрос по соответствующему полю вернул пустое значение, то и в соответствующей строке этого поля отображается пустое значение.
  
-Если у соответствующего объекта, загруженного в диаграмму Ганта, LINQ-запрос по соответствующему полю вернул пустое значение, то и в соответствующей строке этого поля отображать пустое значение.+==== Фильтр по пользовательским полям ==== 
 +''Начиная с версии 3.29'' появилась возможность фильтровать строки в табличной части по значениям пользовательских полей - данных, включенных в Гант из привязанного LINQ-запроса. 
  
-  * Экспорт диаграммы Ганта в pdf и png поддерживает поля LINQ-запроса. +Фильтрация доступна по текстовым значениям столбцов, а также по столбцам с типом «Индикатор». 
-  * Экспорт диаграммы Ганта в xls не поддерживает поля LINQ-запроса.+\\ 
 +<image shape="thumbnail">{{ releases:3_29:gant_user_filter.png |}}</image> 
 +\\ 
 +Фильтры по по пользовательским полям работают по аналогии с [[product:objects:gant:interface#фильтры1|фильтрами для системных полей]] - для всех фильтров работает возможность множественной фильтрации. 
 +  * При выборе нескольких значений для одного фильтра выборка формируется с использованием логического «ИЛИ» – общая выборка увеличивается
 +  * При фильтрации по нескольким фильтрам выборка формируется с использованием логического «И» – общая выборка уменьшается. 
 +==== Экспорт ==== 
 +Экспорт диаграммы Ганта:  
 +  * в .pdf и .png **поддерживает** поля LINQ-запроса; 
 +  * в .xls **не поддерживает** поля LINQ-запроса.
  
 =====Обработка ошибок ===== =====Обработка ошибок =====
  
-Если тип у поля LINQ-запроса, у которого активен чекбокс в колонке   (Отображать в Диаграмме Ганта),  не может быть сконвертирован в тип, указанный в колонке «Тип», то в диаграмме Ганта данное поле отображает пустые данные. Никакой ошибки в диаграмме Ганта не выводится.+Если тип у включенного для отображения {{:product:linq:gantt:linq_example_12.png?nolink}} поля LINQ-запроса не может быть сконвертирован в тип, указанный в колонке «Тип», то в диаграмме Ганта данное поле отображает пустые данные. Ошибка в диаграмме Ганта не выводится.
  
-Если поле LINQ-запроса отображено в диаграмме Ганта, то при изменении типа поля в самом LINQ-запросе (когда возникает ситуация невозможности конвертации в тип, указанный в колонке «Тип»), поле отображает пустые данные. Никакой ошибки в диаграмме Ганта не выводится. +Если поле LINQ-запроса отображено в диаграмме Ганта, то при изменении типа поля в самом LINQ-запросе (когда возникает ситуация невозможности конвертации в тип, указанный в колонке «Тип»), поле отображает пустые данные. Ошибка в диаграмме Ганта не выводится.
  
-Переименованное поле в LINQ-запросе расценивать, как новое поле. +Переименованное поле в LINQ-запросе расценивается, как новое поле.
- +
-Проверка на корректность составленного логического выражения у типа «Индикатор» не производится. В диаграмме Ганта у соответствующего поля с некорректно составленным логическим выражением отображать пустое значение.+
  
 +Проверка на корректность составленного логического выражения у типа «Индикатор» не производится. В диаграмме Ганта у соответствующего поля с некорректно составленным логическим выражением отображается пустое значение.
  
 =====Требования к написанию корректного LINQ-запроса===== =====Требования к написанию корректного LINQ-запроса=====
Строка 124: Строка 157:
 LINQ-запрос должен обязательно возвращать поле ObjectId – идентификаторы объекта (который был передан LINQ-запросу диаграммой Ганта) и всех его дочерних объектов. \\  LINQ-запрос должен обязательно возвращать поле ObjectId – идентификаторы объекта (который был передан LINQ-запросу диаграммой Ганта) и всех его дочерних объектов. \\ 
 В противном случае данный запрос не будет виден в списке для привязки к диаграмме Ганта. В противном случае данный запрос не будет виден в списке для привязки к диаграмме Ганта.
- 
-=====Изменения на странице написания LINQ-запроса===== 
- 
-На странице создания LINQ-запроса добавить опцию «Может использоваться в диаграмме Ганта». 
-  
-При активации чекбокса кнопка «Сохранить» заменяется на «Сделать запрос и сохранить». При нажатии кнопки «Сделать запрос и сохранить» запрос выполняется и сохраняется. 
- 
-При деактивации чекбокса кнопка «Сделать запрос и сохранить» заменяется на «Сохранить». При нажатии кнопки «Сохранить» запрос сохраняется без выполнения. 
- 
-На странице со списком всех созданных в Системе запросов добавить новую колонку «Используется в диаграмме Ганта». Поле содержит значения «Да» и «Нет» в зависимости включена или нет опция «Может использоваться в диаграмме Ганта» у соответствующих запросов.