diff --git a/src/main/resources/i18n/app_es.properties b/src/main/resources/i18n/app_es.properties index b2b53d4..0bc744b 100644 --- a/src/main/resources/i18n/app_es.properties +++ b/src/main/resources/i18n/app_es.properties @@ -1 +1,3 @@ -app.currency-symbol=€ \ No newline at end of file +app.currency-symbol=€ +app.yes=Sí +app.no=No \ No newline at end of file diff --git a/src/main/resources/i18n/presupuesto_es.properties b/src/main/resources/i18n/presupuesto_es.properties index ae7202e..f30e2b0 100644 --- a/src/main/resources/i18n/presupuesto_es.properties +++ b/src/main/resources/i18n/presupuesto_es.properties @@ -29,17 +29,22 @@ presupuesto.paginas-posicion=Posición páginas color presupuesto.paginas-posicion-descripcion=Intruzca la posición separada por comas. Ej: 3,5,7 ó 4-10,20,155 presupuesto.siempre-pares=Siempre deben ser pares presupuesto.encuadernacion=Encuadernación +presupuesto.fresado=Fresado presupuesto.fresado-descripcion=Fresado (a partir de 32 páginas) +presupuesto.cosido=Cosido presupuesto.cosido-descripcion=Cosido (a partir de 32 páginas) +presupuesto.grapado=Grapado presupuesto.grapado-descripcion=Grapado (entre 12 y 40 páginas) +presupuesto.espiral=Espiral presupuesto.espiral-descripcion=Espiral (a partir de 20 páginas) +presupuesto.wire-o=Wire-O presupuesto.wire-o-descripcion=Wire-O (a partir de 20 páginas) presupuesto.encuadernacion-descripcion=Seleccione la encuadernación del libro presupuesto.continuar-interior=Continuar a diseño interior # Pestaña interior de presupuesto -presupuesto.tipo-encuadernacion=Tipo de impresión -presupuesto.tipo-encuadernacion-descripcion=Seleccione entre calidad estándar o premium +presupuesto.tipo-interior=Tipo de impresión +presupuesto.tipo-interior-descripcion=Seleccione entre calidad estándar o premium presupuesto.papel-interior=Papel interior presupuesto.papel-interior-descripcion=Seleccione el papel para el interior presupuesto.gramaje-interior=Gramaje interior @@ -70,7 +75,7 @@ presupuesto.impresion-cubierta=Impresión de cubierta presupuesto.impresion-cubierta-help=La cubierta se puede imprimir por anverso y reverso, como en el caso de las revistas, pero para un libro normal con portada y contraportada, la impresión de cubierta es a una cara. presupuesto.una-cara=Una cara presupuesto.dos-caras=Dos caras -presupuesto.tamanio-solapa=Tamaño solapa +presupuesto.tamanio-solapa=Tamaño solapas presupuesto.papel-guardas=Papel de guardas presupuesto.guardas-impresas=Guardas impresas presupuesto.no=No @@ -152,6 +157,7 @@ presupuesto.interior-libro=Interior del libro presupuesto.cubierta-libro=Cubierta del libro presupuesto.extras-libro=Extras del libro presupuesto.paginas=Páginas +presupuesto.solapas=Solapas # Errores presupuesto.errores-title=Corrija los siguientes errores: diff --git a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/imagen-presupuesto.js b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/imagen-presupuesto.js index 3c2b962..e96eed7 100644 --- a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/imagen-presupuesto.js +++ b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/imagen-presupuesto.js @@ -20,6 +20,7 @@ class imagen_presupuesto { for (const [key, value] of Object.entries(this.extraData)) { contenedor.attr(`data-${key}`, value); } + contenedor.attr("data-summary-text", this.texto); // Para el resumen const input = $('', { type: 'radio', diff --git a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuestador.js b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuestador.js index 5da272e..43c1343 100644 --- a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuestador.js +++ b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/presupuestador.js @@ -1,6 +1,7 @@ import imagen_presupuesto from "./imagen-presupuesto.js"; import ServiceOptionCard from "./service-option-card.js"; import TiradaCard from "./tirada-price-card.js"; +import * as Summary from "./summary.js"; class PresupuestoCliente { @@ -122,22 +123,25 @@ class PresupuestoCliente { // pestaña extras this.divExtras = $('#div-extras'); + + // resumen + this.summaryTableInterior = $('#summary-interior'); } init() { const stored = sessionStorage.getItem("formData"); - + this.#initDatosGenerales(); this.#initCubierta(); - + if (stored) { this.formData = JSON.parse(stored); this.#loadDatosGeneralesData(); this.#loadCubiertaData(); } - + this.#initInterior(); this.#initSeleccionTirada(); this.#initExtras(); @@ -157,10 +161,6 @@ class PresupuestoCliente { } }); - $('.custom-nav .nav-link').on('click', function (e) { - e.preventDefault(); - e.stopImmediatePropagation(); // frena el handler de Bootstrap - }); } #cacheFormData() { @@ -241,7 +241,7 @@ class PresupuestoCliente { }); $('.paginas').on('change', () => { - this.paginas.val(parseInt(this.paginasNegro.val()) + parseInt(this.paginasColor.val())); + $('#paginas').val(parseInt(this.paginasNegro.val()) + parseInt(this.paginasColor.val())); if (parseInt(this.paginasColor.val()) == 0) { this.divPosicionPaginasColor.addClass('d-none'); this.posicionPaginasColor.val(""); @@ -249,7 +249,8 @@ class PresupuestoCliente { else { this.divPosicionPaginasColor.removeClass('d-none'); } - this.paginas = parseInt(this.paginasNegro.val()) + parseInt(this.paginasColor.val()); + $('#paginas').val(parseInt(this.paginasNegro.val()) + parseInt(this.paginasColor.val())); + Summary.updatePaginas(); this.#updateTipoEncuadernacion(); }); @@ -262,11 +263,31 @@ class PresupuestoCliente { this.divFormatoPersonalizado.addClass('d-none'); this.divFormato.removeClass('d-none'); } + Summary.updateFormato(); }); this.btn_next_datos_generales.on('click', () => { this.#nextDatosGenerales(); }); + + // Eventos para el resumen + $(document).on('change', 'input[name="tipoEncuadernacion"]', (e) => { + if ($(e.target).is(':checked')) { + // Actualizar el resumen + Summary.updateEncuadernacion(); + } + }); + + this.formato.on('change', () => { + Summary.updateFormato(); + }); + + this.ancho.on('change', () => { + Summary.updateFormato(); + }); + this.alto.on('change', () => { + Summary.updateFormato(); + }); } #nextDatosGenerales() { @@ -382,11 +403,17 @@ class PresupuestoCliente { this.posicionPaginasColor.val(this.formData.datosGenerales.posicionPaginasColor); + this.formatoPersonalizado.prop('checked', this.formData.datosGenerales.formatoPersonalizado); + if( this.formData.datosGenerales.formatoPersonalizado ) { + this.ancho.val(this.formData.datosGenerales.ancho); + this.alto.val(this.formData.datosGenerales.alto); + } + $('.tipo-libro').removeClass('selected'); $('.image-container#' + this.formData.datosGenerales.tipoEncuadernacion).trigger('click'); this.#updateTipoEncuadernacion(); - this.formatoPersonalizado.prop('checked', this.formData.datosGenerales.formatoPersonalizado).trigger('change'); + this.formatoPersonalizado.trigger('change'); $('.paginas').trigger('change'); @@ -426,7 +453,7 @@ class PresupuestoCliente { #updateTipoEncuadernacion() { - const paginas = parseInt(this.paginas.val()); + const paginas = parseInt($('#paginas').val()); const selectedTipo = $('.tipo-libro.selected').attr('id'); $('.tipo-libro').removeClass('selected'); @@ -466,6 +493,7 @@ class PresupuestoCliente { if ($('.tipo-libro.selected').length > 0) { this.formData.datosGenerales.tipoEncuadernacion = $('.tipo-libro.selected').attr('id'); + Summary.updateEncuadernacion(); } else { this.formData.datosGenerales.tipoEncuadernacion = ''; @@ -492,6 +520,7 @@ class PresupuestoCliente { $(document).on('click', '.opcion-color', (e) => { const data = this.#getPresupuestoData(); + Summary.updateTipoImpresion(); this.divPapelInterior.empty(); this.divGramajeInterior.empty(); @@ -528,6 +557,9 @@ class PresupuestoCliente { }); this.#addGramajesInterior(gramajes); + + Summary.updatePapelInterior(); + Summary.updateGramajeInterior(); }, error: (xhr, status, error) => { @@ -540,6 +572,8 @@ class PresupuestoCliente { const data = this.#getPresupuestoData(); + Summary.updatePapelInterior(); + this.divGramajeInterior.removeClass('animate-fadeInUpBounce'); this.divGramajeInterior.empty(); @@ -562,6 +596,7 @@ class PresupuestoCliente { const dataInterior = this.#getInteriorData(); this.#updateInteriorData(dataInterior); this.#cacheFormData(); + Summary.updateGramajeInterior(); }).fail((xhr, status, error) => { console.error("Error al obtener los gramajes de interior: ", xhr.responseText); @@ -589,6 +624,8 @@ class PresupuestoCliente { return textoActual.replace(/\d+/, maxSolapas); }); + Summary.updateGramajeInterior(); + }).fail((xhr, status, error) => { console.error("Error al obtener los gramajes de interior: ", xhr.responseText); }); @@ -605,7 +642,7 @@ class PresupuestoCliente { data: data, success: (data) => { if (id === 'btn-prev-interior') { - + this.summaryTableInterior.addClass('d-none'); this.#changeTab('pills-general-data'); } else { const maxSolapas = data.solapas ?? 120; @@ -667,6 +704,8 @@ class PresupuestoCliente { #loadInteriorData(data) { + this.summaryTableInterior.removeClass('d-none'); + this.divOpcionesColor.empty(); this.divPapelInterior.empty(); this.divGramajeInterior.empty(); @@ -702,6 +741,10 @@ class PresupuestoCliente { const dataInterior = this.#getInteriorData(); this.#updateInteriorData(dataInterior); this.#cacheFormData(); + + Summary.updateTipoImpresion(); + Summary.updatePapelInterior(); + Summary.updateGramajeInterior(); } #addGramajesInterior(gramajes) { diff --git a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/summary.js b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/summary.js new file mode 100644 index 0000000..b78198a --- /dev/null +++ b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/summary.js @@ -0,0 +1,70 @@ +export function updateEncuadernacion() { + + const $selected = $('.tipo-libro.selected'); + if ($selected.length > 0) { + const resumen = $selected.data('summary-text') || $selected.attr('id'); + $('#summary-encuadernacion').text(resumen); + } +} + +export function updateFormato(){ + + if($('#formato-personalizado').is(':checked')) { + $('#summary-formato').text($('#ancho').val() + 'x' + $('#alto').val() + ' mm'); + } else { + const $selected = $('#formato option:selected'); + const resumen = $selected.data('summary-text') || $selected.val(); + $('#summary-formato').text(resumen + ' mm'); + } +} + +export function updatePaginas() { + + const paginas = $('#paginas').val(); + $('#summary-paginas').text(paginas ); + + const paginasColor = $('#paginas-color').val(); + $('#summary-paginas-color').text(paginasColor ); + + const paginasNegro = $('#paginas-negro').val(); + $('#summary-paginas-negro').text(paginasNegro ); +} + +export function updateTipoImpresion() { + + const $selected = $('.opcion-color.selected'); + if ($selected.length > 0) { + const resumen = $selected.data('summary-text') || $selected.attr('id'); + $('#summary-tipo-interior').text(resumen); + } +} + +export function updatePapelInterior() { + + const $selected = $('.papel-interior.selected'); + if ($selected.length > 0) { + const resumen = $selected.data('summary-text') || $selected.val(); + $('#summary-papel-interior').text(resumen); + } +} + +export function updateGramajeInterior() { + + const gramaje = $('input[name="gramaje-interior"]:checked'); + if(gramaje.length > 0) { + $('#summary-gramaje-interior').text(gramaje.data('gramaje')); + } +} + +export function updateTapaCubierta(){ + + const $selected = $('.tipo-cubierta.selected'); + if ($selected.length > 0) { + const resumen = $selected.data('summary-text') || $selected.attr('id'); + $('#summary-tapa-cubierta').text(resumen); + } + if($selected.attr('id') === 'tapaBlanda') { + $('#summary-cubierta').removeClass('d-none'); + $('#summary-cubierta .table-responsive').removeClass('d-none'); + } +} \ No newline at end of file diff --git a/src/main/resources/templates/imprimelibros/presupuestos/presupuestador-items/_datos-generales.html b/src/main/resources/templates/imprimelibros/presupuestos/presupuestador-items/_datos-generales.html index 13e5020..bf6ba32 100644 --- a/src/main/resources/templates/imprimelibros/presupuestos/presupuestador-items/_datos-generales.html +++ b/src/main/resources/templates/imprimelibros/presupuestos/presupuestador-items/_datos-generales.html @@ -23,7 +23,8 @@
@@ -95,20 +100,21 @@