Git: components 301-320
This commit is contained in:
121 files changed
+7031
-2
No files matched your search
@@ -0,0 +1,134 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/egoist/mygo/ui"
|
||||
|
||||
mujica "mujicaui"
|
||||
)
|
||||
|
||||
func gitPullRequestCardDemo(c *ui.Context, log func(string)) {
|
||||
type state struct {
|
||||
st int
|
||||
failed, disabled bool
|
||||
}
|
||||
s := ui.Local(c.Root(), "315", func() state { return state{} })
|
||||
navigationDemo(c, func() {
|
||||
mujica.SegmentedControl(c, &s.st, []mujica.Segment{{Label: "Open"}, {Label: "Draft"}, {Label: "Merged"}, {Label: "Closed"}}, mujica.SegmentedControlOptions{Label: "State"})
|
||||
navigationCheck(c, &s.failed, "Failing check", log)
|
||||
navigationCheck(c, &s.disabled, "Disabled", log)
|
||||
}, func() {
|
||||
pr := mujica.PullRequest{Number: 318, Title: "Git components 301–320", Author: "Sakiko", State: mujica.PullRequestState(s.st),
|
||||
Head: "feature/git", Base: "main", ChecksPassed: 12, ChecksPending: 1,
|
||||
Reviewers: []mujica.Reviewer{{Name: "Uika", State: mujica.ReviewApproved}, {Name: "Mutsumi", State: mujica.ReviewChangesRequested}, {Name: "Umiri"}},
|
||||
Added: 2412, Deleted: 310, Files: 46}
|
||||
if s.failed {
|
||||
pr.ChecksFailed = 1
|
||||
}
|
||||
if mujica.PullRequestCard(c, pr, mujica.PullRequestCardOptions{Disabled: s.disabled}).Changed() {
|
||||
log(fmt.Sprintf("Open #%d", pr.Number))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func gitReviewCommentDemo(c *ui.Context, log func(string)) {
|
||||
type state struct {
|
||||
thread mujica.ReviewThread
|
||||
draft string
|
||||
disabled bool
|
||||
}
|
||||
s := ui.Local(c.Root(), "316", func() state {
|
||||
return state{thread: mujica.ReviewThread{File: "commit_graph.go", Line: 88, Messages: []mujica.ReviewMessage{
|
||||
{Author: "Uika", When: gitDemoTime, Body: "Should merge lanes reuse the parent's color?"},
|
||||
{Author: "Sakiko", When: gitDemoTime.Add(time.Hour), Body: "Yes, the first parent keeps it."},
|
||||
}}}
|
||||
})
|
||||
navigationDemo(c, func() {
|
||||
navigationCheck(c, &s.disabled, "Disabled", log)
|
||||
}, func() {
|
||||
r := mujica.ReviewComment(c, s.thread, &s.draft, mujica.ReviewCommentOptions{Disabled: s.disabled})
|
||||
if text, ok := r.Replied(); ok {
|
||||
log("Reply: " + text)
|
||||
s.thread.Messages = append(s.thread.Messages, mujica.ReviewMessage{Author: "You", When: c.Now(), Body: text})
|
||||
}
|
||||
if r.Resolved() {
|
||||
log("Resolved")
|
||||
s.thread.Resolved = true
|
||||
}
|
||||
if r.Reopened() {
|
||||
log("Reopened")
|
||||
s.thread.Resolved = false
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func gitDiffStatDemo(c *ui.Context, log func(string)) {
|
||||
type state struct{ added, deleted, blocks float64 }
|
||||
s := ui.Local(c.Root(), "317", func() state { return state{added: 120, deleted: 30, blocks: 5} })
|
||||
navigationDemo(c, func() {
|
||||
navigationSlider(c, &s.added, "Added", 0, 500, log)
|
||||
navigationSlider(c, &s.deleted, "Deleted", 0, 500, log)
|
||||
navigationSlider(c, &s.blocks, "Blocks", 1, 10, log)
|
||||
}, func() {
|
||||
mujica.DiffStat(c, int(s.added), int(s.deleted), mujica.DiffStatOptions{Blocks: int(s.blocks)})
|
||||
})
|
||||
}
|
||||
|
||||
func gitStatusBadgeDemo(c *ui.Context, log func(string)) {
|
||||
type state struct{ labels bool }
|
||||
s := ui.Local(c.Root(), "318", func() state { return state{} })
|
||||
navigationDemo(c, func() {
|
||||
navigationCheck(c, &s.labels, "Show labels", log)
|
||||
}, func() {
|
||||
ui.Row(c).Gap(16).Wrap().Children(func() {
|
||||
for st := mujica.GitModified; st <= mujica.GitCopied; st++ {
|
||||
mujica.GitStatusBadge(c, st, mujica.GitStatusBadgeOptions{ShowLabel: s.labels})
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func gitCommandBlockDemo(c *ui.Context, log func(string)) {
|
||||
type state struct {
|
||||
open, failed, running bool
|
||||
}
|
||||
s := ui.Local(c.Root(), "319", func() state { return state{open: true} })
|
||||
navigationDemo(c, func() {
|
||||
navigationCheck(c, &s.failed, "Failed", log)
|
||||
navigationCheck(c, &s.running, "Running", log)
|
||||
}, func() {
|
||||
run := mujica.CommandRun{Command: "go test -run Git ./...", Duration: 3214 * time.Millisecond,
|
||||
Output: "\x1b[32mok\x1b[0m \tmujicaui\t3.214s\n\x1b[33mwarn\x1b[0m slow test: TestCommitGraphVirtualized"}
|
||||
if s.failed {
|
||||
run.ExitCode = 1
|
||||
run.Output = "\x1b[31m--- FAIL\x1b[0m: TestDiffViewer (0.02s)\n\x1b[1mFAIL\x1b[0m\tmujicaui\t0.401s"
|
||||
}
|
||||
run.Running = s.running
|
||||
r := mujica.CommandBlock(c, run, &s.open, mujica.CommandBlockOptions{})
|
||||
if r.Toggled() {
|
||||
log(fmt.Sprintf("Toggled: open=%v", s.open))
|
||||
}
|
||||
if what, ok := r.Copied(); ok {
|
||||
log("Copied " + what)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func gitAnsiTextDemo(c *ui.Context, log func(string)) {
|
||||
type state struct{ wrap bool }
|
||||
s := ui.Local(c.Root(), "320", func() state { return state{} })
|
||||
navigationDemo(c, func() {
|
||||
navigationCheck(c, &s.wrap, "Wrap", log)
|
||||
}, func() {
|
||||
ui.Column(c).Padding(12).Background(mujica.Tokens(c).Surface).Radius(4).Children(func() {
|
||||
mujica.AnsiText(c, "\x1b[1mBuilding\x1b[0m mujica \x1b[2m(v1.1)\x1b[0m\n"+
|
||||
"\x1b[32m✓\x1b[0m 300 passed \x1b[31m✗\x1b[0m 2 failed \x1b[33m!\x1b[0m 1 skipped\n"+
|
||||
"\x1b[30m0\x1b[31m1\x1b[32m2\x1b[33m3\x1b[34m4\x1b[35m5\x1b[36m6\x1b[37m7\x1b[90m8\x1b[91m9\x1b[92mA\x1b[93mB\x1b[94mC\x1b[95mD\x1b[96mE\x1b[97mF\x1b[0m\n"+
|
||||
"\x1b[38;5;208m256-color\x1b[0m \x1b[38;2;125;32;52mtrue color\x1b[0m \x1b[4munderline\x1b[0m \x1b[3mitalic\x1b[0m \x1b[9mstruck\x1b[0m \x1b[7m inverse \x1b[0m\n"+
|
||||
"A long line that only breaks when wrapping is on, so the terminal layout of columns stays intact as it was printed.\n"+
|
||||
"Unknown escapes stay as text: \x1b[2K(cleared line)", mujica.AnsiTextOptions{Wrap: s.wrap})
|
||||
})
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user