import formPlugin from "../../../../../assets/js/global/formPlugin";

const columnFormatComponents = require.context(
    '../',
    // 是否查询其子目录
    true,
    // 匹配vue后缀文件名的文件
    /\.vue$/
);

const tableViewsConfigComponents = require.context(
    './tableViewsComponent/config/',
    // 是否查询其子目录
    true,
    // 匹配vue后缀文件名的文件
    /\.vue$/
);

const tableViewsRenderComponents = require.context(
    './tableViewsComponent/render/',
    // 是否查询其子目录
    true,
    // 匹配vue后缀文件名的文件
    /\.vue$/
);

let formatComponent = {}; // 加载格式化中所有配置与渲染组件
let tableViewsConfigArr = []; // 加载表单视图中所有配置组件
let tableViewsRenderArr = []; // 加载表单视图中所有渲染组件
columnFormatComponents.keys().forEach(fileName => {
    const component = columnFormatComponents(fileName).default;
    formatComponent[component.name]= component;
});
tableViewsConfigComponents.keys().forEach(fileName => {
    const component = tableViewsConfigComponents(fileName).default;
    tableViewsConfigArr.push(component);
});
tableViewsRenderComponents.keys().forEach(fileName => {
    const component = tableViewsRenderComponents(fileName).default;
    tableViewsRenderArr.push(component);
});


let arrFormats = [{
    id:"onlyEvent",
    name:"仅配置动作",
    isExistsEvent:true, // 是否需要配置动作
    config:null, // 配置组件
    render:null, // 渲染组件
    // getConfigDatas:"getConfigDatas", // 获取配置组件内容的方法，不写默认getConfigDatas
    reqBefore:null, // 请求前加载组件
    reqAfter:null, // 请求后加载组件
},{
    id:"codeFormatter",
    name:"状态码",
    isExistsEvent:true, // 是否需要配置动作
    config:formatComponent["code-formatter-config"], // 配置组件
    render:formatComponent["code-formatter-render"], // 渲染组件
    // getConfigDatas:"getConfigDatas", // 获取配置组件内容的方法，不写默认getConfigDatas
    reqBefore:formatComponent["test-before"], // 请求前加载组件
    reqAfter:formatComponent["test-after"], // 请求后加载组件
},{
    id:"batchRequestFormatter",
    name:"批量远程请求",
    isExistsEvent:true, // 是否需要配置动作
    config:formatComponent["batch-remote-request-config"], // 配置组件
    render:formatComponent["batch-remote-request-render"], // 渲染组件
    // getConfigDatas:"getConfigDatas", // 获取配置组件内容的方法，不写默认getConfigDatas
    reqBefore:null, // 请求前加载组件
    reqAfter:formatComponent["batch-remote-request-after"], // 请求后加载组件
},{
    id:"popverComp",
    name:"点击弹出popver",
    isExistsEvent:false, // 是否需要配置动作
    config:null, // 配置组件
    render:formatComponent["popver-comp-render"],// 渲染组件
        // getConfigDatas:"getConfigDatas", // 获取配置组件内容的方法，不写默认getConfigDatas
    reqBefore:null, // 请求前加载组件
    reqAfter:null, // 请求后加载组件
},{
    id:"showImg",
    name:"查看图片",
    isExistsEvent:false, // 是否需要配置动作
    config:formatComponent["show-img-config"], // 配置组件
    render:formatComponent["show-img-render"],// 渲染组件
    reqBefore:null, // 请求前加载组件
    reqAfter:null, // 请求后加载组件
},];

let arrEvents = [{
    id: "openTableView",
    name: "打开表单视图页面",
    config: formatComponent["table-view-config"], // 配置组件（如果不存在配置组件，默认提供参数绑定组件）
    // getEventDatas:"getEventDatas", // 获取事件配置内容的方法，不写默认getEventDatas
    render: formatComponent["table-view-render"], // 渲染组件
    runEvent:"runEvent", // 调用点击或双击事件时执行的方法名，不写默认runEvent
},{
    id: "openListView",
    name:"打开列表视图页面",
    config: formatComponent["list-view-config"], // 配置组件（如果不存在配置组件，默认提供参数绑定组件）
    // getEventDatas:"getEventDatas", // 获取事件配置内容的方法，不写默认getEventDatas
    render: formatComponent["list-view-render"], // 渲染组件
    runEvent:"runEvent", // 调用点击或双击事件时执行的方法名，不写默认runEvent
},{ //打开一个新页面
    id: "openNewPage",
    name:"打开一个新页面",
    config: formatComponent["new-page-config"],
    // getEventDatas:"getEventDatas", // 获取事件配置内容的方法
    render: formatComponent["new-page-render"], // 渲染组件
    runEvent:"runEvent", // 调用点击或双击事件时执行的方法名，不写默认runEvent
}];

export default {
    name: "loadFormPlugin",
    installAll(){
        setTimeout(() => {
            arrFormats.forEach(item => {
                formPlugin.installColumnFormatter(item);
            })
            arrEvents.forEach(item => {
                formPlugin.installColumnEvent(item);
            })
            formPlugin.installTableViewsConfigComponent(tableViewsConfigArr);
            formPlugin.installTableViewsRenderComponent(tableViewsRenderArr);
        })
    }
}
