Добавление и исправление комментариев, начало добавление валидации, сообщение прокрути viewport на форме

This commit is contained in:
XeRo 2026-01-20 17:40:21 +05:00
parent c7ff7662ba
commit e37cabadcc
14 changed files with 371 additions and 297 deletions

View file

@ -2,32 +2,43 @@ package types
import tea "github.com/charmbracelet/bubbletea"
// SelectedAppMsg сообщение выбора приложения из списка приложений
type SelectedAppMsg struct {
App PackageApplication
App PackageApplication //Объект выбранного приложения
}
// BackToListMsg сообщение перехода к списку приложений
type BackToListMsg struct{}
// NextSectionMsg сообщение перехода на следующую секцию
type NextSectionMsg struct{}
// SugarMsg сообщение о возможной необходимости обновить форму
type SugarMsg struct {
VariableName string
FieldName string
Compute string
Focus int
VariableName string //Имя переменной присвоенной измененному полю
FieldName string //Имя измененного поля
Focus int //Старый фокус формы
}
// ShowModalMsg сообщение о показе модального окна
type ShowModalMsg struct {
Type ModalType
Title string
Message string
ModalButtons []ModalButton
OnResult func(result any) tea.Cmd
Type ModalType //Тип модального окна
Title string //Заголовок модального окна
Message string //Сообщение модального окна
ModalButtons []ModalButton //Кнопки модального окна
OnResult func(result any) tea.Cmd //Функция для выполнения
}
// ModalButton структура кнопки модального окна
type ModalButton struct {
Text string
Value any
Text string //Текст кнопки
Value any //Значение кнопки
}
// CloseModalMsg сообщение о закрытии модального окна
type CloseModalMsg struct{}
// ViewportScrollMsg сообщение прокрутки видимой области формы
type ViewportScrollMsg struct {
Direction string //Направление прокрутки
}

View file

@ -1,70 +1,77 @@
package types
// PackageApplication структура описывающая настраиваемое приложение
type PackageApplication struct {
Name string `yaml:"name"`
Version string `yaml:"version"`
Description string `yaml:"description"`
Icon string `yaml:"icon"`
Type string `yaml:"type"`
ConfFiles []ConfFile `yaml:"conf-files"`
Variables []Variable `yaml:"variables"`
Sections []Section `yaml:"sections"`
Changed bool `yaml:"-"`
Name string `yaml:"name"` //Имя приложения
Version string `yaml:"version"` //Версия приложения
Description string `yaml:"description"` //Описание приложения
Icon string `yaml:"icon"` //Иконка приложения
Type string `yaml:"type"` //Тип приложения
ConfFiles []ConfFile `yaml:"conf-files"` //Файлы конфигурации
Variables []Variable `yaml:"variables"` //Переменные настройки
Sections []Section `yaml:"sections"` //Секции настройки
Changed bool `yaml:"-"` //Вносились ли изменения
}
// ConfFile структура описывающая используемый приложением конфигурационный файл
type ConfFile struct {
File string `yaml:"file"`
Type string `yaml:"type"`
Name string `yaml:"name"`
File string `yaml:"file"` //Путь файла
Type string `yaml:"type"` //Тип файла
Name string `yaml:"name"` //Имя файла
}
// Variable структура описывающая переменную для настройки приложения
type Variable struct {
Name string `yaml:"name"`
Type string `yaml:"type"`
Default string `yaml:"default"`
Value interface{} `yaml:"-"`
Name string `yaml:"name"` //Имя переменной
Type string `yaml:"type"` //Тип значения переменной
Default string `yaml:"default"` //Значение по умолчанию
Value interface{} `yaml:"-"` //Используемое значение
}
// Section структура описывающая секцию настройки приложения
type Section struct {
Name string `yaml:"name"`
Type string `yaml:"type"`
Description string `yaml:"description"`
Fields []SectionField `yaml:"fields"`
Paragraphs []string `yaml:"paragraphs"`
Parent []string `yaml:"parent"`
Condition string `yaml:"condition"`
Actions []SectionAction `yaml:"actions"`
Name string `yaml:"name"` //Имя секции
Type string `yaml:"type"` //Тип секции
Description string `yaml:"description"` //Описание секции
Fields []SectionField `yaml:"fields"` //Поля секции
Paragraphs []string `yaml:"paragraphs"` //Параграфы для описания приложения
Parent []string `yaml:"parent"` //Переменные от которых зависит секция
Condition string `yaml:"condition"` //Условие отображения секции
Actions []SectionAction `yaml:"actions"` //Действия выполняемые после перехода с секции
}
// SectionField структура описывающая поле секции
type SectionField struct {
Name string `yaml:"name"`
VariableName string `yaml:"variable-name"`
FieldType string `yaml:"field-type"`
FileFieldExtensions []string `yaml:"file-field-extensions"`
Description string `yaml:"description"`
Condition string `yaml:"condition"`
Options []interface{} `yaml:"options"`
SpecialValue string `yaml:"special-value"`
Compute string `yaml:"compute"`
Validate []FieldValidate `yaml:"validate"`
Parent []string `yaml:"parent"`
Variable *Variable `yaml:"-"`
Active bool `yaml:"-"`
Name string `yaml:"name"` //Имя поля
VariableName string `yaml:"variable-name"` //Имя переменной, хранящей значение поля
FieldType string `yaml:"field-type"` //Тип поля
FileFieldExtensions []string `yaml:"file-field-extensions"` //Расширения файла для поля выбора файла
Description string `yaml:"description"` //Описание поля
Condition string `yaml:"condition"` //Условие отображения поля
Options []interface{} `yaml:"options"` //Список опций
SpecialValue string `yaml:"special-value"` //Специального значения
Compute string `yaml:"compute"` //Строка вычислений значения
Validate []FieldValidate `yaml:"validate"` //Правила проверки значения
Parent []string `yaml:"parent"` //Переменные от которых зависит поле
Variable *Variable `yaml:"-"` //Указатель на переменную
Active bool `yaml:"-"` //Активно ли поле для получения значения
}
// FieldValidate структура описывающая правила проверки значения поля
type FieldValidate struct {
Rule string `yaml:"rule"`
Message string `yaml:"message"`
Rule string `yaml:"rule"` //Правило проверки
Message string `yaml:"message"` //Сообщение ошибки
}
// SectionAction структура описывающая действия к выполнению
type SectionAction struct {
Name string `yaml:"name"`
Type string `yaml:"type"`
Command string `yaml:"command"`
FileTarget string `yaml:"file-target"`
FileSource string `yaml:"file-source"`
Condition string `yaml:"condition"`
RunAs string `yaml:"run-as"`
RequirePackages []string `yaml:"require-packages"`
Error string `yaml:"error"`
Name string `yaml:"name"` //Имя действия
Type string `yaml:"type"` //Тип действия
Command string `yaml:"command"` //Команда для выполнения
FileTarget string `yaml:"file-target"` //Целевой файл редактирования
FileSource string `yaml:"file-source"` //Файл источник
Condition string `yaml:"condition"` //Условие для выполнения
RunAs string `yaml:"run-as"` //Пользователь для запуска
RequirePackages []string `yaml:"require-packages"` //Требуемые пакеты
Error string `yaml:"error"` //Ошибка выполнения
}