aeus-admin/utils.go

65 lines
1.2 KiB
Go

package aeusadmin
import "git.nobla.cn/golang/aeus-admin/models"
type (
menuOptions struct {
icon string
position int
public bool
hidden bool
description string
}
MenuOption func(o *menuOptions)
)
func WithMenuIcon(icon string) MenuOption {
return func(o *menuOptions) {
o.icon = icon
}
}
func WithMenuPosition(position int) MenuOption {
return func(o *menuOptions) {
o.position = position
}
}
func WithMenuPublic(public bool) MenuOption {
return func(o *menuOptions) {
o.public = public
}
}
func WithMenuHidden(hidden bool) MenuOption {
return func(o *menuOptions) {
o.hidden = hidden
}
}
func WithMenuDescription(description string) MenuOption {
return func(o *menuOptions) {
o.description = description
}
}
func NewMenu(label string, name string, parent string, uri string, viewPath string, cbs ...MenuOption) *models.Menu {
opts := &menuOptions{}
for _, cb := range cbs {
cb(opts)
}
model := &models.Menu{}
model.Name = name
model.Label = label
model.Parent = parent
model.Uri = uri
model.ViewPath = viewPath
model.Public = opts.public
model.Position = int64(opts.position)
model.Icon = opts.icon
model.Hidden = opts.hidden
model.Description = opts.description
return model
}