/* Site DTF — Cart totals and the order summary. Extracted verbatim from the single inline script in web/index.html. Loaded as classic scripts in the order listed there: they share one global scope and run top to bottom, exactly as the original did. */ // ── carrinho let itemAtual=null; function invalidaItemAtual(){ if(!itemAtual) return; itemAtual=null; $('atual').style.display='none'; $('carrLin').innerHTML=''; pintaPedido(); } function itemPodeEnviar(item){ return item.qualityStatus==='ok' || item.qualityStatus==='unverified' || (item.qualityStatus==='warning' && item.qualityAcknowledged===true); } // Os itens marcados no carrinho são os que vão para o pagamento; um item // desmarcado fica guardado para depois. O item aberto no produto sempre vai. function itensAPagar(){ return [...pedido.filter(it=>it.marcado!==false),...(itemAtual?[itemAtual]:[])]; } function cartPodeEnviar(){ const items=itensAPagar(); return items.length>0 && items.every(itemPodeEnviar); } function limpaPaineis(){ invalidaItemAtual(); ['qual','prev'].forEach(id=>$(id).classList.remove('on')); if(!pedido.length){ $('carr').classList.remove('on'); } } // O carrinho junta itens de produtos diferentes e cobra uma vez só. function pintaPedido(){ $('itens').innerHTML = pedido.map((it,i)=> '
'+ ''+ ''+(it.mini ? '' : ''+escapeHTML(it.ext||'')+'')+ (it.arquivos>1 ? '+'+(it.arquivos-1)+'' : '')+''+ '
'+escapeHTML(it.tit)+''+escapeHTML(it.desc)+'
'+ '
'+rs(it.total)+'
'+ '
').join(''); $('itens').querySelectorAll('[data-sel]').forEach(c=>c.addEventListener('change',()=>{ pedido[+c.dataset.sel].marcado=c.checked; pintaPedido(); })); $('itens').querySelectorAll('[data-rmi]').forEach(b=>b.addEventListener('click',()=>{ const i=+b.dataset.rmi, [item]=pedido.splice(i,1); pintaPedido(); avisaDesfazer(item.tit+' saiu do carrinho.',()=>{ pedido.splice(Math.min(i,pedido.length),0,item); pintaPedido(); }); })); $('bEsvaziar').hidden = pedido.length+(itemAtual?1:0) < 2; const aPagar = itensAPagar(); const itens = aPagar.reduce((t,it)=>t+it.total,0); const frete = entrega.tipo==='frete' && entrega.cotado ? entrega.valor : 0; const soma = itens + frete; const n = aPagar.length, noCarrinho = pedido.length + (itemAtual?1:0); const eco = aPagar .reduce((t,it)=>t+(TABELA[it.modo]-it.unit)*it.cob, 0); $('resLin').innerHTML = '
'+n+(n===1?' item':' itens')+''+rs(itens+eco)+'
'+ (eco>0.01? '
Desconto pela nota'+ '− '+rs(eco)+'
' : '')+ '
Frete'+(entrega.tipo==='frete' && entrega.cotado && entrega.dias ? ' · até '+entrega.dias+' dias úteis' : '')+''+ (entrega.tipo==='retira' ? 'Grátis' : entrega.cotado ? rs(frete) : 'a cotar')+'
'+ '
Revisão e reencaixe'+ 'Grátis
'; $('carrTot').textContent=rs(soma); $('bPagarTx').textContent = n>1 ? 'Pagar os '+n+' itens de uma vez' : 'Ir para o pagamento'; $('bPagar').disabled = !cartPodeEnviar() || !entrega.cotado || !clienteOk() || !enderecoOk(); if(pedido.length || itemAtual) $('carr').classList.add('on'); if($('cartN')){ $('cartN').textContent=noCarrinho>99?'99+':noCarrinho; $('cartN').hidden=!noCarrinho; $('cartLink').setAttribute('aria-label','Carrinho, '+noCarrinho+(noCarrinho===1?' item':' itens')); } pintaAvisoEnvio(); window.dispatchEvent(new Event('dtf-cart-changed')); } function carrinho(){ const base=precoBase(nota), cob=cobrar(metros); const unit=base, tot=cob*unit, sobra=+(cob-metros).toFixed(2); $('carr').classList.add('on'); let l='
'+MODOS[modo].tit+''+rs(base)+'/m
'; { const teto=TABELA[modo], eco=(teto-base)*cob; l = '
'+MODOS[modo].tit+' · tabela'+rs(teto)+'/m
'; l += eco>0.01 ? '
Desconto pela nota '+nota+'−'+rs(eco)+'
' : '
Nota '+nota+' · sem desconto—
'; } if(!ehFolha()) l += '
Montagem da folha'+ 'inclusa · '+rs(MONTAGEM[modo])+'/m
'; l += '
Metragem'+(sobra>0.001?' · arredondada para 10 cm':'')+ ''+fmtM(cob)+' m
'; l += '
Preço final do metro'+rs(unit)+'
'+ '
Revisão e reencaixegrátis
'; $('carrLin').innerHTML=l; $('atual').style.display=''; const sources=(ehFolha()?folhas:artes).map(x=>ehFolha() ? {kind:'sheet',width_cm:x.med?.larg||larguraFilme(),length_cm:+(x.m*100).toFixed(4), copies:x.rep||1,rotation_degrees:0,mirrored:false, measurement:x.med?'file':'customer'} : {kind:'artwork',width_cm:x.cm,length_cm:+(x.cm*propDe(x)).toFixed(4), copies:x.q,rotation_degrees:x.giro||0,mirrored:!!x.esp, measurement:(x.src||x.semPrevia)?'file':'customer'}); let layout; if(ehFolha()){ let y=0; const placements=[]; sources.forEach((source,source_index)=>{ for(let copy_index=0;copy_indexx.f), mini:(ehFolha()?folhas:artes).map(x=>x.miniSrc).find(Boolean)||null, ext:extDe(((ehFolha()?folhas:artes)[0]||{f:{name:''}}).f.name), arquivos:(ehFolha()?folhas:artes).length, production:{version:2,film_width_cm:larguraFilme(),sources,...layout}, qualityStatus:$('ciente').classList.contains('recusa')?'rejected': $('ciente').classList.contains('on')?'warning':nota===0?'unverified':'ok', qualityAcknowledged:false, desc:fmtM(cob)+' m · '+rs(unit)+'/m · nota '+nota}; pintaPedido(); previa(); if(nota<90){ const piso=pisoEscada(), ganho=(base-piso)*cob; if(ganho>0.5) qm('Dá para pagar menos. Com a arte em 300 DPI, '+ 'o metro cai para '+rs(piso)+' — são '+rs(ganho)+' a menos neste pedido.','var(--verde)'); } } // Removing is one click, and a wrong click is undone from the notice that follows. let desfazerAcao=null, desfazerTimer=null; function avisaDesfazer(texto,acao){ desfazerAcao=acao; clearTimeout(desfazerTimer); $('desfazerTxt').textContent=texto; $('desfazer').hidden=false; desfazerTimer=setTimeout(fechaDesfazer,8000); } function fechaDesfazer(){ clearTimeout(desfazerTimer); desfazerAcao=null; $('desfazer').hidden=true; } addEventListener('dtf-page-changed',fechaDesfazer); $('desfazerBtn').addEventListener('click',()=>{ const acao=desfazerAcao; fechaDesfazer(); if(acao) acao(); }); $('bEsvaziar').addEventListener('click',()=>{ const antes=pedido.slice(); pedido=[]; invalidaItemAtual(); pintaPedido(); avisaDesfazer('Carrinho esvaziado.',()=>{ pedido=antes; pintaPedido(); }); }); function qm(t,c){ const m=$('qmsg'); m.style.display='block'; m.style.color=c||'var(--verde)'; m.innerHTML=t; }