ui

package
v0.0.0-...-3382da6 Latest Latest
Warning

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

Go to latest
Published: Nov 6, 2021 License: AGPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AlbumFormSession

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

func NewCreateAlbumForm

func NewCreateAlbumForm(actionsPort CreateAlbumPort, terminalPort PrintReadTerminalPort) *AlbumFormSession

func (*AlbumFormSession) AlbumForm

func (a *AlbumFormSession) AlbumForm(record Record) (bool, error)

type BackupSuggestionPort

type BackupSuggestionPort interface {
	BackupSuggestion(record *SuggestionRecord, existing *ExistingRecord, listener InteractiveRendererPort) error
}

type CreateAlbumPort

type CreateAlbumPort interface {
	Create(createRequest RecordCreation) error
}

type DeleteAlbumPort

type DeleteAlbumPort interface {
	DeleteAlbum(folderName string) error
}

type DeleteSession

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

func NewDeleteAlbumForm

func NewDeleteAlbumForm(actionPort DeleteAlbumPort, terminalPort PrintReadTerminalPort) *DeleteSession

func (*DeleteSession) DeleteAlbum

func (s *DeleteSession) DeleteAlbum(record Record) (bool, error)

type EditDateSession

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

func NewEditAlbumDateForm

func NewEditAlbumDateForm(actionPort UpdateAlbumPort, terminalPort PrintReadTerminalPort) *EditDateSession

func (*EditDateSession) EditAlbumDates

func (s *EditDateSession) EditAlbumDates(record Record) error

type ExistingRecord

type ExistingRecord struct {
	FolderName    string // FolderName is a suggested name when Suggestion is true, not a unique key
	Name          string
	Start, End    time.Time
	Count         uint
	ActivePeriods []Period
}

ExistingRecord is an album already existing

type ExistingRecordRepositoryPort

type ExistingRecordRepositoryPort interface {
	FindExistingRecords() ([]*ExistingRecord, error)
}

ExistingRecordRepositoryPort is the port providing data to the UI

type FormFmtAdapter

type FormFmtAdapter struct{}

FormFmtAdapter is a simple adapter to use fmt package to print and read to standard outputs

func (FormFmtAdapter) Print

func (f FormFmtAdapter) Print(question string)

func (FormFmtAdapter) ReadAnswer

func (f FormFmtAdapter) ReadAnswer() (string, error)

type FormUseCase

type FormUseCase struct {
	TerminalPort PrintReadTerminalPort
}

func NewSimpleForm

func NewSimpleForm() *FormUseCase

NewSimpleForm creates a simple form using standard output and input

func (*FormUseCase) ReadBool

func (f *FormUseCase) ReadBool(label string, notation string) (bool, bool)

ReadBool reads a boolean, notation can be Y/n if (_, false) is interpreted as positive

func (*FormUseCase) ReadDate

func (f *FormUseCase) ReadDate(label string, defaultValue time.Time) (time.Time, bool)

ReadDate reads a date from standard input, return true if reading was a success.

func (*FormUseCase) ReadString

func (f *FormUseCase) ReadString(label string, defaultValue string) (string, bool)

ReadString read a string from the standard input

type InteractiveActionsPort

InteractiveActionsPort are actions on 'SuggestionRecord.Suggestion = false' records

type InteractiveRendererPort

type InteractiveRendererPort interface {
	PrintReadTerminalPort
	Render(state *InteractiveViewState) error
	Height() int
	// TakeOverScreen is clearing the screen and let another object handling the rendering
	TakeOverScreen()
}

InteractiveRendererPort is handling the rendering of an interactive session

type InteractiveSession

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

func NewInteractiveSession

func NewInteractiveSession(actions InteractiveActionsPort, existingRepository ExistingRecordRepositoryPort, suggestionRepository SuggestionRecordRepositoryPort) *InteractiveSession

func (*InteractiveSession) BackupSelected

func (i *InteractiveSession) BackupSelected()

func (*InteractiveSession) CreateFromSelectedSuggestion

func (i *InteractiveSession) CreateFromSelectedSuggestion()

func (*InteractiveSession) CreateNew

func (i *InteractiveSession) CreateNew()

func (*InteractiveSession) DeleteSelectedAlbum

func (i *InteractiveSession) DeleteSelectedAlbum()

func (*InteractiveSession) EditSelectedAlbumDates

func (i *InteractiveSession) EditSelectedAlbumDates()

func (*InteractiveSession) EditSelectedAlbumName

func (i *InteractiveSession) EditSelectedAlbumName()

func (*InteractiveSession) HasError

func (i *InteractiveSession) HasError() bool

func (*InteractiveSession) MoveDown

func (i *InteractiveSession) MoveDown()

func (*InteractiveSession) MoveUp

func (i *InteractiveSession) MoveUp()

func (*InteractiveSession) NextPage

func (i *InteractiveSession) NextPage()

func (*InteractiveSession) PreviousPage

func (i *InteractiveSession) PreviousPage()

func (*InteractiveSession) Refresh

func (i *InteractiveSession) Refresh()

Refresh updates the screen

func (*InteractiveSession) Start

func (i *InteractiveSession) Start() error

type InteractiveViewState

type InteractiveViewState struct {
	RecordsState
	Actions []string
}

type NoopRepository

type NoopRepository struct{}

NoopRepository is only used for Noop version

func (NoopRepository) Count

func (r NoopRepository) Count() int

func (NoopRepository) FindSuggestionRecords

func (r NoopRepository) FindSuggestionRecords() []*SuggestionRecord

func (NoopRepository) Rejects

func (r NoopRepository) Rejects() int

type Period

type Period struct {
	Start, End time.Time
}

type PrintReadTerminalPort

type PrintReadTerminalPort interface {
	Print(question string)
	ReadAnswer() (string, error)
}

PrintReadTerminalPort is a port to print questions (simple strings), and read answers (strings as well)

type Record

type Record struct {
	Indent               int    // Indent is to represent the list as a tree
	Suggestion           bool   // Suggestion is TRUE when it's a suggestion, not an existing album.
	FolderName           string // FolderName is a suggested name when Suggestion is true, not a unique key
	Name                 string
	Start, End           time.Time
	Count                uint              // Count is the number of files relevant to the context (if in a tree branch)
	TotalCount           uint              // TotalCount is the total number of file
	ParentExistingRecord *ExistingRecord   // ParentExistingRecord is the album if the suggestion is a child (used to limit the backup to a single album)
	SuggestionRecord     *SuggestionRecord // SuggestionRecord is the original when Suggestion is true (used for backup)
}

type RecordCreation

type RecordCreation struct {
	FolderName string // FolderName might be empty to be generated
	Name       string
	Start, End time.Time
}

RecordCreation contains parameter to create a new album.

type RecordsState

type RecordsState struct {
	Records      []*Record
	Rejected     int // Rejected is the number of file that has been rejected (ignored)
	Selected     int // Selected can be -1 to not highlight any line
	PageSize     int // PageSize can be 0 to disable pagination
	FirstElement int // FirstElement is the index of the first shown record ; default (or pagination disabled): 0
}

type RenameAlbumPort

type RenameAlbumPort interface {
	RenameAlbum(folderName, newName string, renameFolder bool) error
}

type RenameSession

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

func NewRenameAlbumForm

func NewRenameAlbumForm(actionPort RenameAlbumPort, terminalPort PrintReadTerminalPort) *RenameSession

func (*RenameSession) EditAlbumName

func (s *RenameSession) EditAlbumName(record Record) error

type StaticSession

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

func NewSimpleSession

func NewSimpleSession(existingRepository ExistingRecordRepositoryPort, suggestionRepository SuggestionRecordRepositoryPort) *StaticSession

func (*StaticSession) Render

func (s *StaticSession) Render() error

type SuggestionRecord

type SuggestionRecord struct {
	FolderName   string // FolderName is a suggested name when Suggestion is true, not a unique key
	Name         string
	Start, End   time.Time
	Distribution map[string]uint // Distribution is the number of media found for each day (format YYYY-MM-DD)
	Original     interface{}     // Original is used by adapter for targeted backup
}

SuggestionRecord is a record that will be displayed and handled in the UI. It can be an existing catalog.Album or a backup.FoundAlbum

type SuggestionRecordRepositoryPort

type SuggestionRecordRepositoryPort interface {
	FindSuggestionRecords() []*SuggestionRecord
	Count() int
	Rejects() int
}

SuggestionRecordRepositoryPort is the port providing data to the UI

func NewNoopRepository

func NewNoopRepository() SuggestionRecordRepositoryPort

NewNoopRepository implements both SuggestionRecordRepositoryPort and ExistingRecordRepositoryPort but won't returns anything.

type UpdateAlbumPort

type UpdateAlbumPort interface {
	UpdateAlbum(folderName string, start, end time.Time) error
}

type UserInputPort

type UserInputPort interface {
	StartListening()
}

UserInputPort listens user input (keyboard) to interact with the session

Jump to

Keyboard shortcuts

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