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