/o//commerce-media/accounts/-1/images/30536845?download=false

Liferay JasperReports
Um inesperado erro ocorreu.
30536840
(function () { let currentIndex = 0; let images = []; const carouselNextBtn = document.querySelector('.nav-button.next'); const carouselPrevBtn = document.querySelector('.nav-button.prev'); const carouselMainImage = document.getElementById('main-image'); const thumbnailsContainer = document.querySelector('.thumbnails'); const viewFullGalleryBtn = document.querySelector('.view-full-gallery'); function loadImages() { images = [ { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18375640?download=true", alt: "1.jpg" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18375680?download=true", alt: "2.jpg" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18375720?download=true", alt: "3.jpg" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18375760?download=true", alt: "4.jpg" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18375800?download=true", alt: "5.jpg" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18375840?download=true", alt: "6.jpg" } ] } function renderThumbnails() { const maxVisible = 5; let start = currentIndex - 2; if (start < 0) start = 0; if (start > images.length - maxVisible) start = Math.max(images.length - maxVisible, 0); const end = Math.min(images.length, start + maxVisible); thumbnailsContainer.innerHTML = ''; for (let i = start; i < end; i++) { const img = document.createElement('img'); img.className = 'thumbnail' + (i === currentIndex ? ' selected' : ''); img.src = images[i].src; img.alt = images[i].alt; img.dataset.index = i; img.addEventListener('click', () => updateMainImage(i)); thumbnailsContainer.appendChild(img); } } function updateMainImage(index) { currentIndex = index; carouselMainImage.src = images[index].src; carouselMainImage.alt = images[index].alt; carouselPrevBtn.disabled = index === 0; carouselNextBtn.disabled = index === images.length - 1; renderThumbnails(); } function setupNavigationButtons() { carouselPrevBtn.addEventListener('click', () => { if (currentIndex > 0) updateMainImage(currentIndex - 1); }); carouselNextBtn.addEventListener('click', () => { if (currentIndex < images.length - 1) updateMainImage(currentIndex + 1); }); } function setupModalTriggers() { carouselMainImage.addEventListener('click', () => openModalGallery(currentIndex)); if (viewFullGalleryBtn) { viewFullGalleryBtn.addEventListener('click', () => openModalGallery(currentIndex)); } } function openModalGallery(startIndex) { let current = startIndex; const template = document.getElementById('modal-gallery'); const clone = template.content.cloneNode(true); const container = document.createElement('div'); container.appendChild(clone); Liferay.Util.openModal({ bodyHTML: container.innerHTML, center: true, headerHTML: '<h2 class="modal-gallery-header" id="modal-header-title"><svg class="lexicon-icon lexicon-icon-picture" role="presentation" ><use xlink:href="https://marketplace.liferay.com/o/classic-theme/images/clay/icons.svg#picture" /></svg> Image <span id="modal-index-display"></span></h2>', size: "full-screen", onOpen: () => { const modalContainer = document.querySelector('.modal-content'); if (modalContainer) { modalContainer.classList.add('custom-gallery-modal'); } const modalImage = document.querySelector('[data-role="modal-image"]'); const modalNext = document.querySelector('[data-role="modal-next"]'); const modalPrev = document.querySelector('[data-role="modal-prev"]'); const indexDisplay = document.getElementById('modal-index-display'); function updateModalImage(index) { const img = images[index]; modalImage.src = img.src; modalImage.alt = img.alt; modalNext.disabled = index === images.length - 1; modalPrev.disabled = index === 0; if (indexDisplay) { indexDisplay.textContent = (index + 1) + ' de ' + images.length; } } modalNext.addEventListener('click', () => { if (current < images.length - 1) { current++; updateModalImage(current); } }); modalPrev.addEventListener('click', () => { if (current > 0) { current--; updateModalImage(current); } }); updateModalImage(current); } }); } function main() { loadImages(); setupNavigationButtons(); setupModalTriggers(); updateMainImage(0); } main(); })(); <div class = "main-image-wrapper"> <button class = "nav-button prev" aria-label = "Previous Image"> <span class = "lexicon-icon-overwide"> <svg class="lexicon-icon lexicon-icon-angle-left" role="presentation" ><use xlink:href="https://marketplace.liferay.com/o/classic-theme/images/clay/icons.svg#angle-left" /></svg></span> </button> <img alt = "1.jpg" id = "main-image" src = "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/30536846?download=true" /> <button class="nav-button next" aria-label="Next Image"> <span class="lexicon-icon-overwide"> <svg class="lexicon-icon lexicon-icon-angle-right" role="presentation" ><use xlink:href="https://marketplace.liferay.com/o/classic-theme/images/clay/icons.svg#angle-right" /></svg></span> </button>
Descrição

JasperReports is the world's most popular open source reporting engine. It is entirely written in Java and it is able to use data coming from any kind of data source and produce pixel-perfect documents that can be viewed, printed or exported in a variety of document formats including HTML, PDF, Excel, OpenOffice and Word. This app enables Liferay to use Jasper Reports as its reporting engine implementation. When combined with the Liferay Reporting app, in the Control Panel, you can upload report definitions (designed in a report designer) into Reports Admin, and run them from the Definitions tab. They can be scheduled to be run as well, and exported to many formats, including HTML, CSV, XLS, PDF, and more. Reports can also be delivered via email address. The reports will be displayed within the portal.

This app installs as a Liferay service.

JasperReports is the world's most popular open source reporting engine. It is entirely written in Java and it is able to use data coming from any kind of data source and produce pixel-perfect documents that can be viewed, printed or exported in a variety of document formats including HTML, PDF, Excel, OpenOffice and Word. This app enables Liferay to use Jasper Reports as its reporting engine implementation. When combined with the Liferay Reporting app, in the Control Panel, you can upload report definitions (designed in a report designer) into Reports Admin, and run them from the Definitions tab. They can be scheduled to be run as well, and exported to many formats, including HTML, CSV, XLS, PDF, and more. Reports can also be delivered via email address. The reports will be displayed within the portal.

This app installs as a Liferay service.

DEVELOPER

Desenvolvedor


Publisher Date

January 22, 2024


Deployment Method

Liferay Self-Hosted

Liferay PaaS


App Type

DXP

Versão

2.0.2

Versões compatíveis

6.2

Standard Price

Free

Help and Support


Compartilhar link

DEVELOPER
21/11/24 17:28
Published date
21/11/24 17:28
Published Date
21/11/24 17:28
SUPPORTED OFFERINGS
Liferay PaaS
Supported Versions
6.2
Resource Requirements
Edition
Enterprise
PRICE
Free
help & support
SHARE LINK
Copy & Share

HTML Example

A paragraph is a self-contained unit of a discourse in writing dealing with a particular point or idea. Paragraphs are usually an expected part of formal writing, used to organize longer prose.