JSFiddle - React, Tailwind, and code Playground
by disfated
HTML
<div id="actions">
<button>go</button> prodid: <input id="prodid" type="number" value="50"/>
</div>
<textarea id="out"></textarea>
<textarea id="in"><table class="mods">
<thead>
<tr>
<th>Наименование</th>
<th>Обозн</th>
<th>Ед изм</th>
<th>Значение</th>
</tr>
</thead>
<tbody>
<tr>
<th>Грузоподъемность</th>
<td> </td>
<td>кг</td>
<td>2000</td>
</tr>
<tr>
<th>Центр загрузки</th>
<td>c</td>
<td>мм</td>
<td>750</td>
</tr>
<tr>
<th>Высота подъема</th>
<td>h3</td>
<td>мм</td>
<td>200</td>
</tr>
<tr>
<th>Высота подъема (min)</th>
<td>h13</td>
<td>мм</td>
<td>85</td>
</tr>
<tr>
<th>Дорожный просвет</th>
<td>m1</td>
<td>мм</td>
<td>40</td>
</tr>
<tr>
<th>Длина вил</th>
<td>l</td>
<td>мм</td>
<td>1500</td>
</tr>
<tr>
<th>Ширина вил</th>
<td>b1</td>
<td>мм</td>
<td>540</td>
</tr>
<tr>
<th>Расстояние между вилами</th>
<td>b3</td>
<td>мм</td>
<td>220</td>
</tr>
<tr>
<th>Ширина вилы</th>
<td>e</td>
<td>мм</td>
<td>160</td>
</tr>
<tr>
<th>Высота вилы</th>
<td>s</td>
...
CSS
body, html { height: 100%; }
body { margin:0; padding:8px; box-sizing: border-box; }
div#actions { height: 8%; box-sizing: border-box; }
textarea { display: block; box-sizing: border-box; width: 100%; min-height: 80px; border: 1px inset; border-radius: 2px; padding: 4px 6px; }
#in { height: 26%; }
#out { height: 66%; }
JavaScript
function translate(html, prodid) {
function str2bin(str) {
function hex(d) {
ret.push((d < 16 ? '0' : '') + d.toString(16));
}
for (var ret = [], i = 0, l = str.length; i < l; i++) {
var c = str.charCodeAt(i);
if (0xD800 <= c && c <= 0xDBFF) {
c = ((c - 0xD800) * 0x400) + (str.charCodeAt(i + 1) - 0xDC00) + 0x10000;
i++;
}
if (c < 128) { // 1 byte
hex(c);
} else if (c >= 128 && c < 2048) { // 2 bytes
hex((c >> 6) | 0xC0);
hex((c & 0x3F) | 0x80);
} else if (c >= 2048 && c < 65536) { // 3 bytes
hex((c >> 12) | 0xE0);
hex(((c >> 6) & 0x3F) | 0x80);
hex((c & 0x3F) | 0x80);
} else if (c >= 65536) { // 4 bytes
hex((c >> 18) | 0xF0);
hex(((c >> 12) & 0x3F) | 0x80);
hex(((c >> 6) & 0x3F) | 0x80);
hex((c & 0x3F) | 0x80);
}
}
return '0x' + ret.join('');
}
var attrs = {
'Грузоподъемность': '12',
'Центр загрузки': '13',
'Высота подъема': '14',
'Высота подъема (min)': '15',
'Дорожный просвет': '16',
'Длина вил': '17',
'Ширина вил': '18',
'Расстояние между вилами': '19',
'Ширина вилы': '20',
'Высота вилы': '21',
'Общая длина': '22',
'Общая ширина': '23',
'Высота ручки': '24',
'Размер передних колес': '25',
'Размер задних колес': '30',
'Число колес спереди/сзади': '26',
'Радиус поворота': '27',
'Ширина прохода с паллетой': '28',
'Рабочая температура': '29',
'Вес': '31',
};
var t = $(html);
var rows = t.find('thead').lenght ? t.find('tbody tr') : t.find('tr:gt(0)');
return 'INSERT INTO `product_attribute` (`product_id`, `attribute_id`,...