// render — рендер таблицы выбора файлов (обычная). // Если идёт обработка (state.proc.phase === 'processing') — 3-секционная. import { esc } from './esc.js'; import { fs } from './fs.js'; import { fmtSec } from './fmt_sec.js'; import { estForFile } from './est_for_file.js'; import { renderProcTable } from './render_proc_table.js'; export function render(state, els, cfg) { if (state.proc && state.proc.phase === 'processing') { renderProcTable(state, els, cfg); return; } if (state.files.length === 0) { els.tableBody.innerHTML = 'Нет выбранных файлов'; } else { els.tableBody.innerHTML = state.files.map((f, i) => { const over = state.overNames.has(f.name); const rowCls = over ? ' class="row-over"' : ''; const stTxt = over ? '🔥 не учитывается' : '~' + fmtSec(estForFile(f, cfg.estMbSec)) + ''; return '' + esc(f.name) + '' + fs(f.size) + '' + stTxt + ''; }).join(''); } const overCount = state.files.filter(f => state.overNames.has(f.name)).length; const totalSize = state.files.reduce((s, f) => s + (state.overNames.has(f.name) ? 0 : f.size), 0); const cntMain = state.files.length - overCount; const totEst = state.files.reduce((s, f) => s + (state.overNames.has(f.name) ? 0 : estForFile(f, cfg.estMbSec)), 0); els.countEl.textContent = (overCount ? cntMain + ' учитываются + ' + overCount + ' свыше лимита' : state.files.length) + ' файлов · ' + fs(totalSize) + ' · ~' + fmtSec(totEst); els.uploadBtnEl.disabled = cntMain === 0; }