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.
73 lines
1.8 KiB
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()
|
|
})
|
|
}
|
|
|