mirror of
https://github.com/zoriya/bubbles.git
synced 2026-08-05 04:36:07 +00:00
refactor(table): rename OverwriteStylesFromLipgloss to LipglossTable
Also, keeps any previously set data on the Lip Gloss table, if set.
This commit is contained in:
+9
-4
@@ -364,14 +364,19 @@ func (m *Model) OverwriteStyles(s Styles) *Model {
|
||||
return m
|
||||
}
|
||||
|
||||
// OverwriteStylesFromLipgloss sets the [Model]'s style attributes from an
|
||||
// existing [lipgloss.Table].
|
||||
func (m *Model) OverwriteStylesFromLipgloss(t *table.Table) {
|
||||
// LipglossTable sets the inner [lipgloss.Table].
|
||||
func (m *Model) LipglossTable(t *table.Table) {
|
||||
var (
|
||||
previousHeaders = m.table.GetHeaders()
|
||||
previousData = m.table.GetData()
|
||||
)
|
||||
m.table = t.Headers(previousHeaders...).Data(previousData)
|
||||
if len(t.GetHeaders()) == 0 {
|
||||
t = t.Headers(previousHeaders...)
|
||||
}
|
||||
if t.GetData() == nil || t.GetData().Rows() == 0 {
|
||||
t = t.Rows(table.DataToMatrix(previousData)...)
|
||||
}
|
||||
m.table = t
|
||||
m.useStyleFunc = true
|
||||
}
|
||||
|
||||
|
||||
+33
-16
@@ -368,28 +368,45 @@ func TestNewFromTemplate(t *testing.T) {
|
||||
golden.RequireEqual(t, []byte(bubblesTable.View()))
|
||||
}
|
||||
|
||||
func TestOverwriteStylesFromLipgloss(t *testing.T) {
|
||||
baseStyle := lipgloss.NewStyle().Padding(0, 1)
|
||||
headerStyle := baseStyle.Foreground(lipgloss.Color("252")).Bold(true)
|
||||
lipglossTable := table.New().
|
||||
Border(lipgloss.NormalBorder()).
|
||||
BorderStyle(lipgloss.NewStyle().Foreground(lipgloss.Color("238"))).
|
||||
Width(80).
|
||||
StyleFunc(func(row, col int) lipgloss.Style {
|
||||
func TestLipglossTable(t *testing.T) {
|
||||
var (
|
||||
baseStyle = lipgloss.NewStyle().Padding(0, 1)
|
||||
headerStyle = baseStyle.Foreground(lipgloss.Color("252")).Bold(true)
|
||||
borderStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("238"))
|
||||
styleFunc = func(row, col int) lipgloss.Style {
|
||||
if row == table.HeaderRow {
|
||||
return headerStyle
|
||||
}
|
||||
|
||||
even := row%2 == 0
|
||||
|
||||
if even {
|
||||
if row%2 == 0 {
|
||||
return baseStyle.Foreground(lipgloss.Color("245"))
|
||||
}
|
||||
return baseStyle.Foreground(lipgloss.Color("252"))
|
||||
})
|
||||
bubblesTable := New().SetHeaders(headers...).SetRows(rows...)
|
||||
bubblesTable.OverwriteStylesFromLipgloss(lipglossTable)
|
||||
golden.RequireEqual(t, []byte(bubblesTable.View()))
|
||||
}
|
||||
)
|
||||
|
||||
t.Run("WithoutPreviousData", func(t *testing.T) {
|
||||
lipglossTable := table.New().
|
||||
Border(lipgloss.NormalBorder()).
|
||||
BorderStyle(borderStyle).
|
||||
Width(80).
|
||||
StyleFunc(styleFunc)
|
||||
bubblesTable := New().SetHeaders(headers...).SetRows(rows...)
|
||||
bubblesTable.LipglossTable(lipglossTable)
|
||||
golden.RequireEqual(t, []byte(bubblesTable.View()))
|
||||
})
|
||||
|
||||
t.Run("WithPreviousData", func(t *testing.T) {
|
||||
lipglossTable := table.New().
|
||||
Border(lipgloss.NormalBorder()).
|
||||
BorderStyle(borderStyle).
|
||||
Width(80).
|
||||
StyleFunc(styleFunc).
|
||||
Headers(headers...).
|
||||
Rows(rows...)
|
||||
bubblesTable := New()
|
||||
bubblesTable.LipglossTable(lipglossTable)
|
||||
golden.RequireEqual(t, []byte(bubblesTable.View()))
|
||||
})
|
||||
}
|
||||
|
||||
// Examples
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
[38;5;238m┌[m[38;5;238m───────────────────[m[38;5;238m┬[m[38;5;238m───────────────────[m[38;5;238m┬[m[38;5;238m───────────────────[m[38;5;238m┬[m[38;5;238m──────────────────[m[38;5;238m┐[m
|
||||
[38;5;238m│[m [1;38;5;252mRank[m [38;5;238m│[m [1;38;5;252mCity[m [38;5;238m│[m [1;38;5;252mCountry[m [38;5;238m│[m [1;38;5;252mPopulation[m [38;5;238m│[m
|
||||
[38;5;238m├[m[38;5;238m───────────────────[m[38;5;238m┼[m[38;5;238m───────────────────[m[38;5;238m┼[m[38;5;238m───────────────────[m[38;5;238m┼[m[38;5;238m──────────────────[m[38;5;238m┤[m
|
||||
[38;5;238m│[m [38;5;245m1[m [38;5;238m│[m [38;5;245mTokyo[m [38;5;238m│[m [38;5;245mJapan[m [38;5;238m│[m [38;5;245m37,274,000[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;252m2[m [38;5;238m│[m [38;5;252mDelhi[m [38;5;238m│[m [38;5;252mIndia[m [38;5;238m│[m [38;5;252m32,065,760[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;245m3[m [38;5;238m│[m [38;5;245mShanghai[m [38;5;238m│[m [38;5;245mChina[m [38;5;238m│[m [38;5;245m28,516,904[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;252m4[m [38;5;238m│[m [38;5;252mDhaka[m [38;5;238m│[m [38;5;252mBangladesh[m [38;5;238m│[m [38;5;252m22,478,116[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;245m5[m [38;5;238m│[m [38;5;245mSão Paulo[m [38;5;238m│[m [38;5;245mBrazil[m [38;5;238m│[m [38;5;245m22,429,800[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;252m6[m [38;5;238m│[m [38;5;252mMexico City[m [38;5;238m│[m [38;5;252mMexico[m [38;5;238m│[m [38;5;252m22,085,140[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;245m7[m [38;5;238m│[m [38;5;245mCairo[m [38;5;238m│[m [38;5;245mEgypt[m [38;5;238m│[m [38;5;245m21,750,020[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;252m8[m [38;5;238m│[m [38;5;252mBeijing[m [38;5;238m│[m [38;5;252mChina[m [38;5;238m│[m [38;5;252m21,333,332[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;245m9[m [38;5;238m│[m [38;5;245mMumbai[m [38;5;238m│[m [38;5;245mIndia[m [38;5;238m│[m [38;5;245m20,961,472[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;252m10[m [38;5;238m│[m [38;5;252mOsaka[m [38;5;238m│[m [38;5;252mJapan[m [38;5;238m│[m [38;5;252m19,059,856[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;245m11[m [38;5;238m│[m [38;5;245mChongqing[m [38;5;238m│[m [38;5;245mChina[m [38;5;238m│[m [38;5;245m16,874,740[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;252m12[m [38;5;238m│[m [38;5;252mKarachi[m [38;5;238m│[m [38;5;252mPakistan[m [38;5;238m│[m [38;5;252m16,839,950[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;245m13[m [38;5;238m│[m [38;5;245mIstanbul[m [38;5;238m│[m [38;5;245mTurkey[m [38;5;238m│[m [38;5;245m15,636,243[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;252m14[m [38;5;238m│[m [38;5;252mKinshasa[m [38;5;238m│[m [38;5;252mDR Congo[m [38;5;238m│[m [38;5;252m15,628,085[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;245m15[m [38;5;238m│[m [38;5;245mLagos[m [38;5;238m│[m [38;5;245mNigeria[m [38;5;238m│[m [38;5;245m15,387,639[m [38;5;238m│[m
|
||||
[38;5;238m│[m [38;5;252m16[m [38;5;238m│[m [38;5;252mBuenos Aires[m [38;5;238m│[m [38;5;252mArgentina[m [38;5;238m│[m [38;5;252m15,369,919[m [38;5;238m│[m
|
||||
[38;5;238m└[m[38;5;238m───────────────────[m[38;5;238m┴[m[38;5;238m───────────────────[m[38;5;238m┴[m[38;5;238m───────────────────[m[38;5;238m┴[m[38;5;238m──────────────────[m[38;5;238m┘[m
|
||||
Reference in New Issue
Block a user