tui

package
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 2, 2025 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ColorPrimary   = lipgloss.Color("86")  // Green
	ColorSecondary = lipgloss.Color("244") // Gray
	ColorError     = lipgloss.Color("196") // Red
	ColorWarning   = lipgloss.Color("214") // Orange
	ColorSuccess   = lipgloss.Color("46")  // Bright green
	ColorInfo      = lipgloss.Color("39")  // Blue
	ColorHighlight = lipgloss.Color("57")  // Dark blue
)

Color constants for consistency

View Source
const (
	DefaultPadding = 2
	DefaultMargin  = 1
	DefaultWidth   = 80
	DefaultHeight  = 24
)

Common layout constants

Variables

View Source
var (

	// Exported style variables for use in other components
	TitleStyle      = titleStyle
	HeaderStyle     = headerStyle
	ContentStyle    = contentStyle
	ErrorStyle      = errorStyle
	BreadcrumbStyle = breadcrumbStyle
	FooterStyle     = footerStyle

	// Exported info style
	InfoStyle = lipgloss.NewStyle().
				Foreground(lipgloss.Color("39")).
				Italic(true)
)

Common styles used across TUI components

Functions

func FormatDuration

func FormatDuration(d time.Duration) string

Format duration

func FormatFileSize

func FormatFileSize(bytes int64) string

Format file size

func RenderBox

func RenderBox(title, content string, width int) string

Common UI elements

func RenderKeyHelp

func RenderKeyHelp(keys []string) string

func RenderProgress

func RenderProgress(current, total int) string

Progress indicators

func StatusActive

func StatusActive() string

Status indicators

func StatusInactive

func StatusInactive() string

func StatusUnknown

func StatusUnknown() string

func TruncateText

func TruncateText(text string, maxLength int) string

Truncate text with ellipsis

Types

type CalendarMode added in v0.0.4

type CalendarMode int

CalendarMode represents the calendar display mode

const (
	CalendarModeMonth CalendarMode = iota
	CalendarModeYear
	CalendarModeTime
)

type CalendarModel added in v0.0.4

type CalendarModel struct {
	// contains filtered or unexported fields
}

CalendarModel represents a calendar widget for date/time selection

func NewCalendarModel added in v0.0.4

func NewCalendarModel() *CalendarModel

NewCalendarModel creates a new calendar model

func (*CalendarModel) Activate added in v0.0.4

func (m *CalendarModel) Activate()

Activate activates the calendar for input

func (*CalendarModel) Deactivate added in v0.0.4

func (m *CalendarModel) Deactivate()

Deactivate deactivates the calendar

func (*CalendarModel) FormatForServiceNow added in v0.0.4

func (m *CalendarModel) FormatForServiceNow() string

FormatForServiceNow formats the selected date for ServiceNow queries

func (*CalendarModel) FormatSelectedDate added in v0.0.4

func (m *CalendarModel) FormatSelectedDate() string

FormatSelectedDate formats the selected date for display

func (*CalendarModel) GetSelectedDate added in v0.0.4

func (m *CalendarModel) GetSelectedDate() time.Time

GetSelectedDate returns the current selected date with time components

func (*CalendarModel) Init added in v0.0.4

func (m *CalendarModel) Init() tea.Cmd

Init initializes the calendar

func (*CalendarModel) IsActive added in v0.0.4

func (m *CalendarModel) IsActive() bool

IsActive returns whether the calendar is active

func (*CalendarModel) SetDateRange added in v0.0.4

func (m *CalendarModel) SetDateRange(min, max *time.Time)

SetDateRange sets the allowed date range

func (*CalendarModel) SetSelectedDate added in v0.0.4

func (m *CalendarModel) SetSelectedDate(date time.Time)

SetSelectedDate sets the selected date

func (*CalendarModel) SetTimeEnabled added in v0.0.4

func (m *CalendarModel) SetTimeEnabled(enabled bool)

SetTimeEnabled enables or disables time selection

func (*CalendarModel) Update added in v0.0.4

func (m *CalendarModel) Update(msg tea.Msg) (*CalendarModel, tea.Cmd)

Update handles calendar updates

func (*CalendarModel) View added in v0.0.4

func (m *CalendarModel) View() string

View renders the calendar

type CalendarStyles added in v0.0.4

type CalendarStyles struct {
	Header        lipgloss.Style
	DayHeader     lipgloss.Style
	Day           lipgloss.Style
	Today         lipgloss.Style
	Selected      lipgloss.Style
	OutOfMonth    lipgloss.Style
	Weekend       lipgloss.Style
	TimeComponent lipgloss.Style
	FocusedTime   lipgloss.Style
	Border        lipgloss.Style
	Navigation    lipgloss.Style
}

CalendarStyles holds styling configuration for the calendar

type DateRangePickerMode added in v0.0.4

type DateRangePickerMode int

DateRangePickerMode represents the picker mode

const (
	DateRangePickerModeStartDate DateRangePickerMode = iota
	DateRangePickerModeEndDate
	DateRangePickerModePresets
)

type DateRangePickerModel added in v0.0.4

type DateRangePickerModel struct {
	// contains filtered or unexported fields
}

DateRangePickerModel handles date range selection with calendar widgets

func NewDateRangePickerModel added in v0.0.4

func NewDateRangePickerModel() *DateRangePickerModel

NewDateRangePickerModel creates a new date range picker

func (*DateRangePickerModel) Activate added in v0.0.4

func (m *DateRangePickerModel) Activate()

Activate activates the date range picker

func (*DateRangePickerModel) Deactivate added in v0.0.4

func (m *DateRangePickerModel) Deactivate()

Deactivate deactivates the date range picker

func (*DateRangePickerModel) FormatForServiceNow added in v0.0.4

func (m *DateRangePickerModel) FormatForServiceNow() (startQuery, endQuery string)

FormatForServiceNow formats the date range for ServiceNow queries

func (*DateRangePickerModel) GetDateRange added in v0.0.4

func (m *DateRangePickerModel) GetDateRange() (start, end *time.Time)

GetDateRange returns the current date range

func (*DateRangePickerModel) GetFormattedRange added in v0.0.4

func (m *DateRangePickerModel) GetFormattedRange() string

GetFormattedRange returns a human-readable date range string

func (*DateRangePickerModel) Init added in v0.0.4

func (m *DateRangePickerModel) Init() tea.Cmd

Init initializes the date range picker

func (*DateRangePickerModel) IsActive added in v0.0.4

func (m *DateRangePickerModel) IsActive() bool

IsActive returns whether the picker is active

func (*DateRangePickerModel) SetDateRange added in v0.0.4

func (m *DateRangePickerModel) SetDateRange(start, end *time.Time)

SetDateRange sets the current date range

func (*DateRangePickerModel) SetTimeEnabled added in v0.0.4

func (m *DateRangePickerModel) SetTimeEnabled(enabled bool)

SetTimeEnabled enables or disables time selection

func (*DateRangePickerModel) Update added in v0.0.4

Update handles date range picker updates

func (*DateRangePickerModel) View added in v0.0.4

func (m *DateRangePickerModel) View() string

View renders the date range picker

type DateRangePickerStyles added in v0.0.4

type DateRangePickerStyles struct {
	Header         lipgloss.Style
	SubHeader      lipgloss.Style
	ActivePanel    lipgloss.Style
	InactivePanel  lipgloss.Style
	PresetItem     lipgloss.Style
	SelectedPreset lipgloss.Style
	DateRange      lipgloss.Style
	Help           lipgloss.Style
	Error          lipgloss.Style
}

DateRangePickerStyles holds styling for the date range picker

type DateRangePreset added in v0.0.4

type DateRangePreset struct {
	Name      string
	StartDate time.Time
	EndDate   time.Time
}

DateRangePreset represents a predefined date range

type FieldChoice added in v0.0.4

type FieldChoice struct {
	Value string `json:"value"`
	Label string `json:"label"`
}

FieldChoice represents a choice option for choice fields

type FieldMetadata added in v0.0.4

type FieldMetadata struct {
	Name           string                 `json:"name"`
	Label          string                 `json:"label"`
	Type           FieldType              `json:"type"`
	MaxLength      int                    `json:"max_length"`
	Mandatory      bool                   `json:"mandatory"`
	ReadOnly       bool                   `json:"read_only"`
	Reference      string                 `json:"reference,omitempty"`
	Choices        []FieldChoice          `json:"choices,omitempty"`
	DefaultValue   string                 `json:"default_value,omitempty"`
	Description    string                 `json:"description,omitempty"`
	DependentField string                 `json:"dependent_field,omitempty"`
	Attributes     map[string]interface{} `json:"attributes,omitempty"`
}

FieldMetadata represents metadata about a table field

type FieldMetadataService added in v0.0.4

type FieldMetadataService struct {
	// contains filtered or unexported fields
}

FieldMetadataService handles loading and caching field metadata

func NewFieldMetadataService added in v0.0.4

func NewFieldMetadataService(client *servicenow.Client) *FieldMetadataService

NewFieldMetadataService creates a new field metadata service

func (*FieldMetadataService) GetFieldMetadata added in v0.0.4

func (fms *FieldMetadataService) GetFieldMetadata(tableName string) (*TableFieldMetadata, error)

GetFieldMetadata returns field metadata for a table, loading it if necessary

type FieldType added in v0.0.4

type FieldType string

FieldType represents the type of a field

const (
	FieldTypeString         FieldType = "string"
	FieldTypeInteger        FieldType = "integer"
	FieldTypeDecimal        FieldType = "decimal"
	FieldTypeBoolean        FieldType = "boolean"
	FieldTypeDateTime       FieldType = "glide_date_time"
	FieldTypeDate           FieldType = "glide_date"
	FieldTypeReference      FieldType = "reference"
	FieldTypeChoice         FieldType = "choice"
	FieldTypeJournal        FieldType = "journal"
	FieldTypeHTML           FieldType = "html"
	FieldTypeURL            FieldType = "url"
	FieldTypeEmail          FieldType = "email"
	FieldTypePassword       FieldType = "password"
	FieldTypeTranslatedText FieldType = "translated_text"
)

type FilterBrowserModel added in v0.0.4

type FilterBrowserModel struct {
	// contains filtered or unexported fields
}

FilterBrowserModel handles browsing and managing saved filters

func NewFilterBrowserModel added in v0.0.4

func NewFilterBrowserModel(filterManager *FilterManager) *FilterBrowserModel

NewFilterBrowserModel creates a new filter browser

func (*FilterBrowserModel) Init added in v0.0.4

func (m *FilterBrowserModel) Init() tea.Cmd

Init initializes the filter browser

func (*FilterBrowserModel) IsActive added in v0.0.4

func (m *FilterBrowserModel) IsActive() bool

IsActive returns whether the browser is active

func (*FilterBrowserModel) SetActive added in v0.0.4

func (m *FilterBrowserModel) SetActive(active bool)

SetActive sets the active state

func (*FilterBrowserModel) SetCurrentQuery added in v0.0.4

func (m *FilterBrowserModel) SetCurrentQuery(query string, conditions []QueryCondition)

SetCurrentQuery sets the current query for saving

func (*FilterBrowserModel) SetTableName added in v0.0.4

func (m *FilterBrowserModel) SetTableName(tableName string)

SetTableName sets the current table name for filtering

func (*FilterBrowserModel) Update added in v0.0.4

func (m *FilterBrowserModel) Update(msg tea.Msg) (*FilterBrowserModel, tea.Cmd)

Update handles filter browser updates

func (*FilterBrowserModel) View added in v0.0.4

func (m *FilterBrowserModel) View() string

View renders the filter browser

type FilterBrowserState added in v0.0.4

type FilterBrowserState int

FilterBrowserState represents the state of the filter browser

const (
	FilterBrowserStateMain FilterBrowserState = iota
	FilterBrowserStateSaved
	FilterBrowserStateHistory
	FilterBrowserStateFavorites
	FilterBrowserStateSearch
	FilterBrowserStateSave
	FilterBrowserStateEdit
)

type FilterHistory added in v0.0.4

type FilterHistory struct {
	TableName  string           `json:"table_name"`
	Query      string           `json:"query"`
	Conditions []QueryCondition `json:"conditions"`
	Timestamp  time.Time        `json:"timestamp"`
	Duration   time.Duration    `json:"duration,omitempty"`
	Results    int              `json:"results,omitempty"`
}

FilterHistory represents the filter usage history

type FilterManager added in v0.0.4

type FilterManager struct {
	// contains filtered or unexported fields
}

FilterManager handles saving, loading, and managing filters

func NewFilterManager added in v0.0.4

func NewFilterManager() (*FilterManager, error)

NewFilterManager creates a new filter manager

func (*FilterManager) AddToHistory added in v0.0.4

func (fm *FilterManager) AddToHistory(tableName, query string, conditions []QueryCondition, duration time.Duration, results int)

AddToHistory adds a filter execution to history

func (*FilterManager) ClearHistory added in v0.0.4

func (fm *FilterManager) ClearHistory() error

ClearHistory clears the filter history

func (*FilterManager) DeleteFilter added in v0.0.4

func (fm *FilterManager) DeleteFilter(id string) error

DeleteFilter deletes a filter

func (*FilterManager) ExportFilters added in v0.0.4

func (fm *FilterManager) ExportFilters(filename string) error

ExportFilters exports filters to a JSON file

func (*FilterManager) GetFavoriteFilters added in v0.0.4

func (fm *FilterManager) GetFavoriteFilters() []*SavedFilter

GetFavoriteFilters returns all favorite filters

func (*FilterManager) GetFilter added in v0.0.4

func (fm *FilterManager) GetFilter(id string) (*SavedFilter, bool)

GetFilter retrieves a filter by ID

func (*FilterManager) GetFiltersForTable added in v0.0.4

func (fm *FilterManager) GetFiltersForTable(tableName string) []*SavedFilter

GetFiltersForTable returns all filters for a specific table

func (*FilterManager) GetHistory added in v0.0.4

func (fm *FilterManager) GetHistory(tableName string, limit int) []*FilterHistory

GetHistory returns filter history, optionally filtered by table

func (*FilterManager) GetPopularQueries added in v0.0.4

func (fm *FilterManager) GetPopularQueries(tableName string, limit int) []string

GetPopularQueries returns the most frequently used queries

func (*FilterManager) GetRecentFilters added in v0.0.4

func (fm *FilterManager) GetRecentFilters(limit int) []*SavedFilter

GetRecentFilters returns recently used filters

func (*FilterManager) GetStats added in v0.0.4

func (fm *FilterManager) GetStats() map[string]interface{}

GetStats returns usage statistics

func (*FilterManager) ImportFilters added in v0.0.4

func (fm *FilterManager) ImportFilters(filename string) error

ImportFilters imports filters from a JSON file

func (*FilterManager) SaveFilter added in v0.0.4

func (fm *FilterManager) SaveFilter(name, description, tableName, query string, conditions []QueryCondition, isFavorite bool) (*SavedFilter, error)

SaveFilter saves a filter with the given name

func (*FilterManager) SearchFilters added in v0.0.4

func (fm *FilterManager) SearchFilters(query string) []*SavedFilter

SearchFilters searches filters by name, description, or tags

func (*FilterManager) UpdateFilter added in v0.0.4

func (fm *FilterManager) UpdateFilter(id, name, description string, isFavorite bool, tags []string) error

UpdateFilter updates an existing filter

func (*FilterManager) UseFilter added in v0.0.4

func (fm *FilterManager) UseFilter(id string) error

UseFilter records usage of a filter

type FilterSelectedMsg added in v0.0.4

type FilterSelectedMsg struct {
	Filter     *SavedFilter     `json:"filter,omitempty"`
	Query      string           `json:"query,omitempty"`
	Conditions []QueryCondition `json:"conditions,omitempty"`
}

FilterSelectedMsg is sent when a filter is selected

type LogicalOperator added in v0.0.4

type LogicalOperator string

LogicalOperator represents AND/OR logic between conditions

const (
	LogicalAnd LogicalOperator = "AND"
	LogicalOr  LogicalOperator = "OR"
)

type OperatorInfo added in v0.0.4

type OperatorInfo struct {
	Operator      query.Operator
	Label         string
	Description   string
	RequiresValue bool
	DateOnly      bool
}

OperatorInfo contains display information for operators

type QueryBuilderModel added in v0.0.4

type QueryBuilderModel struct {
	// contains filtered or unexported fields
}

QueryBuilderModel handles the interactive query building interface

func NewQueryBuilderModel added in v0.0.4

func NewQueryBuilderModel(client *servicenow.Client, tableMetadata *TableFieldMetadata) *QueryBuilderModel

NewQueryBuilderModel creates a new query builder

func (*QueryBuilderModel) BuildQuery added in v0.0.4

func (m *QueryBuilderModel) BuildQuery() string

BuildQuery builds the final ServiceNow query string

func (*QueryBuilderModel) GetConditions added in v0.0.4

func (m *QueryBuilderModel) GetConditions() []QueryCondition

GetConditions returns the current conditions

func (*QueryBuilderModel) Init added in v0.0.4

func (m *QueryBuilderModel) Init() tea.Cmd

Init initializes the query builder

func (*QueryBuilderModel) IsActive added in v0.0.4

func (m *QueryBuilderModel) IsActive() bool

IsActive returns whether the query builder is active

func (*QueryBuilderModel) SetActive added in v0.0.4

func (m *QueryBuilderModel) SetActive(active bool)

SetActive sets the active state of the query builder

func (*QueryBuilderModel) SetConditions added in v0.0.4

func (m *QueryBuilderModel) SetConditions(conditions []QueryCondition)

SetConditions sets the conditions (useful for loading saved queries)

func (*QueryBuilderModel) Update added in v0.0.4

func (m *QueryBuilderModel) Update(msg tea.Msg) (*QueryBuilderModel, tea.Cmd)

Update handles query builder updates

func (*QueryBuilderModel) View added in v0.0.4

func (m *QueryBuilderModel) View() string

View renders the query builder

type QueryBuilderState added in v0.0.4

type QueryBuilderState int

QueryBuilderState represents the current state of the query builder

const (
	QueryBuilderStateFieldSelection QueryBuilderState = iota
	QueryBuilderStateOperatorSelection
	QueryBuilderStateValueInput
	QueryBuilderStateChoiceSelection
	QueryBuilderStateReferenceSearch
	QueryBuilderStateDateRange
	QueryBuilderStateCalendar
	QueryBuilderStateDateRangePicker
	QueryBuilderStateLogicalOperator
	QueryBuilderStatePreview
)

type QueryCondition added in v0.0.4

type QueryCondition struct {
	Field     FieldMetadata   `json:"field"`
	Operator  query.Operator  `json:"operator"`
	Value     string          `json:"value"`
	StartDate *time.Time      `json:"start_date,omitempty"`
	EndDate   *time.Time      `json:"end_date,omitempty"`
	LogicalOp LogicalOperator `json:"logical_op,omitempty"` // AND/OR for connecting to next condition
}

QueryCondition represents a single query condition

type QueryValidator added in v0.0.4

type QueryValidator struct {
	// contains filtered or unexported fields
}

QueryValidator handles validation of ServiceNow queries

func NewQueryValidator added in v0.0.4

func NewQueryValidator(tableMetadata *TableFieldMetadata) *QueryValidator

NewQueryValidator creates a new query validator

func (*QueryValidator) ValidateCondition added in v0.0.4

func (v *QueryValidator) ValidateCondition(condition QueryCondition) []ValidationError

ValidateCondition validates a single query condition

func (*QueryValidator) ValidateQuery added in v0.0.4

func (v *QueryValidator) ValidateQuery(conditions []QueryCondition) ValidationResult

ValidateQuery validates a complete query built from conditions

func (*QueryValidator) ValidateRawQuery added in v0.0.4

func (v *QueryValidator) ValidateRawQuery(rawQuery string) ValidationResult

ValidateRawQuery validates a raw query string (for manual entry)

type SavedFilter added in v0.0.4

type SavedFilter struct {
	ID          string           `json:"id"`
	Name        string           `json:"name"`
	Description string           `json:"description,omitempty"`
	TableName   string           `json:"table_name"`
	Query       string           `json:"query"`
	Conditions  []QueryCondition `json:"conditions"`
	CreatedAt   time.Time        `json:"created_at"`
	LastUsed    time.Time        `json:"last_used"`
	UseCount    int              `json:"use_count"`
	IsFavorite  bool             `json:"is_favorite"`
	Tags        []string         `json:"tags,omitempty"`
}

SavedFilter represents a saved filter

type TableFieldMetadata added in v0.0.4

type TableFieldMetadata struct {
	TableName string          `json:"table_name"`
	Fields    []FieldMetadata `json:"fields"`
	LoadedAt  time.Time       `json:"loaded_at"`
}

TableFieldMetadata contains all field metadata for a table

func (*TableFieldMetadata) FindField added in v0.0.4

func (metadata *TableFieldMetadata) FindField(name string) *FieldMetadata

FindField finds a field by name

func (*TableFieldMetadata) GetChoiceFields added in v0.0.4

func (metadata *TableFieldMetadata) GetChoiceFields() []FieldMetadata

GetChoiceFields returns all choice fields

func (*TableFieldMetadata) GetDateTimeFields added in v0.0.4

func (metadata *TableFieldMetadata) GetDateTimeFields() []FieldMetadata

GetDateTimeFields returns all datetime and date fields

func (*TableFieldMetadata) GetDisplayFields added in v0.0.4

func (metadata *TableFieldMetadata) GetDisplayFields() []FieldMetadata

GetDisplayFields returns fields that are commonly displayed in lists

func (*TableFieldMetadata) GetFieldsByType added in v0.0.4

func (metadata *TableFieldMetadata) GetFieldsByType(fieldType FieldType) []FieldMetadata

GetFieldsByType returns fields of a specific type

func (*TableFieldMetadata) GetReferenceFields added in v0.0.4

func (metadata *TableFieldMetadata) GetReferenceFields() []FieldMetadata

GetReferenceFields returns all reference fields

func (*TableFieldMetadata) GetSearchableFields added in v0.0.4

func (metadata *TableFieldMetadata) GetSearchableFields() []FieldMetadata

GetSearchableFields returns fields that are good for text search

type ValidationError added in v0.0.4

type ValidationError struct {
	Field      string             `json:"field,omitempty"`
	Operator   string             `json:"operator,omitempty"`
	Value      string             `json:"value,omitempty"`
	Message    string             `json:"message"`
	Severity   ValidationSeverity `json:"severity"`
	Suggestion string             `json:"suggestion,omitempty"`
}

ValidationError represents a query validation error

type ValidationResult added in v0.0.4

type ValidationResult struct {
	IsValid bool              `json:"is_valid"`
	Errors  []ValidationError `json:"errors"`
	Query   string            `json:"query"`
}

ValidationResult contains the results of query validation

type ValidationSeverity added in v0.0.4

type ValidationSeverity string

ValidationSeverity indicates the severity of a validation issue

const (
	SeverityError   ValidationSeverity = "error"
	SeverityWarning ValidationSeverity = "warning"
	SeverityInfo    ValidationSeverity = "info"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL