xtable

package
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: Dec 10, 2024 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SortAscending  SortOrder = false
	SortDescending SortOrder = true
	SortString               = ""
	SortNumeric              = 0
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Column

type Column struct {
	Title string
	Width int
}

Column defines the table structure.

type KeyMap

type KeyMap struct {
	LineUp       key.Binding
	LineDown     key.Binding
	PageUp       key.Binding
	PageDown     key.Binding
	HalfPageUp   key.Binding
	HalfPageDown key.Binding
	GotoTop      key.Binding
	GotoBottom   key.Binding
}

KeyMap defines keybindings. It satisfies to the help.KeyMap interface, which is used to render the help menu.

func DefaultKeyMap

func DefaultKeyMap() KeyMap

DefaultKeyMap returns a default set of keybindings.

func (KeyMap) FullHelp

func (km KeyMap) FullHelp() [][]key.Binding

FullHelp implements the KeyMap interface.

func (KeyMap) ShortHelp

func (km KeyMap) ShortHelp() []key.Binding

ShortHelp implements the KeyMap interface.

type Metadata added in v0.2.0

type Metadata interface {

	// GetHashCode returns a unique hash for the row metadata.
	// It should remain constant for the lifetime of the table.
	// You can use something that implements the Hash64 interface to generate this
	GetHashCode() uint64
}

Metadata must be implemented by any metadata associated with a table row, usually the source data associated with the row.

type Model

type Model struct {
	KeyMap KeyMap
	Help   help.Model
	// contains filtered or unexported fields
}

Model defines a state for the table widget.

func New

func New(opts ...Option) Model

New creates a new model for the table widget.

func (*Model) Blur

func (m *Model) Blur()

Blur blurs the table, preventing selection or movement.

func (Model) Columns

func (m Model) Columns() []Column

Columns returns the current columns.

func (Model) Cursor

func (m Model) Cursor() int

Cursor returns the index of the selected row.

func (*Model) Find

func (m *Model) Find(text string, startRow int) bool

Find performs a free text search of the table data for the given string, beginning from startRow+1 or cursor+1 whichever is sooner, to the end of the table. Cursor is moved to the first match. If no match is found, false is returned.

func (*Model) Focus

func (m *Model) Focus()

Focus focuses the table, allowing the user to move around the rows and interact.

func (Model) Focused

func (m Model) Focused() bool

Focused returns the focus state of the table.

func (*Model) FromValues

func (m *Model) FromValues(value, separator string)

FromValues create the table rows from a simple string. It uses `\n` by default for getting all the rows and the given separator for the fields on each row.

func (Model) GetRow added in v0.2.0

func (m Model) GetRow(obj Metadata) int

GetRow returns the index of the row containing the given object as metadata. If the row is not found, -1 is returned.

func (Model) GetRowByHash added in v0.2.0

func (m Model) GetRowByHash(hashCode uint64) int

GetRowByHash returns the index of the row identified by the given hash value. If the row is not found, -1 is returned.

func (*Model) GotoBottom

func (m *Model) GotoBottom()

GotoBottom moves the selection to the last row.

func (*Model) GotoTop

func (m *Model) GotoTop()

GotoTop moves the selection to the first row.

func (Model) Height

func (m Model) Height() int

Height returns the viewport height of the table.

func (Model) HelpView

func (m Model) HelpView() string

HelpView is a helper method for rendering the help menu from the keymap. Note that this view is not rendered by default and you must call it manually in your application, where applicable.

func (*Model) MoveDown

func (m *Model) MoveDown(n int)

MoveDown moves the selection down by any number of rows. It can not go below the last row.

func (*Model) MoveUp

func (m *Model) MoveUp(n int)

MoveUp moves the selection up by any number of rows. It can not go above the first row.

func (*Model) RemoveRow added in v0.2.0

func (m *Model) RemoveRow(obj Metadata) bool

RemoveRow removes the row containing the given object as metadata

func (*Model) RemoveRowByHash added in v0.2.0

func (m *Model) RemoveRowByHash(hashCode uint64) bool

RemoveRowByHash removes the row identified by the metadata hash value. If no rows remain, this returns false.

func (*Model) RemoveRowByIndex added in v0.2.0

func (m *Model) RemoveRowByIndex(index int) bool

RemoveRowByIndex removes the row at the given index. If no rows remain, this returns false.

func (*Model) RemoveSelectedRow

func (m *Model) RemoveSelectedRow() bool

RemoveSelectedRow removes the currently selected row. If no rows remain, this returns false.

func (*Model) RenumberRows

func (m *Model) RenumberRows()

RenumberRows renumbers the row numbers in column 0, if row numbers were requested in the constructor options.

func (Model) Rows

func (m Model) Rows() []Row

Rows returns the current rows.

func (Model) SelectedRow

func (m Model) SelectedRow() Row

SelectedRow returns the selected row. You can cast it to your own implementation.

func (Model) SelectedRowYOffset

func (m Model) SelectedRowYOffset() int

SelectedRowYOffset returns the offset in console lines of the selected row from the top of the viewport. If the top line is selected, this value is zero; if the second line is selected, the value is 1 etc.

func (*Model) SetColumns

func (m *Model) SetColumns(c []Column)

SetColumns sets a new columns state.

func (*Model) SetCursor

func (m *Model) SetCursor(n int)

SetCursor sets the cursor position in the table.

func (*Model) SetHeight

func (m *Model) SetHeight(h int)

SetHeight sets the height of the viewport of the table.

func (*Model) SetRows

func (m *Model) SetRows(r []Row)

SetRows sets a new rows state.

func (*Model) SetStyles

func (m *Model) SetStyles(s Styles)

SetStyles sets the table styles.

func (*Model) SetWidth

func (m *Model) SetWidth(w int)

SetWidth sets the width of the viewport of the table.

func (*Model) SortBy

func (m *Model) SortBy(index int, order SortOrder, typeHint interface{})

SortBy sorts the table by column identified by 'index' and in the given order.

typeHint hints what data type should be assumed for the column. Pass empty string to string-sort, 0 to numerically sort (all numeric types). If the data cannot be cast to a numeric type when requested, then it will string sort the displayed data.

func (Model) Update

func (m Model) Update(msg tea.Msg) (Model, tea.Cmd)

Update is the Bubble Tea update loop.

func (*Model) UpdateViewport

func (m *Model) UpdateViewport()

UpdateViewport updates the list content based on the previously defined columns and rows.

func (Model) View

func (m Model) View() string

View renders the component.

func (Model) Width

func (m Model) Width() int

Width returns the viewport width of the table.

type Option

type Option func(*Model)

Option is used to set options in New. For example:

table := New(WithColumns([]Column{{Title: "ID", Width: 10}}))

func WithColumns

func WithColumns(cols []Column) Option

WithColumns sets the table columns (headers).

func WithFocused

func WithFocused(f bool) Option

WithFocused sets the focus state of the table.

func WithHeight

func WithHeight(h int) Option

WithHeight sets the height of the table.

func WithKeyMap

func WithKeyMap(km KeyMap) Option

WithKeyMap sets the key map.

func WithRowNumbers

func WithRowNumbers() Option

WithRowNumbers insetrs a column at postion zero containing row numbers.

func WithRows

func WithRows(rows []Row) Option

WithRows sets the table rows (data).

func WithStructData added in v0.2.0

func WithStructData(data interface{}, fields ...string) Option

WithStructData creates a table by reflecting a slice of structs implementing the Metadata interface.

  • Column names are derived from struct field names or if present, the value of struct tag "xtable".
  • Row data is converted to strings from the data in the slice.
  • Row Metadata field is set to the values in the slice.
  • All public struct fields are included, unless constrained by field names listed in `fields` argument.

Panics if there is any error parsing the data from the slice, such as

  • data is not a slice of structs
  • slice element does not implement Metadata

func WithStyles

func WithStyles(s Styles) Option

WithStyles sets the table styles.

func WithWidth

func WithWidth(w int) Option

WithWidth sets the width of the table.

type Row

type Row struct {
	Data     []string
	Metadata Metadata
}

Row represents one line in the table.

type SortOrder

type SortOrder bool

SortOrder defines the sort direction for the SortBy method.

type Styles

type Styles struct {
	Header   lipgloss.Style
	Cell     lipgloss.Style
	Selected lipgloss.Style
}

Styles contains style definitions for this list component. By default, these values are generated by DefaultStyles.

func DefaultStyles

func DefaultStyles() Styles

DefaultStyles returns a set of default style definitions for this table.

Jump to

Keyboard shortcuts

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