# Лабораторная работа 1
## Компоненты:
### CustomDataTable:
Визуальный компонент вывода таблицы значений
__Публичные Методы__:
- Определить структуру таблицы
```c#
void ConfigureColumns(params CustomDataTableColumnParameter[] columnParameters)
```
CustomDataTableColumnParameter
```c#
///
/// Параметры столбца таблицы
///
public record CustomDataTableColumnParameter
{
///
/// Заголовок
///
public string HeaderName { get; init; } = string.Empty;
///
/// Ширина
///
public int Width { get; init; } = 0;
///
/// Видимость
///
public bool Visible { get; init; } = true;
///
/// Название свойства
///
public string PropertyName { get; init; } = string.Empty;
}
```
- Отчистить таблицу
```c#
public void Clear()
```
- Заполнить таблицу
```c#
public void Fill(IList insertValues)
```
__Публичные Функции__:
- Получить стоку таблицы в виде объекта
```c#
public TType? GetRow(int rowIndex) where TType : new()
```
__Свойства__:
- Индекс выбранной строки
```c#
public int SelectedRow
```
### CustomListBox
Визуальный компонент выбора из списка значений
__Публичные Методы__:
- Заполнить список значениями
```c#
public void FillValues(IEnumerable strings)
```
- Очистить список
```c#
public void Clear()
```
__Свойства__:
- Событие возникающие при изменении списка
```c#
public event EventHandler ValueChanged
```
- Обработка ошибок
```c#
public event Action AnErrorOccurred
```
- Выбранное значение
```c#
public string Selected
```
### CustomNumericInputField
Визуальный компонент ввода целочисленного значения допускающего null
__Свойства__:
- Событие возникающие при изменении поля ввода
```c#
public event EventHandler NumericInputChanged
```
- Обработка ошибок
```c#
public event Action AnErrorOccurred
```
- Значения поля ввода
```c#
public int? Value
```
_Возможно исключение ```InvalidNumericInputValueException```_
# Лабораторная работа 2
## Компоненты:
### CustomPdfTable
Компонент для сохранения таблицы в пдф
__Публичные Методы__:
- Определить структуру таблицы
```c#
public void SaveToPdf(PdfTableInfo tableInfo)
```
PdfTableInfo
```c#
///
/// Параметры для создания таблиц в пдф
///
public record PdfTableInfo
{
///
/// имя файла (включая путь до файла)
///
public string FilePath { get; init; } = @"C:\pdfTable.pdf";
///
/// название документа(заголовок в документе)
///
public string Title { get; init; } = "Таблица";
///
/// Список таблиц
///
public IEnumerable Tables { get; init; } = [];
}
```
### CustomPdfTableWithGrouping
Компонент создающий таблицу и группирует элементы по 1 столбцу
__Публичные Методы__:
- Сохранить в пдф
```c#
public void SaveToPdf(PdfTableWithGroupingInfo tableInfo) where TType : class
```
PdfTableWithGroupingInfo
```c#
///
/// Параметры для создания таблицы в пдф с группировкой по 1 столбцу
///
public class PdfTableWithGroupingInfo where TType : class
{
///
/// имя файла (включая путь до файла)
///
public string FilePath { get; init; } = @"C:\pdfTable.pdf";
///
/// название документа(заголовок в документе)
///
public string Title { get; init; } = "Таблица";
///
/// Высота заголовков
///
public float HeaderHeight { get; init; } = 0.5f;
///
/// Параметры столбцов
///
public IEnumerable Columns { get; init; } = [];
///
/// Список таблиц
///
public IEnumerable> Rows { get; init; } = [];
}
```
### CustomPdfHistogram
Компонент создающий линейную диаграмму
__Публичные Методы__:
- Сохранить гистограмму в пдф
```c#
public void SaveToPdf(PdfHistigramInfo histogramInfo)
```
PdfHistigramInfo
```c#
///
/// Параметры для создания линейной диаграммы
///
public record PdfHistigramInfo
{
///
/// Имя файла (включая путь до файла)
///
public string FilePath { get; init; } = @"C:\pdfTable.pdf";
///
/// Заголовок документа
///
public string DocumentTitle { get; init; } = "Гистограмма";
///
/// Заголовок диаграммы
///
public string HistogramTitle { get; init; } = "Гистограмма";
///
/// Расположение легенды
///
public PdfLegendPosition LegendPosition { get; init; } = PdfLegendPosition.Bottom;
///
/// Значения
///
public required IEnumerable Values { get; init; }
}
```