Select Git revision
field.go 16.30 KiB
package field
import (
"context"
"strings"
"git.perx.ru/perxis/perxis-go/data"
"git.perx.ru/perxis/perxis-go/expr"
"git.perx.ru/perxis/perxis-go/pkg/errors"
)
const (
FieldSeparator = "."
IncludeLimit = 10
)
type (
Preparer interface {
Prepare(f *Field) error
}
Fielder interface {
GetField(path string) *Field
}
)
type Translation struct {
Locale string `json:"locale,omitempty"`
Title string `json:"title,omitempty"`
Description string `json:"description,omitempty"`
}
type View struct {
Widget string `json:"widget,omitempty"` // Виджет для отображения поля в списке
Options map[string]interface{} `json:"options,omitempty"` // Опции виджета, на усмотрения виджета
}
type UI struct {
Widget string `json:"widget,omitempty"` // Имя виджета для отображения поля в пользовательском интерфейсе
Placeholder string `json:"placeholder,omitempty"` // Подсказка для заполнения значения
Options map[string]interface{} `json:"options,omitempty"` // Опции виджета для отображения
ReadView *View `json:"read_view,omitempty"` // Настройки для отображения экрана в режиме просмотра элемента
EditView *View `json:"edit_view,omitempty"` // Настройки для отображения экрана в режиме редактирования элемента
ListView *View `json:"list_view,omitempty"` // Настройки для отображения экрана в режиме списке элементов
}
type Include struct {
Ref string `json:"ref,omitempty"`
Optional bool `json:"optional,omitempty"`
}
// State - состояние поля времени выполнения
type State struct {
Name string
DataPath string
SchemaPath string
SingleLocale bool
Parent *Field
Inlined bool
HasInline bool
}
type Field struct {
Title string `json:"title,omitempty"` // Название поля (Например: name)
Description string `json:"description,omitempty"` // Описание поле (Например: User name)
Translations []Translation `json:"translations,omitempty"` // Переводы данных на разных языках
UI *UI `json:"ui,omitempty"` // Опции пользовательского интерфейса
Includes []Include `json:"includes,omitempty"` // Импорт схем
SingleLocale bool `json:"single_locale,omitempty"` // Без перевода
Indexed bool `json:"indexed,omitempty"` // Построить индекс для поля