1. var getColumn = function (list, style, collapse) {
    2. const option = {
    3. type: "column",
    4. style: style,
    5. collapse
    6. };
    7. if (Array.isArray(list)) {
    8. option.list = list;
    9. } else {
    10. option.data = list;
    11. }
    12. return option;
    13. }
    14. var getRow = function (list, style, collapse) {
    15. const option = {
    16. type: "row",
    17. style: style,
    18. collapse
    19. };
    20. if (Array.isArray(list)) {
    21. option.list = list;
    22. } else {
    23. option.data = list;
    24. }
    25. return option;
    26. }
    27. var layout = [
    28. getRow([
    29. getColumn([
    30. getRow([
    31. getColumn({
    32. id:"1"
    33. }),
    34. getColumn({
    35. id: "2"
    36. }),
    37. getColumn({
    38. id: "3"
    39. })
    40. ],null,2),
    41. getRow([
    42. getColumn({
    43. id: "3-4"
    44. })
    45. ]),
    46. getRow([
    47. getColumn({
    48. id: "4"
    49. })
    50. ]),
    51. ], null,3),
    52. getColumn({
    53. id: "4-5"
    54. }),
    55. getColumn({
    56. id: "5"
    57. })
    58. ]),
    59. getRow([
    60. getColumn([
    61. getRow([
    62. getColumn({
    63. id: "6"
    64. }),
    65. getColumn({
    66. id: "7"
    67. }),
    68. getColumn({
    69. id: "8"
    70. }),
    71. getColumn({
    72. id: "9"
    73. })
    74. ]),
    75. getRow([
    76. getColumn({
    77. id: "10"
    78. }),
    79. getColumn({
    80. id: "11"
    81. })
    82. ]),
    83. getRow({
    84. id: "12"
    85. }),
    86. getRow([
    87. getColumn({
    88. id: "13"
    89. }),
    90. getColumn({
    91. id: "14"
    92. }),
    93. getColumn({
    94. id: "15"
    95. })
    96. ]),
    97. ]),
    98. getColumn({
    99. id: "16"
    100. }),
    101. getColumn()
    102. ], {})
    103. ];
    104. var getLayout = () => {
    105. var html = "<div class='layout'>"
    106. var getRowHtml = (data) => {
    107. const collapse = data.collapse || 1;
    108. return `<div class='row' style='flex:${collapse}'>`
    109. }
    110. var getColumnHtml = (data) => {
    111. const collapse = data.collapse || 1;
    112. return `<div class='column' style='flex:${collapse}'>`
    113. }
    114. var getCellHtml = (data) => {
    115. const text = data.data && data.data.id || ""
    116. return `<span>${text}</span></div>`;
    117. };
    118. var excutor = function (layout) {
    119. layout.forEach(data => {
    120. const list = data.list;
    121. if (!Array.isArray(data.list)) {
    122. html += (data.type === "row" ? getRowHtml(data) : getColumnHtml(data));
    123. html += getCellHtml(data);
    124. return;
    125. }
    126. if (data.type === "row") {
    127. html += getRowHtml(data)
    128. excutor(list);
    129. html += "</div>"
    130. } else {
    131. html += getColumnHtml(data)
    132. excutor(list);
    133. html += "</div>"
    134. }
    135. });
    136. };
    137. excutor(layout);
    138. return html;
    139. }
    140. console.log(getLayout());