table

package
v0.1.11 Latest Latest
Warning

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

Go to latest
Published: May 13, 2024 License: MPL-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	IDColumn = Column{
		Key:   "id",
		Title: "ID", Width: resource.IDEncodedMaxLen,
		FlexFactor: 1,
	}
	ModuleColumn = Column{
		Key:            "module",
		Title:          "MODULE",
		TruncationFunc: TruncateLeft,
		FlexFactor:     3,
	}
	WorkspaceColumn = Column{
		Key:        "workspace",
		Title:      "WORKSPACE",
		FlexFactor: 2,
	}
	RunColumn = Column{
		Key:        "run",
		Title:      "RUN",
		Width:      resource.IDEncodedMaxLen,
		FlexFactor: 1,
	}
	TaskColumn = Column{
		Key:        "task",
		Title:      "TASK",
		Width:      resource.IDEncodedMaxLen,
		FlexFactor: 1,
	}
	RunStatusColumn = Column{
		Key:   "run_status",
		Title: "STATUS",
		Width: run.MaxStatusLen,
	}
	RunChangesColumn = Column{
		Key:        "run_changes",
		Title:      "CHANGES",
		FlexFactor: 1,
	}
	ResourceCountColumn = Column{
		Key:        "resource_count",
		Title:      "RESOURCES",
		Width:      len("RESOURCES"),
		FlexFactor: 1,
	}
)

Functions

func TruncateLeft

func TruncateLeft(s string, w int, prefix string) string

func TruncateRight

func TruncateRight(s string, w int, tail string) string

Types

type BulkInsertMsg

type BulkInsertMsg[T any] []T

BulkInsertMsg performs a bulk insertion of entities into a table

type Column

type Column struct {
	Key ColumnKey
	// TODO: Default to upper case of key
	Title          string
	Width          int
	FlexFactor     int
	TruncationFunc func(s string, w int, tail string) string
}

Column defines the table structure.

type ColumnKey

type ColumnKey string

type Model

type Model[K comparable, V any] struct {
	Selected map[K]V
	// contains filtered or unexported fields
}

Model defines a state for the table widget.

func New

func New[K comparable, V any](columns []Column, fn RowRenderer[V], width, height int) Model[K, V]

New creates a new model for the table widget.

func (*Model[K, V]) Blur

func (m *Model[K, V]) Blur()

Blur blurs the table, preventing selection or movement.

func (Model[K, V]) Cursor

func (m Model[K, V]) Cursor() int

Cursor returns the index of the highlighted row.

func (*Model[K, V]) DeselectAll

func (m *Model[K, V]) DeselectAll()

DeselectAll de-selects any rows that are currently selected

func (*Model[K, V]) Focus

func (m *Model[K, V]) Focus()

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

func (Model[K, V]) Focused

func (m Model[K, V]) Focused() bool

Focused returns the focus state of the table.

func (*Model[K, V]) GotoBottom

func (m *Model[K, V]) GotoBottom()

GotoBottom moves the highlightion to the last row.

func (*Model[K, V]) GotoTop

func (m *Model[K, V]) GotoTop()

GotoTop moves the highlightion to the first row.

func (Model[K, V]) Height

func (m Model[K, V]) Height() int

Height returns the viewport height of the table.

func (Model[K, V]) Highlighted

func (m Model[K, V]) Highlighted() (Row[K, V], bool)

Highlighted returns the currently highlighted entity.

TODO: This is identical to currentRow above; remove.

func (Model[K, V]) HighlightedKey

func (m Model[K, V]) HighlightedKey() (K, bool)

Highlighted returns the currently highlighted entity key.

TODO: rename currentRowKey or currentKey

func (Model[K, V]) HighlightedOrSelected

func (m Model[K, V]) HighlightedOrSelected() []Row[K, V]

HighlightedOrSelected returns either the selected entities, if there are no selections, the currently highlighted entity.

func (Model[K, V]) HighlightedOrSelectedKeys

func (m Model[K, V]) HighlightedOrSelectedKeys() []K

func (Model[K, V]) Items

func (m Model[K, V]) Items() map[K]V

Items returns the current items. Note this is the number of items prior to any filtering.

func (*Model[K, V]) MoveDown

func (m *Model[K, V]) MoveDown(n int)

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

func (*Model[K, V]) MoveUp

func (m *Model[K, V]) MoveUp(n int)

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

func (*Model[K, V]) SelectRange added in v0.1.8

func (m *Model[K, V]) SelectRange()

SelectRange selects a range of rows. If the current row is *below* a selected row then rows between them are selected, including the current row. Otherwise, if the current row is *above* a selected row then rows between them are selected, including the current row. If there are no selected rows then no action is taken.

func (*Model[K, V]) SetColumns

func (m *Model[K, V]) SetColumns(c []Column)

SetColumns sets a new columns state.

func (*Model[K, V]) SetCursor

func (m *Model[K, V]) SetCursor(n int)

SetCursor sets the cursor position in the table.

func (*Model[K, V]) SetItems

func (m *Model[K, V]) SetItems(items map[K]V)

SetItems sets new items on the table, overwriting existing items.

func (*Model[K, V]) SetStyles

func (m *Model[K, V]) SetStyles(s Styles)

SetStyles sets the table styles.

func (*Model[K, V]) ToggleSelectAll

func (m *Model[K, V]) ToggleSelectAll()

ToggleSelectAll toggles the selection of all rows.

func (*Model[K, V]) ToggleSelection

func (m *Model[K, V]) ToggleSelection()

ToggleSelection toggles the selection of the currently highlighted row.

TODO: rename 'highlighted' to current

func (*Model[K, V]) ToggleSelectionByKey

func (m *Model[K, V]) ToggleSelectionByKey(key K)

ToggleSelectionByKey toggles the selection of the row with the given key. If the key does not exist no action is taken.

func (Model[K, V]) TotalString added in v0.1.9

func (m Model[K, V]) TotalString() string

TotalString returns a stringified representation of the total number of items in the table. If the table is filtered it is further broken down into number of filtered items as well as total items, formatted as "<filtered>/<total>".

func (Model[K, V]) Update

func (m Model[K, V]) Update(msg tea.Msg) (Model[K, V], tea.Cmd)

Update is the Bubble Tea update loop.

func (*Model[K, V]) UpdateViewport

func (m *Model[K, V]) UpdateViewport()

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

func (Model[K, V]) View

func (m Model[K, V]) View() string

View renders the component.

func (Model[K, V]) Width

func (m Model[K, V]) Width() int

Width returns the viewport width of the table.

func (Model[K, V]) WithSelectable

func (m Model[K, V]) WithSelectable(s bool) Model[K, V]

WithSelectable sets whether rows are selectable.

func (Model[K, V]) WithSortFunc

func (m Model[K, V]) WithSortFunc(sortFunc func(V, V) int) Model[K, V]

WithSortFunc configures the table to sort rows using the given func.

type RenderedRow

type RenderedRow map[ColumnKey]string

RenderedRow provides the rendered string for each column in a row.

type Resource

type Resource[K resource.ID, V ResourceValue] struct {
	Model[K, V]
	// contains filtered or unexported fields
}

Resource is a wrapper of table.Model specifically for use with pug resources.

func NewResource

func NewResource[K resource.ID, V ResourceValue](opts ResourceOptions[V]) Resource[K, V]

NewResource creates a new resource table

func (*Resource[K, V]) Prune added in v0.1.4

func (m *Resource[K, V]) Prune(fn func(value V) (resource.ID, error)) ([]resource.ID, error)

Prune passes each value from the selected rows (or if there are no selections, from the highlighted row) to the provided func. If the func returns an error the row is de-selected (or if there are no selections, then an error is returned). The resulting IDs from the provided func are returned. If all selections are de-selected then an error is returned.

func (Resource[K, V]) Update

func (m Resource[K, V]) Update(msg tea.Msg) (Resource[K, V], tea.Cmd)

type ResourceOptions

type ResourceOptions[V ResourceValue] struct {
	Columns       []Column
	Renderer      RowRenderer[V]
	Width, Height int
	Parent        resource.Resource
	SortFunc      SortFunc[V]
}

type ResourceValue

type ResourceValue interface {
	HasAncestor(id resource.ID) bool
	RowKey() resource.ID
}

type Row

type Row[K comparable, V any] struct {
	Key   K
	Value V
}

type RowRenderer

type RowRenderer[V any] func(V) RenderedRow

type SortFunc

type SortFunc[V any] func(V, V) int

type Styles

type Styles struct {
	Header      lipgloss.Style
	Highlighted 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.

type TruncationFunc

type TruncationFunc func(s string, w int, tailOrPrefix string) string

Jump to

Keyboard shortcuts

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