package gaf3.core.services.menu.domain

import com.fasterxml.jackson.annotation.JsonInclude


/**
 * 扁平化的菜单项数据
 * The persistent class for the GAF_MENU_ITEM database table.
 *
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
class MenuItem {

    /**
     * 菜单项ID
     */
    var id: String? = null

    /**
     * 菜单项上级ID
     */
    var pid: String? = null

    /**
     * 所属应用模块，仅当根级菜单有效
     * 用于分组过滤菜单树节点
     */
    var module: String? = null

    /**
     * 菜单显示模式，仅当根级菜单有效
     * 可选值有：
     *      0 - 仅在树状菜单中显示，默认
     *      1 - 仅在横向导航条菜单中显示
     *      2 - 双模式
     */
    var mode: String? = null

    /**
     * 显示名称
     */
    var title: String? = null

    /**
     * 显示图标（css样式类）
     */
    var icon: String? = null

    /**
     * 路由地址，SPA内部跳转
     * path和（url，target）二选一，优先使用path，即path有效时（url，target）忽略
     */
    var path: String? = null

    /**
     * 跳转地址
     * URL链接或SPA内部路由地址，与target配合使用
     */
    var url: String? = null

    /**
     * 跳转页面打开方式，对应html中<a>标签的target属性
     */
    var target: String? = null

    /**
     * 菜单可见性
     */
    var visible: Boolean? = null

    var children: List<MenuItem>? = null

    companion object {
        private const val serialVersionUID = 1L
    }

}