diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php new file mode 100644 index 00000000..30a1e54b --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php @@ -0,0 +1,140 @@ +
+ + +
+ + +
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+ +
+ + +
+ + + +
+
+ + +
+
+ +
+ + +
+ +
+ + + +
+ Siempre deben ser pares +
+ +
+ +
+ + + +
+ Siempre deben ser pares +
+ +
+ +
+ + + +
+
+ + +
+ +
+ " alt="Fresado"> +
+ Fresado (a partir de 32 páginas) +
+
+
+ " alt="Grapado"> +
+ Grapado (entre 12 y 40 páginas) +
+
+
+ " alt="Espiral"> +
+ Espiral +
+
+
+ " alt="Cosido"> +
+ Cosido (a partir de 32 páginas) +
+
+
+ +
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_datosLibroItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_datosLibroItems.php new file mode 100644 index 00000000..d0d58e27 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_datosLibroItems.php @@ -0,0 +1,94 @@ +
+ + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ + +
+ +
+ +
+ + diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_direccionesItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_direccionesItems.php new file mode 100644 index 00000000..eb4fe1d7 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_direccionesItems.php @@ -0,0 +1,48 @@ +
+ +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+
+
+
+ + +
+
+
+ +
+ +
+
+ +section("additionalInlineJs") ?> + +window.direcciones = direcciones_envio) ?>; +window.direcciones_sel_tirada = selected_tirada) ?>; +window.routes_direcciones = { + direcciones: "", + getDatos: "", + nuevaDireccion: "", +} +endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_disenioLibroItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_disenioLibroItems.php new file mode 100644 index 00000000..0516df66 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_disenioLibroItems.php @@ -0,0 +1,665 @@ +
+ + + +
+ +

Fresado

+ +
+
+ + +
+
+ +
+
user()->inGroup('admin') || auth()->user()->inGroup('beta')) ?' style="display:none;"':''?>> + + +
+ + +
+ + +
+
+ +
+ +
+
> + +
+
+
+
> + +
+
+ +
+ +
+
+
Datos presupuesto
+
+
+ +
+ + + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
papel_formato_personalizado == false ? '' : 'style="display: none"'; ?>> + + + +
+ +
papel_formato_personalizado == true ? '' : 'style="display: none"'; ?>> +
+ + +
+
+ +
papel_formato_personalizado == true ? '' : 'style="display: none"'; ?>> +
+ + +
+
+ +
+
+ papel_formato_personalizado == true ? 'checked' : ''; ?>> + +
+
+ +
+ +
+
+
Interior
+
+
+ + + +
Color del interior
+ +
+ +
+ +
+
+ + color_impresion == 'negro' ? ' checked=""': ''); ?> > +
+ +
+
Blanco y Negro Estándar
+
+
+ + +
+
+ + color_impresion == 'negroHq' ? ' checked=""': ''); ?> > +
+ +
+
Blanco y Negro Premium
+
+
+
+ + +
+ +
+
+ + color_impresion == 'color' ? ' checked=""': ''); ?> > +
+ +
+
Color Estándar
+
+
+ + +
+
+ + color_impresion == 'colorHq' ? ' checked=""': ''); ?> > +
+ +
+
Color Premium
+
+
+
+
+ +
+
+ + +
+
+ +
Papel
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
Opciones extra
+ + + +
+
+
Cubierta
+
+
+ + + +
Papel
+
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ + +
+ +
+ + +
Opciones extra
+ +
+ +
+
+ solapas == true ? 'checked' : ''; ?>> + +
+
+ +
solapas == true ? '' : 'style="display: none;"'; ?>> + + +
+ +
+ +
+ +
+ + +
+ +
+ + + +
+
+
Sobrecubierta
+
+
+ + + +
+
+
+ papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) : + echo 'checked'; + endif; ?> + > + +
+
+
+ +
papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) : + echo ''; + else: + echo 'style="display: none;"'; + endif; ?> + > Papel
+
+ +
+ + +
+ +
+ + +
+ +
+ +
papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) : + echo ''; + else: + echo 'style="display: none;"'; + endif; ?> + > Opciones extra
+ +
papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) : + echo ''; + else: + echo 'style="display: none;"'; + endif; ?> + > + +
+ + +
+ +
+ +
papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) : + echo ''; + else: + echo 'style="display: none;"'; + endif; ?> + > + +
+ + +
+ +
+ + + +
+
+
Guardas
+
+
+ + + +
+
+ + +
+
+ +
+
+ + +
+
+ + + +
+
+
Servicios Extra
+
+
+ +
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ + +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+
+ +
+ + +
+
+
Otras opciones
+
+
+ +
+
+ + +
+ +

Se verificará que el pedido cumpla con los requisitos establecidos en el Artículo 91 de la Ley 37/1992, sobre inserción de publicidad, antes de proceder con su producción, lo que garantiza la aplicación del IVA reducido del 4%.

+
+ +
+
+ + +section("additionalInlineJs") ?> + + +window.datosDisenioLibro = { + papel_interior: papel_interior ? $presupuestoEntity->papel_interior : 'null'; ?>, + gramaje_interior: gramaje_interior ? $presupuestoEntity->gramaje_interior : 'null'; ?>, + papel_cubierta: papel_cubierta ? $presupuestoEntity->papel_cubierta : 'null'; ?>, + gramaje_cubierta: gramaje_cubierta ? $presupuestoEntity->gramaje_cubierta : 'null'; ?>, + papel_sobrecubierta: papel_sobrecubierta ? $presupuestoEntity->papel_sobrecubierta : 'null'; ?>, + gramaje_sobrecubierta: gramaje_sobrecubierta ? $presupuestoEntity->gramaje_sobrecubierta : 'null'; ?>, +} +window.routes_disenio_libro = { + obtenerGramaje: "", + presupuestoCliente: "", +} +endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_resumenItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_resumenItems.php new file mode 100644 index 00000000..f9cf2d07 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_resumenItems.php @@ -0,0 +1,316 @@ +
+
+ estado_id==2): ?> +

PRESUPUESTO ACEPTADO

+ lomo_cubierta ?>> +
+ +

Resumen

+
+
Libro
+

resumen->titulo)?$presupuestoEntity->resumen->titulo:'') ?>

+

Tamaño: resumen->tamanio)?$presupuestoEntity->resumen->tamanio:'') ?>

+

Número de páginas: paginas ?>

+

Tirada: tirada ?>

+

Prototipo: prototipo?'SI':'NO') ?>

+

Ferro: ferro?'SI':'NO') ?>

+ +
Interior
+

Impresion: + resumen->tipo_impresion)?$presupuestoEntity->resumen->tipo_impresion:'') ?> +

+

paginasColor==0?'style="display:none"':'')?>> + Páginas a color: paginasColor?>

+

Papel: + papel_interior_nombre)?$presupuestoEntity->papel_interior_nombre:'') ?> + gramaje_interior)?$presupuestoEntity->gramaje_interior:'') ?>gr/m²

+ +
Cubierta
+

Papel: + papel_cubierta_nombre)?$presupuestoEntity->papel_cubierta_nombre:''); ?> + gramaje_cubierta)?$presupuestoEntity->gramaje_cubierta:''); ?>gr/m²

+

Impresión: paginas_cubierta==2?"1 cara":"2 caras");?>

+ solapas_ancho>0 || $presupuestoEntity->estado_id==1): ?> +

Solapas: solapas_ancho;?>mm

+ + acabado_cubierta_id>0 || $presupuestoEntity->estado_id==1): ?> +

Acabado: + acabadosCubierta) && is_array($datosPresupuesto->acabadosCubierta) && !empty($datosPresupuesto->acabadosCubierta)) : + foreach ($datosPresupuesto->acabadosCubierta as $acabado) : + if ($acabado->id == $presupuestoEntity->acabado_cubierta_id): + echo $acabado->label; + endif; + endforeach; + endif; ?> +

+ + + papel_sobrecubierta || $presupuestoEntity->estado_id==1): ?> +
Sobrecubierta
+

Papel: + papel_sobrecubierta_nombre)?$presupuestoEntity->papel_sobrecubierta_nombre:'') ?> + gramaje_sobrecubierta)?$presupuestoEntity->gramaje_sobrecubierta:'') ?>gr/m²

+ solapas_ancho_sobrecubierta>0 || $presupuestoEntity->estado_id==1): ?> +

Ancho solapas: solapas_ancho_sobrecubierta;?>mm

+ +

Acabado: + acabadosSobrecubierta) && is_array($datosPresupuesto->acabadosSobrecubierta) && !empty($datosPresupuesto->acabadosSobrecubierta)) : + foreach ($datosPresupuesto->acabadosSobrecubierta as $acabado) : + if ($acabado->id == $presupuestoEntity->acabado_sobrecubierta_id): + echo $acabado->label; + endif; + endforeach; + endif; ?> +

+ + + papel_guardas || $presupuestoEntity->estado_id==1): ?> +
Guardas
+

Papel: + papel_guardas_nombre)?$presupuestoEntity->papel_guardas_nombre:''); ?> + 170gr/m²

+

Impresión: + paginas_guardas) || $presupuestoEntity->paginas_guardas==0): + echo "Sin impresion"; + elseif($presupuestoEntity->paginas_guardas==4): + echo "1 cara"; + else: + echo "2 caras"; + endif; ?>

+ + + retractiladol || $presupuestoEntity->retractilado5 || $presupuestoEntity->faja_color || $presupuestoEntity->estado_id==1): ?> +
Extras
+ + retractiladol): ?> +

Retractilado individual

+ retractilado5): ?> +

Retractilado de 5

+ faja_color): ?> +

Imprimir faja a color

+ +
+ +
+ + estado_id==2): + $total = $presupuestoEntity->total_aceptado; + $iva = $presupuestoEntity->iva_reducido?1.04:1.21; + $total *= $iva; + $total_unidad = $presupuestoEntity->total_precio_unidad * $iva;; + echo '

Total: ' . round($total, 2) . '€

'; + echo '
' . round($total_unidad, 4) . '€/ud
' + ?> + +

Total: 100€

+
10.4€/ud
+ +
+
+
+ +
+
+
+
+ estado_id==2): + echo '
'; + echo '

Direcciones de envío

'; + echo '
'; + if(isset($presupuestoEntity->direcciones_envio)): + foreach ($presupuestoEntity->direcciones_envio as $direccion): + echo '
'; + echo '
'; + echo ''; + echo '
'; + echo '
'; + endforeach; + endif; + echo '
'; + echo '
'; + endif; ?> + + estado_id==2): ?> +
+

Ficheros

+
+
+
+ Arrastre aquí los ficheros o haga click +
+
+ +
+
+
+ +
+ +
+ + + + + +section("additionalInlineJs") ?> +window.estado = estado_id ?? 1?>; +window.tirada = selected_tirada ?? 0?>; +window.total = total_aceptado ?? 0?>; +window.total_unidad = total_precio_unidad ?? 0 ?>; +window.routes_resumen = { + guardarPresupuesto: "", + duplicarPresupuesto: "", +} + +estado_id===2): ?> + previewEsquemaCubierta(true); + + const previewTemplate = `
+
+
+ +
+
+
+
+
+
+
+
+
+
+
`; + + Dropzone.autoDiscover = false; + + var dropzoneMulti = new Dropzone('#dropzone-multi', { + url: "", + addRemoveLinks: true, + previewTemplate: previewTemplate, + paramName: "file", + uploadMultiple: true, + parallelUploads: 4, // Ajusta este número al máximo número de archivos que esperas subir a la vez + maxFiles: 5, // Ajusta este número al máximo número de archivos que esperas subir a la vez + autoProcessQueue: true, + dictRemoveFile: "Eliminar", + acceptedFiles: 'image/*, application/pdf', + maxFilesize: 5e+7, // Bytes + init: function() { + thisDropzone = this; + $('#loader').show(); + + $.ajax({ + url: "", + type: 'POST', + data: { presupuesto_id: id ?> }, + + }).done(function(response) { + if(response == null || response == ""){ + return; + } + values = JSON.parse(response); + for(var i = 0; i < values.length; i++){ + var mockFile = { name: values[i].name, size: values[i].size, hash: values[i].hash}; + + thisDropzone.files.push(mockFile); // add to files array + thisDropzone.emit("addedfile", mockFile); + thisDropzone.emit("thumbnail", mockFile, window.location.host + "/sistema/intranet/presupuestos/"+values[i].hash); + thisDropzone.emit("complete", mockFile); + thisDropzone.options.success.call(thisDropzone, mockFile); + }; + }).always(function() { + $('#loader').hide(); + }); + + this.on("addedfile", function (file) { + if(file.hash){ + var viewButton = Dropzone.createElement("Ver"); + file.previewElement.appendChild(viewButton); + // Listen to the view button click event + viewButton.addEventListener("click", function (e) { + + window.open(window.location.protocol + "//" + window.location.host + "/sistema/intranet/presupuestos/"+file.hash, '_blank'); + }); + } + }); + } + }); + + $('#presupuesto-cliente-form').submit(function(e){ + e.preventDefault(); + var files = dropzoneMulti.files; + $('#loader').show(); + + var formData = new FormData(); + var oldFiles = []; + var counter = 0; + for (var i = 0; i < files.length; i++) { + + if(files[i].upload){ + var file = files[i]; + formData.append('file[' + counter + ']', file); + counter += 1; + } + else{ + oldFiles.push(files[i].name); + } + } + formData.append('oldFiles', JSON.stringify(oldFiles)); + + formData.append('presupuesto_id', id ?>); + + $.ajax({ + url: "", + type: 'POST', + data: formData, + processData: false, // Indicar a jQuery que no procese los datos + contentType: false // Indicar a jQuery que no establezca el tipo de contenido + }).done(function(response) { + // Aquí puedes manejar la respuesta del servidor + }).always(function() { + $('#loader').hide(); + }) + + return false; + }); + +endSection() ?> diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_tipoLibroItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_tipoLibroItems.php new file mode 100644 index 00000000..54cf1280 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_tipoLibroItems.php @@ -0,0 +1,122 @@ +
+
+ + lomo_cubierta ?>> + +
+ +
+
+
+ > + + tipo_libro == 'cosido' || $datosPresupuesto->tipo_libro == ''){ + echo 'checked=""'; + } + ?> + > +
+

Rústica cosido

+
+
+ +
+
+
> + + tipo_libro)=='fresado'? 'checked=""':''); ?> > +
+

Rústica fresado

+
+
+ +
+
+
> + + tipo_libro)=='grapado'? 'checked=""':''); ?> > +
+

Cosido con grapas

+
+
+
+ +
+
+
+
> + + tipo_libro)=='espiral'? 'checked=""':''); ?> > +
+

Espiral

+
+
+ +
+
+
> + + tipo_libro)=='wireo'? 'checked=""':''); ?> > +
+

Wire-o

+
+
+ +
+
+
\ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/direcciones.js b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/direcciones.js new file mode 100644 index 00000000..5a264add --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/direcciones.js @@ -0,0 +1,387 @@ +function initDirecciones() { + data = { + id: $('#clienteId').val() + }, + data = Object.assign(data, window.token_ajax); + $('#errorDirecciones').hide(); + + $.ajax({ + url: window.routes_direcciones.direcciones, + type: 'POST', + data: data, + success: function(response) { + $("#direcciones").empty(); + $.each(response.menu, function(index, value) { + $("#direcciones").append(''); + }); + $("#direcciones").val(''); + }, + error: function() { + $("#direcciones").empty(); + }, + }); +} + +function initTiradasDirecciones() { + const _this = this + let sel_index = 1; + + $('#containerTiradasEnvios').empty(); + + for (i = 1; i <= 4; i++) { + let id = "tiradaPrecio" + i; + if ($('#' + id).length > 0) { + + let tirada_id = "ud_tiradaPrecio" + i; + let total_id = "tot_tiradaPrecio" + i; + let precio_u_id = "pu_tiradaPrecio" + i; + let peso = $('#' + id).attr('peso'); + + let html = ''; + html += '
'; + html += '
'; + html += ''; + html += '
'; + html += '
'; + + $('#containerTiradasEnvios').append(html); + + if(parseInt($('#' + tirada_id).text().split(' ')[0]) == window.direcciones_sel_tirada){ + sel_index = i; + } + + $('#' + id).hide(); + } + } + $(('#env_tiradaPrecio' + sel_index)).trigger('click'); + + cargarDirecciones(); + + const tiradasDireccionesList = [].slice.call(document.querySelectorAll('.custom-option-tiradasDirecciones .form-check-input')) + tiradasDireccionesList.map(function (customOptionEL) { + // Update custom options check on page load + _this.updateTiradasDireccionesCheck(customOptionEL) + + // Update custom options check on click + customOptionEL.addEventListener('click', e => { + _this.updateTiradasDireccionesCheck(customOptionEL) + }) + }) +} + +function cargarDirecciones(){ + $('#loader').show(); + $('#divDirecciones').empty(); + + if(window.direcciones == null){ + $('#loader').hide(); + return; + } + for(let i=0; i'; + html += '
'; + html += ''; + html += '
'; + html += ''; + + $('#divDirecciones').append(html); + $('#errorDirecciones').hide(); + $('#loader').hide(); + } +} + +function updateTiradasDireccionesCheck(el) { + if (el.checked) { + // If custom option element is radio, remove checked from the siblings (closest `.row`) + if (el.type === 'radio') { + const customRadioOptionList = [].slice.call(el.closest('.row').querySelectorAll('.custom-option-tiradasDirecciones')) + customRadioOptionList.map(function (customRadioOptionEL) { + customRadioOptionEL.closest('.custom-option-tiradasDirecciones').classList.remove('checked') + let id_temp = customRadioOptionEL.id.split('-')[1]; + $('#' + id_temp).prop('checked', false); + }) + } + const element = el.closest('.custom-option-tiradasDirecciones'); + element.classList.add('checked'); + + let id = element.id.split('-')[1]; + $('#' + id).prop('checked', true); + + } else { + el.closest('.custom-option-tiradasDirecciones').classList.remove('checked') + } +} + + +function obtenerUnidadesEnvio(){ + + const elements = $('#divDirecciones').find('.row.mb-3'); + let total = 0; + + if(elements.length > 0) { + for (let index=0; index 0 ) { + + let unidades = $('#unidadesEnvio').val(); + if(unidades == '' || isNaN(unidades) || parseInt(unidades) <= 0){ + return false; + } + unidades = parseInt(unidades); + + const seleccion = $('.custom-option-tiradasDirecciones.checked'); + if(seleccion.length == 0) { + return false; + } + + const element_tirada =($(seleccion[0]).find('label input')[0]); + const number = element_tirada.id.match(/\d+$/); + if (number.length == 0) { + return false; + } + let tirada = parseInt($('#tiradaDireccionesValue' + number[0]).text()); + + let total = obtenerUnidadesEnvio(); + + if($('#prototipo').is(':checked')) { + tirada += 1; + } + + if(total + unidades <= tirada) { + + data = { + id: $('#direcciones').val(), + peso: $('#env_tiradaPrecio' + number[0]).attr('peso'), + unidades: unidades, + entregaPieCalle: $('#entregaPieCalle').is(':checked')?1:0, + }, + data = Object.assign(data, window.token_ajax) + + $('#loader').show(); + + $.ajax({ + url: window.routes_direcciones.getDatos, + type: 'POST', + data: data, + success: function(response) { + if(response.data.length > 0) { + let html = ''; + html += '
'; + html += '
'; + html += ''; + html += '
'; + html += '
'; + + $('#divDirecciones').append(html); + $('#errorDirecciones').hide(); + $('#loader').hide(); + } + }, + error: function() { + $("#direcciones").empty(); + $('#loader').hide(); + }, + }); + } + else{ + $('#errorDirecciones').text('El número de unidades supera la tirada seleccionada.'); + $('#errorDirecciones').show(); + } + } + return false; +}) + + + +$(document).on('click', '.eliminar-direccion', function(e) { + + $(this).closest('.row.mb-3').remove(); + + const seleccion = $('.custom-option-tiradasDirecciones.checked'); + if(seleccion.length == 0) { + return false; + } + + const element_tirada =($(seleccion[0]).find('label input')[0]); + const number = element_tirada.id.match(/\d+$/); + if (number.length == 0) { + return false; + } + + let tirada = parseInt($('#tiradaDireccionesValue' + number[0]).text()); + + const elements = $('#divDirecciones').find('.row.mb-3'); + + let total = 0; + if(elements.length > 0) { + for (let index=0; index' + value.text + ''); + }); + $("#direcciones").val(''); + $('#addressForm').modal('hide'); + }, + error: function() { + $('#addressForm').modal('hide'); + }, + }); + + } +} + +function validarEnvio(){ + + const seleccion = $('.custom-option-tiradasDirecciones.checked'); + if(seleccion.length == 0) { + return false; + } + + const element_tirada =($(seleccion[0]).find('label input')[0]); + + const number = element_tirada.id.match(/\d+$/); + if (number.length == 0) { + return false; + } + let tirada = parseInt($('#tiradaDireccionesValue' + number[0]).text()); + + let total = obtenerUnidadesEnvio(); + + if($('#prototipo').is(':checked')) { + tirada += 1; + } + + if(total != tirada){ + return false; + } + return true; +} + +function getDireccionesEnvio(){ + + const elements = $('#divDirecciones').find('.row.mb-3'); + + let direcciones = []; + + if(elements.length > 0) { + for (let index=0; index { + _this.updateTapaCheck(customOptionEL) + }) + }) +} + +function updateTapaCheck(el) { + if (el.checked) { + // If custom option element is radio, remove checked from the siblings (closest `.row`) + if (el.type === 'radio') { + const customRadioOptionList = [].slice.call(el.closest('.row').querySelectorAll('.custom-option-tapa')) + customRadioOptionList.map(function (customRadioOptionEL) { + customRadioOptionEL.closest('.custom-option-tapa').classList.remove('checked') + }) + } + el.closest('.custom-option-tapa').classList.add('checked') + if (el.closest('.custom-option-tapa').id == 'tapaBlandaInnerDiv') { + $('#tapaBlanda').prop('checked', true); + $('#tapaDura').prop('checked', false); + } + else { + $('#tapaBlanda').prop('checked', false); + $('#tapaDura').prop('checked', true); + } + } else { + el.closest('.custom-option-tapa').classList.remove('checked') + } +} + + +function initColorCheck() { + const _this = this + + const custopOptionList = [].slice.call(document.querySelectorAll('.custom-option-color .form-check-input')) + custopOptionList.map(function (customOptionEL) { + // Update custom options check on page load + _this.updateColorCheck(customOptionEL) + + // Update custom options check on click + customOptionEL.addEventListener('click', e => { + _this.updateColorCheck(customOptionEL) + }) + }) +} + +function updateColorCheck(el) { + if (el.checked) { + // If custom option element is radio, remove checked from the siblings (closest `.row`) + if (el.type === 'radio') { + const customRadioOptionList = [].slice.call(el.closest('.row-color').querySelectorAll('.custom-option-color')) + customRadioOptionList.map(function (customRadioOptionEL) { + customRadioOptionEL.closest('.custom-option-color').classList.remove('checked') + }) + } + el.closest('.custom-option-color').classList.add('checked') + if (el.closest('.custom-option-color').id == 'colorNegroDiv') { + $('#colorNegro').prop('checked', true); + $('#colorNegroHq').prop('checked', false); + $('#colorColor').prop('checked', false); + $('#colorColorHq').prop('checked', false); + } + else if (el.closest('.custom-option-color').id == 'colorNegroHqDiv') { + $('#colorNegro').prop('checked', false); + $('#colorNegroHq').prop('checked', true); + $('#colorColor').prop('checked', false); + $('#colorColorHq').prop('checked', false); + } + else if (el.closest('.custom-option-color').id == 'colorColorDiv') { + $('#colorNegro').prop('checked', false); + $('#colorNegroHq').prop('checked', false); + $('#colorColor').prop('checked', true); + $('#colorColorHq').prop('checked', false); + } + else { + $('#colorNegro').prop('checked', false); + $('#colorNegroHq').prop('checked', false); + $('#colorColor').prop('checked', false); + $('#colorColorHq').prop('checked', true); + } + + } else { + el.closest('.custom-option-color').classList.remove('checked') + } +} + + +$('#enableSobrecubierta').on('change', function () { + if ($(this).is(":checked")) { + $('.enable-sobrecubierta').show(); + } else { + $('#gramajeSobrecubierta').val('').trigger('change'); + $('#paperSobrecubierta').val('').trigger('change'); + $('#acabadosSobrecubierta').val('').trigger('change'); + $('#tamanioSolapasSobrecubierta').val(); + $('.enable-sobrecubierta').hide(); + + } +}); + + +function initDisenioLibro() { + initTapaCheck(); + initColorCheck(); + + $('.elementos-libro').trigger('change'); + $('.change-tipo-impresion').trigger('change'); + + $('#papelInterior').trigger('change'); + $('#papelInterior').val(window.datosDisenioLibro.papel_interior); + $('#gramajeInterior').append($(''); + + } +} + + +$('.calcular-presupuesto').on('change', function () { + + // se obtiene el id del elemento que ha disparado el evento + if($(this).hasClass('input-sobrecubierta')){ + if($('#papelSobrecubierta option:selected').val() == '' || $('#gramajeSobrecubierta option:selected').val() == ''){ + return; + } + } + calcularPresupuesto(); +}); + +function comprobarTiradasPOD(){ + const tiradas = getTiradas(); + + //Comprobar que todos los elementos del array tiradas estan por encima de 30 o por debajo + const tiradasPOD = tiradas.every(tirada => tirada <= 30); + const tiradasNoPOD = tiradas.every(tirada => tirada > 30); + if (tiradasPOD == !tiradasNoPOD) { + return true; + } + return false; +} + +$('#clienteId').on('select2:change', function () { + calcularPresupuesto(); +}); + + +async function calcularPresupuesto() { + + let isColor = false; + if($('#colorColorDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked')) + isColor = true; + let isHq = false; + if($('#colorNegroHqDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked')) + isHq = true; + + if(!comprobarTiradasPOD()){ + $('#errorTiradas').show(); + return; + } + $('#errorTiradas').hide(); + + // se obtiene la propiedad serv_id de los checkboxes seleccionados de la clase .servicio-extra + if (!checkValues()) { + return; + } + + let servicios = []; + $('.servicio-extra:checked').each(function () { + servicios.push($(this).attr('serv_id')); + }) + + let datos = { + tamanio: getDimensionLibro(), + tirada: getTiradas(), + paginas: $('#paginas').val(), + paginasColor: $('#paginasColor').val(), + tipo: $('.custom-option-tipo.checked').attr('id').replace('Div', ''), + tapa: $('#tapaDura').is(':checked') ? 'dura' : 'blanda', + isColor: isColor ? 1 : 0, + isHq: isHq ? 1 : 0, + papelInterior: $('#papelInterior option:selected').val(), + papelInteriorNombre: $('#papelInterior option:selected').text().trim(), + gramajeInterior: $('#gramajeInterior option:selected').text(), + excluirRotativa: $('#excluirRotativa').is(':checked')? 1 : 0, + papelCubierta: $('#papelCubierta option:selected').val(), + papelCubiertaNombre: $('#papelCubierta option:selected').text().trim(), + gramajeCubierta: $('#gramajeCubierta option:selected').text(), + carasCubierta: $('#carasCubierta').val(), + acabadoCubierta: $('#acabadosCubierta').val(), + clienteId: $('#clienteId').val(), + servicios: servicios, + } + + // Si es cosido, se añade el número de páginas del cuadernillo + if ($('#cosidoDiv').hasClass('checked')) { + datos.paginasCuadernillo = $('#paginasCuadernillo').val(); + } + // Si hay solapas de cubierta + if ($('#solapasCubierta').is(':checked')) { + datos.solapasCubierta = $('#anchoSolapasCubierta').val() + } + + + + // Si hay sobrecubierta + if ($('#enableSobrecubierta').is(':checked')) { + if($('#papelSobrecubierta option:selected').val()>0 && $('#gramajeSobrecubierta option:selected').val()>0){ + + datos.sobrecubierta = { + papel: $('#papelSobrecubierta option:selected').val(), + papel_nombre: $('#papelSobrecubierta option:selected').text().trim(), + gramaje: $('#gramajeSobrecubierta option:selected').text(), + acabado: $('#acabadosSobrecubierta').val() + } + + datos.sobrecubierta.solapas = $('#anchoSolapasSobrecubierta').val() + } + } + + if ($('#divGuardas').is(':visible')) { + datos.guardas = { + papel: $('#papelGuardas option:selected').val(), + papel_nombre: $('#papelGuardas option:selected').text().trim(), + gramaje: 170, + caras: $('#impresionGuardas option:selected').val() + } + } + + datos = Object.assign(datos, window.token_ajax) + + $('#divTiradasPrecio').empty(); + $('#loader').show(); + + $.ajax({ + url: window.routes_disenio_libro.presupuestoCliente, + type: 'POST', + data: datos, + success: function (response) { + error = false; + $('#errorGeneral').hide(); + try{ + + + if(response.errors.interior.length > 0){ + $('#errorInterior').show(); + error = true; + } + else + $('#errorInterior').hide(); + if(response.errors.cubierta.length > 0){ + $('#errorCubierta').show(); + error = true; + } + else + $('#errorCubierta').hide(); + + if(response.errors.sobrecubierta.length > 0){ + $('#errorSobrecubierta').show(); + error = true; + } + else + $('#errorSobrecubierta').hide(); + + + if(response.errors.guardas.length > 0){ + $('#errorGuardas').show(); + error = true; + } + else + $('#errorGuardas').hide(); + + if(response.errors.servicios.length > 0 || response.errors.serviciosDefecto.length > 0){ + error = true; + $('#errorGeneral').show(); + } + else{ + $('#errorGeneral').hide(); + } + } + catch(error){ + } + + //For debug only + //console.log(response); + + $('#loader').hide(); + + $('#divTiradasPrecio').empty(); + + if(!error){ + + $('#lomo_cubierta').val(response.info.lomo_cubierta); + + $('#precios').show(); + + if(response.tiradas){ + for (i = 0; i < response.tiradas.length; i++) { + const total = (parseFloat(response.precio_u[i]) * parseInt(response.tiradas[i])).toFixed(2) ; + const label = "tiradaPrecio" + parseInt(i+1); + + let html = ''; + + html += ''; + + $('#divTiradasPrecio').append(html); + } + } + + if($('#resumen-libro').hasClass('active')) { + initDirecciones(); + initTiradasDirecciones(); + generarResumen(); + previewEsquemaCubierta(true); + } + + } + }, + error: function (error) { + $('#loader').hide(); + $('#divTiradasPrecio').empty(); + } + }); +} \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/presupuestoCliente.js b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/presupuestoCliente.js new file mode 100644 index 00000000..6c79f0ee --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/presupuestoCliente.js @@ -0,0 +1,356 @@ +/** + * Cliente presupuesto Wizard + */ + +'use strict'; + +(function () { + + + // Init custom option check + //window.Helpers.initCustomOptionCheck(); + // Vertical Wizard + // -------------------------------------------------------------------- + + const clientePresupuestoWizard = document.querySelector('#wizard-presupuesto-cliente'); + if (typeof clientePresupuestoWizard !== undefined && clientePresupuestoWizard !== null ) { + // Wizard form + const clientePresupuestoWizardForm = clientePresupuestoWizard.querySelector('#presupuesto-cliente-form'); + // Wizard steps + const clientePresupuestoWizardFormStep2 = clientePresupuestoWizardForm.querySelector('#tipo-libro'); + const clientePresupuestoWizardFormStep3 = clientePresupuestoWizardForm.querySelector('#disenio-libro'); + const clientePresupuestoWizardFormStep4 = clientePresupuestoWizardForm.querySelector('#direcciones-libro'); + const clientePresupuestoWizardFormStep5 = clientePresupuestoWizardForm.querySelector('#resumen-libro'); + // Wizard next prev button + const clientePresupuestoWizardNext = [].slice.call(clientePresupuestoWizardForm.querySelectorAll('.btn-next')); + const clientePresupuestoWizardPrev = [].slice.call(clientePresupuestoWizardForm.querySelectorAll('.btn-prev')); + + let FormValidation2; + let FormValidation3; + let FormValidation4; + let FormValidation5; + + let validationStepper = new Stepper(clientePresupuestoWizard, { + linear: true + }); + + if(clientePresupuestoWizardFormStep2 != null) { + // select2 (clienteId) + const clienteId = $('#clienteId'); + + clienteId.on('change.select2', function () { + // Revalidate the clienteId field when an option is chosen + FormValidation2.revalidateField('clienteId'); + }); + + // Deal Details + FormValidation2 = FormValidation.formValidation(clientePresupuestoWizardFormStep2, { + fields: { + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap5: new FormValidation.plugins.Bootstrap5({ + // Use this for enabling/changing valid/invalid class + // eleInvalidClass: '', + eleValidClass: '', + rowSelector: '.col-sm-3' + }), + autoFocus: new FormValidation.plugins.AutoFocus(), + submitButton: new FormValidation.plugins.SubmitButton() + } + }).on('core.form.valid', function () { + // Jump to the next step when all fields in the current step are valid + validationStepper.next(); + }); + + + // Deal Usage + FormValidation3 = FormValidation.formValidation(clientePresupuestoWizardFormStep3, { + fields: { + titulo: { + validators: { + notEmpty: { + message: window.Presupuestos.validation.requerido_short + }, + } + }, + clienteId: { + validators: { + callback: { + message: window.Presupuestos.validation.cliente, + callback: function (input) { + // Get the selected options + const options = $("#clienteId").select2('data'); + const hasValidOption = options.some(option => parseInt(option.id) > 0); + return options !== null && options.length > 0 && hasValidOption; + }, + } + } + }, + tirada: { + validators: { + callback: { + message: window.Presupuestos.validation.integer_greatherThan_0, + callback: function (input) { + const value = $("#tirada").val(); + return value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0; + }, + } + } + }, + paginas: { + validators: { + callback: { + message: window.Presupuestos.validation.integer_greatherThan_0, + callback: function (input) { + const value = $("#paginas").val(); + return value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0; + }, + } + } + }, + paginasColor: { + validators: { + callback: { + message: window.Presupuestos.validation.integer_greatherThan_0, + callback: function (input) { + if ($('#pagColorDiv').is(':hidden')) + return true; + else { + const value = $("#paginasColor").val(); + return value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0; + } + }, + } + } + }, + gramajeInterior: { + validators: { + callback: { + callback: function (input) { + const value = $("#tirada").val(); + if ($('#gramajeInterior option:selected').text().length == 0) { + if(value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0){ + return { + valid: false, + message: window.Presupuestos.validation.sin_gramaje, + } + } + return { + valid: value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0, + message: window.Presupuestos.validation.tirada_no_valida, + } + } + return true; + }, + }, + } + }, + gramajeCubierta: { + validators: { + callback: { + message: window.Presupuestos.validation.tirada_no_valida, + callback: function (input) { + const value = $("#tirada").val(); + if ($('#gramajeCubierta option:selected').text().length == 0) { + return value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0; + } + return true; + }, + }, + callback: { + message: window.Presupuestos.validation.sin_gramaje, + callback: function (input) { + if ($('#gramajeCubierta option:selected').text().length == 0) { + return false; + } + return true; + }, + } + } + }, + gramajeSobrecubierta: { + validators: { + callback: { + message: window.Presupuestos.validation.tirada_no_valida, + callback: function (input) { + const value = $("#tirada").val(); + if ($('#gramajeSobrecubierta option:selected').text().length == 0) { + return value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0; + } + return true; + }, + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap5: new FormValidation.plugins.Bootstrap5({ + // Use this for enabling/changing valid/invalid class + // eleInvalidClass: '', + eleValidClass: '', + rowSelector: function (field, ele) { + // field is the field name + // ele is the field element + switch (field) { + case 'gramajeInterior': + case 'gramajeCubierta': + case 'gramajeSobrecubierta': + return '.col-sm-2'; + + case 'titulo': + return '.col-sm-12'; + + case 'clienteId': + return '.col-sm-6'; + + default: + return '.col-sm-3'; + } + } + }), + autoFocus: new FormValidation.plugins.AutoFocus(), + submitButton: new FormValidation.plugins.SubmitButton() + } + }).on('core.form.valid', function () { + if($('#tiradaPrecio1').length > 0) { + validationStepper.next(); + initDirecciones(); + initTiradasDirecciones(); + } + }); + + const tirada = $('#tirada'); + tirada.on('change', function () { + // Revalidate the clienteId field when an option is chosen + FormValidation2.revalidateField('gramajeInterior'); + FormValidation2.revalidateField('gramajeCubierta'); + FormValidation2.revalidateField('gramajeSobrecubierta'); + }); + + // Direcciones + FormValidation4 = FormValidation.formValidation(clientePresupuestoWizardFormStep4, { + fields: { + + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap5: new FormValidation.plugins.Bootstrap5({ + // Use this for enabling/changing valid/invalid class + // eleInvalidClass: '', + eleValidClass: '', + rowSelector: '.col-md-12' + }), + autoFocus: new FormValidation.plugins.AutoFocus(), + submitButton: new FormValidation.plugins.SubmitButton() + } + }).on('core.form.valid', function () { + if(validarEnvio()){ + generarResumen(); + validationStepper.next(); + } + else{ + let text = "El número de unidades enviadas no coincie con la tirada seleccionada."; + if($('#prototipo').is(':checked')) { + text += "
(Tenga en cuenta que se ha seleccionado la opción de prototipo)"; + } + $('#errorDirecciones').text(text); + $('#errorDirecciones').show(); + } + }); + } + // Deal Usage + FormValidation5 = FormValidation.formValidation(clientePresupuestoWizardFormStep5, { + fields: { + // * Validate the fields here based on your requirements + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap5: new FormValidation.plugins.Bootstrap5({ + // Use this for enabling/changing valid/invalid class + // eleInvalidClass: '', + eleValidClass: '', + rowSelector: '.col-md-12' + }), + autoFocus: new FormValidation.plugins.AutoFocus(), + submitButton: new FormValidation.plugins.SubmitButton() + } + }).on('core.form.valid', function () { + // You can submit the form + // clientePresupuestoWizardForm.submit() + // or send the form data to server via an Ajax request + // To make the demo simple, I just placed an alert + //alert('Submitted..!!'); + }); + + clientePresupuestoWizardNext.forEach(item => { + item.addEventListener('click', event => { + // When click the Next button, we will validate the current step + switch (validationStepper._currentIndex) { + case 0: + FormValidation2.validate(); + break; + + case 1: + FormValidation3.validate(); + break; + + case 2: + FormValidation4.validate(); + break; + + case 3: + FormValidation5.validate(); + break; + + default: + validationStepper.next(); + break; + } + }); + }); + + clientePresupuestoWizardPrev.forEach(item => { + item.addEventListener('click', event => { + switch (validationStepper._currentIndex) { + case 4: + validationStepper.previous(); + break; + + case 3: + validationStepper.previous(); + break; + + case 2: + for (let i = 0; i < 4; i++) { + let id = "tiradaPrecio" + i; + if ($('#' + id).length > 0) { + $('#' + id).show(); + } + } + validationStepper.previous(); + break; + + case 1: + validationStepper.previous(); + break; + + case 0: + window.location.href = document.location.origin + '/presupuestocliente/list'; + + default: + break; + } + }); + }); + + var url = $(location).attr('href'); // Obtener URL actual + if (url.includes('/edit/')) { // Comprobar si la URL contiene 'edit' + validationStepper.to(4); + } + + } +})(); + + diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/previews.js b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/previews.js new file mode 100644 index 00000000..ca350aa3 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/previews.js @@ -0,0 +1,819 @@ +// Global parameters +var pvObj; + +$('#toReview').on("click", function () { + previewEsquemaCubierta(true); +}); + +$(document).on('shown.bs.modal', function (e) { + previewEsquemaCubierta(false); +}) + + +function previewEsquemaCubierta(isThumbnail = false) { + + if($('#cosidoDiv').length){ + + if ($('#cosidoDiv').hasClass('checked') || $("#fresadoDiv").hasClass('checked')) { + //console.log("Cosido/Fresado"); + if ($("#tapaBlanda").is(":checked")) { + portadaTapaBlanda(isThumbnail); + } else if ($("#tapaDura").is(":checked")) { + portadaTapaDura(isThumbnail); + } + } else if ($('#espiralDiv').hasClass('checked') || $('#wireoDiv').hasClass('checked')) { + //console.log("Espiral/Wireo"); + if ($("#tapaBlanda").is(":checked")) { + portadaEspiral(isThumbnail, false); + } else if ($("#tapaDura").is(":checked")) { + portadaEspiral(isThumbnail, true); + } + } else if ($('#grapadoDiv').hasClass('checked')) { + portadaGrapado(isThumbnail); + } + } + else{ + let titulo = $('#tipoLibro').text().toLowerCase(); + if(titulo.includes("cosido") || titulo.includes("fresado")){ + if(titulo.includes("dura")) + portadaTapaDura(isThumbnail); + else{ + portadaTapaBlanda(isThumbnail); + } + } + else if (titulo.includes("espiral") || titulo.includes("wire-o")){ + if(titulo.includes("dura")) + portadaEspiral(isThumbnail, true); + else + portadaEspiral(isThumbnail, false); + } + else if (titulo.includes("grapado")){ + portadaGrapado(isThumbnail); + } + } + + +} + +function portadaTapaDura(isThumbnail = false) { + + // Variables locales + let altoLibro, anchoLibro, lomoLibro, anchoCubierta, altoSangrado, anchoSangrado; + let styleCotas = {size: 12, family: 'Public Sans'}; + let sangradoTexto = "Sangrado 20 mm"; + let sangradoValor = parseFloat(20); // mm + let anchoPliegue = parseFloat(7); // mm + let altoPliegue = parseFloat(7); // mm + let anchoCarton = parseFloat(7); // mm + + let divIdName = (isThumbnail) ? 'thumbnail_ec_shape' : 'pv_ec_shape'; + + // Get the preview Object parameters + getObjetoToPreview(); + + // Definicion de los parametros del Esquema de Cubierta (EC) + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 800; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + altoLibro = altoSangrado * 0.88; + anchoLibro = anchoSangrado * 0.39; + lomoLibro = anchoSangrado * 0.133; + anchoCubierta = (2 * anchoLibro) + lomoLibro; + + // Clear the canvas element + $(`#${divIdName}`).empty(); + // Get the element for placing the graphical elements + var divEC = document.getElementById(divIdName); + var previewEC = new Two({fitted: true}).appendTo(divEC); + + // Calculate the center of the canvas element + var origenEC = new Two.Vector(previewEC.width / 2, previewEC.height / 2); + + var sangrado = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoSangrado, + altoSangrado + ); + sangrado.stroke = 'black'; + sangrado.dashes = [5, 5]; + sangrado.fill = '#FCEAF1'; + sangrado.linewidth = 1; + + var libro = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + ((2 * anchoLibro) + lomoLibro), + altoLibro); + libro.stroke = 'black'; + libro.linewidth = 1; + + var lomo = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + lomoLibro, + altoLibro); + lomo.stroke = 'black'; + lomo.fill = '#F4F8F2'; + lomo.linewidth = 1; + + // Cotas y textos + if (!isThumbnail) { + // Cotas: + var cotaAnchoCubierta = previewEC.makeDobleArrow( + origenEC.x - (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + origenEC.x + (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + 10); + cotaAnchoCubierta.linewidth = 2; + var cotaAltoCubierta = previewEC.makeDobleArrow( + origenEC.x + (anchoCubierta / 2) + 40, + origenEC.y + (altoSangrado / 2), + origenEC.x + (anchoCubierta / 2) + 40, + origenEC.y - (altoSangrado / 2), + 10); + cotaAltoCubierta.linewidth = 2; + var cotaAltoLibro = previewEC.makeDobleArrow( + origenEC.x + (lomoLibro / 2) + 35, + origenEC.y + (altoLibro / 2), + origenEC.x + (lomoLibro / 2) + 35, + origenEC.y - (altoLibro / 2), + 10); + cotaAltoLibro.linewidth = 2; + var cotaLomo = previewEC.makeDobleArrow( + origenEC.x - (lomoLibro / 2), + origenEC.y + (altoLibro / 3), + origenEC.x + (lomoLibro / 2), + origenEC.y + (altoLibro / 3), + 10); + cotaLomo.linewidth = 2; + var cotaContraportada = previewEC.makeDobleArrow( + origenEC.x - (lomoLibro / 2 + anchoLibro), + origenEC.y - (altoLibro / 3), + origenEC.x - (lomoLibro / 2), + origenEC.y - (altoLibro / 3), + 10); + cotaContraportada.linewidth = 2; + var cotaPortada = previewEC.makeDobleArrow( + origenEC.x + (lomoLibro / 2), + origenEC.y - (altoLibro / 3), + origenEC.x + (lomoLibro / 2 + anchoLibro), + origenEC.y - (altoLibro / 3), + 10); + cotaPortada.linewidth = 2; + + + // Textos: + // Titulos generales + let stylesEC = {size: 22, weight: 'bold', family: 'Public Sans'}; + previewEC.makeText("Portada", origenEC.x + (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); + previewEC.makeText("Contraportada", origenEC.x - (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); + previewEC.makeText("Lomo", origenEC.x, origenEC.y, stylesEC).rotation = -Math.PI / 2; + // Sangrados + let styleSangrado = {size: 10, family: 'Public Sans', style: 'italic', fill: 'red'}; + previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y + (altoLibro / 2 + 13), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y - (altoLibro / 2 + 13), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x + (lomoLibro / 2 + anchoLibro + 13), origenEC.y, styleSangrado).rotation = -Math.PI / 2; + previewEC.makeText(sangradoTexto, origenEC.x - (lomoLibro / 2 + anchoLibro + 13), origenEC.y, styleSangrado).rotation = -Math.PI / 2; + // Cotas + previewEC.makeText(pvObj.lomoLibro + anchoCarton + " mm", origenEC.x, origenEC.y + (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoLibro + anchoPliegue + " mm", origenEC.x - (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoLibro + anchoPliegue + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.altoLibro + altoPliegue + " mm", origenEC.x + (lomoLibro / 2) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText(pvObj.altoLibro + (2 * sangradoValor) + altoPliegue + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro) + 55, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText((2 * pvObj.anchoLibro) + pvObj.lomoLibro + (2 * sangradoValor) + +(2 * anchoPliegue) + anchoCarton + " mm", + origenEC.x, + origenEC.y + (altoLibro / 2) + 50, + styleCotas); + + } + + previewEC.update(); + +} + +function portadaTapaBlanda(isThumbnail = false) { + + // Variables locales + let altoLibro, anchoLibro, lomoLibro, anchoSolapa, anchoCubierta, altoSangrado, anchoSangrado; + let styleCotas = {size: 12, family: 'Public Sans'}; + let sangradoTexto = "Sangrado 5 mm"; + let sangradoValor = parseFloat(5); // mm + let offsetSolapaValor = parseFloat(0); // mm + + let divIdName = (isThumbnail) ? 'thumbnail_ec_shape' : 'pv_ec_shape'; + + // Get the preview Object parameters + getObjetoToPreview(); + + + // Definicion de los parametros del Esquema de Cubierta (EC) + if (pvObj.anchoSolapa == 0) { + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 800; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + + altoLibro = altoSangrado * 0.97; + anchoLibro = anchoSangrado * 0.419; + anchoSolapa = 0; + lomoLibro = anchoSangrado * 0.133; + anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + lomoLibro; + + } else { + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 750; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + altoLibro = altoSangrado * 0.95; + anchoLibro = anchoSangrado * 0.28; + anchoSolapa = anchoSangrado * 0.163; + lomoLibro = anchoSangrado * 0.09; + anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + lomoLibro; + offsetSolapaValor = parseFloat('3.0'); // mm + } + + // Clear the canvas element + $(`#${divIdName}`).empty(); + // Get the element for placing the graphical elements + var divEC = document.getElementById(divIdName); + var previewEC = new Two({fitted: true}).appendTo(divEC); + // Calculate the center of the canvas element + var origenEC = new Two.Vector(previewEC.width / 2, previewEC.height / 2); + + var sangrado = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoSangrado, + altoSangrado + ); + sangrado.stroke = 'black'; + sangrado.dashes = [5, 5]; + sangrado.fill = '#FCEAF1'; + sangrado.linewidth = 1; + + if (pvObj.anchoSolapa != 0) { + var solapas = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoCubierta, + altoLibro); + solapas.stroke = 'black'; + solapas.linewidth = 1; + + // Cotas Solapas + if (!isThumbnail) { + var cotaSolapa2 = previewEC.makeDobleArrow( + origenEC.x - anchoCubierta / 2, + origenEC.y - (altoLibro / 3), + origenEC.x - anchoLibro - lomoLibro / 2, + origenEC.y - (altoLibro / 3), + 10); + cotaSolapa2.linewidth = 2; + var cotaSolapa1 = previewEC.makeDobleArrow( + origenEC.x + anchoCubierta / 2, + origenEC.y - (altoLibro / 3), + origenEC.x + anchoLibro + lomoLibro / 2, + origenEC.y - (altoLibro / 3), + 10); + cotaSolapa1.linewidth = 2; + + // Textos Solapas + let stylesSolapa = {size: 18, family: 'Public Sans'}; + previewEC.makeText("Solapa 1", origenEC.x + anchoLibro + (lomoLibro + anchoSolapa) / 2, origenEC.y, stylesSolapa); + previewEC.makeText("Solapa 2", origenEC.x - anchoLibro - (lomoLibro + anchoSolapa) / 2, origenEC.y, stylesSolapa); + // Textos Cotas Solapas + previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x - anchoLibro - (lomoLibro + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x + anchoLibro + (lomoLibro + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); + } + + } + + var libro = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + ((2 * anchoLibro) + lomoLibro), + altoLibro); + libro.stroke = 'black'; + libro.linewidth = 1; + + var lomo = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + lomoLibro, + altoLibro); + lomo.stroke = 'black'; + lomo.fill = '#F4F8F2'; + lomo.linewidth = 1; + + // Cotas y textos + if (!isThumbnail) { + // Cotas: + var cotaAnchoCubierta = previewEC.makeDobleArrow( + origenEC.x - (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + origenEC.x + (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + 10); + cotaAnchoCubierta.linewidth = 2; + var cotaAltoCubierta = previewEC.makeDobleArrow( + origenEC.x + (anchoCubierta / 2) + 35, + origenEC.y + (altoSangrado / 2), + origenEC.x + (anchoCubierta / 2) + 35, + origenEC.y - (altoSangrado / 2), + 10); + cotaAltoCubierta.linewidth = 2; + var cotaAltoLibro = previewEC.makeDobleArrow( + origenEC.x + (lomoLibro / 2) + 35, + origenEC.y + (altoLibro / 2), + origenEC.x + (lomoLibro / 2) + 35, + origenEC.y - (altoLibro / 2), + 10); + cotaAltoLibro.linewidth = 2; + var cotaLomo = previewEC.makeDobleArrow( + origenEC.x - (lomoLibro / 2), + origenEC.y + (altoLibro / 3), + origenEC.x + (lomoLibro / 2), + origenEC.y + (altoLibro / 3), + 10); + cotaLomo.linewidth = 2; + var cotaContraportada = previewEC.makeDobleArrow( + origenEC.x - (lomoLibro / 2 + anchoLibro), + origenEC.y - (altoLibro / 3), + origenEC.x - (lomoLibro / 2), + origenEC.y - (altoLibro / 3), + 10); + cotaContraportada.linewidth = 2; + var cotaPortada = previewEC.makeDobleArrow( + origenEC.x + (lomoLibro / 2), + origenEC.y - (altoLibro / 3), + origenEC.x + (lomoLibro / 2 + anchoLibro), + origenEC.y - (altoLibro / 3), + 10); + cotaPortada.linewidth = 2; + + + // Textos: + // Titulos generales + let stylesEC = {size: 22, weight: 'bold', family: 'Public Sans'}; + previewEC.makeText("Portada", origenEC.x + (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); + previewEC.makeText("Contraportada", origenEC.x - (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); + let a = previewEC.makeText("Lomo", origenEC.x, origenEC.y, stylesEC).rotation = -Math.PI / 2; + // Sangrados + let styleSangrado = {size: 10, family: 'Public Sans', style: 'italic', fill: 'red'}; + previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y + (altoLibro / 2 + 20), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y - (altoLibro / 2 + 20), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x + (lomoLibro / 2 + anchoLibro + anchoSolapa + 20), origenEC.y, styleSangrado).rotation = -Math.PI / 2; + previewEC.makeText(sangradoTexto, origenEC.x - (lomoLibro / 2 + anchoLibro + anchoSolapa + 20), origenEC.y, styleSangrado).rotation = -Math.PI / 2; + // Cotas + previewEC.makeText(pvObj.lomoLibro + " mm", origenEC.x, origenEC.y + (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x - (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.altoLibro + " mm", origenEC.x + (lomoLibro / 2) + 25, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText(pvObj.altoLibro + (2 * sangradoValor) + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro + anchoSolapa) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText((2 * pvObj.anchoLibro) + (2 * (pvObj.anchoSolapa + pvObj.offsetSolapa)) + pvObj.lomoLibro + (2 * sangradoValor) + " mm", + origenEC.x, + origenEC.y + (altoLibro / 2) + 50, + styleCotas); + + } + + previewEC.update(); + +} + +function portadaEspiral(isThumbnail = false, isTapaDura = false) { + + // Variables locales + let altoLibro, anchoLibro, anchoCalle, anchoCubierta, altoSangrado, anchoSangrado, anchoSolapa, offsetCubierta; + let styleCotas = {size: 12, family: 'Public Sans'}; + let sangradoTexto = (isTapaDura) ? "Sangrado 20 mm" : "Sangrado 5 mm"; + let sangradoValor = (isTapaDura) ? parseFloat(20) : parseFloat(5); // mm + + let divIdName = (isThumbnail) ? 'thumbnail_ec_shape' : 'pv_ec_shape'; + + // Get the preview Object parameters + getObjetoToPreview(); + + // Definicion de los parametros del Esquema de Cubierta (EC) + if ((pvObj.anchoSolapa !== 0) && (!isTapaDura)) { + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 750; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + altoLibro = altoSangrado * 0.95; + anchoLibro = anchoSangrado * 0.28; + anchoCalle = anchoSangrado * 0.02; + anchoSolapa = anchoSangrado * 0.163; + sangrado = anchoSangrado * 0.03; + anchoCubierta = 2 * (anchoLibro + anchoSolapa + sangrado) + anchoCalle; + offsetCubierta = anchoLibro / 2 + anchoCalle / 2 + anchoSolapa / 2 + sangrado; + } else { + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 750; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + altoLibro = (isTapaDura) ? altoSangrado * 0.88 : altoSangrado * 0.97; + anchoLibro = (isTapaDura) ? anchoSangrado * 0.39 : anchoSangrado * 0.419; + anchoCalle = anchoSangrado * 0.02; + anchoSolapa = 0; + anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + anchoCalle; + offsetCubierta = anchoLibro / 2 + anchoCalle / 2 + anchoSolapa + sangradoValor; + } + + // Clear the canvas element + $(`#${divIdName}`).empty(); + // Get the element for placing the graphical elements + var divEC = document.getElementById(divIdName); + var previewEC = new Two({fitted: true}).appendTo(divEC); + // Calculate the center of the canvas element + var origenEC = new Two.Vector(previewEC.width / 2, previewEC.height / 2); + + var sangrado = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoSangrado, + altoSangrado + ); + sangrado.stroke = 'black'; + sangrado.dashes = [5, 5]; + sangrado.fill = '#FCEAF1'; + sangrado.linewidth = 1; + + if ((pvObj.anchoSolapa != 0) && (!isTapaDura)) { + var solapa1 = previewEC.makeRectangle( + origenEC.x + (anchoLibro + anchoCalle / 2 + anchoSolapa / 2 + sangradoValor), + origenEC.y, + anchoSolapa, + altoLibro); + solapa1.stroke = 'black'; + solapa1.linewidth = 1; + + var solapa2 = previewEC.makeRectangle( + origenEC.x - (anchoLibro + anchoCalle / 2 + anchoSolapa / 2 + sangradoValor), + origenEC.y, + anchoSolapa, + altoLibro); + solapa2.stroke = 'black'; + solapa2.linewidth = 1; + + // Cotas y textos + if (!isThumbnail) { + // Cotas + var cotaSolapa2 = previewEC.makeDobleArrow( + origenEC.x - (anchoCalle / 2 + sangradoValor + anchoLibro + anchoSolapa), + origenEC.y - (altoLibro / 3), + origenEC.x - (anchoLibro + sangradoValor + anchoCalle / 2), + origenEC.y - (altoLibro / 3), + 10); + cotaSolapa2.linewidth = 2; + var cotaSolapa1 = previewEC.makeDobleArrow( + origenEC.x + (anchoCalle / 2 + sangradoValor + anchoLibro + anchoSolapa), + origenEC.y - (altoLibro / 3), + origenEC.x + (anchoLibro + sangradoValor + anchoCalle / 2), + origenEC.y - (altoLibro / 3), + 10); + cotaSolapa1.linewidth = 2; + + // Textos Solapas + let stylesSolapa = {size: 18, family: 'Public Sans'}; + previewEC.makeText("Solapa 1", origenEC.x + anchoLibro + (anchoCalle + anchoSolapa) / 2, origenEC.y, stylesSolapa); + previewEC.makeText("Solapa 2", origenEC.x - anchoLibro - (anchoCalle + anchoSolapa) / 2, origenEC.y, stylesSolapa); + // Textos Cotas Solapas + previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x - anchoLibro - (anchoCalle + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x + anchoLibro + (anchoCalle + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); + } + + } + + var portada = previewEC.makeRectangle( + origenEC.x + (anchoLibro / 2 + anchoCalle / 2 + sangradoValor), + origenEC.y, + anchoLibro, + altoLibro); + portada.stroke = 'black'; + portada.linewidth = 1; + + var contraportada = previewEC.makeRectangle( + origenEC.x - (anchoLibro / 2 + anchoCalle / 2 + sangradoValor), + origenEC.y, + anchoLibro, + altoLibro); + contraportada.stroke = 'black'; + contraportada.linewidth = 1; + + var calle = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoCalle, + altoSangrado); + calle.stroke = 'black'; + calle.dashes = [2, 5]; + calle.fill = '#F4F8F2'; + calle.linewidth = 1; + + // Cotas y textos + if (!isThumbnail) { + // Cotas: + var cotaAnchoCubierta = previewEC.makeDobleArrow( + origenEC.x - (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + origenEC.x + (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + 10); + cotaAnchoCubierta.linewidth = 2; + var cotaAltoCubierta = previewEC.makeDobleArrow( + origenEC.x + (anchoSangrado / 2) + 15, + origenEC.y + (altoSangrado / 2), + origenEC.x + (anchoSangrado / 2) + 15, + origenEC.y - (altoSangrado / 2), + 10); + cotaAltoCubierta.linewidth = 2; + var cotaAltoLibro = previewEC.makeDobleArrow( + origenEC.x + (anchoCalle / 2) + 35, + origenEC.y + (altoLibro / 2), + origenEC.x + (anchoCalle / 2) + 35, + origenEC.y - (altoLibro / 2), + 10); + cotaAltoLibro.linewidth = 2; + var cotaContraportada = previewEC.makeDobleArrow( + origenEC.x - (anchoCalle / 2 + anchoLibro + sangradoValor), + origenEC.y - (altoLibro / 3), + origenEC.x - ((anchoCalle / 2) + sangradoValor), + origenEC.y - (altoLibro / 3), + 10); + cotaContraportada.linewidth = 2; + var cotaPortada = previewEC.makeDobleArrow( + origenEC.x + ((anchoCalle / 2) + sangradoValor), + origenEC.y - (altoLibro / 3), + origenEC.x + (anchoCalle / 2 + anchoLibro + sangradoValor), + origenEC.y - (altoLibro / 3), + 10); + cotaPortada.linewidth = 2; + + + // Textos: + // Titulos generales + let stylesEC = {size: 22, weight: 'bold', family: 'Public Sans'}; + previewEC.makeText("Portada", + origenEC.x + anchoLibro / 2 + anchoCalle / 2 + sangradoValor + 15, + origenEC.y, + stylesEC + ); + previewEC.makeText("Contraportada", + origenEC.x - (anchoLibro / 2 + anchoCalle / 2 + sangradoValor), + origenEC.y, + stylesEC + ); + // Sangrados + let styleSangrado = {size: 10, family: 'Public Sans', style: 'italic', fill: 'red'}; + previewEC.makeText(sangradoTexto, origenEC.x + offsetCubierta, origenEC.y + (altoLibro / 2 + 13), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x + offsetCubierta, origenEC.y - (altoLibro / 2 + 13), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x - offsetCubierta, origenEC.y + (altoLibro / 2 + 13), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x - offsetCubierta, origenEC.y - (altoLibro / 2 + 13), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x + (anchoSangrado / 2) - 20, origenEC.y, styleSangrado).rotation = -Math.PI / 2; + previewEC.makeText(sangradoTexto, origenEC.x - (anchoSangrado / 2) + 20, origenEC.y, styleSangrado).rotation = -Math.PI / 2; + // Cotas + previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x - (offsetCubierta - anchoSolapa / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x + (offsetCubierta - anchoSolapa / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.altoLibro + " mm", origenEC.x + (anchoCalle / 2) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText(pvObj.altoLibro + (2 * sangradoValor) + " mm", + origenEC.x + (anchoSangrado / 2) + 30, + origenEC.y, + styleCotas + ).rotation = -Math.PI / 2; + previewEC.makeText((2 * pvObj.anchoLibro) + pvObj.lomoLibro + (2 * sangradoValor) + " mm", + origenEC.x, + origenEC.y + (altoLibro / 2) + 50, + styleCotas); + } + + previewEC.update(); + +} + +function portadaGrapado(isThumbnail = false) { + + // Variables locales + let altoLibro, anchoLibro, lomoLibro, anchoSolapa, anchoCubierta, altoSangrado, anchoSangrado; + let styleCotas = {size: 12, family: 'Public Sans'}; + let sangradoTexto = "Sangrado 5 mm"; + let sangradoValor = parseFloat('5.0'); // mm + let offsetSolapaValor = parseFloat('0.0'); // mm + + let divIdName = (isThumbnail) ? 'thumbnail_ec_shape' : 'pv_ec_shape'; + + // Get the preview Object parameters + getObjetoToPreview(); + + // Definicion de los parametros del Esquema de Cubierta (EC) + if (pvObj.anchoSolapa == 0) { + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 750; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + altoLibro = altoSangrado * 0.97; + anchoLibro = anchoSangrado * 0.48; + anchoSolapa = 0; + lomoLibro = 0; // ESTA ES LA DIFERENCIA PARA GRAPADO + anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + lomoLibro; + + } else { + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 750; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + altoLibro = altoSangrado * 0.95; + anchoLibro = anchoSangrado * 0.3; + anchoSolapa = anchoSangrado * 0.18; + lomoLibro = 0; // ESTA ES LA DIFERENCIA PARA GRAPADO + anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + lomoLibro; + offsetSolapaValor = parseFloat('3.0'); // mm + } + + // Clear the canvas element + $(`#${divIdName}`).empty(); + // Get the element for placing the graphical elements + var divEC = document.getElementById(divIdName); + var previewEC = new Two({fitted: true}).appendTo(divEC); + // Calculate the center of the canvas element + var origenEC = new Two.Vector(previewEC.width / 2, previewEC.height / 2); + + var sangrado = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoSangrado, + altoSangrado + ); + sangrado.stroke = 'black'; + sangrado.dashes = [5, 5]; + sangrado.fill = '#FCEAF1'; + sangrado.linewidth = 1; + + if (pvObj.anchoSolapa != 0) { + var solapas = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoCubierta, + altoLibro); + solapas.stroke = 'black'; + solapas.linewidth = 1; + + // Cotas y textos + if (!isThumbnail) { + // Cotas + var cotaSolapa2 = previewEC.makeDobleArrow( + origenEC.x - anchoCubierta / 2, + origenEC.y - (altoLibro / 3), + origenEC.x - anchoLibro - lomoLibro / 2, + origenEC.y - (altoLibro / 3), + 10); + cotaSolapa2.linewidth = 2; + var cotaSolapa1 = previewEC.makeDobleArrow( + origenEC.x + anchoCubierta / 2, + origenEC.y - (altoLibro / 3), + origenEC.x + anchoLibro + lomoLibro / 2, + origenEC.y - (altoLibro / 3), + 10); + cotaSolapa1.linewidth = 2; + + // Textos Solapas + let stylesSolapa = {size: 18, family: 'Public Sans'}; + previewEC.makeText("Solapa 1", origenEC.x + anchoLibro + (lomoLibro + anchoSolapa) / 2, origenEC.y, stylesSolapa); + previewEC.makeText("Solapa 2", origenEC.x - anchoLibro - (lomoLibro + anchoSolapa) / 2, origenEC.y, stylesSolapa); + // Textos Cotas Solapas + previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x - anchoLibro - (lomoLibro + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x + anchoLibro + (lomoLibro + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); + } + + } + + var libro = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + ((2 * anchoLibro) + lomoLibro), + altoLibro); + libro.stroke = 'black'; + libro.linewidth = 1; + + var lomo = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + lomoLibro, + altoLibro); + lomo.stroke = 'black'; + lomo.fill = '#F4F8F2'; + lomo.linewidth = 1; + + // Cotas y textos + if (!isThumbnail) { + // Cotas: + var cotaAnchoCubierta = previewEC.makeDobleArrow( + origenEC.x - (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + origenEC.x + (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + 10); + cotaAnchoCubierta.linewidth = 2; + var cotaAltoCubierta = previewEC.makeDobleArrow( + origenEC.x + (anchoCubierta / 2) + 35, + origenEC.y + (altoSangrado / 2), + origenEC.x + (anchoCubierta / 2) + 35, + origenEC.y - (altoSangrado / 2), + 10); + cotaAltoCubierta.linewidth = 2; + var cotaAltoLibro = previewEC.makeDobleArrow( + origenEC.x + (lomoLibro / 2) + 35, + origenEC.y + (altoLibro / 2), + origenEC.x + (lomoLibro / 2) + 35, + origenEC.y - (altoLibro / 2), + 10); + cotaAltoLibro.linewidth = 2; + var cotaContraportada = previewEC.makeDobleArrow( + origenEC.x - (lomoLibro / 2 + anchoLibro), + origenEC.y - (altoLibro / 3), + origenEC.x - (lomoLibro / 2), + origenEC.y - (altoLibro / 3), + 10); + cotaContraportada.linewidth = 2; + var cotaPortada = previewEC.makeDobleArrow( + origenEC.x + (lomoLibro / 2), + origenEC.y - (altoLibro / 3), + origenEC.x + (lomoLibro / 2 + anchoLibro), + origenEC.y - (altoLibro / 3), + 10); + cotaPortada.linewidth = 2; + + // Textos: + // Titulos generales + let stylesEC = {size: 22, weight: 'bold', family: 'Public Sans'}; + previewEC.makeText("Portada", origenEC.x + (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); + previewEC.makeText("Contraportada", origenEC.x - (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); + // Sangrados + let styleSangrado = {size: 10, family: 'Public Sans', style: 'italic', fill: 'red'}; + previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y + (altoLibro / 2 + 20), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y - (altoLibro / 2 + 20), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x + (lomoLibro / 2 + anchoLibro + anchoSolapa + 20), origenEC.y, styleSangrado).rotation = -Math.PI / 2; + previewEC.makeText(sangradoTexto, origenEC.x - (lomoLibro / 2 + anchoLibro + anchoSolapa + 20), origenEC.y, styleSangrado).rotation = -Math.PI / 2; + // Cotas + previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x - (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.altoLibro + " mm", origenEC.x + (lomoLibro / 2) + 25, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText(pvObj.altoLibro + (2 * sangradoValor) + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro + anchoSolapa) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText((2 * pvObj.anchoLibro) + (2 * (pvObj.anchoSolapa + pvObj.offsetSolapa)) + pvObj.lomoLibro + (2 * sangradoValor) + " mm", + origenEC.x, + origenEC.y + (altoLibro / 2) + 50, + styleCotas); + } + + previewEC.update(); + +} + + +function getObjetoToPreview() { + + if($('#cosidoDiv').length){ + pvObj = { + lomoLibro: $('#lomo_cubierta').val() === '' ? parseFloat('0.0') : parseFloat(parseFloat($('#lomo_cubierta').val()).toFixed(2)), + anchoSolapa: $('#solapasCubierta').is(':checked') ? parseFloat($('#anchoSolapasCubierta').val()) : parseFloat('0.0'), + altoLibro: getDimensionLibro().alto, + anchoLibro: getDimensionLibro().ancho, + offsetSolapa: $('#solapasCubierta').is(':checked') ? parseFloat('3.0') : parseFloat('0.0') + }; + } else { + let tamanio = $('#resumenTamanio').text().split(' ')[1].split('x'); + let solapas = parseInt($('#resumenSolapasCubierta').length ? $('#resumenSolapasCubierta').text().split(' ')[1].replace("mm", '') : 0); + pvObj = { + lomoLibro: $('#lomo_cubierta').val() === '' ? parseFloat('0.0') : parseFloat(parseFloat($('#lomo_cubierta').val()).toFixed(2)), + anchoSolapa: solapas, + altoLibro: parseInt(tamanio[1]), + anchoLibro: parseInt(tamanio[0]), + offsetSolapa: (solapas != 0) ? parseFloat('3.0') : parseFloat('0.0') + }; + } + //console.log($('#lomo_cubierta').val()); +} diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/resumen.js b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/resumen.js new file mode 100644 index 00000000..956eb8fa --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/resumen.js @@ -0,0 +1,311 @@ +function generarResumen(){ + $('#tipoLibro').text($('#tituloDisenioLibro').text() + ' tapa ' + (($('#tapaBlandaInnerDiv').hasClass('checked'))?'blanda':'dura')); + $('#resumenTamanio').text('Dimensiones: ' + getDimensionLibro().ancho + 'x' + getDimensionLibro().alto + 'mm'); + $('#resumenPaginas').text('Páginas: '+ $('#paginas').val() + ' páginas'); + + const seleccion = $('.custom-option-tiradasDirecciones.checked'); + let tirada = 0; + if(seleccion.length != 0) { + + const element_tirada =($(seleccion[0]).find('label input')[0]); + const number = element_tirada.id.match(/\d+$/); + if (number.length != 0) { + tirada = parseInt($('#tiradaDireccionesValue' + number[0]).text()); + } + } + $('#resumenTirada').text('Tirada: '+ tirada + ' unidades'); + + $('#resumenPrototipo').text('Prototipo: ' + (($('#prototipo').is(':checked'))?'Sí':'No')); + $('#resumenFerro').text('Ferro: ' + (($('#ferro').is(':checked'))?'Sí':'No')); + + $('#tipoImpresion').text('Impresión: ' + + ($('#colorNegroDiv').hasClass('checked')?'Negro estándar': + $('#colorNegroHqDiv').hasClass('checked')?'Negro premium': + $('#colorColorDiv').hasClass('checked')?'Color estándar':'Color premium')); + + if($('#colorNegroDiv').hasClass('checked') || $('#colorNegroHqDiv').hasClass('checked')){ + $('#pResumenPaginasColor').hide(); + } + else{ + $('#pResumenPaginasColor').show(); + $('#resumenPaginasColor').text($('#paginasColor').val()); + } + $('#resumenPapelInterior').text($('#papelInterior option:selected').text().trim() + ' ' + + $('#gramajeInterior option:selected').text() + 'gr/m²'); + + let papelCubierta = $('#papelCubierta option:selected').text().trim() + ' ' + + $('#gramajeCubierta option:selected').text(); + papelCubierta += 'gr/m²'; + $('#resumenPapelCubierta').text(papelCubierta); + $('#resumenCarasCubierta').text('Impresión: ' + $('#carasCubierta option:selected').text()) + $('#resumenAcabadoCubierta').text('Acabado: ' + $('#acabadosCubierta option:selected').text()) + if ($('#solapasCubierta').is(':checked')) { + $('#resumenSolapasCubierta').text('Solapas: ' + $('#anchoSolapasCubierta').val()) + } + else{ + $('#resumenSolapasCubierta').text('Solapas: No') + } + + if ($('#enableSobrecubierta').is(':checked')) { + $(".resumen-sobrecubierta").show(); + $('#resumenPapelCubierta').text($('#papelSobrecubierta option:selected').text().trim() + ' ' + + $('#gramajeSobrecubierta option:selected').text() + 'gr/m²'); + $('#resumenAcabadoSobrecubierta').text('Acabado: ' + $('#acabadosSobrecubierta option:selected').text()) + $('#resumenSolapasSobrecubierta').text('Solapas: ' + $('#anchoSolapasSobrecubierta').val()) + + } + else{ + $(".resumen-sobrecubierta").hide(); + } + + if ($('#divGuardas').css('display') != 'none') { + + $(".resumen-guardas").show(); + $('#resumenGuardasPapel').text($('#papelGuardas option:selected').text().trim() + ' ' + '170gr/m²'); + $('#resumenGuardasCaras').text('Impresión: ' + $('#impresionGuardas option:selected').text()) + } + else{ + $(".resumen-guardas").hide(); + } + + + if($('#retractilado').is(':checked') || $('#retractilado5').is(':checked') || $('#fajaColor').is(':checked')){ + + $('.resumen-extras').show(); + $('#retractilado').is(':checked')?$('#resumenRetractilado1').show():$('#resumenRetractilado1').hide(); + $('#retractilado5').is(':checked')?$('#resumenRetractilado5').show():$('#resumenRetractilado5').hide(); + $('#fajaColor').is(':checked')?$('#resumenFajaColor').show():$('#resumenFajaColor').hide(); + } + else{ + $('.resumen-extras').hide(); + } + + for (i = 1; i <= 4; i++) { + let id = "tiradaPrecio" + i; + if ($('#' + id).length > 0) { + + const envio = getTotalEnvio(); + + let tirada_id = "ud_tiradaPrecio" + i; + if(parseInt($('#' + tirada_id).text().replace(' ud.', '')) != tirada){ + continue; + } + + let total_id = "tot_tiradaPrecio" + i; + + let total = parseFloat($('#' + total_id).text().replace('€', '').replace('Total: ', '')) + envio; + let total_iva = 0.0; + if($('#ivaReducido').val() == '1'){ + total_iva = total * 1.04; + } + else{ + total_iva = total * 1.21; + } + const precio_u = total_iva/tirada; + $('#resumenTotalIVA').text('Total (I.V.A. ' + (($('#ivaReducido').val() == '1')?'4':'21') + '%): ' + total_iva.toFixed(2) + '€'); + $('#resumenPrecioU').text(precio_u.toFixed(4) + '€/ud'); + } + } + + +} + +function getTotalEnvio(){ + const elements = $('#divDirecciones').find('.row.mb-3'); + let total = 0.0; + + if(elements.length > 0) { + for (let index=0; index path !== ""); + let id=0; + if(paths.length > 0 && paths[paths.length - 2] == 'edit'){ + id=paths[paths.length - 1]; + } + datos = { + id: id, + } + datos = Object.assign(datos, window.token_ajax) + + $('#loader').show(); + + $.ajax({ + url: window.routes_resumen.duplicarPresupuesto, + type: 'POST', + data: datos, + success: function(response) { + + if(Object.keys(response).length > 0) { + if(response.success){ + $('#loader').hide(); + window.location.href = document.location.origin + '/presupuestos/presupuestocliente/edit/' + response.id; + } + } + $('#loader').hide(); + + }, + error: function() { + $('#loader').hide(); + }, + }); +}); + + +$('#btnBack').on('click', function() { + window.location.href = document.location.origin + '/presupuestocliente/list'; +}); + +function finalizarPresupuesto(confirmar){ + + let isColor = false; + if($('#colorColorDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked')) + isColor = true; + let isHq = false; + if($('#colorNegroDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked')) + isHq = true; + + const paths = window.location.pathname.split("/").filter(path => path !== ""); + let id=0; + if(paths.length > 0 && paths[paths.length - 2] == 'edit'){ + id=paths[paths.length - 1]; + } + + let servicios = []; + $('.servicio-extra:checked').each(function () { + servicios.push($(this).attr('serv_id')); + }) + + let datos_libro = { + tamanio: getDimensionLibro(), + tirada: getTiradas(), + paginas: $('#paginas').val(), + paginasColor: $('#paginasColor').val(), + tipo: $('.custom-option-tipo.checked').attr('id').replace('Div', ''), + tapa: $('#tapaDura').is(':checked') ? 'dura' : 'blanda', + isColor: isColor, + isHq: isHq, + papelInterior: $('#papelInterior option:selected').val(), + papelInteriorNombre: $('#papelInterior option:selected').text().trim(), + gramajeInterior: $('#gramajeInterior option:selected').text(), + excluirRotativa: $('#excluirRotativa').is(':checked')? 1 : 0, + papelCubierta: $('#papelCubierta option:selected').val(), + papelCubiertaNombre: $('#papelCubierta option:selected').text().trim(), + gramajeCubierta: $('#gramajeCubierta option:selected').text(), + carasCubierta: $('#carasCubierta').val(), + acabadoCubierta: $('#acabadosCubierta').val(), + clienteId: $('#clienteId').val(), + servicios: servicios, + }; + + // Si es cosido, se añade el número de páginas del cuadernillo + if ($('#cosidoDiv').hasClass('checked')) { + datos_libro.paginasCuadernillo = $('#paginasCuadernillo').val(); + } + + // Si hay solapas de cubierta + if ($('#solapasCubierta').is(':checked')) { + datos_libro.solapasCubierta = $('#anchoSolapasCubierta').val() + } + + // Si hay sobrecubierta + if ($('#enableSobrecubierta').is(':checked')) { + if($('#papelSobrecubierta option:selected').val()>0 && $('#gramajeSobrecubierta option:selected').val()>0){ + + datos_libro.sobrecubierta = { + papel: $('#papelSobrecubierta option:selected').val(), + papel_nombre: $('#papelSobrecubierta option:selected').text().trim(), + gramaje: $('#gramajeSobrecubierta option:selected').text(), + acabado: $('#acabadosSobrecubierta').val() + } + + datos_libro.sobrecubierta.solapas = $('#anchoSolapasSobrecubierta').val() + } + } + + if ($('#divGuardas').css('display') != 'none') { + datos_libro.guardas = { + papel: $('#papelGuardas option:selected').val(), + papel_nombre: $('#papelGuardas option:selected').text().trim(), + gramaje: 170, + caras: $('#impresionGuardas option:selected').val() + } + } + + let datos_cabecera = { + titulo: $('#titulo').val(), + referenciaCliente: $('#referenciaCliente').val(), + } + + const seleccion = $('.custom-option-tiradasDirecciones.checked'); + let tirada = 0; + let peso_libro = 0; + if(seleccion.length != 0) { + + const element_tirada =($(seleccion[0]).find('label input')[0]); + const number = element_tirada.id.match(/\d+$/); + if (number.length != 0) { + tirada = parseInt($('#tiradaDireccionesValue' + number[0]).text()); + peso_libro = ($(seleccion[0])).find('label input').attr('peso'); + } + } + + + let direcciones = getDireccionesEnvio(); + datos = { + id: id, + datos_libro : datos_libro, + datos_cabecera: datos_cabecera, + direcciones: direcciones, + tirada: tirada, + peso: peso_libro, + iva_reducido: $('#ivaReducido').val()==1?1:0, + confirmar: confirmar?1:0, + }, + + datos = Object.assign(datos, window.token_ajax) + + $('#loader').show(); + + $.ajax({ + url: window.routes_resumen.guardarPresupuesto, + type: 'POST', + data: datos, + success: function(response) { + + if(Object.keys(response).length > 0) { + if(response.status > 0){ + if(confirmar || window.location.href.includes("add")) + window.location.href = response.url + '/' + response.status; + } + + } + $('#loader').hide(); + + }, + error: function() { + $('#loader').hide(); + }, + }); +} \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/tipoLibroItems.js b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/tipoLibroItems.js new file mode 100644 index 00000000..11ee90da --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/tipoLibroItems.js @@ -0,0 +1,58 @@ +// Init custom option check +function initTipoLibroCheck() +{ + const _this = this + + const custopOptionList = [].slice.call(document.querySelectorAll('.custom-option-tipo .form-check-input')) + custopOptionList.map(function (customOptionEL) { + // Update custom options check on page load + _this.updateTipoLibroCheck(customOptionEL) + + // Update custom options check on click + customOptionEL.addEventListener('click', e => { + _this.updateTipoLibroCheck(customOptionEL) + }) + }) +} + +function updateTipoLibroCheck(el) +{ + if (el.checked) { + // If custom option element is radio, remove checked from the siblings (closest `.row`) + if (el.type === 'radio') { + const customRadioOptionList = [].slice.call(el.closest('.tipo_libro').querySelectorAll('.custom-option-tipo')) + customRadioOptionList.map(function (customRadioOptionEL) { + customRadioOptionEL.closest('.custom-option-tipo').classList.remove('checked') + }) + } + el.closest('.custom-option-tipo').classList.add('checked') + if(el.closest('.custom-option-tipo').id == 'grapadoDiv') { + $('#tapaDuraDiv').hide(); + $('#tapaBlanda').prop('checked', true); + } + else { + $('#tapaDuraDiv').show(); + } + if(el.closest('.custom-option-tipo').id == 'cosidoDiv') { + $('#div_pagCuadernillo').show(); + } + else { + $('#div_pagCuadernillo').hide(); + } + } else { + el.closest('.custom-option-tipo').classList.remove('checked') + } +} + +initTipoLibroCheck(); + + +function getUpdatePapelInterior() { + var impresionInterior = $('input[name="impresionInterior"]:checked').val(); + if(impresionInterior == 'color') { + $('#colorInteriorDiv').show(); + } + else { + $('#colorInteriorDiv').hide(); + } +} diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/viewPresupuestoclienteForm.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/viewPresupuestoclienteForm.php new file mode 100644 index 00000000..3235d696 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/viewPresupuestoclienteForm.php @@ -0,0 +1,332 @@ +include('themes/_commonPartialsBs/datatables') ?> +include("themes/_commonPartialsBs/select2bs5") ?> +include("themes/_commonPartialsBs/sweetalert") ?> +extend('themes/vuexy/main/defaultlayout') ?> + + +section("content") ?> + + +
+
+

+ + + + getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> + + + +
+ + estado_id == 1) : ?> + +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + + +
+ +
+ +
+ +
+
+ + + +
+ +
+ + + + +
+
+ + +
+
+ + + +
+ + +
+
+
+ + +
+
+ + + +
+
+
+ estado_id == 1) : ?> + + +
+
+ estado_id == 1) : ?> + + + + + + + id), + lang("Basic.global.Print"), + [ + "class" => "btn btn-dark float-start me-sm-3 ml-2", + "target" => "_blank" + ] + ); + } + ?> +
+
+
+
+
+ + + +
+
+
+
+
+ + + +
+
+ estado_id == 1) : ?> + + +
+
+ estado_id == 1) : ?> + + + + + + + id), + lang("Basic.global.Print"), + [ + "class" => "btn btn-dark float-start me-sm-3 ml-2", + "target" => "_blank" + ] + ); + ?> +
+
+ +
+
+
+ + + + + +
+ $presupuestoEntity->id]) ?> +
+ + + + endSection() ?> + + + + + section("additionalInlineJs") ?> + + window.datosPresupuesto = ; + window.token_ajax= {: v}; + + estado_id == 1) : ?> + $('#clienteId').select2({ + allowClear: false, + ajax: { + url: '', + type: 'post', + dataType: 'json', + + data: function(params) { + return { + id: 'id', + text: 'nombre', + searchTerm: params.term, + : v + }; + }, + delay: 60, + processResults: function(response) { + yeniden(response.); + return { + results: response.menu + }; + }, + cache: true + } + }); + + initDisenioLibro(); + + + + + + + endSection() ?> + + + section('css') ?> + + + + + + + endSection() ?> + + section('additionalExternalJs') ?> + + + + + + + + + + + + + + + + + + estado_id == 1) : ?> + + + + + + + endSection() ?> \ No newline at end of file diff --git a/httpdocs/assets/img/presupuestoCliente/cosido.png b/httpdocs/assets/img/presupuestoCliente/cosido.png new file mode 100644 index 00000000..03bf99de Binary files /dev/null and b/httpdocs/assets/img/presupuestoCliente/cosido.png differ diff --git a/httpdocs/assets/img/presupuestoCliente/espiral.png b/httpdocs/assets/img/presupuestoCliente/espiral.png new file mode 100644 index 00000000..3177ab2d Binary files /dev/null and b/httpdocs/assets/img/presupuestoCliente/espiral.png differ diff --git a/httpdocs/assets/img/presupuestoCliente/fresado.png b/httpdocs/assets/img/presupuestoCliente/fresado.png new file mode 100644 index 00000000..33c40405 Binary files /dev/null and b/httpdocs/assets/img/presupuestoCliente/fresado.png differ diff --git a/httpdocs/assets/img/presupuestoCliente/grapado.png b/httpdocs/assets/img/presupuestoCliente/grapado.png new file mode 100644 index 00000000..fc6c407f Binary files /dev/null and b/httpdocs/assets/img/presupuestoCliente/grapado.png differ diff --git a/httpdocs/assets/js/safekat/components/select2.js b/httpdocs/assets/js/safekat/components/select2.js new file mode 100644 index 00000000..be3d9c4d --- /dev/null +++ b/httpdocs/assets/js/safekat/components/select2.js @@ -0,0 +1,64 @@ +class ClassSelect2 { + + constructor(domItem, url, placeholder = "", delay = 60, text_field = 'nombre', id_field = 'id') { + this.domItem = domItem; + this.url = url; + this.placeholder = placeholder; + this.delay = delay; + this.text_field = text_field; + this.id_field = id_field; + } + + init() { + + this.domItem.select2({ + allowClear: false, + placeholder: this.placeholder, + ajax: { + url: this.url, + type: 'post', + dataType: 'json', + data: (params) => { + + return { + id: this.id_field, + text: this.text_field, + searchTerm: params.term, + }; + }, + delay: this.delay, + processResults: function (response) { + + return { + results: response.menu + }; + }, + cache: true + } + }); + } + + // Método para obtener el valor seleccionado + getValue() { + return this.domItem.val(); + } + + // Método para establecer el valor seleccionado + setValue(value) { + this.domItem.val(value).trigger('change'); + } + + // Método para oculatar el select2 + hide() { + console.log(this.domItem); + this.domItem.select2('close'); + this.domItem.next('.select2-container').hide(); + } + + // Método para mostrar el select2 + show() { + this.domItem.next('.select2-container').show(); + } +} + +export default ClassSelect2; diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js new file mode 100644 index 00000000..2fcd0b57 --- /dev/null +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js @@ -0,0 +1,104 @@ +import ClassSelect from '../../components/select2.js'; + + +class DatosGenerales { + + constructor(domItem) { + this.domItem = domItem; + this.formatoLibro = new ClassSelect($("#papelFormatoId"), '/papel-formato/menuitems', 'Seleccione formato'); + this.checkFormatoPersonalizado = this.domItem.find("#papelFormatoPersonalizado"); + this.formatoPersonalizado = this.domItem.find("#formatoPersonalizado"); + + this.tiposLibro = this.domItem.find(".tipo-libro"); + + this.paginas = this.domItem.find("#paginas"); + this.paginasNegro = this.domItem.find("#paginasNegro"); + this.paginasColor = this.domItem.find("#paginasColor"); + + } + + + init() { + + this.formatoLibro.init(); + this.checkFormatoPersonalizado.bind('change', this.#handleFormatoLibro.bind(this)); + + this.tiposLibro.on('click', this.#handleTipolibro.bind(this)); + + this.domItem.find('.input-paginas').on('change', this.#handlePaginas.bind(this)); + } + + + #handleFormatoLibro() { + + if(this.checkFormatoPersonalizado.is(':checked')) { + this.formatoLibro.hide(); + this.formatoPersonalizado.show(); + } + else{ + this.formatoLibro.show(); + this.formatoPersonalizado.hide(); + } + } + + #handleTipolibro(event) { + // Accede al ID del elemento que disparó el evento + const element = $(event.target); + + let containers = element.closest('.tipo-libro').parent().find('.tipo-libro'); + for (let container of containers) { + if (container != element.closest('.tipo-libro')[0]) { + $(container).removeClass('selected'); + $(container).find('.image-presupuesto').removeClass('selected'); + } + } + + element.closest('.tipo-libro').toggleClass('selected'); + element.closest('.image-presupuesto').toggleClass('selected'); + } + + #handlePaginas(event) { + let paginas = this.paginas.val(); + let paginasNegro = this.paginasNegro.val(); + let paginasColor = this.paginasColor.val(); + + if (paginasNegro == '' || isNaN(paginasNegro)) { + paginasNegro = 0; + } + if (paginasColor == '' || isNaN(paginasColor)) { + paginasColor = 0; + } + + let totalPaginas = parseInt(paginasNegro) + parseInt(paginasColor); + this.paginas.val(totalPaginas); + + let tipos = [this.domItem.find('#fresado'), this.domItem.find('#cosido')]; + if (totalPaginas < 32){ + for (let tipo of tipos) { + tipo.removeClass('selected'); + tipo.find('.image-presupuesto').removeClass('selected'); + + tipo.hide(); + } + } + else{ + for (let tipo of tipos) { + tipo.show(); + } + } + + + if (totalPaginas < 12 || totalPaginas > 40) { + this.domItem.find('#grapado').removeClass('selected'); + this.domItem.find('#grapado').find('.image-presupuesto').removeClass('selected'); + this.domItem.find('#grapado').hide(); + } + else{ + this.domItem.find('#grapado').show(); + } + } + +} + + +export default DatosGenerales; \ No newline at end of file diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js new file mode 100644 index 00000000..fca50cba --- /dev/null +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js @@ -0,0 +1,9 @@ +import DatosGenerales from './datosGenerales.js'; + +document.addEventListener('DOMContentLoaded', function() { + + let datosGenerales = new DatosGenerales($("#datos-generales")); + datosGenerales.init(); + +}); + diff --git a/httpdocs/themes/vuexy/css/presupuestoCliente.css b/httpdocs/themes/vuexy/css/presupuestoCliente.css new file mode 100644 index 00000000..9702aa6a --- /dev/null +++ b/httpdocs/themes/vuexy/css/presupuestoCliente.css @@ -0,0 +1,39 @@ +.image-container { + position: relative; + display: inline-block; + max-height: 150px; + max-width: 200px; +} + +/* Estilo de la imagen */ +.image-container img { + max-width: 150px; + max-height: 150px; +} + +/* Pseudo-elemento que muestra el tick */ +.image-container.selected::after { + content: '✔'; /* Símbolo de tick */ + position: absolute; + top: 90px; + right: 25px; + font-size: 50px; + font-weight: bold; + color: green; + background-color: rgba(255, 255, 255, 0); + border-radius: 100%; + padding: 5px; +} + +.image-presupuesto { + transition: transform 1s ease; +} + +.image-presupuesto.selected { + --webkit-transform: rotateY(360deg); + --webkit-transform-style: preserve-3d; + + transform: rotateY(360deg); + transform-style: preserve-3d; +} +