Skip to content

Commit 9b4e4d6

Browse files
authored
x-axis labels (#5)
1 parent 90a3188 commit 9b4e4d6

File tree

4 files changed

+150
-60
lines changed

4 files changed

+150
-60
lines changed

go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/charmbracelet/bubbles v0.15.0
88
github.com/charmbracelet/bubbletea v0.23.2
99
github.com/charmbracelet/lipgloss v0.6.0
10-
github.com/chriskim06/bubble-plot v0.0.0-20230302184816-bc8356fec41f
10+
github.com/chriskim06/bubble-plot v0.0.1
1111
github.com/muesli/reflow v0.3.0
1212
github.com/spf13/cobra v1.6.1
1313
github.com/spf13/viper v1.15.0
@@ -25,7 +25,7 @@ require (
2525
github.com/MakeNowJust/heredoc v1.0.0 // indirect
2626
github.com/aymanbagabas/go-osc52 v1.2.2 // indirect
2727
github.com/chai2010/gettext-go v1.0.2 // indirect
28-
github.com/chriskim06/drawille-go v0.0.0-20230302181717-a5dd98780f5c // indirect
28+
github.com/chriskim06/drawille-go v0.0.1 // indirect
2929
github.com/containerd/console v1.0.3 // indirect
3030
github.com/davecgh/go-spew v1.1.1 // indirect
3131
github.com/dlclark/regexp2 v1.4.0 // indirect
@@ -87,9 +87,9 @@ require (
8787
golang.org/x/net v0.7.0 // indirect
8888
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect
8989
golang.org/x/sync v0.1.0 // indirect
90-
golang.org/x/sys v0.5.0 // indirect
91-
golang.org/x/term v0.5.0 // indirect
92-
golang.org/x/text v0.7.0 // indirect
90+
golang.org/x/sys v0.6.0 // indirect
91+
golang.org/x/term v0.6.0 // indirect
92+
golang.org/x/text v0.8.0 // indirect
9393
golang.org/x/time v0.1.0 // indirect
9494
google.golang.org/appengine v1.6.7 // indirect
9595
google.golang.org/protobuf v1.28.1 // indirect

go.sum

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,84 @@ github.com/chriskim06/bubble-plot v0.0.0-20230302183228-1eac405a6f10 h1:kLfaqBzK
7575
github.com/chriskim06/bubble-plot v0.0.0-20230302183228-1eac405a6f10/go.mod h1:OUc3hk6G48+Na1RHSvdSjCQ5XmIoy3ziXv1+00GUigU=
7676
github.com/chriskim06/bubble-plot v0.0.0-20230302184816-bc8356fec41f h1:wETeE1lBwhu7s2YRPGtu2/KPGOgj5M1Bssj3NJ/wVlE=
7777
github.com/chriskim06/bubble-plot v0.0.0-20230302184816-bc8356fec41f/go.mod h1:OUc3hk6G48+Na1RHSvdSjCQ5XmIoy3ziXv1+00GUigU=
78+
github.com/chriskim06/bubble-plot v0.0.0-20230303182715-ff1b2da9d66d h1:MSWOHwXbfJxJWjNLYAYqG6Oubp/QwxqEUkGG7pr6dec=
79+
github.com/chriskim06/bubble-plot v0.0.0-20230303182715-ff1b2da9d66d/go.mod h1:gO/X1uN9o/RCxkFKdQcthn26qV0iIxXEDlH7TbUrn3M=
80+
github.com/chriskim06/bubble-plot v0.0.0-20230303194920-50d109668c10 h1:/BI1nHsSeUbop5sG78QPMSkkX4n/zhrM8LfMkUsf55I=
81+
github.com/chriskim06/bubble-plot v0.0.0-20230303194920-50d109668c10/go.mod h1:RC/7nroCdEIhSyUBZyq64/zq/V1+2qegM62EVtSl3cQ=
82+
github.com/chriskim06/bubble-plot v0.0.0-20230303200615-e22cdf160edd h1:9qx65uv7m/9KVcfuX6g87AO5EE1xqyZLPPzvtMUpm54=
83+
github.com/chriskim06/bubble-plot v0.0.0-20230303200615-e22cdf160edd/go.mod h1:FH2nIPt6afhIbSvMdyWdrLMkVC5WPzfLpXUP0Hu6pmg=
84+
github.com/chriskim06/bubble-plot v0.0.0-20230303203555-10c581fefdf8 h1:vMd9H4qL2m7NZJZFbz4Bj57SDPNdB5SsNnkLTBLlcis=
85+
github.com/chriskim06/bubble-plot v0.0.0-20230303203555-10c581fefdf8/go.mod h1:n8S4HM/ZT2I/pSeH+IHWHtTYTdb1Ca91JOQ9ZkS/XuE=
86+
github.com/chriskim06/bubble-plot v0.0.0-20230303210905-7fa525790160 h1:vSYlyou2ImYJnx0JCzL51akTa7ukoqhWNVNvuMD/IjU=
87+
github.com/chriskim06/bubble-plot v0.0.0-20230303210905-7fa525790160/go.mod h1:1RRf0BbnTuW3+kUXiAff4u9PIp9zYNkdJSl3RtjIgUc=
88+
github.com/chriskim06/bubble-plot v0.0.0-20230303211045-865a5353b42b h1:DQ29gvHKzbFXOg3qOqfIUlkHganQAu00oiI3KtTZT84=
89+
github.com/chriskim06/bubble-plot v0.0.0-20230303211045-865a5353b42b/go.mod h1:oSJhiV9UAzkH9XUkHkdvno0VTzzxU0d+VX7rXTrs41Y=
90+
github.com/chriskim06/bubble-plot v0.0.0-20230303212721-5c041b7d14cd h1:iHch80Ex+p6LJHetq3trxKZ9NJkeb5kbVJnVIs3ucWs=
91+
github.com/chriskim06/bubble-plot v0.0.0-20230303212721-5c041b7d14cd/go.mod h1:iimk3ZpFUhziZQoOtDNoukPYptNv3WSHm6DxgMfzdHc=
92+
github.com/chriskim06/bubble-plot v0.0.0-20230303220054-ac9ecef579cc h1:t18wIy1Pf1cTJBDg2msrxDcYxzqy5rQ67C12MmHwvZ8=
93+
github.com/chriskim06/bubble-plot v0.0.0-20230303220054-ac9ecef579cc/go.mod h1:RQ+Id2niQu9hplDlGjWT/Dfm9C19pVwWfcLeqGcUK0Y=
94+
github.com/chriskim06/bubble-plot v0.0.0-20230304000945-86bff3248e23 h1:Gk5n1QqTLuG1yy/5pY7MhUdshMJqABvgozKQCLHAmsQ=
95+
github.com/chriskim06/bubble-plot v0.0.0-20230304000945-86bff3248e23/go.mod h1:knoYCNd1NI9lHyv93Q46WE4AHLmEZ1jK7NOx9CdIRzk=
96+
github.com/chriskim06/bubble-plot v0.0.0-20230304001726-711edd2d1898 h1:5SOucJkf+p6r8x8wcYR8F1BA8DMCYGT6GgXVIE2F0hM=
97+
github.com/chriskim06/bubble-plot v0.0.0-20230304001726-711edd2d1898/go.mod h1:jw8IZognlaK3E+QIFnQJxWx1DUzM4oSyPRBl4veYiqU=
98+
github.com/chriskim06/bubble-plot v0.0.0-20230304002158-2dd3a1e8c6bf h1:xBltEUsrvs91nwPUiOc8DwwdwDzNMFE3o1pEVAhWpUs=
99+
github.com/chriskim06/bubble-plot v0.0.0-20230304002158-2dd3a1e8c6bf/go.mod h1:rql/VDfhaJb33X7Q8cf3+Hk7yp9RxarnR3LcAWFgK4U=
100+
github.com/chriskim06/bubble-plot v0.0.0-20230304003407-fc700abc3c7e h1:kldqTZLee5SWOFR/HsmDAuwvSXg1Bq4EIeV/1Wup7t0=
101+
github.com/chriskim06/bubble-plot v0.0.0-20230304003407-fc700abc3c7e/go.mod h1:B4z3oT0XdPJosfZQLJKuu8uUPcdWO/UaZryANXjpi0E=
102+
github.com/chriskim06/bubble-plot v0.0.0-20230304004114-a04acfe58bc2 h1:CF7T5My2DOjDVaAfRt5ocFtn08BRMUDqzWhfmCLFvtg=
103+
github.com/chriskim06/bubble-plot v0.0.0-20230304004114-a04acfe58bc2/go.mod h1:XYdfulpaS53AvVU4TQ598SHNafJoI50J6gJsrV50KUc=
104+
github.com/chriskim06/bubble-plot v0.0.0-20230304005413-f31b25fe4c1a h1:E4+wKX0koieRuke1+2xoGJzs92azz530v8TD4fpWf8U=
105+
github.com/chriskim06/bubble-plot v0.0.0-20230304005413-f31b25fe4c1a/go.mod h1:nHCZWFXuJMWq6tpHCb2T80Ds3q/K8NLg+KullhA9+uQ=
106+
github.com/chriskim06/bubble-plot v0.0.0-20230304010048-402082659038 h1:+wsDEO/AxipOa9LVBef0o/T3PCapPI5/pBsxuTXcqTs=
107+
github.com/chriskim06/bubble-plot v0.0.0-20230304010048-402082659038/go.mod h1:FJohsM2uG1iXVb7sKY6abUbxsYcESCAunJm7LKzGpuQ=
108+
github.com/chriskim06/bubble-plot v0.0.0-20230306154153-ece6031949f4 h1:RQ7g/X2olJpb2TE25aN5iP8KUIYg0y7wkJ1dsJXTtUs=
109+
github.com/chriskim06/bubble-plot v0.0.0-20230306154153-ece6031949f4/go.mod h1:raCm6JOSxYV37dYkWUwXehjEIsKt2UU4XOGAEEkcboA=
110+
github.com/chriskim06/bubble-plot v0.0.0-20230306164058-ae1edb20c5cf h1:DcH8AiFF5L6QTdqSDQ+1+yQAM0R3oldWewCjVLBtaMU=
111+
github.com/chriskim06/bubble-plot v0.0.0-20230306164058-ae1edb20c5cf/go.mod h1:/XqRtQIaxyoL871Gxt0jePtSj9uwlOsT1yDo/E8jHX0=
112+
github.com/chriskim06/bubble-plot v0.0.1 h1:hoYpc2eKKTmnpqfIyeMFRMz+9IehRAuN4rtg62fNfJo=
113+
github.com/chriskim06/bubble-plot v0.0.1/go.mod h1:Hjhmli73PbzcTyRNdg3TzSgZSj15HYlQqLAYQN58s6M=
78114
github.com/chriskim06/drawille-go v0.0.0-20230302165514-dbd57b26d000 h1:Nno/mEy0KPPg/FkKSXgIIz0+2bjtlAoiUKfzbvVeAcE=
79115
github.com/chriskim06/drawille-go v0.0.0-20230302165514-dbd57b26d000/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
80116
github.com/chriskim06/drawille-go v0.0.0-20230302175235-0295e5373f58 h1:KxGaXZsxHHP0l1ERfF9il5gGB9kVR19tvzoRFvBPLtU=
81117
github.com/chriskim06/drawille-go v0.0.0-20230302175235-0295e5373f58/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
82118
github.com/chriskim06/drawille-go v0.0.0-20230302181717-a5dd98780f5c h1:Lwu/f8LGTtdwdtn6zO0MT9pRsNwymbhUYRVszT6KFxQ=
83119
github.com/chriskim06/drawille-go v0.0.0-20230302181717-a5dd98780f5c/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
120+
github.com/chriskim06/drawille-go v0.0.0-20230303182535-d8ea23fcf665 h1:HQzS39KCuYAFbeazXg35/bvo+kQAUnNMX7qajoK/DBE=
121+
github.com/chriskim06/drawille-go v0.0.0-20230303182535-d8ea23fcf665/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
122+
github.com/chriskim06/drawille-go v0.0.0-20230303194217-11cca5c68a0a h1:+LlGhe61/u0/vodtp8H+en8qyqfY2kIwey+MU4ICLgY=
123+
github.com/chriskim06/drawille-go v0.0.0-20230303194217-11cca5c68a0a/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
124+
github.com/chriskim06/drawille-go v0.0.0-20230303200459-da27d0f9a939 h1:G6EUThZV/fkl1RkqdJu3128pZhEA8fMrsrJcxcu4HK0=
125+
github.com/chriskim06/drawille-go v0.0.0-20230303200459-da27d0f9a939/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
126+
github.com/chriskim06/drawille-go v0.0.0-20230303203526-13cf312e76ef h1:nwJythiQdyGHZUueKpe45H4EMgvZJKcC0LlUAlh2jZM=
127+
github.com/chriskim06/drawille-go v0.0.0-20230303203526-13cf312e76ef/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
128+
github.com/chriskim06/drawille-go v0.0.0-20230303210829-6f0fe9bd6a94 h1:iUFBm4YH28zNpLiw8ryV2/JwDzwhTh3CyKHv/VI0QOA=
129+
github.com/chriskim06/drawille-go v0.0.0-20230303210829-6f0fe9bd6a94/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
130+
github.com/chriskim06/drawille-go v0.0.0-20230303211018-936ecbb663a2 h1:5Q3lfIw5dGT40jKAhMfzMhsEDjspeBcXdU9TLNHhGzg=
131+
github.com/chriskim06/drawille-go v0.0.0-20230303211018-936ecbb663a2/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
132+
github.com/chriskim06/drawille-go v0.0.0-20230303212653-f374639550d1 h1:YTr3YW6v9cASYYwK+rmPzqjVDdi4LXDkPUnsGUezwg4=
133+
github.com/chriskim06/drawille-go v0.0.0-20230303212653-f374639550d1/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
134+
github.com/chriskim06/drawille-go v0.0.0-20230303220025-fd71b2672633 h1:eICbBcNGoeWU0mHTGOtcUvWhqPSQKqnB8WcDYEdzF4A=
135+
github.com/chriskim06/drawille-go v0.0.0-20230303220025-fd71b2672633/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
136+
github.com/chriskim06/drawille-go v0.0.0-20230304000914-88da1c7cba59 h1:zYMkHjIVmybzHmT1cRLxXJ3ypLkw7+WpXHxeSkxl+zw=
137+
github.com/chriskim06/drawille-go v0.0.0-20230304000914-88da1c7cba59/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
138+
github.com/chriskim06/drawille-go v0.0.0-20230304001648-7eabb8b6f09c h1:timuyOkitkbW8jN+eSg/oNJ8ECAtVJ6N8AMCFYIC1sA=
139+
github.com/chriskim06/drawille-go v0.0.0-20230304001648-7eabb8b6f09c/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
140+
github.com/chriskim06/drawille-go v0.0.0-20230304002132-d72837b391df h1:cHSWwtaLpbz6Th+JVpi96b5l4kfZ0gN57BV6bbWSdyg=
141+
github.com/chriskim06/drawille-go v0.0.0-20230304002132-d72837b391df/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
142+
github.com/chriskim06/drawille-go v0.0.0-20230304003338-b9e97358472a h1:t4YfdyQG6gAJ5Ah5r8nzS7cSRGCSRsz01YqEdk1TnRg=
143+
github.com/chriskim06/drawille-go v0.0.0-20230304003338-b9e97358472a/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
144+
github.com/chriskim06/drawille-go v0.0.0-20230304004048-da3db0eab298 h1:4/lbKXhQmb6vR1Yl2vMiqT3ZDjPCmbNQ/e6dvhRdlgA=
145+
github.com/chriskim06/drawille-go v0.0.0-20230304004048-da3db0eab298/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
146+
github.com/chriskim06/drawille-go v0.0.0-20230304005344-eec1facbfc5a h1:7HelyCnHPFFLbT6SbTSZbPNPka9giL2TC4mJSA6i22U=
147+
github.com/chriskim06/drawille-go v0.0.0-20230304005344-eec1facbfc5a/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
148+
github.com/chriskim06/drawille-go v0.0.0-20230304010020-980ecff09919 h1:Xv/gAGxuX9loYODOM1Bsqw2qWRBN2Ax+M1xsy5Mlhbw=
149+
github.com/chriskim06/drawille-go v0.0.0-20230304010020-980ecff09919/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
150+
github.com/chriskim06/drawille-go v0.0.0-20230306154119-342eea733d63 h1:sj6V6GfDtkUQvPVwytAxQ+U4zLMmnprMjjseLHNycIs=
151+
github.com/chriskim06/drawille-go v0.0.0-20230306154119-342eea733d63/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
152+
github.com/chriskim06/drawille-go v0.0.0-20230306164021-ddcc5112f612 h1:ybC3RIwu1aHgBiLTdsSwJcvhv8vqXm52stYps+FKJnQ=
153+
github.com/chriskim06/drawille-go v0.0.0-20230306164021-ddcc5112f612/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
154+
github.com/chriskim06/drawille-go v0.0.1 h1:tvjp14ni1J6iLpz9fj/iwyf23hKDhu6iLvUQNTaB8YU=
155+
github.com/chriskim06/drawille-go v0.0.1/go.mod h1:crZ9L4tSvNEwUJjxF2z+1RTq5P4CLZdUZeoD1XG7i3Q=
84156
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
85157
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
86158
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
@@ -496,10 +568,14 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc
496568
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
497569
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
498570
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
571+
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
572+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
499573
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
500574
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
501575
golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=
502576
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
577+
golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw=
578+
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
503579
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
504580
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
505581
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -509,6 +585,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
509585
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
510586
golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
511587
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
588+
golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
589+
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
512590
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
513591
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
514592
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

internal/ui/app.go

Lines changed: 54 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,24 @@ import (
1414
)
1515

1616
type App struct {
17-
client metrics.MetricsClient
18-
cpuData map[string][][]float64
19-
memData map[string][][]float64
20-
labels []string
21-
resource metrics.Resource
22-
options interface{}
23-
current string
24-
tick time.Ticker
25-
interval time.Duration
26-
ready bool
27-
sizeReady bool
28-
err error
29-
height int
30-
width int
31-
itemsPane List
32-
graphsPane Graphs
33-
infoPane Info
34-
loading *spinner.Model
17+
client metrics.MetricsClient
18+
cpuData map[string][][]float64
19+
memData map[string][][]float64
20+
xAxisLabels *[]string
21+
resource metrics.Resource
22+
options interface{}
23+
current string
24+
tick time.Ticker
25+
interval time.Duration
26+
ready bool
27+
sizeReady bool
28+
err error
29+
height int
30+
width int
31+
itemsPane List
32+
graphsPane Graphs
33+
infoPane Info
34+
loading *spinner.Model
3535
}
3636

3737
func New(resource metrics.Resource, interval int, options interface{}, showManagedFields bool, flags *genericclioptions.ConfigFlags) *App {
@@ -45,17 +45,17 @@ func New(resource metrics.Resource, interval int, options interface{}, showManag
4545
allNs = &allNamespaces
4646
}
4747
app := &App{
48-
client: metrics.New(flags, showManagedFields, allNs),
49-
resource: resource,
50-
options: options,
51-
cpuData: map[string][][]float64{},
52-
memData: map[string][][]float64{},
53-
labels: []string{},
54-
interval: time.Duration(interval) * time.Second,
55-
itemsPane: *items,
56-
graphsPane: *graphs,
57-
infoPane: *NewInfo(conf),
58-
loading: &loading,
48+
client: metrics.New(flags, showManagedFields, allNs),
49+
resource: resource,
50+
options: options,
51+
cpuData: map[string][][]float64{},
52+
memData: map[string][][]float64{},
53+
xAxisLabels: &[]string{},
54+
interval: time.Duration(interval) * time.Second,
55+
itemsPane: *items,
56+
graphsPane: *graphs,
57+
infoPane: *NewInfo(conf),
58+
loading: &loading,
5959
}
6060
return app
6161
}
@@ -64,7 +64,7 @@ func (a App) Init() tea.Cmd {
6464
return tea.Batch(a.loading.Tick, a.updateData)
6565
}
6666

67-
func (a App) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
67+
func (a *App) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
6868
var cmd tea.Cmd
6969
var cmds []tea.Cmd
7070
switch msg := msg.(type) {
@@ -74,9 +74,13 @@ func (a App) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
7474
a.width = msg.Width
7575
half := msg.Height / 2
7676
third := msg.Width / 3
77-
a.graphsPane.SetSize(msg.Width, half)
7877
a.itemsPane.SetSize(msg.Width-third, half)
7978
a.infoPane.SetSize(third, half)
79+
a.graphsPane.SetSize(msg.Width, half)
80+
if a.current != "" {
81+
a.graphsPane.updateData(a.current, a.cpuData, a.memData, *a.xAxisLabels)
82+
}
83+
return a, cmd
8084
case tea.KeyMsg:
8185
switch keypress := msg.String(); keypress {
8286
case "ctrl+c":
@@ -124,7 +128,7 @@ func (a App) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
124128
a.itemsPane, cmd = a.itemsPane.Update(msg)
125129
cmds = append(cmds, cmd)
126130
a.current = a.itemsPane.GetSelected()
127-
a.graphsPane.updateData(a.current, a.cpuData, a.memData)
131+
a.graphsPane.updateData(a.current, a.cpuData, a.memData, *a.xAxisLabels)
128132
}
129133
case tickMsg:
130134
if msg.err != nil {
@@ -135,10 +139,11 @@ func (a App) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
135139
if a.itemsPane.content.SelectedItem() != nil {
136140
msg.name = a.itemsPane.GetSelected()
137141
}
142+
a.current = msg.name
138143
var itemsCmd, graphsCmd tea.Cmd
139-
a.itemsPane, itemsCmd = a.itemsPane.Update(msg)
140144
a.graphsPane, graphsCmd = a.graphsPane.Update(msg)
141-
cmds = append(cmds, itemsCmd, graphsCmd, a.tickCmd())
145+
a.itemsPane, itemsCmd = a.itemsPane.Update(msg)
146+
cmds = append(cmds, graphsCmd, itemsCmd, a.tickCmd())
142147
case spinner.TickMsg:
143148
if a.ready && a.sizeReady {
144149
a.loading = nil
@@ -165,12 +170,12 @@ func (a App) View() string {
165170
}
166171

167172
type tickMsg struct {
168-
m []metrics.MetricValue
169-
name string
170-
err error
171-
cpuData map[string][][]float64
172-
memData map[string][][]float64
173-
labels []string
173+
m []metrics.MetricValue
174+
name string
175+
err error
176+
cpuData map[string][][]float64
177+
memData map[string][][]float64
178+
xAxisLabels []string
174179
}
175180

176181
func (a *App) tickCmd() tea.Cmd {
@@ -188,12 +193,13 @@ func (a *App) updateData() tea.Msg {
188193
m, err = a.client.GetNodeMetrics(a.options.(*top.TopNodeOptions))
189194
}
190195
if err != nil {
191-
fmt.Println(err)
192196
return tickMsg{err: err}
193197
}
194-
if len(a.labels) == 50 {
195-
a.labels = a.labels[1:]
198+
if len(*a.xAxisLabels) == 50 {
199+
*a.xAxisLabels = (*a.xAxisLabels)[1:]
196200
}
201+
t := time.Now()
202+
*a.xAxisLabels = append(*a.xAxisLabels, fmt.Sprintf("%02d:%02d:%02d", t.Hour(), t.Minute(), t.Second()))
197203
for _, metric := range m {
198204
name := metric.Name
199205
if a.cpuData[name] == nil || a.memData[name] == nil {
@@ -209,13 +215,12 @@ func (a *App) updateData() tea.Msg {
209215
a.cpuData[name][1] = append(a.cpuData[name][1], float64(metric.CPUCores.MilliValue()))
210216
a.memData[name][0] = append(a.memData[name][0], float64(metric.MemLimit))
211217
a.memData[name][1] = append(a.memData[name][1], float64(metric.MemCores))
212-
a.labels = append(a.labels, fmt.Sprintf("%d:%d:%d", metric.Timestamp.Hour(), metric.Timestamp.Minute(), metric.Timestamp.Second()))
213218
}
214219
return tickMsg{
215-
m: m,
216-
name: m[0].Name,
217-
cpuData: a.cpuData,
218-
memData: a.memData,
219-
labels: a.labels,
220+
m: m,
221+
name: m[0].Name,
222+
cpuData: a.cpuData,
223+
memData: a.memData,
224+
xAxisLabels: *a.xAxisLabels,
220225
}
221226
}

0 commit comments

Comments
 (0)