|
|
<!DOCTYPE html> |
|
|
<html lang="es"> |
|
|
<head> |
|
|
<meta charset="UTF-8" /> |
|
|
<title>脥ndice de Formas 路 {{ job_id }}</title> |
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" /> |
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> |
|
|
<link |
|
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" |
|
|
rel="stylesheet" |
|
|
/> |
|
|
|
|
|
<style> |
|
|
@page { |
|
|
size: A4; |
|
|
margin: 25.4mm; |
|
|
} |
|
|
|
|
|
body { |
|
|
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Noto Sans", |
|
|
system-ui, sans-serif; |
|
|
color: #0f172a; |
|
|
margin: 0; |
|
|
font-size: 12px; |
|
|
line-height: 1.6; |
|
|
background: #ffffff; |
|
|
padding: 0 0 8mm 0; |
|
|
} |
|
|
|
|
|
.page { |
|
|
padding: 0; |
|
|
margin: 0; |
|
|
} |
|
|
|
|
|
h1 { |
|
|
font-size: 22px; |
|
|
text-transform: uppercase; |
|
|
letter-spacing: 0.06em; |
|
|
margin: 0 0 4px 0; |
|
|
} |
|
|
|
|
|
h2 { |
|
|
color: #475569; |
|
|
font-size: 14px; |
|
|
margin: 0 0 16px 0; |
|
|
} |
|
|
|
|
|
table { |
|
|
width: 100%; |
|
|
border-collapse: collapse; |
|
|
font-size: 11px; |
|
|
} |
|
|
|
|
|
thead { |
|
|
display: table-header-group; |
|
|
} |
|
|
|
|
|
tbody tr { |
|
|
page-break-inside: avoid; |
|
|
} |
|
|
|
|
|
th, |
|
|
td { |
|
|
border: 1px solid #e2e8f0; |
|
|
padding: 6px 8px; |
|
|
text-align: left; |
|
|
vertical-align: top; |
|
|
} |
|
|
|
|
|
th { |
|
|
text-transform: uppercase; |
|
|
letter-spacing: 0.08em; |
|
|
font-size: 10px; |
|
|
background: #f1f5f9; |
|
|
} |
|
|
|
|
|
tbody tr:nth-child(odd) { |
|
|
background: #f8fafc; |
|
|
} |
|
|
|
|
|
.muted { |
|
|
color: #94a3b8; |
|
|
font-size: 10px; |
|
|
text-transform: uppercase; |
|
|
letter-spacing: 0.08em; |
|
|
margin-top: 24px; |
|
|
text-align: right; |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body> |
|
|
<div class="page"> |
|
|
<h1>脥ndice de Formas</h1> |
|
|
<h2> |
|
|
Job {{ job_id }} 路 |
|
|
{{ entries is defined and entries is iterable and entries|length or 0 }} |
|
|
documentos |
|
|
</h2> |
|
|
|
|
|
{% if entries and entries is iterable %} |
|
|
<table> |
|
|
<thead> |
|
|
<tr> |
|
|
<th>#</th> |
|
|
<th>Archivo</th> |
|
|
<th>T铆tulo</th> |
|
|
<th>Tipo</th> |
|
|
<th>Descripci贸n</th> |
|
|
<th>SuiteScript</th> |
|
|
</tr> |
|
|
</thead> |
|
|
<tbody> |
|
|
{% for entry in entries %} |
|
|
{# Si entry es mapping (dict), usamos sus campos. Si no, lo mostramos crudo. #} |
|
|
{% if entry is mapping %} |
|
|
<tr> |
|
|
<td>{{ loop.index }}</td> |
|
|
<td>{{ entry.path | default("-") }}</td> |
|
|
<td>{{ entry.title | default("-") }}</td> |
|
|
<td>{{ entry.script_type | default("-") }}</td> |
|
|
<td>{{ entry.description | default("Sin descripci贸n") }}</td> |
|
|
<td>{{ entry.api_version | default("-") }}</td> |
|
|
</tr> |
|
|
{% else %} |
|
|
<tr> |
|
|
<td>{{ loop.index }}</td> |
|
|
<td colspan="5"> |
|
|
{{ entry }} |
|
|
</td> |
|
|
</tr> |
|
|
{% endif %} |
|
|
{% endfor %} |
|
|
</tbody> |
|
|
</table> |
|
|
{% else %} |
|
|
<p>No se encontraron documentos para este job.</p> |
|
|
{% endif %} |
|
|
|
|
|
<p class="muted">Generado autom谩ticamente {{ generated_at }}</p> |
|
|
</div> |
|
|
</body> |
|
|
</html> |
|
|
|