/**
 * 通用js方法封装处理
 * Copyright (c) 2023 usky
 */


export default {
    /**
     * @全局postMessage
     * @三维模型PostMessage
     * @向父级页面发送
     */
    callFuncInThingJS(funcName, array) {
        var iframe = document.getElementById("cont-3D-iframe");
        var message = {
            funcName: funcName,
            param: array,
        };
        iframe.contentWindow.postMessage(message, "*");
    },

    /**
     * @数据处理
     * @param {需要处理的值或对象} data 
     * @param {执行的方法名} fun 
     */
    dataFilter(data, fun) {
        if (fun === "toString") {
            return data ? data.toString() : ""
        } else if (fun === "splitMapString") {
            return data != "" && typeof data === "string" ? data.split(",").map(String) : [];
        } else if (fun === "splitMapNumber") {
            return data != "" && typeof data === "string" ? data.split(",").map(Number) : [];
        }
    },

    /**
     * @数据递归
     * @param {需要处理的对象} objAry 
     * @param {对象键值} key 
     * @param {新的对象键值} newkey 
     */
    recursion(objAry, key, newkey) {
        console.log(objAry, key, newkey)
            // 修改树形结构的键值 把items替换为children
        objAry.forEach((item) => {
            // 如果它里面的children还是对象的话，就再调用一次这个函数
            if (typeof item[key] == "object") {
                // 递归，这里的调用传入的参数都是每一层的children对象！！
                this.recursion(item[key], key, newkey);
            }
            Object.assign(item, {
                [newkey]: item[key],
            });
            delete item[key];
        });
    },
    /**
     * @数据映射
     * @param {需要判断的值} value 
     * @param {需要映射的数据} data 
     * @param {需要判断的数据值字段} dataValue
     * @param {需要判断的返回值字段} returnValue
     * @returns 
     */
    mapping(value, data, dataValue, returnValue) {
        if(typeof(value) == 'string' && value.indexOf(",")>-1){ //value为字符串的id集合
            let arr = value.split(",")
            let arrReturnValue = ""
            for(let i=0;i<arr.length;i++){
                for (let ii = 0; ii < data.length; ii++) {
                    if (arr[i] == data[ii][dataValue]) {
                        arrReturnValue = arrReturnValue ? `${arrReturnValue},${data[ii][returnValue]}` : data[ii][returnValue]
                    }
                }
            }
            return arrReturnValue
            
        }else{
            for (let i = 0; i < data.length; i++) {
                if (value == data[i][dataValue]) {
                    return returnValue ? data[i][returnValue] : data[i];
                }
            }
        }
        
    },
    /**
     * 获取本地图片
     * @param {图片路径} url 
     * @returns 
     */
    getAssetsFile(url) {
        return new URL(`../assets/${url}`,
            import.meta.url).href
    }
}