Das Timetracking-Tool kann die gearbeiteten Zeiten von Gitea auslesen und in eine CSV-Datei verwandeln.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Timetracking-Tool/gui/gui.go

73 lines
1.8 KiB

package gui
import (
"fmt"
"git.jonasfranz.software/vidsta/Timetracking-Tool/exporter"
"github.com/andlabs/ui"
)
func StartGUI() error {
return ui.Main(func() {
url := ui.NewEntry()
key := ui.NewEntry()
button := ui.NewButton("Connect and export as CSV...")
repo_box := ui.NewHorizontalBox()
owner := ui.NewEntry()
owner.SetText("vidsta")
repo := ui.NewEntry()
repo.SetText("vidsta")
repo_box.Append(owner, false)
repo_box.Append(ui.NewLabel(" / "), false)
repo_box.Append(repo, false)
box := ui.NewVerticalBox()
box.Append(ui.NewLabel("Gitea-URL:"), false)
box.Append(url, false)
box.Append(ui.NewLabel("Access-Key:"), false)
box.Append(key, false)
box.Append(ui.NewLabel("Repository:"), false)
box.Append(repo_box, true)
box.Append(button, false)
report_label := ui.NewLabel("")
box.Append(report_label, false)
window := ui.NewWindow("Timetracking Tool for Gitea", 400, 200, false)
window.SetChild(box)
button.OnClicked(func(*ui.Button) {
path := ui.SaveFile(window)
button.Disable()
report_label.SetText("")
tt := exporter.Timetracker{
Repository: exporter.Repo{
Repository: repo.Text(),
Owner: owner.Text(),
},
Credentials: exporter.Credentials{
Token: key.Text(),
URL: url.Text(),
},
}
go func(path string) {
result, err := tt.Download()
if err != nil {
report_label.SetText(fmt.Sprintf("Error: %v", err))
button.Enable()
return
}
err = result.SaveToCSV(path)
if err != nil {
report_label.SetText(fmt.Sprintf("Error: %v", err))
button.Enable()
return
}
report_label.SetText("Success!")
button.Enable()
}(path)
})
window.OnClosing(func(*ui.Window) bool {
ui.Quit()
return true
})
window.Show()
})
}