import { AppMobMenuModel } from 'ibiz-vue';
import { ControlServiceBase } from 'ibiz-core';
import { IPSAppMenu } from '@ibiz/dynamic-model-api';

/**
 * 菜单部件服务对象
 * 
 * 
 */
export class AppMobMenuService extends ControlServiceBase {

    /**
    * 菜单实例对象
    *
    * @memberof AppMobMenuService
    */
    public MenuInstance !: IPSAppMenu;

    /**
     * 部件模型
     *
     * @type {(any | null)}
     * @memberof AppMobMenuService
     */
    public model: AppMobMenuModel | null = null;

    /**
     * Creates an instance of AppMobMenuService.
     * 
     * @memberof AppMobMenuService
     */
     constructor(opts: any = {}, context?: any, args?: any) {
        super(opts, context, args);
        this.MenuInstance = opts;
    }

    /**
     * 加载服务参数
     *
     * @type {boolean}
     * @memberof AppMobChartService
     */
    public async loaded(context: any, opt: any) {
        await this.initServiceParam(context, opt);
    }

    /**
     * 初始化服务参数
     *
     * @memberof AppMobMenuService
     */
    public async initServiceParam(context: any, opts: IPSAppMenu) {
        this.model = new AppMobMenuModel(context, opts);
        await this.model.loaded();
    }

    /**
     * 获取所有菜单项
     *
     * @memberof AppMobMenuService
     */
    public getAllMenuItems() {
        return this.model?.getAllMenuItems();
    }

    /**
     * 获取所有应用功能
     *
     * @memberof AppMobMenuService
     */
    public getAllFuncs() {
        return this.model?.getAllFuncs();
    }

    /**
     * 是否启用预制功能
     *
     * @readonly
     * @memberof AppMobMenuModel
     */
    get isEnablePrecutFuncs() {
        return this.model?.isEnablePrecutFuncs || false;
    }

    /**
     * 预制模型
     *
     * @memberof AppMobMenuModel
     */
    public getAllPrecutFuncs() {
        return this.model?.getAllPrecutFuncs() || [];
    }


    /**
     * 预制功能对应菜单
     *
     * @return {*} 
     * @memberof AppMobMenuModel
     */
    public getPrecutMenu() {
        return this.model?.getPrecutMenu();
    }
}