@opensig/opendesign
Version:
<p align="center"><img src="../docs/public/opendesign-logo-light.png"/></p> <h1 align="center">opendesign</h1> <p align="center">一个 Vue 3 组件库</p> <p align="center"><b>皮肤可定制,使用 TypeScript</b></p>
78 lines (77 loc) • 1.89 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const is = require("../_utils/is.js");
function getColumnData(columns) {
if (!is.isArray(columns)) {
return [];
}
return columns.map((item) => {
if (is.isString(item)) {
return {
key: item,
label: item
};
}
return {
...item
};
});
}
function getSkipCell(rowIndex, columnIndex, span) {
const skip = {};
const { colspan = 1, rowspan = 1 } = span;
for (let i = 0; i < rowspan; i++) {
for (let j = 0; j < colspan; j++) {
if (i !== 0 || j !== 0) {
skip[`${rowIndex + i}-${columnIndex + j}`] = true;
}
}
}
return skip;
}
function getBodyData(columnData, bodyData, cellSpan) {
if (!bodyData) {
return [];
}
const t = bodyData.length;
const s = 0;
const colLenght = columnData.value.length;
const rlt = [];
let span = null;
const skipCell = {};
const end = Math.min(s + t, bodyData.length);
for (let r = s; r < end; r += 1) {
const row = bodyData[r];
const cols = [];
for (let c = 0; c < colLenght; c += 1) {
const col = columnData.value[c];
if (is.isFunction(cellSpan)) {
span = cellSpan(r, c, row, col);
}
const cell = {
value: row[col.key],
key: col.key
};
if (span) {
const { colspan = 1, rowspan = 1 } = span;
Object.assign(skipCell, getSkipCell(r, c, span));
if (colspan > 1) {
cell.colspan = colspan;
}
if (rowspan > 1) {
cell.rowspan = rowspan;
}
}
if (!skipCell[`${r}-${c}`]) {
if (c === colLenght - 1) {
cell.last = true;
}
cols.push(cell);
}
}
rlt.push({ key: row.key, data: cols });
}
return rlt;
}
exports.getBodyData = getBodyData;
exports.getColumnData = getColumnData;