⟨/⟩ Ntr/65_Ui/Componetns/ActualConsumptionTab.cs

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

using Rugrid.Sdaid.Notation.Documents;

namespace Rugrid.Sdaid.Epas.Ntr.Ui.Componetns
{
    /// <summary>
    /// Вкладки «Расход ЭЭ» и «Расход ТЭ» — просмотр расхода энергии от сторонних источников
    /// зданиями за год. Вкладки устроены одинаково и различаются показателем.
    /// </summary>
    public class DOC_ActualConsumptionTab : IUiComponentDocument, IHasStructuralLinks, IFolder<NtrUiFolder>
    {
        public SdaidLink[] Links => new[]
        {
            Rel.Realizes<Rugrid.Sdaid.Epas.Ntr.Epics.ActualConsumption.UseCases.UC_ActualConsumption>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Api.Endpoints.ActualConsumption.DOC_GetActualConsumptionEndpoint>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.ActualConsumptionModel.DOC_EeConsumption>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.ActualConsumptionModel.DOC_TeConsumption>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.Reference.DOC_Period>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.BuildingModel.DOC_Building>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.OrgObjectModel.DOC_OrgObject>(),
        };

        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_ActualConsumptionTab>("actual-consumption-tab.html", 620)}

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

        public static string Body = $$""""
Вкладки открываются для организационного объекта и для здания, выбранных в блоке навигации, и показывают расход энергии от сторонних источников. Вкладки устроены одинаково и различаются показателем:

- «Расход ЭЭ» — «Расход электроэнергии от сторонних источников, тыс. кВт·ч»;
- «Расход ТЭ» — «Расход тепловой энергии от сторонних источников, Гкал».

Далее описана одна вкладка.

Данные только для чтения.

Источник данных вкладки — {{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Api.Endpoints.ActualConsumption.DOC_GetActualConsumptionEndpoint>()}}: вид ТЭР задаётся вкладкой, объект или здание — выбором в блоке навигации, год и «с потомками» — строкой показателя.

**Элементы:**

- Строка показателя: наименование показателя с единицей измерения, справа — год и переключатель «с потомками».
- Табличная форма «Расход».

**Строка показателя:**

| Название поля | Способ заполнения | Обязательно для заполнения | Редактируемое | Тип поля | Маска / формат | Примечания |
|---|---|---|---|---|---|---|
| Год | Календарный год, за который показывается потребление: `Year` результата запроса | Да | Да | Выпадающий список | гггг | По умолчанию — год, предшествующий текущему. В списке — `AvailableYears` результата запроса |
| С потомками | Включать здания подчинённых организационных объектов: `WithDescendants` запроса | Нет | Да | Переключатель | | По умолчанию включён. На вкладке здания не выводится |

**Табличная форма «Расход»:**

Строки-листья — здания, по которым за выбранный год есть данные учёта. Здания сгруппированы по уровням организационной структуры: Компания → ИА, МЭС → ПМЭС → Подстанция. Уровень выводится, только если под ним есть здание с данными: перечень строится по загруженному потреблению, а не по реестру зданий.

Здания, принадлежащие организационному объекту, выводятся на том же уровне, что и подчинённые ему объекты; отдельный уровень группировки для них не вводится.

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

**Описание колонок табличной формы «Расход»:**

| Название поля (колонка) | Способ заполнения | Обязательно для заполнения | Редактируемое | Тип поля | Маска / формат | Примечания |
|---|---|---|---|---|---|---|
| Наименование | Строка результата запроса, поле `Name`; отступ — по полю `Level` | | Нет | Поле только для чтения | | В строках-агрегатах — наименование уровня организационной структуры |
| Январь … Декабрь | Строка результата запроса, поле `Months` | | Нет | Поле только для чтения | {9 999,99} | Двенадцать колонок. В строке-агрегате — сумма по зданиям ниже. Пустая ячейка означает, что значение за месяц не задано в источнике, и отличается от нуля |
| Год | Строка результата запроса, поле `Total` | | Нет | Поле только для чтения | {9 999,99} | В строке-агрегате — сумма по зданиям ниже |

**Поведение на форме:**

- Уровни организационной структуры свёртываются и разворачиваются; по умолчанию дерево развёрнуто.
- Внутри уровня строки упорядочены по наименованию.
- Смена года или переключателя «с потомками» перестраивает таблицу.
- При клике на наименование здания — переход на вкладку этого здания.
- Сортировка и фильтрация по колонкам не применяются.
"""";
    }
}