All files / src/constants pdfConfig.js

100% Statements 141/141
100% Branches 1/1
100% Functions 0/0
100% Lines 141/141

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 1421x 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,
};