diff --git a/web/site-pdf.js b/web/site-pdf.js
index 26a1b01..611eb05 100644
--- a/web/site-pdf.js
+++ b/web/site-pdf.js
@@ -521,7 +521,7 @@ const n1=v=>v.toFixed(1).replace('.',',');
// Moves one artwork's progress in place, without repainting the list.
function pintaProgressoArte(a){
- const el=$('lista').querySelector('.art[data-arte="'+artes.indexOf(a)+'"]');
+ const el=$('lista').querySelector('[data-arte="'+artes.indexOf(a)+'"]');
const barra=el && el.querySelector('.prog i'), texto=el && el.querySelector('.progT');
if(!barra){ pintaArtes(); return; }
barra.style.width=a.lendo+'%'; if(texto) texto.textContent='arquivo grande · gerando a prévia… '+a.lendo+'%';
@@ -529,26 +529,30 @@ function pintaProgressoArte(a){
function pintaArtes(){
invalidaItemAtual();
$('zona').classList.toggle('compacta', artes.length>0);
- $('lista').innerHTML=artes.map((a,i)=>{
- let barra='', dica='', calc='informe a largura para ver a qualidade';
+ // The same card as a finished sheet: thumbnail, size, a DPI chip, then the
+ // width (with the usual sizes), copies, rotation and mirroring.
+ const copiasTot=artes.reduce((t,a)=>t+(a.q||1),0);
+ $('lista').innerHTML=(artes.length? '
' : '')+
+ artes.map((a,i)=>{
+ let barra='', dica='', chips='', aviso='', medida='Informe a largura';
if(a.lendo!=null){
- barra='
';
- calc='arquivo grande · gerando a prévia… '+a.lendo+'%';
+ barra='
'+
+ 'arquivo grande · gerando a prévia… '+a.lendo+'%';
}else if(a.decodeError==='grande'){
- calc='Arquivo grande em JPG ou WebP: exporte em PNG para montar a folha';
+ aviso='
Arquivo grande em JPG ou WebP. Exporte em PNG para montar a folha.
';
}else if(a.decodeError){
- calc='Não conseguimos ler esta imagem; exporte novamente em PNG ou JPG';
+ aviso='
Não conseguimos ler esta imagem. Exporte novamente em PNG ou JPG.
';
}else if(a.cm>larguraFilme()){
- calc='Largura maior que o filme de '+n1(larguraFilme())+' cm';
+ aviso='
Largura maior que o filme. O filme aqui tem '+n1(larguraFilme())+' cm.
';
const sug=sugestao(a);
- // One hint per row, on the row it is about: resolution first, since it
- // changes the price; otherwise a width that saves sheet.
+ // One hint per artwork: resolution first, since it changes the price;
+ // otherwise a width that saves sheet.
const maxCm=Math.floor(a.px/DPI_AVISA*2.54*10)/10;
dica = dpi0 && maxCmPequena para '+n1(a.cm)+' cm. Em '+DPI_AVISA+' DPI ela sai com até '+
@@ -558,23 +562,38 @@ function pintaArtes(){
n1(sug.cm)+' cm.'
: '';
}
- return '