/* Site DTF — the product page's buy box: price ladder, price per metre, billed length, total and the add-to-cart button, beside the live sheet. It shows the item the other site-*.js files already priced (itemAtual) and never computes a price of its own, so the box and the cart always agree. */ (function(){ const vals=$('compraVals'), add=$('bAdd'); function pintaCompra(){ const it=itemAtual; vals.hidden=!it; add.disabled=!it || !itemPodeEnviar(it); if(!it) return; const semNota=!it.nota; // The price ladder in resolution: nota = DPI ÷ 3, so 90 is 270 DPI. const faixas=FAIXAS[it.modo], ativa=faixas.findIndex(([min])=>it.nota>=min); $('cEscada').innerHTML=faixas.map(([min,v],i)=> ''+ (min? min*3+'+'+(i? '' : ' DPI') : semNota? 'cheio' : 'menos')+''+ ''+rs(v).slice(3)+'').join(''); const analisadas=ehFolha(it.modo) && folhas.length && folhas.every(x=>x.an); $('cMetroLbl').textContent = semNota ? 'Metro · preço cheio' : analisadas && folhas.every(x=>x.an.vetor) ? 'Metro · arte vetorial' : analisadas ? 'Metro · '+Math.min(...folhas.map(x=>x.an.dpi))+' DPI' : 'Metro'; $('cMetro').textContent=rs(it.unit); $('cMetragem').textContent=fmtM(it.cob)+' m'; const economia=(TABELA[it.modo]-it.unit)*it.cob; $('cEco').textContent = economia>0.005 ? rs(economia)+' a menos pela resolução da arte' : ''; const partes=ehFolha(it.modo) ? Math.ceil(it.metros/20) : 1; $('cPartes').textContent = partes>1 ? ' Sai em '+partes+' partes de até 20 m.' : ''; const sobraCm=Math.round((it.cob-it.metros)*100); $('cObs').textContent = it.cob===MINIMO_M && it.metrosadicionaAoCarrinho()); addEventListener('dtf-cart-changed',pintaCompra); pintaCompra(); })();