1 |
- {"remainingRequest":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\eslint-loader\\index.js??ref--13-0!E:\\boman-framwork\\ruoyi-ui\\src\\api\\layoutAlgorithm.js","dependencies":[{"path":"E:\\boman-framwork\\ruoyi-ui\\src\\api\\layoutAlgorithm.js","mtime":1619607677250},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\eslint-loader\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:InVzZSBzdHJpY3QiOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwpleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsbC5qcyIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnJlZHVjZS5qcyIpOwoKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qcyIpOwoKLy8g5p+l5om+5pWw57uE5Lit5pyA5ZCO5LiA5Liq5LiN5Li656m655qE5YC877yM6I635Y+W5Y+v5L2/55So56m65L2NLOS4uuS6huaJvuWHuui/meS4gOihjOaYr+WQpuiDveWkn+WtmOaUvuW9k+WJjeWFg+e0oOOAggovLyDov5Tlm57lgLzkuLror6XooYzlj6/mlL7nmoTnqbrmoLzmlbAKZnVuY3Rpb24gZ2V0TGFzdE5vdE51bGwoYXJyYXkpIHsKICB2YXIgY2FuVXNlTGVuZ3RoID0gYXJyYXkubGVuZ3RoOyAvLyDmlbDnu4Tlj5blj40s6I635Y+W5Yiw56ys5LiA5Liq5LiN5Li656m655qE5YC877yM5YiZ5Yik5pat5Ye66K+l6KGM5Y+v5pS+55qE56m65qC85pWw6YePCgogIGFycmF5LnJldmVyc2UoKS5ldmVyeShmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHsKICAgIGlmIChpdGVtKSB7CiAgICAgIGNhblVzZUxlbmd0aCA9IGluZGV4OwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcmV0dXJuIHRydWU7CiAgfSk7CiAgcmV0dXJuIGNhblVzZUxlbmd0aDsKfSAvLyDliKTmlq3ku47lvZPliY3nqbrmoLzlvIDlp4vloavvvIzmmK/lkKbmiYDmnInnqbrmoLzpg73og73lpJ/mlL7lhaUKLy8gY3VycmVudFJvdzrlvZPliY3lvIDlp4vloavlhYXooYwKLy8gY3VycmVudENvbDrlvZPliY3lvIDlp4vloavlhYXliJcKLy8gcG9pbnRlcjrlvZPliY3lhYPntKDnmoTmlbDmja7vvIzlrr3pq5gKLy8gTGlzdHNNYXA65b2T5YmN5pW05Liq5aGr5YWF5Z2X55qECi8vIGRlZmF1bHRDb2x1bW466buY6K6k5LiA5YiX55qE6KGM5pWwCgoKZnVuY3Rpb24gY2hlY2tBbGxTcGFjZShjdXJyZW50Um93LCBjdXJyZW50Q29sLCBwb2ludGVyLCBMaXN0c01hcCwgZGVmYXVsdENvbHVtbikgewogIHZhciByb3dBcnJheSA9IEFycmF5KHBvaW50ZXIucm93KS5maWxsKG51bGwpOwogIHZhciBjb2xBcnJheSA9IEFycmF5KHBvaW50ZXIuY29sKS5maWxsKG51bGwpOwogIHZhciBmbGFnID0gdHJ1ZTsKICByb3dBcnJheS5tYXAoZnVuY3Rpb24gKGl0ZW0sIHJvdykgewogICAgY29sQXJyYXkubWFwKGZ1bmN0aW9uICh0ZW1wLCBjb2wpIHsKICAgICAgaWYgKExpc3RzTWFwW3JvdyArIGN1cnJlbnRSb3ddW2NvbCArIGN1cnJlbnRDb2xdKSB7CiAgICAgICAgZmxhZyA9IGZhbHNlOwogICAgICB9CiAgICB9KTsKICB9KTsKCiAgaWYgKGN1cnJlbnRDb2wgKyBwb2ludGVyLmNvbCA+IGRlZmF1bHRDb2x1bW4pIHsKICAgIGZsYWcgPSBmYWxzZTsKICB9CgogIHJldHVybiBmbGFnOwp9IC8vIGRlZmF1bHRDb2x1bW466buY6K6k5q+P6KGM55qE5YiX5pWwCi8vIGxpc3RzOlt7ICAvL+avj+S4gOS4qml0ZW3nmoTooYzlkozlrr0KLy8gICByb3c6LAovLyAgIGNvbDoKLy8gfV0KLy8gdHlwZTpmaWxsICDloavlhYUgIG5ld2xpbmUgIOaNouihjAovLyDov5Tlm57lgLzmmK/lnKhsaXN0c+eahGl0ZW3kuK3mt7vliqB4LHnlsZ7mgKc6Ci8vIHsKLy8gICB5OmkrMSwgIC8v5YiXCi8vICAgeDpqKzEsICAvL+ihjAovLyAgIHJvdzpwb2ludGVyLnJvdywgLy/ooYzpq5gKLy8gICBjb2w6cG9pbnRlci5jb2wgIC8v5a696auYCi8vIH0KCgpmdW5jdGlvbiBsYXlvdXRBbGdvcml0aG0oZGVmYXVsdENvbHVtbiwgbGlzdHMpIHsKICB2YXIgdHlwZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogJ2ZpbGwnOwogIC8vIOWumuS5ieavj+S4gOihjOeahOepuuaVsOaNrmRlZmF1bHRSb3cKICB2YXIgZGVmYXVsdFJvdyA9IEFycmF5KGRlZmF1bHRDb2x1bW4pLmZpbGwobnVsbCk7IC8vIOWumuS5ieacgOWkp+ihjOaVsAoKICB2YXIgbnVtID0gbGlzdHMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIGN1cnJlbnQpIHsKICAgIHN1bSArPSAhY3VycmVudC5yb3cgfHwgY3VycmVudC5yb3cgPCAxID8gMSA6IGN1cnJlbnQucm93OwogICAgcmV0dXJuIHN1bTsKICB9LCAwKTsKICB2YXIgc3VtQXJyYXkgPSBBcnJheShudW0pLmZpbGwobnVsbCk7IC8vIOWumuS5iW1hcOaooeWeiyDpu5jorqQgNTAqZGVmYXVsdENvbHVtbueahOW4g+WxgAoKICB2YXIgTGlzdHNNYXAgPSBzdW1BcnJheS5jb25jYXQoW10pLnJlZHVjZShmdW5jdGlvbiAoY3VycmVudFZhbHVlKSB7CiAgICBjdXJyZW50VmFsdWUucHVzaChkZWZhdWx0Um93LmNvbmNhdChbXSkpOwogICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTsKICB9LCBbXSk7CiAgdmFyIGNvb3JkaW5hdGVNYXAgPSB7fTsgLy8g6YGN5Y6G6YWN572u5paH5Lu255qE6KGM5YiX5pWw77yM6I635Y+W5a+55bqU55qEZ3JpZOW4g+WxgOWdkOaghwoKICBsaXN0cy5ldmVyeShmdW5jdGlvbiAocG9pbnRlciwgcG9pbnRlckluZGV4KSB7CiAgICAvLyDlr7nliJ3lp4vljJbmlbDmja7ov5vooYzliKTmlq3lpITnkIYKICAgIC8vIOW9k+WIl+aVsOWkp+S6jum7mOiupOWIhuWIl+aXtu+8jOWwhuW9k+WJjeWFg+e0oOWIl+aUueS4uum7mOiupOeahOWIhuWIl+aVsAogICAgLy8g5b2T5b2T5YmN6aG55rKh5pyJ6K6+572u5a696auY77yM6buY6K6k6K6+5Li6MQogICAgaWYgKHBvaW50ZXIuc2hvdyA9PT0gZmFsc2UpIHsKICAgICAgLy8g5b2T5bGe5oCnc2hvd+S4umZhbHNl5pe277yM5YiZ6buY6K6k6L+U5Zue5L2N572uKC0xLC0xKeWNs+S4jeaYvuekuuivpeiKgueCuQogICAgICBpZiAoIWNvb3JkaW5hdGVNYXBbcG9pbnRlckluZGV4XSkgewogICAgICAgIC8vIOiusOW9lei1t+Wni+eahOihjOWIl+S7peWPiuWuvemrmO+8jOS9nOS4umZ1bmN0aW9u6L+U5Zue5YC8CiAgICAgICAgcG9pbnRlci54ID0gLTE7CiAgICAgICAgcG9pbnRlci55ID0gLTE7CiAgICAgICAgY29vcmRpbmF0ZU1hcFtwb2ludGVySW5kZXhdID0gcG9pbnRlcjsKICAgICAgfQoKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcG9pbnRlci5jb2wgPSAhcG9pbnRlci5jb2wgfHwgcG9pbnRlci5jb2wgPCAxID8gMSA6IHBvaW50ZXIuY29sOwogICAgcG9pbnRlci5jb2wgPSBwb2ludGVyLmNvbCA+IGRlZmF1bHRDb2x1bW4gPyBkZWZhdWx0Q29sdW1uIDogcG9pbnRlci5jb2w7CiAgICBwb2ludGVyLnJvdyA9ICFwb2ludGVyLnJvdyB8fCBwb2ludGVyLnJvdyA8IDEgPyAxIDogcG9pbnRlci5yb3c7CiAgICBMaXN0c01hcC5ldmVyeShmdW5jdGlvbiAoaXRlbSwgaSkgewogICAgICByZXR1cm4gaXRlbS5ldmVyeShmdW5jdGlvbiAodGVtcCwgaikgewogICAgICAgIC8vIOW9k+exu+Wei+S4uuaNouihjOaXtizliKTmlq3or6XooYzmmK/lkKblj6/mlL7lhaUs5LiN5Y+v5pS+5YWl5pe25YiZ5o2i6KGMCiAgICAgICAgaWYgKHR5cGUgPT09ICduZXdsaW5lJykgewogICAgICAgICAgaWYgKGdldExhc3ROb3ROdWxsKFtdLmNvbmNhdChpdGVtKSkgPCBwb2ludGVyLmNvbCkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICB9IC8vIOW9k+exu+Wei+S4uuWhq+WFheaXtizmiY3miafooYxjaGVja0FsbFNwYWNl77yM5a+55a+55bqU55qE5omA5pyJ56m65qC86L+b6KGM5Y+v5aGr5YWF5Yik5patCgoKICAgICAgICBpZiAoIXRlbXAgJiYgKHR5cGUgPT09ICdmaWxsJyA/IGNoZWNrQWxsU3BhY2UoaSwgaiwgcG9pbnRlciwgTGlzdHNNYXAsIGRlZmF1bHRDb2x1bW4pIDogdHJ1ZSkpIHsKICAgICAgICAgIC8vIOS4uuepuuaXtuWPr+aUvgogICAgICAgICAgaWYgKCFjb29yZGluYXRlTWFwW3BvaW50ZXJJbmRleF0pIHsKICAgICAgICAgICAgLy8g6K6w5b2V6LW35aeL55qE6KGM5YiX5Lul5Y+K5a696auY77yM5L2c5Li6ZnVuY3Rpb27ov5Tlm57lgLwKICAgICAgICAgICAgcG9pbnRlci54ID0gaiArIDE7CiAgICAgICAgICAgIHBvaW50ZXIueSA9IGkgKyAxOwogICAgICAgICAgICBjb29yZGluYXRlTWFwW3BvaW50ZXJJbmRleF0gPSBwb2ludGVyOwogICAgICAgICAgfSAvLyDlsIblr7nlupTnmoTngrnmiZPkuIrmoIforrAKCgogICAgICAgICAgdmFyIHJvd0FycmF5ID0gQXJyYXkocG9pbnRlci5yb3cpLmZpbGwobnVsbCk7CiAgICAgICAgICB2YXIgY29sQXJyYXkgPSBBcnJheShwb2ludGVyLmNvbCkuZmlsbChudWxsKTsKICAgICAgICAgIHJvd0FycmF5Lm1hcChmdW5jdGlvbiAoaXRlbSwgcm93KSB7CiAgICAgICAgICAgIGNvbEFycmF5Lm1hcChmdW5jdGlvbiAodGVtcCwgY29sKSB7CiAgICAgICAgICAgICAgTGlzdHNNYXBbaSArIHJvd11baiArIGNvbF0gPSAiayIuY29uY2F0KHBvaW50ZXJJbmRleCk7CiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0pOwogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0pOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKICB9KTsKICByZXR1cm4gY29vcmRpbmF0ZU1hcDsKfQoKdmFyIF9kZWZhdWx0ID0gbGF5b3V0QWxnb3JpdGhtOwpleHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDs="},{"version":3,"sources":["E:/boman-framwork/ruoyi-ui/src/api/layoutAlgorithm.js"],"names":["getLastNotNull","array","canUseLength","length","reverse","every","item","index","checkAllSpace","currentRow","currentCol","pointer","ListsMap","defaultColumn","rowArray","Array","row","fill","colArray","col","flag","map","temp","layoutAlgorithm","lists","type","defaultRow","num","reduce","sum","current","sumArray","concat","currentValue","push","coordinateMap","pointerIndex","show","x","y","i","j"],"mappings":"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","sourcesContent":["\r\n// 查找数组中最后一个不为空的值,获取可使用空位,为了找出这一行是否能够存放当前元素。\r\n// 返回值为该行可放的空格数\r\nfunction getLastNotNull(array) {\r\n let canUseLength = array.length;\r\n // 数组取反,获取到第一个不为空的值,则判断出该行可放的空格数量\r\n array.reverse().every((item, index) => {\r\n if (item) {\r\n canUseLength = index;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return canUseLength;\r\n}\r\n\r\n\r\n// 判断从当前空格开始填,是否所有空格都能够放入\r\n// currentRow:当前开始填充行\r\n// currentCol:当前开始填充列\r\n// pointer:当前元素的数据,宽高\r\n// ListsMap:当前整个填充块的\r\n// defaultColumn:默认一列的行数\r\nfunction checkAllSpace(currentRow, currentCol, pointer, ListsMap, defaultColumn) {\r\n const rowArray = Array(pointer.row).fill(null);\r\n const colArray = Array(pointer.col).fill(null);\r\n \r\n let flag = true;\r\n rowArray.map((item, row) => {\r\n colArray.map((temp, col) => {\r\n if (ListsMap[row + currentRow][col + currentCol]) {\r\n flag = false;\r\n }\r\n });\r\n });\r\n if ((currentCol + pointer.col) > defaultColumn) {\r\n flag = false;\r\n }\r\n return flag;\r\n}\r\n\r\n\r\n// defaultColumn:默认每行的列数\r\n// lists:[{ //每一个item的行和宽\r\n// row:,\r\n// col:\r\n// }]\r\n// type:fill 填充 newline 换行\r\n// 返回值是在lists的item中添加x,y属性:\r\n// {\r\n// y:i+1, //列\r\n// x:j+1, //行\r\n// row:pointer.row, //行高\r\n// col:pointer.col //宽高\r\n// }\r\nfunction layoutAlgorithm(defaultColumn, lists, type = 'fill') {\r\n // 定义每一行的空数据defaultRow\r\n const defaultRow = Array(defaultColumn).fill(null);\r\n // 定义最大行数\r\n const num = lists.reduce((sum, current) => { sum += (!current.row || current.row < 1) ? 1 : current.row; return sum; }, 0);\r\n const sumArray = Array(num).fill(null);\r\n\r\n // 定义map模型 默认 50*defaultColumn的布局\r\n const ListsMap = sumArray.concat([]).reduce((currentValue) => {\r\n currentValue.push(defaultRow.concat([]));\r\n return currentValue;\r\n }, []);\r\n\r\n\r\n const coordinateMap = {};\r\n // 遍历配置文件的行列数,获取对应的grid布局坐标\r\n lists.every((pointer, pointerIndex) => {\r\n // 对初始化数据进行判断处理\r\n // 当列数大于默认分列时,将当前元素列改为默认的分列数\r\n // 当当前项没有设置宽高,默认设为1\r\n if (pointer.show === false) { // 当属性show为false时,则默认返回位置(-1,-1)即不显示该节点\r\n if (!coordinateMap[pointerIndex]) { // 记录起始的行列以及宽高,作为function返回值\r\n pointer.x = -1;\r\n pointer.y = -1;\r\n coordinateMap[pointerIndex] = pointer;\r\n }\r\n return true;\r\n }\r\n pointer.col = (!pointer.col || pointer.col < 1) ? 1 : pointer.col;\r\n pointer.col = pointer.col > defaultColumn ? defaultColumn : pointer.col;\r\n pointer.row = (!pointer.row || pointer.row < 1) ? 1 : pointer.row;\r\n ListsMap.every((item, i) => item.every((temp, j) => {\r\n // 当类型为换行时,判断该行是否可放入,不可放入时则换行\r\n if (type === 'newline') {\r\n if (getLastNotNull([].concat(item)) < pointer.col) {\r\n return true;\r\n }\r\n }\r\n // 当类型为填充时,才执行checkAllSpace,对对应的所有空格进行可填充判断\r\n if (!temp && (type === 'fill' ? checkAllSpace(i, j, pointer, ListsMap, defaultColumn) : true)) { // 为空时可放\r\n if (!coordinateMap[pointerIndex]) { // 记录起始的行列以及宽高,作为function返回值\r\n pointer.x = j + 1;\r\n pointer.y = i + 1;\r\n coordinateMap[pointerIndex] = pointer;\r\n }\r\n // 将对应的点打上标记\r\n const rowArray = Array(pointer.row).fill(null);\r\n const colArray = Array(pointer.col).fill(null);\r\n rowArray.map((item, row) => {\r\n colArray.map((temp, col) => {\r\n ListsMap[i + row][j + col] = `k${pointerIndex}`;\r\n return true;\r\n });\r\n return true;\r\n });\r\n\r\n return false;\r\n }\r\n return true;\r\n }));\r\n return true;\r\n });\r\n\r\n return coordinateMap;\r\n} \r\n\r\n\r\nexport default layoutAlgorithm;\r\n"]}]}
|