Это старая версия документа!


Статья в разработке!!

4.1. Изменения на странице администрирования. Механизм настройки отображения в диаграмме Ганта полей из LINQ-запроса 4.1.1. На странице «Администрирование» в разделе «Дополнительные сервисы» существующий пункт «Гостевые системы» заменить на новый пункт «Диаграмма Ганта». 4.1.2. Пункт «Гостевые системы» сохранить только в горизонтальном меню страницы «Администрирование» в разделе «Дополнительные сервисы». Последовательность пунктов сверху вниз: 4.1.2.1. Конструктор дашбордов. 4.1.2.2. Диаграмма Ганта. 4.1.2.3. Информация об отчетах. 4.1.2.4. Управление мотивацией. 4.1.2.5. Гостевые системы. 4.1.3. Пункт «Диаграмма Ганта» представляет собой новую отдельную страницу «Настройка диаграммы Ганта» с двумя разделами настроек диаграммы Ганта: 4.1.3.1. Настройка полей из LINQ-запроса. 4.1.3.2. Визуальные настройки (п. 4.2).

4.1.4. Раздел «Настройка полей из LINQ-запроса» страницы «Настройка диаграммы Ганта»: 4.1.4.1. Содержит выпадающий список с названиями всех LINQ-запросов, созданных в Системе, в которых одновременно: 4.1.4.1.1. включена опция «Может использоваться в диаграмме Ганта» (см. п.п.4.6). 4.1.4.1.2. возвращается колонка ObjectId (в поле ObjectId должны содержаться ID объектов Системы). 4.1.4.2. Cодержит кнопку «Настроить» по нажатию на которую в одной и той же вкладке браузера открывается отдельная страница «Настройка полей из LINQ-запроса «Название_запроса»». 4.1.4.3. Если в системе нет ни 1 LINQ-запроса, удовлетворяющего п.п.4.1.4.1 ТЗ, то раздел содержит только текст «Нет ни одного источника данных с колонкой «ObjectId»» (без кавычек).

4.1.5. Страница «Настройка полей из LINQ-запроса «Название_запроса»» содержит таблицу с колонками:

4.1.5.1. (Отображать в диаграмме Ганта). Содержит чекбокс, отвечающий за отображение соответствующего поля LINQ-запроса в диаграмме Ганта. Чекбокс по умолчанию выключен. 4.1.5.2. «Название поля». Содержит список названий полей, который возвращает LINQ-запрос. Поле ObjectId без возможности настройки (чекбокс «Отображать в диаграмме Ганта» неактивен). 4.1.5.3. «Псевдоним». Содержит строковое поле ввода для указания названия соответствующего поля LINQ-запроса, которое будет отображаться в диаграмме Ганта. По умолчанию название не указано. 4.1.5.4. «Тип». Содержит выпадающий список с типами данных полей. По умолчанию указан тип «Строка». Поддерживаемые типы данных: 4.1.5.4.1. Число. При указании данного типа правее отображается выпадающий список с указанием формата данных. Три значения с сортировкой сверху-вниз: «Число», «Денежный» и «Процент». По умолчанию указывается формат «Число». Использовать региональные настройки операционной системы.

4.1.5.4.2. Дата. При указании данного типа правее отображается выпадающий список с указанием формата данных. Два значения с сортировкой сверху-вниз: «Дата» и «Дата и время». По умолчанию указывается формат «Дата». Использовать региональные настройки операционной системы.

4.1.5.4.3. Индикатор: • При указании данного типа правее добавляется подсказка и кнопка «Добавить» для добавления нового индикатора. • При нажатии на кнопку «Добавить» добавляется индикатор соответствующего цвета.

o Цвет индикатора определяется на основе уже добавленных индикаторов по следующему алгоритму сверху вниз:  Добавить индикатор с зеленым цветом (63D16F) по умолчанию, если его нет.  Добавить индикатор с оранжевым цветом (F6B40E) по умолчанию, если его нет.  Добавить индикатор с красным цветом (EE1927) по умолчанию, если его нет.  Если индикаторы со всеми тремя цветами выше присутствуют, то добавить индикатор с синим цветом (00C2FF) по умолчанию.  Все цвета индикаторов по умолчанию необходимо запоминать. o У каждого индикатора есть поле ввода для указания логического выражения. Поддерживаются числа и операторы сравнения (=, !=, >=, ⇐, >, <).  Проверка на корректность составленного логического выражения не производится.  Логика сопоставления значения конкретному индикатору осуществляется по принципу их расположения сверху вниз до первого выполнения условия. К примеру, логическое выражение составлено так, если А > 10, то зеленый индикатор, если А > 20, то красный индикатор, то значению А = 25 будет присвоен зеленый индикатор, т.к. по порядку расположения индикаторов сверху вниз условие зеленого индикатора выполнилось первым и остальные не проверяются. o У каждого индикатора есть кнопка для его удаления.

o У каждого индикатора есть возможность смены его цвета путем выбора цвета из имеющейся палитры, либо указанием в соответствующем поле ввода шестнадцатеричного кода цвета.

4.1.5.4.4. Строка. Без указания формата данных. Значение по умолчанию.

4.1.5.5. Содержит кнопки «Сохранить» и «Отмена»: 4.1.5.5.1. Кнопка «Сохранить» – сохраняет все изменения на странице «Настройка полей из LINQ-запроса «Название_запроса»». 4.1.5.5.2. Кнопка «Отмена» – отменяет не сохраненные изменения на странице «Настройка полей из LINQ-запроса «Название_запроса»». При этом страница закрывается и открывается страница «Настройка диаграммы Ганта». 4.1.5.5.3. По нажатию на кнопку «Сохранить» страница «Настройка полей из LINQ-запроса «Название_запроса»» закрывается. Открывается страница «Настройка диаграммы Ганта»: • Если в колонке (Отображать в диаграмме Ганта) страницы «Настройка полей из LINQ-запроса» активен чекбокс хотя бы у одного поля, то считается что LINQ-запрос привязан к диаграмме Ганта и в разделе «Настройка полей из LINQ-запроса» страницы «Настройка диаграммы Ганта»: o Отображается таблица с 2 колонками (сортировка слева-направо) содержащая название поля (чекбокс в колонке (Отображать в диаграмме Ганта) которого активен) и его тип, соответственно. Если у поля указан псевдоним, то отображается он. Если нет, то название поля из LINQ-запроса. o Над таблицей отображается название настроенного LINQ-запроса. o Правее кнопки «Настроить» появляется кнопка «Отвязать настройки».

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

o При этом настройки для раннее настраиваемого LINQ-запроса сохраняются, если снова выбрать его и нажать «Настроить». 4.1.5.5.4. По нажатию на кнопку «Отвязать настройки» выводить браузерное сообщение подтверждения действия с текстом формата: «Отвязать LINQ-запрос от диаграммы Ганта? Настройки будут сохранены», кнопками «Ок» и «Отмена»: • При нажатии кнопки «Ок»: o Происходит отвязка LINQ-запроса от диаграммы Ганта. o Настройки для раннее настраиваемого LINQ-запроса сохраняются, но чекбоксы «Отображать в диаграмме Ганта» сбрасываются в значение по умолчанию (неактивны). o Отображается выпадающий список с LINQ-запросами (п.п. 4.1.4.1) и кнопкой «Настроить».

• При нажатии кнопки «Отмена» браузерное сообщение подтверждения действия пропадает. Изменений не происходит.

4.2. Изменения на странице администрирования. Опция выделения жирным шрифтом всех родительских задач в диаграмме Ганта 4.2.1. Страница «Настройка диаграммы Ганта» содержит раздел «Визуальные настройки». 4.2.2. Раздел расположен под разделом «Настройка полей из LINQ-запроса».

4.2.3. Раздел «Визуальные настройки» содержит чекбокс «Выделять жирным шрифтом родительские объекты». По умолчанию чекбокс отмечен (опция включена). 4.2.4. При изменении состояния чекбокса происходит автоматическое его сохранение. 4.2.5. При активации чекбокса «Выделять жирным шрифтом родительские объекты» в диаграмме Ганта ко всем названиям объектов, имеющих видимые конкретному пользователю дочерние объекты, применяется полужирное начертание к тексту. 4.2.6. Полужирное начертание к тексту применяется/отменяется динамически в процессе работы с диаграммой Ганта.

4.3. Изменения в диаграмме Ганта. Механизм отображения полей из LINQ-запроса 4.3.1. Изменения одинаковы для диаграммы Ганта, открытой с уровня любого объекта Системы. 4.3.2. В выпадающем списке (у любой из колонок диаграммы Ганта) добавить новый пункт «Пользовательские столбцы». Расположить под пунктом «Столбцы». Пункт виден, когда настроен и привязан LINQ-запрос в портлете «Настройка полей из LINQ-запроса» страницы администрирования «Настойка диаграммы Ганта».

4.3.3. При наведении на пункт «Пользовательские столбцы» выводится список с названиями тех полей LINQ запроса, у которых активирован чекбокс в колонке (Отображать в диаграмме Ганта). 4.3.4. Названия полей LINQ-запроса берутся из колонки «Псевдоним» (п.п. 4.1.5.3), если оно заполнено. Если не заполнено, то из колонки «Название» (п.п. 4.1.5.2). 4.3.5. Каждое поле имеет чекбокс. По умолчанию не отмечен. 4.3.6. При активации чекбокса: 4.3.6.1. В таблицу диаграммы Ганта добавляется соответствующее поле LINQ-запроса с данными. 4.3.6.2. Запрос данных по полю LINQ-запроса происходит следующим образом: 4.3.6.2.1. LINQ-запросу передается идентификатор объекта, с карточки которого открыта диаграмма Ганта. 4.3.6.2.2. LINQ-запросом возвращается таблица с данными, включающая поля: • ObjectId – идентификаторы объекта (который был передан LINQ-запросу) и всех его дочерних объектов. • Поле из п.п. 4.3.6.1. 4.3.6.2.3. Происходит сопоставление идентификаторов объектов, подгруженных в диаграмму Ганта, с идентификаторами объектов поля ObjectId и заполнение поля из п.п. 4.3.6.1 соответствующими данными. 4.3.6.2.4. Запрос данных по полю происходит разово. Данные сохраняются до обновления страницы с диаграммой Ганта. 4.3.7. Поля LINQ-запроса доступны только для просмотра. 4.3.8. Поля с типом «Индикатор»: 4.3.8.1. Содержат индикатор в форме круга, выровненный по центру ячейки поля. 4.3.8.2. Цвет индикатора согласно настроенному логическому выражению п.п. 4.1.5.4.3. 4.3.8.3. Размер индикатора вписан в высоту ячейки поля. 4.3.8.4. Если данные ячейки поля не соответствуют ни одному заданному логическому выражению (или выражения составлены некорректно), то индикатор в ней не отображается, ячейка поля пустая. 4.3.9. При сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»), сохраняется видимость и порядок полей LINQ-запроса согласно выбранным настройкам. 4.3.10. При изменении настроек видимости полей на странице «Настройка полей из LINQ-запроса «Название_запроса»» изменяются и сохраненные настройки отображения диаграммы Ганта. К примеру, если у поля LINQ-запроса был деактивирован чекбокс в колонке (Отображать в диаграмме Ганта), то из таблицы диаграммы Ганта данное поле пропадает, не смотря на то, что оно было отображено при сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»). 4.3.11. Диаграмма Ганта поддерживает те типы полей LINQ-запроса, которые содержатся в списке колонки «Тип» (п.п. 4.1.5.4) на странице «Настройка полей из LINQ-запроса «Название_запроса»». 4.3.12. Если у соответствующего объекта, загруженного в диаграмму Ганта, LINQ-запрос по соответствующему полю вернул пустое значение, то и в соответствующей строке этого поля отображать пустое значение. 4.3.13. Экспорт диаграммы Ганта в pdf и png должен поддерживать поля LINQ-запроса. 4.3.14. Экспорт диаграммы Ганта в xls не поддерживает поля LINQ-запроса. 4.4. Обработка ошибок 4.4.1. Если тип у поля LINQ-запроса, у которого активен чекбокс в колонке (Отображать в Диаграмме Ганта), не может быть сконвертирован в тип, указанный в колонке «Тип», то в диаграмме Ганта данное поле отображает пустые данные. Никакой ошибки в диаграмме Ганта не выводится. 4.4.2. Если поле LINQ-запроса отображено в диаграмме Ганта, то при изменении типа поля в самом LINQ-запросе (когда возникает ситуация невозможности конвертации в тип, указанный в колонке «Тип»), поле отображает пустые данные. Никакой ошибки в диаграмме Ганта не выводится. 4.4.3. Переименованное поле в LINQ-запросе расценивать, как новое поле. 4.4.4. Проверка на корректность составленного логического выражения у типа «Индикатор» не производится. В диаграмме Ганта у соответствующего поля с некорректно составленным логическим выражением отображать пустое значение.

4.5. Требования к написанию корректного LINQ-запроса 4.5.1. С целью фильтрации возвращаемых данных LINQ-запрос должен учитывать передаваемый диаграммой Ганта идентификатор объекта (RootProjectId) с карточки которого она открыта. Требование не обязательное и необходимо для оптимизации запроса. Для оптимизации запроса добавьте в него следующую строку: var objectID = parameters.GetValueOrDefault<Guid>(«RootProjectId», new Guid(«daba2cbb-a4a9-4708-9366-5dd3ead1f172»)); где RootProjectId – передаваемый диаграммой Ганта идентификатор объекта, new Guid(«daba2cbb-a4a9-4708-9366-5dd3ead1f172») – идентификатор любого объекта системы, необходимый для отладки запроса. 4.5.2. LINQ-запрос должен обязательно возвращать поле ObjectId – идентификаторы объекта (который был передан LINQ-запросу диаграммой Ганта) и всех его дочерних объектов. В противном случае данный запрос не будет виден в списке (п.п. 4.1.4.1) для привязки к диаграмме Ганта.

4.6. Изменения на странице написания LINQ-запроса 4.6.1. На странице создания LINQ-запроса добавить опцию «Может использоваться в диаграмме Ганта».

4.6.2. При активации чекбокса кнопка «Сохранить» заменяется на «Сделать запрос и сохранить». При нажатии кнопки «Сделать запрос и сохранить» запрос выполняется и сохраняется. 4.6.3. При деактивации чекбокса кнопка «Сделать запрос и сохранить» заменяется на «Сохранить». При нажатии кнопки «Сохранить» запрос сохраняется без выполнения. 4.6.4. На странице со списком всех созданных в Системе запросов добавить новую колонку «Используется в диаграмме Ганта». Поле содержит значения «Да» и «Нет» в зависимости включена или нет опция «Может использоваться в диаграмме Ганта» у соответствующих запросов.

4.7. Перспективы развития 4.7.1. Предусмотреть возможность привязки к диаграмме Ганта созданного в Системе OLAP куба с загрузкой его показателей. 4.7.2. Реализовать механизм при котором данные в LINQ-колонках обновляются при сохранении диаграммы Ганта (по нажатию на кнопку «Сохранить» или автоматическом сохранении диаграммы Ганта при создании БП).

5. Настройка функционала для Заказчика 5.1. Для автоматической настройки решения под Заказчика реализовать скрипт, который: 5.1.1. На странице написания LINQ-запросов создаст LINQ-запрос с названием «Расчет отклонения от базового плана». С целью фильтрации возвращаемых данных LINQ-запрос должен учитывать передаваемый диаграммой Ганта идентификатор объекта (RootProjectId) с карточки которого она открыта. И должен возвращать таблицу с колонками: 5.1.1.1. Обязательное поле ObjectId – идентификаторы всех дочерних объектов, включая родительский объект, с карточки которого открывается диаграмма Ганта и идентификатор которого передается LINQ-запросу при отображении его полей в табличной части диаграммы Ганта. 5.1.1.2. Поле №1 с отклонением от БП. Тип: Число. Содержит разницу (отклонение) в рабочих днях между соответствующими плановой или фактической датой окончания (ПДО или ФДО соответственно) и утвержденной датой окончания (УДО) по последней версии БП. Логика расчета для каждого соответствующего объекта п.п. 5.1.1.1: 5.1.1.2.1. Если у объекта есть УДО и ФДО, то отклонение = ФДО – УДО. 5.1.1.2.2. Если у объекта есть УДО, но нет ФДО, то отклонение = ПДО – УДО. 5.1.1.2.3. Если у объекта нет УДО, то расчет не производится. В соответствующей ячейке поля содержится пустое значение (не 0, а именно пустое значение). 5.1.1.2.4. Положительные значения говорят о просрочке, отрицательные – об опережении утвержденного срока в БП. 5.1.1.3. Поле №2 с числовым значением индикатора отклонения от БП. Тип: Число. Логика расчета для каждого соответствующего объекта п.п.5.1.1.1: 5.1.1.3.1. Если значение поля №1 в диапазоне (-∞; 7], то в поле №2 записывается значение = 1. 5.1.1.3.2. Если значение поля №1 в диапазоне (7; 14], то в поле №2 записывается значение = 2. 5.1.1.3.3. Если значение поля №1 в диапазоне (14; +∞], то в поле №2 записывается значение = 3. 5.1.1.3.4. Если значение поля №1 пустое, то в поле №2 ничего не записывается (остается пустое значение). 5.1.2. На странице «Настройка полей из LINQ-запроса «Расчет отклонения от базового плана»» произведет следующие настройки: 5.1.2.1. Поле №1 с отклонением от БП: 5.1.2.1.1. (Отображать в Диаграмме Ганта): чекбокс отмечен. 5.1.2.1.2. Псевдоним: Отклонение от БП. 5.1.2.1.3. Тип: Число. 5.1.2.1.4. Формат: Число. 5.1.2.2. Поле №2 с числовым значением индикатора отклонения от БП: 5.1.2.2.1. (Отображать в Диаграмме Ганта): чекбокс отмечен. 5.1.2.2.2. Псевдоним: Статус отклонения. 5.1.2.2.3. Тип: Индикатор. • Для зеленого индикатора указать логическое выражение «=1» (без кавычек). • Для оранжевого индикатора указать логическое выражение «=2» (без кавычек). • Для красного индикатора указать логическое выражение «=3» (без кавычек). 5.1.2.3. Сохранит произведенные настройки. 5.2. Настройка должна быть одинакова для диаграммы Ганта, открытой с уровня любого объекта Системы. Запрос должен быть реализован так, что для вновь добавленных типов объектов (на странице «Администрирование») будет действовать логика расчета, заложенная в нем (в запросе указывать не конкретный тип объекта, а обобщенный тип). 5.3. По итогу выполнения скрипта в диаграмме Ганта: 5.3.1. В выпадающем списке (у любой из колонок диаграммы Ганта) при наведении на пункт «Пользовательские столбцы» отображаются два поля «Отклонение от БП» и «Статус отклонения», соответственно.

5.3.2. Поля можно добавить в таблицу диаграммы Ганта. Поля содержат данные согласно написанному LINQ-запросу: 5.3.2.1. «Отклонение от БП» – число, отображающее отклонение от БП. 5.3.2.2. «Статус отклонения» – цветовой индикатор, отображающий статус отклонения от БП. Если у объекта нет УДО, то индикатор не отображается.

5.3.3. Настройка (п.п. 5.3.1-5.3.2) одинакова для диаграммы Ганта, открытой с уровня любого объекта Системы.