feat: Started adding a tui chunk visualizer
This commit is contained in:
		
							
								
								
									
										13
									
								
								visualization/visualize.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								visualization/visualize.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
package visualization
 | 
			
		||||
 | 
			
		||||
import "github.com/spf13/cobra"
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	VisualizeCommand.AddCommand(VisualizeChunkCommand)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var VisualizeCommand = &cobra.Command{
 | 
			
		||||
	Use:     "visualize",
 | 
			
		||||
	Aliases: []string{"vis", "show"},
 | 
			
		||||
	Short:   "Visualize part of the data spatially",
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										81
									
								
								visualization/visualize_chunk.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								visualization/visualize_chunk.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
			
		||||
package visualization
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	tea "github.com/charmbracelet/bubbletea"
 | 
			
		||||
	"github.com/charmbracelet/lipgloss"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	modelStyle = lipgloss.NewStyle().
 | 
			
		||||
			Width(15).
 | 
			
		||||
			Height(5).
 | 
			
		||||
			Align(lipgloss.Center, lipgloss.Center).
 | 
			
		||||
			BorderStyle(lipgloss.HiddenBorder())
 | 
			
		||||
	focusedModelStyle = lipgloss.NewStyle().
 | 
			
		||||
				Width(15).
 | 
			
		||||
				Height(5).
 | 
			
		||||
				Align(lipgloss.Center, lipgloss.Center).
 | 
			
		||||
				BorderStyle(lipgloss.NormalBorder()).
 | 
			
		||||
				BorderForeground(lipgloss.Color("69"))
 | 
			
		||||
	spinnerStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("69"))
 | 
			
		||||
	helpStyle    = lipgloss.NewStyle().Foreground(lipgloss.Color("241"))
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type chunkViewerModel struct {
 | 
			
		||||
	index int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m chunkViewerModel) Init() tea.Cmd {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m chunkViewerModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 | 
			
		||||
	switch msg := msg.(type) {
 | 
			
		||||
	case tea.KeyMsg:
 | 
			
		||||
		switch msg.String() {
 | 
			
		||||
		case "ctrl+c", "q":
 | 
			
		||||
			return m, tea.Quit
 | 
			
		||||
		}
 | 
			
		||||
		switch msg.Type {
 | 
			
		||||
		case tea.KeyRight:
 | 
			
		||||
			// pass
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return m, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m chunkViewerModel) View() string {
 | 
			
		||||
	var s strings.Builder
 | 
			
		||||
	if m.index == 0 {
 | 
			
		||||
		s.WriteString(lipgloss.JoinHorizontal(lipgloss.Top, focusedModelStyle.Render(fmt.Sprintf("%4s", "No")), modelStyle.Render("NO")))
 | 
			
		||||
	} else {
 | 
			
		||||
		s.WriteString(lipgloss.JoinHorizontal(lipgloss.Top, modelStyle.Render(fmt.Sprintf("%4s", "Yes")), focusedModelStyle.Render("YES")))
 | 
			
		||||
	}
 | 
			
		||||
	return s.String()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func initChunkViewer() chunkViewerModel {
 | 
			
		||||
	var model chunkViewerModel
 | 
			
		||||
 | 
			
		||||
	return model
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var VisualizeChunkCommand = &cobra.Command{
 | 
			
		||||
	Use:   "chunk",
 | 
			
		||||
	Short: "Visualize a single chunk",
 | 
			
		||||
	Args:  cobra.ExactArgs(1),
 | 
			
		||||
	RunE: func(cmd *cobra.Command, args []string) error {
 | 
			
		||||
 | 
			
		||||
		prog := tea.NewProgram(initChunkViewer())
 | 
			
		||||
 | 
			
		||||
		if _, err := prog.Run(); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return nil
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user