Skip to content

Commit 15c54d0

Browse files
authored
refactor to decouple models and datastreaming functions (#61)
* refactor to decouple models and datastreaming functions Signed-off-by: everettraven <[email protected]> * fix linter Signed-off-by: everettraven <[email protected]> --------- Signed-off-by: everettraven <[email protected]>
1 parent 58033a1 commit 15c54d0

25 files changed

+532
-418
lines changed

go.mod

+10-10
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ go 1.21
55
require (
66
github.com/calyptia/go-bubble-table v0.2.1
77
github.com/charmbracelet/bubbles v0.16.1
8-
github.com/charmbracelet/bubbletea v0.24.2
9-
github.com/charmbracelet/lipgloss v0.7.1
8+
github.com/charmbracelet/bubbletea v0.26.1
9+
github.com/charmbracelet/lipgloss v0.10.0
1010
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be
1111
github.com/sahilm/fuzzy v0.1.0
1212
github.com/spf13/cobra v1.7.0
@@ -22,6 +22,7 @@ require (
2222
require (
2323
github.com/atotto/clipboard v0.1.4 // indirect
2424
github.com/dlclark/regexp2 v1.4.0 // indirect
25+
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
2526
github.com/pmezard/go-difflib v1.0.0 // indirect
2627
github.com/tidwall/match v1.1.1 // indirect
2728
github.com/tidwall/pretty v1.2.0 // indirect
@@ -30,7 +31,6 @@ require (
3031
require (
3132
github.com/alecthomas/chroma v0.10.0
3233
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
33-
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
3434
github.com/davecgh/go-spew v1.1.1 // indirect
3535
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
3636
github.com/go-logr/logr v1.2.4 // indirect
@@ -53,21 +53,21 @@ require (
5353
github.com/mailru/easyjson v0.7.7 // indirect
5454
github.com/mattn/go-isatty v0.0.18 // indirect
5555
github.com/mattn/go-localereader v0.0.1 // indirect
56-
github.com/mattn/go-runewidth v0.0.14 // indirect
56+
github.com/mattn/go-runewidth v0.0.15 // indirect
5757
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
5858
github.com/modern-go/reflect2 v1.0.2 // indirect
59-
github.com/muesli/ansi v0.0.0-20211031195517-c9f0611b6c70 // indirect
59+
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
6060
github.com/muesli/cancelreader v0.2.2 // indirect
6161
github.com/muesli/reflow v0.3.0
62-
github.com/muesli/termenv v0.15.1 // indirect
62+
github.com/muesli/termenv v0.15.2 // indirect
6363
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
64-
github.com/rivo/uniseg v0.2.0 // indirect
64+
github.com/rivo/uniseg v0.4.7 // indirect
6565
github.com/spf13/pflag v1.0.5 // indirect
6666
golang.org/x/net v0.13.0 // indirect
6767
golang.org/x/oauth2 v0.8.0 // indirect
68-
golang.org/x/sync v0.2.0 // indirect
69-
golang.org/x/sys v0.11.0 // indirect
70-
golang.org/x/term v0.10.0 // indirect
68+
golang.org/x/sync v0.7.0 // indirect
69+
golang.org/x/sys v0.19.0 // indirect
70+
golang.org/x/term v0.19.0 // indirect
7171
golang.org/x/text v0.11.0 // indirect
7272
golang.org/x/time v0.3.0 // indirect
7373
google.golang.org/appengine v1.6.7 // indirect

go.sum

+21-20
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@ github.com/calyptia/go-bubble-table v0.2.1 h1:NWcVRyGCLuP7QIA29uUFSY+IjmWcmUWHjy
88
github.com/calyptia/go-bubble-table v0.2.1/go.mod h1:gJvzUOUzfQeA9JmgLumyJYWJMtuRQ7WxxTwc9tjEiGw=
99
github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY=
1010
github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc=
11-
github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY=
12-
github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg=
13-
github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E=
14-
github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c=
11+
github.com/charmbracelet/bubbletea v0.26.1 h1:xujcQeF73rh4jwu3+zhfQsvV18x+7zIjlw7/CYbzGJ0=
12+
github.com/charmbracelet/bubbletea v0.26.1/go.mod h1:FzKr7sKoO8iFVcdIBM9J0sJOcQv5nDQaYwsee3kpbgo=
13+
github.com/charmbracelet/lipgloss v0.10.0 h1:KWeXFSexGcfahHX+54URiZGkBFazf70JNMtwg/AFW3s=
14+
github.com/charmbracelet/lipgloss v0.10.0/go.mod h1:Wig9DSfvANsxqkRsqj6x87irdy123SR4dOXlKa91ciE=
1515
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ=
1616
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w=
17-
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY=
18-
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
1917
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
2018
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
2119
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -25,6 +23,8 @@ github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E
2523
github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
2624
github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE=
2725
github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
26+
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
27+
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
2828
github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
2929
github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
3030
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
@@ -93,21 +93,21 @@ github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D
9393
github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
9494
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
9595
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
96-
github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
97-
github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
96+
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
97+
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
9898
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
9999
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
100100
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
101101
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
102102
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
103-
github.com/muesli/ansi v0.0.0-20211031195517-c9f0611b6c70 h1:kMlmsLSbjkikxQJ1IPwaM+7LJ9ltFu/fi8CRzvSnQmA=
104-
github.com/muesli/ansi v0.0.0-20211031195517-c9f0611b6c70/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho=
103+
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
104+
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
105105
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
106106
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
107107
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
108108
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
109-
github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs=
110-
github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ=
109+
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
110+
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
111111
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
112112
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
113113
github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU=
@@ -119,8 +119,9 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
119119
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
120120
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
121121
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
122-
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
123122
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
123+
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
124+
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
124125
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
125126
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
126127
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
@@ -169,20 +170,20 @@ golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE
169170
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
170171
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
171172
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
172-
golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI=
173-
golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
173+
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
174+
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
174175
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
175176
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
176177
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
177178
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
178179
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
179180
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
180-
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
181+
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
181182
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
182-
golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
183-
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
184-
golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c=
185-
golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
183+
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
184+
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
185+
golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
186+
golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
186187
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
187188
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
188189
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=

internal/cli/root.go

+20-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import (
1111
"path/filepath"
1212

1313
tea "github.com/charmbracelet/bubbletea"
14-
"github.com/everettraven/buoy/pkg/charm/models"
14+
"github.com/everettraven/buoy/pkg/charm/models/dashboard"
15+
"github.com/everettraven/buoy/pkg/charm/models/tabs"
1516
"github.com/everettraven/buoy/pkg/charm/styles"
1617
"github.com/everettraven/buoy/pkg/factories/datastream"
1718
"github.com/everettraven/buoy/pkg/factories/panel"
@@ -103,14 +104,31 @@ func run(path string, themePath string) error {
103104
if err != nil {
104105
if errSetter, ok := panel.(ErrorSetter); ok {
105106
errSetter.SetError(err)
107+
continue
106108
} else {
107109
log.Fatalf("getting datastream for model: %s", err)
108110
}
109111
}
112+
if dataStream == nil {
113+
log.Printf("nil datastream returned for panel (%T)", panel)
114+
continue
115+
}
116+
110117
go dataStream.Run(make(<-chan struct{}))
111118
}
112119

113-
m := models.NewDashboard(models.DefaultDashboardKeys, theme, panelModels...)
120+
dashboardStyles := dashboard.DashboardStyleOptions{
121+
TabModelStyle: tabs.TabModelStyleOptions{
122+
GapStyle: theme.TabGap(),
123+
ContentStyle: theme.ContentStyle(),
124+
SelectedStyle: theme.SelectedTabStyle(),
125+
TabStyle: theme.TabStyle(),
126+
LeftArrow: theme.TabLeftArrow,
127+
RightArrow: theme.TabRightArrow,
128+
},
129+
DividerStyle: theme.TabGap(),
130+
}
131+
m := dashboard.New(dashboard.DefaultDashboardKeys, dashboardStyles, panelModels...)
114132
if _, err := tea.NewProgram(m, tea.WithAltScreen()).Run(); err != nil {
115133
fmt.Println("Error running program:", err)
116134
os.Exit(1)

pkg/charm/models/dashboard.go renamed to pkg/charm/models/dashboard/dashboard.go

+28-20
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package models
1+
package dashboard
22

33
import (
44
"strings"
@@ -8,7 +8,8 @@ import (
88
"github.com/charmbracelet/bubbles/key"
99
tea "github.com/charmbracelet/bubbletea"
1010
"github.com/charmbracelet/lipgloss"
11-
"github.com/everettraven/buoy/pkg/charm/styles"
11+
"github.com/everettraven/buoy/pkg/charm/models/helper"
12+
"github.com/everettraven/buoy/pkg/charm/models/tabs"
1213
)
1314

1415
type DashboardKeyMap struct {
@@ -45,29 +46,36 @@ type Namer interface {
4546
Name() string
4647
}
4748

49+
// DashboardStyleOptions is the set of style options that can be
50+
// used to configure the styles used by the Dashboard model
51+
type DashboardStyleOptions struct {
52+
TabModelStyle tabs.TabModelStyleOptions
53+
DividerStyle lipgloss.Style
54+
}
55+
4856
// Dashboard is a tea.Model implementation
4957
// for viewing Kubernetes information based
5058
// on a declarative dashboard description
5159
type Dashboard struct {
52-
tabber *Tabber
53-
width int
54-
help help.Model
55-
keys DashboardKeyMap
56-
theme styles.Theme
60+
tabber *tabs.TabModel
61+
width int
62+
help help.Model
63+
keys DashboardKeyMap
64+
dividerStyle lipgloss.Style
5765
}
5866

59-
func NewDashboard(keys DashboardKeyMap, theme styles.Theme, panels ...tea.Model) *Dashboard {
60-
tabs := []Tab{}
67+
func New(keys DashboardKeyMap, style DashboardStyleOptions, panels ...tea.Model) *Dashboard {
68+
tabset := []tabs.Tab{}
6169
for _, panel := range panels {
6270
if namer, ok := panel.(Namer); ok {
63-
tabs = append(tabs, Tab{Name: namer.Name(), Model: panel})
71+
tabset = append(tabset, tabs.Tab{Name: namer.Name(), Model: panel})
6472
}
6573
}
6674
return &Dashboard{
67-
tabber: NewTabber(DefaultTabberKeys, theme, tabs...),
68-
help: help.New(),
69-
keys: keys,
70-
theme: theme,
75+
tabber: tabs.New(tabs.DefaultTabberKeys, style.TabModelStyle, tabset...),
76+
help: help.New(),
77+
keys: keys,
78+
dividerStyle: style.DividerStyle,
7179
}
7280
}
7381

@@ -98,15 +106,15 @@ func (d *Dashboard) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
98106
}
99107

100108
func (d *Dashboard) View() string {
101-
div := d.theme.TabGap().Render(strings.Repeat(" ", max(0, d.width-2)))
102-
return lipgloss.JoinVertical(0, d.tabber.View(), div, d.help.View(d.Help()))
109+
divider := d.dividerStyle.Render(strings.Repeat(" ", max(0, d.width-2)))
110+
return lipgloss.JoinVertical(0, d.tabber.View(), divider, d.help.View(d.Help()))
103111
}
104112

105113
func (d *Dashboard) Help() help.KeyMap {
106-
return CompositeHelpKeyMap{
107-
helps: []help.KeyMap{
114+
return helper.NewCompositeHelpKeyMap(
115+
[]help.KeyMap{
108116
d.tabber.Help(),
109117
d.keys,
110-
},
111-
}
118+
}...,
119+
)
112120
}

pkg/charm/models/dashboard_test.go renamed to pkg/charm/models/dashboard/dashboard_test.go

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
1-
package models
1+
package dashboard
22

33
import (
44
"testing"
55

66
"github.com/charmbracelet/bubbles/viewport"
77
tea "github.com/charmbracelet/bubbletea"
8-
"github.com/everettraven/buoy/pkg/charm/models/panels"
9-
"github.com/everettraven/buoy/pkg/charm/styles"
8+
"github.com/everettraven/buoy/pkg/charm/models/panels/item"
109
"github.com/everettraven/buoy/pkg/types"
1110
"github.com/stretchr/testify/assert"
1211
)
1312

1413
func TestDashboardUpdate(t *testing.T) {
1514
panels := []tea.Model{
16-
panels.NewItem(types.Item{
15+
item.New(types.Item{
1716
PanelBase: types.PanelBase{
1817
Name: "test",
1918
},
20-
}, viewport.New(10, 10), styles.Theme{}),
19+
}, viewport.New(10, 10), item.Styles{}),
2120
}
2221

23-
d := NewDashboard(DefaultDashboardKeys, styles.Theme{}, panels...)
22+
d := New(DefaultDashboardKeys, DashboardStyleOptions{}, panels...)
2423

2524
t.Log("WindowSizeUpdate")
2625
d.Update(tea.WindowSizeMsg{Width: 50, Height: 50})

pkg/charm/models/composite_help.go renamed to pkg/charm/models/helper/composite_help.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package models
1+
package helper
22

33
import (
44
"github.com/charmbracelet/bubbles/help"

pkg/charm/models/panels/item.go

-71
This file was deleted.

0 commit comments

Comments
 (0)