an updated and hopefully faster version of the ST Toolbox
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.
 
 
 
 

129 lines
3.1 KiB

package menu
import (
"marmic/servicetrade-toolbox/internal/api"
"marmic/servicetrade-toolbox/internal/ui"
)
type MenuItem struct {
Name string
Handler func(*api.Session)
Submenu []MenuItem
}
func GetMainMenu() []MenuItem {
return []MenuItem{
{"Administration", HandleAdministration, nil},
{"Assets", HandleAssets, nil},
{"Companies", HandleCompanies, nil},
{"Contacts", HandleContacts, nil},
{"Contracts", HandleContracts, nil},
{"Generic Tools", HandleGenericTools, nil},
{"Invoices", HandleInvoices, nil},
{"Jobs", HandleJobs, nil},
{"Locations", HandleLocations, nil},
{"Notifications", HandleNotifications, nil},
{"Quotes", HandleQuotes, nil},
{"Services", HandleServices, nil},
{"Tags", HandleTags, nil},
{"Users", HandleUsers, nil},
}
}
func DisplayMenuAndGetChoice(menuItems []MenuItem, title string) int {
for {
displayMenuItems := make([]string, len(menuItems)+1)
for i, item := range menuItems {
displayMenuItems[i] = item.Name
}
displayMenuItems[len(menuItems)] = "Back/Exit"
ui.DisplayMenu(displayMenuItems, title)
choice, err := ui.GetUserChoice(len(displayMenuItems))
if err == nil {
return choice
}
ui.DisplayMessage("Invalid input. Please try again.")
ui.PressEnterToContinue()
}
}
// Placeholder functions for other main menu items
func HandleAdministration(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Administration menu placeholder")
ui.PressEnterToContinue()
}
func HandleAssets(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Assets menu placeholder")
ui.PressEnterToContinue()
}
func HandleCompanies(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Companies menu placeholder")
ui.PressEnterToContinue()
}
func HandleContacts(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Contacts menu placeholder")
ui.PressEnterToContinue()
}
func HandleContracts(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Contracts menu placeholder")
ui.PressEnterToContinue()
}
func HandleGenericTools(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Generic Tools menu placeholder")
ui.PressEnterToContinue()
}
func HandleInvoices(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Invoices menu placeholder")
ui.PressEnterToContinue()
}
func HandleLocations(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Locations menu placeholder")
ui.PressEnterToContinue()
}
func HandleNotifications(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Notifications menu placeholder")
ui.PressEnterToContinue()
}
func HandleQuotes(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Quotes menu placeholder")
ui.PressEnterToContinue()
}
func HandleServices(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Services menu placeholder")
ui.PressEnterToContinue()
}
func HandleTags(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Tags menu placeholder")
ui.PressEnterToContinue()
}
func HandleUsers(session *api.Session) {
ui.ClearScreen()
ui.DisplayMessage("Users menu placeholder")
ui.PressEnterToContinue()
}