var getColumn = function (list, style, collapse) {
const option = {
type: "column",
style: style,
collapse
};
if (Array.isArray(list)) {
option.list = list;
} else {
option.data = list;
}
return option;
}
var getRow = function (list, style, collapse) {
const option = {
type: "row",
style: style,
collapse
};
if (Array.isArray(list)) {
option.list = list;
} else {
option.data = list;
}
return option;
}
var layout = [
getRow([
getColumn([
getRow([
getColumn({
id:"1"
}),
getColumn({
id: "2"
}),
getColumn({
id: "3"
})
],null,2),
getRow([
getColumn({
id: "3-4"
})
]),
getRow([
getColumn({
id: "4"
})
]),
], null,3),
getColumn({
id: "4-5"
}),
getColumn({
id: "5"
})
]),
getRow([
getColumn([
getRow([
getColumn({
id: "6"
}),
getColumn({
id: "7"
}),
getColumn({
id: "8"
}),
getColumn({
id: "9"
})
]),
getRow([
getColumn({
id: "10"
}),
getColumn({
id: "11"
})
]),
getRow({
id: "12"
}),
getRow([
getColumn({
id: "13"
}),
getColumn({
id: "14"
}),
getColumn({
id: "15"
})
]),
]),
getColumn({
id: "16"
}),
getColumn()
], {})
];
var getLayout = () => {
var html = "<div class='layout'>"
var getRowHtml = (data) => {
const collapse = data.collapse || 1;
return `<div class='row' style='flex:${collapse}'>`
}
var getColumnHtml = (data) => {
const collapse = data.collapse || 1;
return `<div class='column' style='flex:${collapse}'>`
}
var getCellHtml = (data) => {
const text = data.data && data.data.id || ""
return `<span>${text}</span></div>`;
};
var excutor = function (layout) {
layout.forEach(data => {
const list = data.list;
if (!Array.isArray(data.list)) {
html += (data.type === "row" ? getRowHtml(data) : getColumnHtml(data));
html += getCellHtml(data);
return;
}
if (data.type === "row") {
html += getRowHtml(data)
excutor(list);
html += "</div>"
} else {
html += getColumnHtml(data)
excutor(list);
html += "</div>"
}
});
};
excutor(layout);
return html;
}
console.log(getLayout());