Suggest a feature
×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Added: Mar 6, 2019 12:23 PM
Views: 32
Tags: no tags
Generate html table by data
Example:
var headers = [
[{
attr: {
colspan: 4
},
value: 'Соотношение закупок СМП, СОНКО к общему объему'
}],
['Тип процедуры', 'Общий объем закупок (руб)', {attr: {colspan: 2}, value: 'Закупки СМП, СОНКО (руб/%)'}]
];

var rows = [
['Электронный аукцион', '6 000 000', '3 650 000', '33%'],
['Открытый конкурс', '3 100 000', '900 000', '40%'],
['Запрос предложений', '7 350 000', '2 700 000', '29%'],
['Запрос котировок', '6 000 000', '2 000 000', '15%'],
['Открытый двухэтапный конкурс', '3 600 000', '0', '0%'],
['Открытый конкурс с ограниченным участием', '3 600 000', '0', '0%'],
['<b>Всего закупок</b>', '<b>10 660 000</b>', '<b>0</b>', '<b>0%</b>']
];

var attr = {class: 'blueTable'};
  1. /**
  2.  * Генерация html таблицы
  3.  * @param headers Array
  4.  * @param rows Array
  5.  * @param attr Object Table attributes
  6.  * @return string
  7.  */
  8. function generateTable(rows, headers = [], attr = {}) {
  9.     var attributes = [];
  10.     Object.keys(attr).forEach(function (key) {
  11.         attributes.push(key + '=&quot;' + attr[key] + '&quot;');
  12.     });
  13.     var table = '&lt;table ' + attributes.join(' ') + '&gt;';
  14.  
  15.     // Headers
  16.     table += '&lt;thead&gt;';
  17.     headers.forEach(function(header) {
  18.         table += '&lt;tr&gt;';
  19.         if (Array.isArray(header)) {
  20.             header.forEach(function (col) {
  21.                 if (typeof col === 'object') {
  22.                     var attributes = [];
  23.                     var attr = col.attr;
  24.                     if (Object.keys(attr).length) {
  25.                         Object.keys(attr).forEach(function(key){
  26.                             attributes.push(key + '=&quot;' + attr[key] + '&quot;');
  27.                         });
  28.                     }
  29.                     table += '&lt;td ' + attributes.join(' ') + '&gt;&lt;b&gt;' + col.value.replace(/\"/g, '&quot;') + '&lt;/b&gt;&lt;/td&gt;';
  30.                 } else if (typeof col === 'string') {
  31.                     table += '&lt;td&gt;&lt;b&gt;' + col.replace(/\"/g, '&quot;') + '&lt;/b&gt;&lt;/td&gt;';
  32.                 } else {
  33.                     console.warn('col not string|object!', col);
  34.                 }
  35.             });
  36.         } else if (typeof header === 'object') {
  37.  
  38.             table += '&lt;td&gt;&lt;b&gt;' + header.value.replace(/\"/g, '&quot;') + '&lt;/b&gt;&lt;/td&gt;';
  39.         } else if (typeof header === 'string') {
  40.             table += '&lt;td&gt;&lt;b&gt;' + header.replace(/\"/g, '&quot;') + '&lt;/b&gt;&lt;/td&gt;';
  41.         } else {
  42.             console.warn('col is not a (string|object)!', col);
  43.         }
  44.         table += '&lt;/tr&gt;';
  45.     });
  46.     table += '&lt;/thead&gt;';
  47.  
  48.     // Rows
  49.     table += '&lt;tbody&gt;';
  50.     rows.forEach(function(row) {
  51.         table += '&lt;tr&gt;';
  52.         if (Array.isArray(row)) {
  53.             row.forEach(function (col) {
  54.                 if (typeof col === 'object') {
  55.                     var attributes = [];
  56.                     var attr = col.attr;
  57.                     if (Object.keys(attr).length) {
  58.                         Object.keys(attr).forEach(function(key){
  59.                             attributes.push(key + '=&quot;' + attr[key] + '&quot;');
  60.                         });
  61.                     }
  62.                     table += '&lt;td ' + attributes.join(' ') + '&gt;' + col.value.replace(/\"/g, '&quot;') + '&lt;/td&gt;';
  63.                 } else if (typeof col === 'string') {
  64.                     table += '&lt;td&gt;' + col.replace(/\"/g, '&quot;') + '&lt;/td&gt;';
  65.                 } else {
  66.                     console.warn('col not a (string|object)!', col);
  67.                 }
  68.             });
  69.  
  70.         } else if (typeof row === 'string') {
  71.             table += '&lt;td&gt;' + row.replace(/\"/g, '&quot;') + '&lt;/td&gt;';
  72.         } else {
  73.             console.warn('row is not string|object!', col);
  74.         }
  75.         table += '&lt;/tr&gt;';
  76.     });
  77.     table += '&lt;/tbody&gt;';
  78.  
  79.     table += '&lt;/table&gt;';
  80.  
  81.     return table;
  82. }