⟨/⟩ Nts/65_Ui/NtsMainPage.cs

121 строк · в начало

using Rugrid.Sdaid.Notation.Documents;
using Rugrid.Sdaid.Epas.Nts.Domain;

namespace Rugrid.Sdaid.Epas.Nts.Ui
{
    /// <summary>
    /// Главная страница ЭНТС — точка входа в модуль: навигация по орг. объектам,
    /// сведения о модуле и выбранном объекте, главное меню.
    /// </summary>
    public class DOC_NtsMainPage : IPageDocument, IHasStructuralLinks, IFolder<NtsUiFolder>
    {
        public SdaidLink[] Links => new[]
        {
            Rel.Uses<Rugrid.Sdaid.Epas.Nts.Vision.DOC_NtsVision>(),
            Rel.Uses<DOC_NtsReferenceRegistry>(),
            Rel.Uses<DOC_NtsAisImportPage>(),
            Rel.Uses<DOC_NtsDocumentation>(),
            Rel.Uses<DOC_VehicleRegistry>(),
            Rel.Uses<DOC_VehicleCard>(),
            Rel.Uses<DOC_VehicleSummaryWidget>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Ui.Componetns.DOC_NavObjectCard>(),
            Rel.Uses<DOC_WinterAllowance>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_NtsCalcErrors>(),
        };

        public static string _refName = "Главная страница ЭНТС";

        public string Name => "Главная страница ЭНТС";

        public string Description =>
            @"Точка входа в модуль ЭНТС: навигация по организационным объектам, сведения о модуле и выбранном объекте, главное меню.";

        public string Version => "0.1";
        public string Status => "draft";
        public string[] Comments => new string[0];

        /// <summary>Макет экрана: страница прототипа модуля, назначение и состав разделов.</summary>
        public static string Wireframe = $""""
        ## Макет

        {SdaidHtml.IframeOf<DOC_NtsMainPage>("main-page.html", 620)}

        {SdaidHtml.LinkTo<DOC_NtsMainPage>("main-page.html", "Открыть макет в отдельной вкладке")}
        """";

        public static string Structure = $""""
        ## Структура экрана

        Главная страница — точка входа в модуль ЭНТС. Сверху расположена строка главного меню,
        под ней — строка контекста, слева — блок навигации по организационной структуре,
        справа — рабочая область.

        ### Главное меню

        В строке главного меню выводятся только пункты меню и меню пользователя. Заголовки страниц
        в ней не дублируются. Под строкой меню расположена отдельная строка контекста —
        навигационная цепочка от «Главной» до выбранного организационного объекта, раздела
        или объекта учёта.

        | Пункт меню | Поведение |
        |---|---|
        | Главная | Возврат на главную страницу модуля |
        | Справочники | Переход на страницу «Справочники» |
        | Импорт | Переход на страницу «Импорт данных из АИС ОИА ПЭО» |
        | Документация | Переход на страницу документации по использованию модуля |
        | Пользователь | Выпадающее меню: «Профиль» — профиль пользователя ОПЭС; «Выйти» — завершение сеанса |

        Переключатель модулей (ЭНТР, МВЭР, ЭНТС) относится к уровню ОПЭС и в меню ЭНТС не входит.

        ### Блок навигации

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

        Выбор организационного объекта открывает рабочую область с вкладками.

        ### Рабочая область

        Пока организационный объект не выбран, в рабочей области отображаются общие сведения о модуле ЭНТС:
        полное наименование, условное обозначение, назначение и цель создания, перечень возможностей,
        и плашки {SdaidAnchors.RefTo<DOC_VehicleSummaryWidget>()} по всему реестру ТС (без фильтра по
        организационному объекту). Текст соответствует разделам «Общие сведения» и «Назначение и цель
        создания» видения ЭНТС; перечень пунктов меню и разделов здесь не дублируется.

        После выбора объекта в рабочей области открывается набор вкладок:

        - **Сведения** — наименование, область, город, под ними — плашки
          {SdaidAnchors.RefTo<DOC_VehicleSummaryWidget>()}, отфильтрованные по выбранному объекту
          (с подчинёнными объектами). Остальные сведения об объекте загружаются из АИС ОИА ПЭО.
          Группа «Зимняя надбавка»: субъект РФ, выбираемый из {SdaidAnchors.RefTo<DOC_Subject>()}, и
          найденная для него запись справочника {SdaidAnchors.RefTo<DOC_WinterAllowance>()} — срок
          действия, количество месяцев действия, предельная величина надбавки, %. Если субъект не
          выбран или для него нет записи в справочнике — вместо значений показывается текст ошибки
          классификатора ({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_NtsCalcErrors>()},
          секция `fuel.cf_climate_region`): «Субъект РФ эксплуатации не определён — неизвестна
          зимняя надбавка».
        - **Реестр ТС** — реестр транспортных средств выбранного объекта; переключатели
          «С потомками / Без потомков» и «Все / Действующие» управляют составом списка.
          «Действующие» — ТС без даты окончания эксплуатации.
        - Ряд вкладок расширяемый: при появлении отчётов и других сведений об объекте они
          добавляются в этот же ряд.

        ### Поведение

        - Ввод подстроки в поиске фильтрует дерево по наименованию организационных объектов.
        - «Главная» возвращает на главную страницу модуля с любого экрана.
        - Выбор организационного объекта открывает рабочую область с вкладками; по умолчанию
          активна вкладка «Сведения».
        - «Справочники» открывает реестр справочников модуля.
        - «Импорт» открывает страницу импорта данных из АИС ОИА ПЭО.
        - «Документация» открывает инструкцию по использованию модуля.
        - «Профиль» открывает профиль пользователя ОПЭС; «Выйти» завершает сеанс.
        - Организационная структура и характеристики ТС, загруженные из АИС, в модуле не
          редактируются. Характеристики, которых в АИС нет, и субъект РФ на вкладке «Сведения»
          ведутся в ЭНТС.
        """";
    }
}