Skip to content

Commit

Permalink
feat(config): merge section layout config with default layout config
Browse files Browse the repository at this point in the history
  • Loading branch information
Dolev Hadar authored and dlvhdr committed Sep 25, 2022
1 parent dc77cf8 commit d03253c
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 33 deletions.
11 changes: 11 additions & 0 deletions config/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,14 @@ func (cfg IssuesSectionConfig) ToSectionConfig() SectionConfig {
Limit: cfg.Limit,
}
}

func MergeColumnConfigs(defaultCfg, sectionCfg ColumnConfig) ColumnConfig {
colCfg := defaultCfg
if sectionCfg.Width != nil {
colCfg.Width = sectionCfg.Width
}
if sectionCfg.Hidden != nil {
colCfg.Hidden = sectionCfg.Hidden
}
return colCfg
}
45 changes: 27 additions & 18 deletions ui/components/issuessection/issuessection.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package issuessection

import (
"log"
"sort"

"github.com/charmbracelet/bubbles/key"
Expand Down Expand Up @@ -31,7 +30,7 @@ func NewModel(id int, ctx *context.ProgramContext, cfg config.IssuesSectionConfi
ctx,
cfg.ToSectionConfig(),
SectionType,
GetSectionColumns(ctx),
GetSectionColumns(cfg, ctx),
"Issue",
"Issues",
),
Expand Down Expand Up @@ -115,49 +114,59 @@ func (m Model) Update(msg tea.Msg) (section.Section, tea.Cmd) {
return &m, tea.Batch(cmd, searchCmd)
}

func GetSectionColumns(ctx *context.ProgramContext) []table.Column {
layout := ctx.Config.Defaults.Layout.Issues
log.Printf("updated at: %v\n", *layout.UpdatedAt.Width)
func GetSectionColumns(cfg config.IssuesSectionConfig, ctx *context.ProgramContext) []table.Column {
dLayout := ctx.Config.Defaults.Layout.Issues
sLayout := cfg.Layout

updatedAtLayout := config.MergeColumnConfigs(dLayout.UpdatedAt, sLayout.UpdatedAt)
stateLayout := config.MergeColumnConfigs(dLayout.State, sLayout.State)
repoLayout := config.MergeColumnConfigs(dLayout.Repo, sLayout.Repo)
titleLayout := config.MergeColumnConfigs(dLayout.Title, sLayout.Title)
creatorLayout := config.MergeColumnConfigs(dLayout.Creator, sLayout.Creator)
assigneesLayout := config.MergeColumnConfigs(dLayout.Assignees, sLayout.Assignees)
commentsLayout := config.MergeColumnConfigs(dLayout.Comments, sLayout.Comments)
reactionsLayout := config.MergeColumnConfigs(dLayout.Reactions, sLayout.Reactions)

return []table.Column{
{
Title: "",
Width: layout.UpdatedAt.Width,
Hidden: layout.UpdatedAt.Hidden,
Width: updatedAtLayout.Width,
Hidden: updatedAtLayout.Hidden,
},
{
Title: "",
Width: layout.State.Width,
Hidden: layout.State.Hidden,
Width: stateLayout.Width,
Hidden: stateLayout.Hidden,
},
{
Title: "",
Width: layout.Repo.Width,
Hidden: layout.Repo.Hidden,
Width: repoLayout.Width,
Hidden: repoLayout.Hidden,
},
{
Title: "Title",
Grow: utils.BoolPtr(true),
Hidden: layout.Title.Hidden,
Hidden: titleLayout.Hidden,
},
{
Title: "Creator",
Width: layout.Creator.Width,
Hidden: layout.Creator.Hidden,
Width: creatorLayout.Width,
Hidden: creatorLayout.Hidden,
},
{
Title: "Assignees",
Width: layout.Assignees.Width,
Hidden: layout.Assignees.Hidden,
Width: assigneesLayout.Width,
Hidden: assigneesLayout.Hidden,
},
{
Title: "",
Width: &issueNumCommentsCellWidth,
Hidden: layout.Comments.Hidden,
Hidden: commentsLayout.Hidden,
},
{
Title: "",
Width: &issueNumCommentsCellWidth,
Hidden: layout.Reactions.Hidden,
Hidden: reactionsLayout.Hidden,
},
}
}
Expand Down
41 changes: 26 additions & 15 deletions ui/components/prssection/prssection.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func NewModel(id int, ctx *context.ProgramContext, cfg config.PrsSectionConfig)
ctx,
cfg.ToSectionConfig(),
SectionType,
GetSectionColumns(ctx),
GetSectionColumns(cfg, ctx),
"PR",
"Pull Requests",
),
Expand Down Expand Up @@ -137,48 +137,59 @@ func (m Model) Update(msg tea.Msg) (section.Section, tea.Cmd) {
return &m, tea.Batch(cmd, searchCmd)
}

func GetSectionColumns(ctx *context.ProgramContext) []table.Column {
layout := ctx.Config.Defaults.Layout.Prs
func GetSectionColumns(cfg config.PrsSectionConfig, ctx *context.ProgramContext) []table.Column {
dLayout := ctx.Config.Defaults.Layout.Prs
sLayout := cfg.Layout

updatedAtLayout := config.MergeColumnConfigs(dLayout.UpdatedAt, sLayout.UpdatedAt)
repoLayout := config.MergeColumnConfigs(dLayout.Repo, sLayout.Repo)
titleLayout := config.MergeColumnConfigs(dLayout.Title, sLayout.Title)
authorLayout := config.MergeColumnConfigs(dLayout.Author, sLayout.Author)
reviewStatusLayout := config.MergeColumnConfigs(dLayout.ReviewStatus, sLayout.ReviewStatus)
stateLayout := config.MergeColumnConfigs(dLayout.State, sLayout.State)
ciLayout := config.MergeColumnConfigs(dLayout.Ci, sLayout.Ci)
linesLayout := config.MergeColumnConfigs(dLayout.Lines, sLayout.Lines)

return []table.Column{
{
Title: "",
Width: layout.UpdatedAt.Width,
Hidden: layout.UpdatedAt.Hidden,
Width: updatedAtLayout.Width,
Hidden: updatedAtLayout.Hidden,
},
{
Title: "",
Width: layout.Repo.Width,
Hidden: layout.Repo.Hidden,
Width: repoLayout.Width,
Hidden: repoLayout.Hidden,
},
{
Title: "Title",
Grow: utils.BoolPtr(true),
Hidden: layout.Title.Hidden,
Hidden: titleLayout.Hidden,
},
{
Title: "Author",
Width: layout.Author.Width,
Hidden: layout.Author.Hidden,
Width: authorLayout.Width,
Hidden: authorLayout.Hidden,
},
{
Title: "",
Width: utils.IntPtr(4),
Hidden: layout.ReviewStatus.Hidden,
Hidden: reviewStatusLayout.Hidden,
},
{
Title: "",
Hidden: layout.State.Hidden,
Hidden: stateLayout.Hidden,
},
{
Title: "",
Width: &ciCellWidth,
Grow: new(bool),
Hidden: layout.Ci.Hidden,
Hidden: ciLayout.Hidden,
},
{
Title: "",
Width: layout.Lines.Width,
Hidden: layout.Lines.Hidden,
Width: linesLayout.Width,
Hidden: linesLayout.Hidden,
},
}
}
Expand Down

0 comments on commit d03253c

Please sign in to comment.