// Función de debounce para optimizar el rendimiento function debounce(func, wait) { let timeout; return function executedFunction(...args) { const later = () => { clearTimeout(timeout); func(...args); }; clearTimeout(timeout); timeout = setTimeout(later, wait); }; } jQuery(document).ready(function($) { // Initialize color pickers $('.color-picker').wpColorPicker({ change: function(event, ui) { updateStyles(); } }); // Initialize html2canvas var script = document.createElement('script'); script.src = 'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js'; document.head.appendChild(script); script.onload = function() { console.log('html2canvas loaded'); $('.download-jpg').prop('disabled', false); }; // Optimized zoom handling const handleZoom = debounce(function(target, value) { const zoomValue = value/100; const template = $(target).closest('.preview-box').find('.sunset-template'); template.css('transform', `scale(${zoomValue})`); }, 16); // Zoom control event listener $('.zoom-range').on('input', function() { const value = $(this).val(); $(this).siblings('.zoom-value').text(value + '%'); handleZoom(this, value); }); // Toggle excerpt position field visibility $('#cwpai_show_excerpt').on('change', function() { $('#excerpt_position').toggle(this.checked); updateStyles(); }); // Update styles function function updateStyles() { const lineColor = $('#cwpai_line_color').val(); const lineWidth = $('#cwpai_line_width').val() + 'px'; const marginTop = $('#cwpai_line_margin_top').val() + 'px'; const marginBottom = $('#cwpai_line_margin_bottom').val() + 'px'; const marginLeft = $('#cwpai_line_margin_left').val() + 'px'; const marginRight = $('#cwpai_line_margin_right').val() + 'px'; const categoryTop = $('#cwpai_category_position_top').val() + 'px'; const websiteTop = $('#cwpai_website_position_top').val() + 'px'; const titleTop = $('#cwpai_title_position_top').val() + 'px'; const excerptTop = $('#cwpai_excerpt_position_top').val() + 'px'; const categoryLeft = $('#cwpai_category_position_left').val() + 'px'; const websiteLeft = $('#cwpai_website_position_left').val() + 'px'; const titleLeft = $('#cwpai_title_position_left').val() + 'px'; const titleSize = $('#cwpai_title_font_size').val() + 'px'; const categorySize = $('#cwpai_category_font_size').val() + 'px'; const websiteSize = $('#cwpai_website_font_size').val() + 'px'; // Update visibility states const showCategory = $('#cwpai_show_category').prop('checked'); const showWebsite = $('#cwpai_show_website').prop('checked'); const showTitle = $('#cwpai_show_title').prop('checked'); const showExcerpt = $('#cwpai_show_excerpt').prop('checked'); $('.vertical-line').css({ 'background-color': lineColor, 'width': lineWidth, 'top': marginTop, 'height': `calc(100% - (${marginTop} + ${marginBottom}))`, 'left': marginLeft, 'margin-right': marginRight }); $('.category-tag').css({ 'display': showCategory ? 'block' : 'none', 'top': categoryTop, 'left': categoryLeft, 'font-size': categorySize }); $('.website-link').css({ 'display': showWebsite ? 'block' : 'none', 'top': websiteTop, 'left': websiteLeft, 'font-size': websiteSize }); $('.title').css({ 'display': showTitle ? 'block' : 'none', 'top': titleTop, 'left': titleLeft, 'font-size': titleSize }); $('.excerpt-preview').css({ 'display': showExcerpt ? 'block' : 'none', 'top': excerptTop, 'left': titleLeft }); } // Copy buttons functionality with improved feedback $('.copy-excerpt, .copy-hashtags').on('click', function() { const button = $(this); const content = button.data('content'); const originalText = button.text(); // Create temporary textarea const textarea = document.createElement('textarea'); textarea.value = content; textarea.style.position = 'absolute'; textarea.style.left = '-9999px'; document.body.appendChild(textarea); try { // Select and copy text textarea.select(); document.execCommand('copy'); // Visual feedback button.text('¡Copiado!'); button.css('background-color', '#4CAF50'); // Reset button after delay setTimeout(() => { button.text(originalText); button.css('background-color', ''); }, 2000); } catch(err) { console.error('Error al copiar:', err); button.text('Error al copiar'); button.css('background-color', '#f44336'); setTimeout(() => { button.text(originalText); button.css('background-color', ''); }, 2000); } finally { document.body.removeChild(textarea); } }); // Canvas optimization function function optimizeCanvas(canvas, format) { const ctx = canvas.getContext('2d'); // Enable image smoothing ctx.imageSmoothingEnabled = true; ctx.imageSmoothingQuality = 'high'; // Set dimensions based on format switch(format) { case 'rectangular': canvas.width = 1200; canvas.height = 630; break; case 'vertical': canvas.width = 500; canvas.height = 890; break; case 'horizontal': canvas.width = 864; canvas.height = 864; break; } return canvas; } // Image download functionality with improved error handling $('.download-jpg').on('click', function() { const button = $(this); const format = button.data('format'); const template = button.closest('.preview-box').find('.sunset-template')[0]; // Disable button and show loading state button.text('Generando...').prop('disabled', true); const options = { scale: 2, // Higher quality useCORS: true, allowTaint: true, backgroundColor: '#000000', logging: false, // Disable logging in production onclone: function(clonedDoc) { const clonedElement = clonedDoc.querySelector('.sunset-template'); if (clonedElement) { // Reset zoom for export clonedElement.style.transform = 'scale(1)'; // Set dimensions based on format switch(format) { case 'rectangular': clonedElement.style.width = '1200px'; clonedElement.style.height = '630px'; break; case 'vertical': clonedElement.style.width = '500px'; clonedElement.style.height = '890px'; break; case 'horizontal': clonedElement.style.width = '864px'; clonedElement.style.height = '864px'; break; } } } }; // Wait for all images to load Promise.all(Array.from(template.getElementsByTagName('img')).map(img => { return new Promise((resolve, reject) => { if (img.complete) { resolve(); } else { img.onload = resolve; img.onerror = reject; } }); })) .then(() => { return html2canvas(template, options); }) .then(canvas => { // Optimize canvas canvas = optimizeCanvas(canvas, format); // Convert to blob return new Promise((resolve, reject) => { canvas.toBlob(resolve, 'image/jpeg', 0.95); }); }) .then(blob => { // Generate filename const postTitle = template.dataset.title; const timestamp = new Date().getTime(); const fileName = `${postTitle}-${format}-${timestamp}.jpg`; // Save file saveAs(blob, fileName); // Reset button button.text('Descargar ' + ( format === 'vertical' ? 'Vertical' : format === 'horizontal' ? 'Horizontal' : 'Rectangular' )).prop('disabled', false); }) .catch(error => { console.error('Error:', error); button.text('Error - Intentar de nuevo').prop('disabled', false) .css('background-color', '#f44336'); setTimeout(() => { button.css('background-color', ''); button.text('Descargar ' + ( format === 'vertical' ? 'Vertical' : format === 'horizontal' ? 'Horizontal' : 'Rectangular' )); }, 3000); }); }); // Line and position controls $('#cwpai_line_width, #cwpai_line_margin_top, #cwpai_line_margin_bottom, #cwpai_line_margin_left, #cwpai_line_margin_right, #cwpai_category_position_top, #cwpai_website_position_top, #cwpai_title_position_top, #cwpai_excerpt_position_top, #cwpai_category_position_left, #cwpai_website_position_left, #cwpai_title_position_left, #cwpai_title_font_size, #cwpai_category_font_size, #cwpai_website_font_size') .on('change input', debounce(updateStyles, 100)); // Visibility controls $('#cwpai_show_category, #cwpai_show_website, #cwpai_show_title, #cwpai_show_excerpt') .on('change', updateStyles); // Global error handler window.onerror = function(msg, url, lineNo, columnNo, error) { console.error('Error: ', { message: msg, url: url, lineNumber: lineNo, columnNumber: columnNo, error: error }); return false; }; // Initial styles update updateStyles(); });
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893
{"id":27629,"date":"2023-03-06T10:17:46","date_gmt":"2023-03-06T09:17:46","guid":{"rendered":"https:\/\/diariocosta.com\/?p=27629"},"modified":"2023-03-06T10:17:47","modified_gmt":"2023-03-06T09:17:47","slug":"premios-andalucia-gastronomia-2023","status":"publish","type":"post","link":"https:\/\/diariocosta.com\/premios-andalucia-gastronomia-2023\/","title":{"rendered":"Premios Andaluc\u00eda Gastronom\u00eda 2023"},"content":{"rendered":"
\n
\n
\n
\n

Del 11 al 13 de marzo se celebrara\u0301n en Sevilla una serie de actos con motivo de la asamblea anual de la Academia Andaluza de Gastronomi\u0301a y Turismo y los Premios Andaluci\u0301a Gastronomi\u0301a.<\/p>\n

En la Oficina de Turismo de Sevilla tuvo lugar la presentacio\u0301n detallada del programa. Su presidente, Iva\u0301n Llanza, lo resumio\u0301 en las siguientes declaraciones: \u201chemos organizado una agenda de actos a celebrar los di\u0301as 11 y 12 en varios municipios de Sevilla conscientes del intere\u0301s de los Acade\u0301micos por conocer la realidad de los productores agroindustriales de la zona y por su inquietud en acercarse en mayor medida a los productos gastrono\u0301micos ma\u0301s ti\u0301picos de la provincia de Sevilla con foco en dos comarcas: Aljarafe y Bajo Guadalquivir. La asamblea como tal se celebrara\u0301 en el hotel Alfonso XIII de Sevilla el 13 de marzo de 2023 y remataremos con la entrega de la IX edicio\u0301n de los premios Andaluci\u0301a Gastronomi\u0301a a cuya finalizacio\u0301n disfrutaremos de un co\u0301ctel degustacio\u0301n de seis cocineros punteros de la provincia junto al chef ejecutivo del hotel Alfonso XIII\u201d.<\/p>\n

A estos actos esta\u0301 previsto que acudan un nutrido grupo de acade\u0301micos, autoridades, galardonados y familiares, asi\u0301 como profesionales del sector y medios de comunicacio\u0301n que debera\u0301n acreditarse previamente para poder asistir a dichos actos, que incluyen traslados a las distintas localidades.<\/p>\n

La Academia agradecio\u0301 a todas las empresas, asociaciones, entidades y organismos pu\u0301blicos que han hecho posible llevar a cabo estos actos: Sevilla City Office, Turismo Andaluz, Prodetur, a la Agencia de Gestio\u0301n Agraria y Pesquera, AGAPA; los Ayuntamientos de Sevilla, Huevar, Espartinas, Los Palacios, Jabugo y Lebrija, la IGP Aceituna Manzanilla y Gordal de Sevilla, la Federacio\u0301n de Arroceros de Sevilla, la Asociacio\u0301n de Productores de Vinos y Licores de Sevilla, asi\u0301 como la Academia Sevillana de Gastronomi\u0301a y Turismo y Gourmets de Sevilla.<\/p>\n

\n
\n
\n
\n

Se trata de la primera vez que los Premios Andaluci\u0301a Gastronomi\u0301a se celebran en Sevilla. Hace ahora 10 an\u0303os tuvo lugar la refundacio\u0301n de la Academia Andaluza en la asamblea de Sevilla, y los primeros premios tuvieron lugar en 2014 en Co\u0301rdoba.
\nLos trofeos han sido disen\u0303ados por Jacobo Gavira, acade\u0301mico, artista y disen\u0303ador gra\u0301fico vinculado al mundo de la gastronomi\u0301a. Para su creacio\u0301n se ha inspirado en el mapa de Andaluci\u0301a con las 8 provincias representadas por garbanzos, en sus propias palabras \u201cuna legumbre muy antigua, viajera, mutante, flamenca a compas de nuestra dieta\u201d.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

Del 11 al 13 de marzo se celebrara\u0301n en Sevilla una serie de actos con motivo de la asamblea anual de la Academia Andaluza de Gastronomi\u0301a y Turismo y los Premios Andaluci\u0301a Gastronomi\u0301a. En la Oficina de Turismo de Sevilla tuvo lugar la presentacio\u0301n detallada del programa. Su presidente, Iva\u0301n Llanza, lo resumio\u0301 en las […]<\/p>\n","protected":false},"author":3,"featured_media":27631,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4916],"tags":[],"class_list":{"0":"post-27629","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-gastronomia-1"},"_links":{"self":[{"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/posts\/27629","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/comments?post=27629"}],"version-history":[{"count":0,"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/posts\/27629\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/media\/27631"}],"wp:attachment":[{"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/media?parent=27629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/categories?post=27629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/tags?post=27629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}