Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | /**
* Configuración y constantes para generación de PDFs de Work Items
* Centraliza valores de diseño, estilos y formato
*/
/**
* Dimensiones y márgenes de página
*/
const PAGE_CONFIG = {
MARGIN: 50,
WIDTH: 595.28, // A4 width in points
HEIGHT: 841.89, // A4 height in points
};
/**
* Tamaños de fuente
*/
const FONT_SIZE = {
TITLE: 14,
SECTION: 12,
NORMAL: 10,
SMALL: 8,
BADGE: 10,
};
/**
* Colores comunes (RGB)
* Valores normalizados entre 0 y 1
*/
const COLORS = {
// Colores básicos
BLACK: { r: 0, g: 0, b: 0 },
GRAY: { r: 0.4, g: 0.4, b: 0.4 }, // Gris medio para texto secundario
LIGHT_GRAY: { r: 0.85, g: 0.85, b: 0.85 }, // Gris claro para bordes y fondos
BLUE: { r: 0, g: 0.4, b: 0.8 }, // Azul primario para títulos y enlaces
WHITE: { r: 1, g: 1, b: 1 },
// Colores para badges de estados (fallback si Azure DevOps no provee color)
STATE_GREEN: { r: 0.2, g: 0.6, b: 0.2 }, // Done/Cerrado - Verde éxito
STATE_BLUE: { r: 0.2, g: 0.4, b: 0.8 }, // Active/Activo - Azul en progreso
STATE_GRAY: { r: 0.6, g: 0.6, b: 0.6 }, // New/Nuevo - Gris neutral
STATE_CYAN: { r: 0.2, g: 0.6, b: 0.8 }, // Resolved/Resuelto - Cian completado
STATE_RED: { r: 0.8, g: 0.2, b: 0.2 }, // Removed/Eliminado - Rojo eliminado
};
/**
* Espaciado vertical
*/
const SPACING = {
LINE: 12,
PARAGRAPH: 8,
SECTION: 15,
SMALL: 5,
COMMENT_CARD: 20,
};
/**
* Configuración de imágenes
*/
const IMAGE_CONFIG = {
SCALE: 0.5, // Reducir imágenes al 50% del tamaño original
MAX_WIDTH: 495, // Ancho máximo de imagen (width - 2*margin)
MAX_HEIGHT: 600, // Altura máxima antes de agregar nueva página
};
/**
* Configuración de badges (estado del work item)
*/
const BADGE_CONFIG = {
PADDING_X: 8,
PADDING_Y: 4,
BORDER_RADIUS: 3,
TEXT_COLOR: COLORS.WHITE,
};
/**
* Configuración de cards de comentarios
*/
const COMMENT_CARD_CONFIG = {
HEADER_BG_COLOR: COLORS.LIGHT_GRAY,
HEADER_PADDING: 5,
CONTENT_PADDING_TOP: 5,
SEPARATOR_COLOR: { r: 0.7, g: 0.7, b: 0.7 },
SEPARATOR_THICKNESS: 0.5,
};
/**
* Mapa de colores de estados (fallback español/inglés)
* Usado cuando Azure DevOps API no retorna color
*/
const STATE_COLOR_MAP = {
// Estados en español
cerrado: "#339933",
completado: "#339933",
done: "#339933",
activo: "#3366cc",
active: "#3366cc",
"en progreso": "#3366cc",
nuevo: "#999999",
new: "#999999",
resuelto: "#33cccc",
resolved: "#33cccc",
eliminado: "#cc3333",
removed: "#cc3333",
rechazado: "#cc3333",
rejected: "#cc3333",
};
/**
* Mensajes de error estándar
*/
const ERROR_MESSAGES = {
NO_WORK_ITEM: "Work item no encontrado",
NO_TITLE: "Sin título",
NO_WORKITEM_TYPE: "WorkItem",
IMAGE_DOWNLOAD_FAILED: "Error descargando imagen",
IMAGE_FORMAT_UNSUPPORTED: "Formato de imagen no soportado",
DIRECTORY_CREATE_FAILED: "Error creando directorio",
};
/**
* Configuración de listas (bullets)
*/
const LIST_CONFIG = {
BULLET_CHAR: "•",
INDENT: 20,
ITEM_SPACING: 5,
};
module.exports = {
PAGE_CONFIG,
FONT_SIZE,
COLORS,
SPACING,
IMAGE_CONFIG,
BADGE_CONFIG,
COMMENT_CARD_CONFIG,
STATE_COLOR_MAP,
ERROR_MESSAGES,
LIST_CONFIG,
};
|