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
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()
|
|
}
|
|
|