Logo CEWEB.br Logo NIC.br Logo CGI.br
Home Sobre o projeto

Sites Verificados

Lista com todos os sítios que foram verificados pela TIC Web Acessibilidade. Dentro de cada domínio, há informações detalhadas sobre as páginas coletadas, bem como os erros e avisos de cada uma *.

Recomendações Avaliadas
2.2 Garantir que os objetos programáveis sejam acessíveis.

Recomendações

Número Descrição Quantidade Linhas Código Fonte
2.2.6 Presença do elemento SCRIPT sem o elemento NOSCRIPT 67 101 231 580 603 662 774 803 915 1051 2310 2358 2378 2398 2418 2437 2445 2824 2844 2864 2908 2928 2974 2994 3018 3086 3134 3154 3178 3245 3265 3285 3352 3371 3380 3759 3807 3827 3846 3852 4263 4283 4302 4308 4687 4707 4725 4743 4761 4779 4843 4872 4912 4932 4954 4972 4990 5008 5026 5044 5092 5112 6008 6037 6054 6085 6405 6418
101 <![CDATA[<script id="f5_cspm">(function(){var f5_cspm={f5_p:'BEHMOGABHFIAMNFPEIJINHHJBOGDIFFICNONKHIECPDLCCOBKCPOAPDHNEIIOKPPCGMBMAGEAADECGEHHJAAAPLKAANKMODHPDEHCLDHMMCPOAFMNLMIHDBHONBMHBHG',setCharAt:function(str,index,chr){if(index>str.length-1)return str;return str.substr(0,index)+chr+str.substr(index+1);},get_byte:function(str,i){var s=(i/16)|0;i=(i&15);s=s*32;return((str.charCodeAt(i+16+s)-65)<<4)|(str.charCodeAt(i+s)-65);},set_byte:function(str,i,b){var s=(i/16)|0;i=(i&15);s=s*32;str=f5_cspm.setCharAt(str,(i+16+s),String.fromCharCode((b>>4)+65));str=f5_cspm.setCharAt(str,(i+s),String.fromCharCode((b&15)+65));return str;},set_latency:function(str,latency){latency=latency&0xffff;str=f5_cspm.set_byte(str,40,(latency>>8));str=f5_cspm.set_byte(str,41,(latency&0xff));str=f5_cspm.set_byte(str,35,2);return str;},wait_perf_data:function(){try{var wp=window.performance.timing;if(wp.loadEventEnd>0){var res=wp.loadEventEnd-wp.navigationStart;if(res<60001){var cookie_val=f5_cspm.set_latency(f5_cspm.f5_p,res);window.document.cookie='f5avr0961558605aaaaaaaaaaaaaaaa_cspm_='+encodeURIComponent(cookie_val)+';path=/';} return;}} catch(err){return;} setTimeout(f5_cspm.wait_perf_data,100);return;},go:function(){var chunk=window.document.cookie.split(/\s*;\s*/);for(var i=0;i<chunk.length;++i){var pair=chunk[i].split(/\s*=\s*/);if(pair[0]=='f5_cspm'&&pair[1]=='1234') {var d=new Date();d.setTime(d.getTime()-1000);window.document.cookie='f5_cspm=;expires='+d.toUTCString()+';path=/;';setTimeout(f5_cspm.wait_perf_data,100);}}}} f5_cspm.go();}());</script>]]>
231 <![CDATA[<script data-senna-track="temporary" type="text/javascript"> // <![CDATA[ var Liferay = Liferay || {}; Liferay.Browser = { acceptsGzip: function() { return false; }, getMajorVersion: function() { return 0; }, getRevision: function() { return ''; }, getVersion: function() { return ''; }, isAir: function() { return false; }, isChrome: function() { return false; }, isEdge: function() { return false; }, isFirefox: function() { return false; }, isGecko: function() { return false; }, isIe: function() { return false; }, isIphone: function() { return false; }, isLinux: function() { return false; }, isMac: function() { return false; }, isMobile: function() { return false; }, isMozilla: function() { return false; }, isOpera: function() { return false; }, isRtf: function() { return false; }, isSafari: function() { return false; }, isSun: function() { return false; }, isWebKit: function() { return false; }, isWindows: function() { return false; } }; Liferay.Data = Liferay.Data || {}; Liferay.Data.ICONS_INLINE_SVG = true; Liferay.Data.NAV_SELECTOR = '#navigation'; Liferay.Data.NAV_SELECTOR_MOBILE = '#navigationCollapse'; Liferay.Data.isCustomizationView = function() { return false; }; Liferay.Data.notices = [ null ]; Liferay.PortletKeys = { DOCUMENT_LIBRARY: 'com_liferay_document_library_web_portlet_DLPortlet', DYNAMIC_DATA_MAPPING: 'com_liferay_dynamic_data_mapping_web_portlet_DDMPortlet', ITEM_SELECTOR: 'com_liferay_item_selector_web_portlet_ItemSelectorPortlet' }; Liferay.PropsValues = { JAVASCRIPT_SINGLE_PAGE_APPLICATION_TIMEOUT: 0, NTLM_AUTH_ENABLED: false, UPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE: 104857600 }; Liferay.ThemeDisplay = { getLayoutId: function() { return '57'; }, getLayoutRelativeControlPanelURL: function() { return '/group/guest/~/control_panel/manage'; }, getLayoutRelativeURL: function() { return '/web/guest/acesso-a-informacao/receitas-e-despesas'; }, getLayoutURL: function() { return 'https://www.bnb.gov.br/web/guest/acesso-a-informacao/receitas-e-despesas'; }, getParentLayoutId: function() { return '15'; }, isControlPanel: function() { return false; }, isPrivateLayout: function() { return 'false'; }, isVirtualLayout: function() { return false; }, getBCP47LanguageId: function() { return 'pt-BR'; }, getCanonicalURL: function() { return 'https\x3a\x2f\x2fwww\x2ebnb\x2egov\x2ebr\x2facesso-a-informacao\x2freceitas-e-despesas'; }, getCDNBaseURL: function() { return 'https://www.bnb.gov.br'; }, getCDNDynamicResourcesHost: function() { return ''; }, getCDNHost: function() { return ''; }, getCompanyGroupId: function() { return '20128'; }, getCompanyId: function() { return '20101'; }, getDefaultLanguageId: function() { return 'pt_BR'; }, getDoAsUserIdEncoded: function() { return ''; }, getLanguageId: function() { return 'pt_BR'; }, getParentGroupId: function() { return '20124'; }, getPathContext: function() { return ''; }, getPathImage: function() { return '/image'; }, getPathJavaScript: function() { return '/o/frontend-js-web'; }, getPathMain: function() { return '/c'; }, getPathThemeImages: function() { return 'https://www.bnb.gov.br/o/bnb-dxp-theme/images'; }, getPathThemeRoot: function() { return '/o/bnb-dxp-theme'; }, getPlid: function() { return '84'; }, getPortalURL: function() { return 'https://www.bnb.gov.br'; }, getRealUserId: function() { return '20105'; }, getScopeGroupId: function() { return '20124'; }, getScopeGroupIdOrLiveGroupId: function() { return '20124'; }, getSessionId: function() { return ''; }, getSiteAdminURL: function() { return 'https://www.bnb.gov.br/group/guest/~/control_panel/manage?p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view'; }, getSiteGroupId: function() { return '20124'; }, getURLControlPanel: function() { return '/group/control_panel?refererPlid=84'; }, getURLHome: function() { return 'https\x3a\x2f\x2fwww\x2ebnb\x2egov\x2ebr\x2fweb\x2fguest'; }, getUserEmailAddress: function() { return ''; }, getUserId: function() { return '20105'; }, getUserName: function() { return ''; }, isAddSessionIdToURL: function() { return false; }, isImpersonated: function() { return false; }, isSignedIn: function() { return false; }, isStagedPortlet: function() { return false; }, isStateExclusive: function() { return false; }, isStateMaximized: function() { return false; }, isStatePopUp: function() { return false; } }; var themeDisplay = Liferay.ThemeDisplay; Liferay.AUI = { getAvailableLangPath: function() { return 'available_languages.jsp?browserId=other&themeId=portalbancodonordeste_WAR_bnbdxptheme&colorSchemeId=01&minifierType=js&languageId=pt_BR&t=1695350076125'; }, getCombine: function() { return true; }, getComboPath: function() { return '/combo/?browserId=other&minifierType=&languageId=pt_BR&t=1670770798365&'; }, getDateFormat: function() { return '%d/%m/%Y'; }, getEditorCKEditorPath: function() { return '/o/frontend-editor-ckeditor-web'; }, getFilter: function() { var filter = 'raw'; filter = 'min'; return filter; }, getFilterConfig: function() { var instance = this; var filterConfig = null; if (!instance.getCombine()) { filterConfig = { replaceStr: '.js' + instance.getStaticResourceURLParams(), searchExp: '\\.js$' }; } return filterConfig; }, getJavaScriptRootPath: function() { return '/o/frontend-js-web'; }, getLangPath: function() { return 'aui_lang.jsp?browserId=other&themeId=portalbancodonordeste_WAR_bnbdxptheme&colorSchemeId=01&minifierType=js&languageId=pt_BR&t=1670770798365'; }, getPortletRootPath: function() { return '/html/portlet'; }, getStaticResourceURLParams: function() { return '?browserId=other&minifierType=&languageId=pt_BR&t=1670770798365'; } }; Liferay.authToken = '5NXJKTmY'; Liferay.currentURL = '\x2fweb\x2fguest\x2facesso-a-informacao\x2freceitas-e-despesas'; Liferay.currentURLEncoded = '\x252Fweb\x252Fguest\x252Facesso-a-informacao\x252Freceitas-e-despesas'; // ]]> </script>]]>
580 <![CDATA[<script data-senna-track="temporary" type="text/javascript"> // <![CDATA[ // ]]> </script>]]>
603 <![CDATA[<script data-senna-track="permanent" id="googleAnalyticsScript" type="text/javascript"> (function(i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function() { var arrayValue = i[r].q || []; i[r].q = arrayValue; (i[r].q).push(arguments); }; i[r].l = 1 * new Date(); a = s.createElement(o); m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m); })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); ga('create', 'G-0W34JDGDKK', 'auto'); ga('send', 'pageview'); Liferay.on( 'endNavigate', function(event) { ga('set', 'page', event.path); ga('send', 'pageview'); } ); </script>]]>
662 <![CDATA[<script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-0W34JDGDKK'); </script>]]>
774 <![CDATA[<script type="text/javascript"> // <![CDATA[ Liferay.Loader.require('frontend-js-spa-web@3.0.53/liferay/init.es', function(frontendJsSpaWeb3053LiferayInitEs) { (function(){ var frontendJsSpaWebLiferayInitEs = frontendJsSpaWeb3053LiferayInitEs; (function() {var $ = AUI.$;var _ = AUI._; Liferay.SPA = Liferay.SPA || {}; Liferay.SPA.cacheExpirationTime = -1; Liferay.SPA.clearScreensCache = false; Liferay.SPA.debugEnabled = false; Liferay.SPA.excludedPaths = ["/c/document_library","/documents","/image"]; Liferay.SPA.loginRedirect = ''; Liferay.SPA.navigationExceptionSelectors = ':not([target="_blank"]):not([data-senna-off]):not([data-resource-href]):not([data-cke-saved-href]):not([data-cke-saved-href])'; Liferay.SPA.requestTimeout = 0; Liferay.SPA.userNotification = { message: 'Parece que isso está demorando mais do que o esperado.', timeout: 30000, title: 'Oops' }; frontendJsSpaWebLiferayInitEs.default.init( function(app) { app.setPortletsBlacklist({"com_liferay_site_navigation_directory_web_portlet_SitesDirectoryPortlet":true,"com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet":true,"com_liferay_login_web_portlet_LoginPortlet":true,"com_liferay_login_web_portlet_FastLoginPortlet":true}); app.setValidStatusCodes([221,490,494,499,491,492,493,495,220]); } );})();})(); }); // ]]> </script>]]>
803 <![CDATA[<script type="text/javascript"> // <![CDATA[ Liferay.on( 'ddmFieldBlur', function(event) { if (window.Analytics) { Analytics.send( 'fieldBlurred', 'Form', { fieldName: event.fieldName, focusDuration: event.focusDuration, formId: event.formId, page: event.page } ); } } ); Liferay.on( 'ddmFieldFocus', function(event) { if (window.Analytics) { Analytics.send( 'fieldFocused', 'Form', { fieldName: event.fieldName, formId: event.formId, page: event.page } ); } } ); Liferay.on( 'ddmFormPageShow', function(event) { if (window.Analytics) { Analytics.send( 'pageViewed', 'Form', { formId: event.formId, page: event.page, title: event.title } ); } } ); Liferay.on( 'ddmFormSubmit', function(event) { if (window.Analytics) { Analytics.send( 'formSubmitted', 'Form', { formId: event.formId } ); } } ); Liferay.on( 'ddmFormView', function(event) { if (window.Analytics) { Analytics.send( 'formViewed', 'Form', { formId: event.formId, title: event.title } ); } } ); // ]]> </script>]]>
915 <![CDATA[<script data-senna-track="temporary" type="text/javascript"> if (window.Analytics) { window._com_liferay_document_library_analytics_isViewFileEntry = false; } </script>]]>
1051 <![CDATA[<script> new window.VLibras.Widget('https://vlibras.gov.br/app'); </script>]]>
2310 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-vinp'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"","rgbValue":""}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
2358 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-jdyz'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h2","textColor":{"cssClass":"","rgbValue":""}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
2378 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-kyus'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"","rgbValue":""}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
2398 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-kccq'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h3","textColor":{"cssClass":"","rgbValue":""}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
2418 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-jxvx'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"","rgbValue":""}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
2437 <![CDATA[<script id="data_zwke" type="application/json">{"title":"Transferências da União para FNE","type":0,"typeSettings":{"anyClassTypeDLFileEntryAssetRendererFactory":"47053","orderByColumn1":"title"}}</script>]]>
2445 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-2316268-zwke'); var configuration = {"contentSetId":"2707191","showDateConversions":false,"showModifiedDate":true,"showRefDate":false,"textAlign":"left","pageSize":"50","showYear":false,"groupBy":"noGroup","textColor":{"cssClass":"","rgbValue":""},"useTitle":false,"usePagination":false,"bottomSpacing":"3","labelForYear":"Ocorrido em","useContentSetTitle":true,"labelForRefDate":"Referente a","headingLevel":"h2","showCreateDate":true,"activeDebug":false};const editMode = document.body.classList.contains('has-edit-mode-menu') const apiURL = `${Liferay.ThemeDisplay.getPortalURL()}/o/headless-delivery` const contentSetsEndPoint = `/v1.0/content-sets/${configuration.contentSetId}/content-set-elements` const restrictFields = 'title,content.contentUrl,content.dateCreated,content.dateModified,content.documentType,content.fileExtension,content.sizeInBytes' const params = { fields: restrictFields, 'pageSize': configuration.pageSize, 'page': 1 } const pathThemeImages = Liferay.ThemeDisplay.getPathThemeImages() const spritemapBNB = `${pathThemeImages}/bnb/icons.svg` const spritemapClay = `${pathThemeImages}/clay/icons.svg` const scriptAssetListJson = fragmentElement.querySelector(`script#data_${fragmentElement.id.slice(-4)}`) const assetListObject = (scriptAssetListJson) ? JSON.parse(scriptAssetListJson.text) : null const documentsList = fragmentElement.querySelector('.documents-list') const loadingAnimation = fragmentElement.querySelector('.loading-animation') const orderByYearAttrs = ['modifiedDate', 'createDate', 'publishDate', 'ddm__keyword__47047__DataReferência', 'ddm__keyword__47054__Ano'] const orderByMonthYearAttrs = ['modifiedDate', 'createDate', 'publishDate', 'ddm__keyword__47047__DataReferência'] const orderByDayAttrs = ['modifiedDate', 'createDate', 'publishDate', 'ddm__keyword__47047__DataReferência'] const fileEntryTypes = { 'docOrdin': 47046, 'docAnual': 47053 } const validity = (assetListObject) ? validateConfiguration() : null validity && init() // funcao de inicialização function init() { fragmentElement.classList.add('mb-4') editMode && reportConstraints() fetchDocumentsPage() } // constrói um objeto para verificar status de validade de algumas configurações function validateConfiguration() { let orderByColumn = assetListObject.typeSettings.orderByColumn1 let orderByColumnName = getOrderByFieldName(orderByColumn) let canGroupByYear = orderByYearAttrs.includes(orderByColumn) let canGroupByMonthYear = orderByMonthYearAttrs.includes(orderByColumn) let canGroupByDay = orderByDayAttrs.includes(orderByColumn) let canShowRefDate = (assetListObject.typeSettings.anyClassTypeDLFileEntryAssetRendererFactory == fileEntryTypes.docOrdin) let canShowYear = (assetListObject.typeSettings.anyClassTypeDLFileEntryAssetRendererFactory == fileEntryTypes.docAnual) let validityState = { 'canGroupByYear': { 'state': canGroupByYear, 'msg' : canGroupByYear ? '' : `A coleção não pode ser agrupada por ano, pois está ordenada por ${orderByColumnName}.` }, 'canGroupByMonthYear': { 'state': canGroupByMonthYear, 'msg' : canGroupByMonthYear ? '' : `A coleção não pode ser agrupada por mês e ano, pois está ordenada por ${orderByColumnName}.` }, 'canGroupByDay': { 'state': canGroupByDay, 'msg' : canGroupByDay ? '' : `A coleção não pode ser agrupada por dia, pois está ordenada por ${orderByColumnName}.` }, 'canShowRefDate': { 'state': canShowRefDate, 'msg' : canShowRefDate ? '' : 'Não é possível mostrar o campo Data de Referência. Esse metadado existe apenas em coleções de Documentos Ordinários.' }, 'canShowYear': { 'state': canShowYear, 'msg' : canShowYear ? '' : 'Não é possível mostrar o campo Ano. Esse metadado existe apenas em coleções de Documentos Anuais.' } } return validityState } // alerta sobre restrições na configuração function reportConstraints() { cleanAlerts() // alerta sobre restrições let validationMessages = [] configuration.groupBy == 'groupByYear' && !validity.canGroupByYear.state && validationMessages.push(validity.canGroupByYear.msg) configuration.groupBy == 'groupByMonthYear' && !validity.canGroupByMonthYear.state && validationMessages.push(validity.canGroupByMonthYear.msg) configuration.groupBy == 'groupByDay' && !validity.canGroupByDay.state && validationMessages.push(validity.canGroupByDay.msg) configuration.showRefDate && !validity.canShowRefDate.state && validationMessages.push(validity.canShowRefDate.msg) configuration.showYear && !validity.canShowYear.state && validationMessages.push(validity.canShowYear.msg) validationMessages.length > 0 && displayAlert('danger', 'Configuração inválida', validationMessages.join('<br/>'), documentsList, 'beforebegin') // debug if (configuration.activeDebug) { console.clear() console.log('Propriedades da Coleção:') console.log(assetListObject) console.log('Configuração do Fragmento:') console.log(configuration) console.log('Validade da Configuração:') console.log(validity) } } // principal funcao para pegar os dados function fetchDocumentsPage(page) { params.page = (page) ? page : params.page let request = Liferay.Util.addParams(params, apiURL+contentSetsEndPoint) fetch( request, { method: 'GET', headers: { 'Content-Type': 'application/json' } } ).then(response => { if (response.ok) { return response.json() } }).then(documents => { handleDocuments(documents) if (editMode && configuration.activeDebug) { console.log(`Retorno da requisição (page ${params.page}):`) console.log(documents) } }) } // manipula dados retornados da coleção function handleDocuments(documents) { loadingAnimation && loadingAnimation.remove() if (documents.items.length > 0) { switch (configuration.groupBy) { case 'noGroup': renderDocumentsList(documents) break case 'groupByYear': (validity.canGroupByYear.state) ? renderDocumentsListByGroup(documents) : renderDocumentsList(documents) break case 'groupByMonthYear': (validity.canGroupByMonthYear.state) ? renderDocumentsListByGroup(documents) : renderDocumentsList(documents) break case 'groupByDay': (validity.canGroupByDay.state) ? renderDocumentsListByGroup(documents) : renderDocumentsList(documents) break } configuration.usePagination && renderPaginationBar(documents.page, documents.lastPage, documents.totalCount) } else { displayAlert('info', 'Aviso', 'Não foram encontrados documentos', documentsList, 'afterbegin') } } // renderiza lista agrupada function renderDocumentsListByGroup(documents) { let lastListGroup = documentsList.querySelector('.list-group:last-child') let currentGroup = (lastListGroup) ? lastListGroup.dataset.group : 0 configuration.activeDebug && configuration.showDateConversions && editMode && console.log(`Extração do grupo a partir do campo ${getOrderByFieldName(assetListObject.typeSettings.orderByColumn1)}:`) documents.items.forEach(doc => { let group = getDocumentGroup(doc) if (currentGroup != group) { let listGroup = document.createElement('ul') listGroup.classList.add('list-group') listGroup.dataset.group = group listGroup.setAttribute('aria-label', `${assetListObject.title} de ${group}`) lastListGroup = documentsList.insertAdjacentElement('beforeend', listGroup) lastListGroup.insertAdjacentHTML('afterbegin', renderListGroupHeader(group)) currentGroup = group } lastListGroup.insertAdjacentHTML('beforeend', renderListGroupItem(doc)) }) } // extrai e retorna o dado (string) utilizado como agrupador (dia, mês ou ano) a partir do campo utilizado como primeira ordenação da coleção function getDocumentGroup(document) { let fieldData let group let dateField let options let test let orderByColumn = assetListObject.typeSettings.orderByColumn1 switch (orderByColumn) { case 'ddm__keyword__47047__DataReferência': fieldData = document.content.documentType.contentFields[0].contentFieldValue.data break case 'ddm__keyword__47054__Ano': fieldData = document.content.documentType.contentFields[0].contentFieldValue.data break case 'modifiedDate': fieldData = document.content.dateModified break case 'createDate': fieldData = document.content.dateCreated break case 'publishDate': // verificar esse caso por que não há uma campo data de publicação em coleções de documentos fieldData = document.content.dateCreated break } dateField = new Date(fieldData) switch (configuration.groupBy) { case 'groupByYear': test = (orderByColumn == 'ddm__keyword__47047__DataReferência' || orderByColumn == 'ddm__keyword__47054__Ano') group = test ? dateField.getUTCFullYear() : dateField.getFullYear() break case 'groupByMonthYear': test = (orderByColumn == 'ddm__keyword__47047__DataReferência') options = test ? {month:'long', year:'numeric', timeZone: 'UTC'} : { month:'long', year:'numeric' } group = dateField.toLocaleDateString('pt-BR', options) group = group.charAt(0).toUpperCase() + group.slice(1) break case 'groupByDay': test = (orderByColumn == 'ddm__keyword__47047__DataReferência') options = test ? {timeZone: 'UTC'} : {} group = dateField.toLocaleDateString('pt-BR', options) break } configuration.activeDebug && configuration.showDateConversions && editMode && console.log(`${fieldData} --> ${group}`) return group } // renderiza lista comum function renderDocumentsList(documents) { let listGroup = getNodeElement(documentsList, 'afterbegin', 'ul', '.list-group') listGroup.setAttribute('aria-label', assetListObject.title) documents.items.forEach(doc => { listGroup.insertAdjacentHTML('beforeend', renderListGroupItem(doc)) }) } // renderiza cabeçalho da lista function renderListGroupHeader(title) { let listHeaderHTML = ` <li class="list-group-header"> <span class="list-group-header-title"><big>${title}</big></span> </li> ` return listHeaderHTML } // renderiza um item da lista function renderListGroupItem(document) { let dateCreated = (configuration.showCreateDate) ? new Date(document.content.dateCreated) : null let dateCreatedHTML = (dateCreated) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">Publicado em</span> <span class="small">${dateCreated.toLocaleDateString('pt-BR')}</span> </div>` : '' let dateModified = (configuration.showModifiedDate) ? new Date(document.content.dateModified) : null let dateModifiedHTML = (dateModified) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">Atualizado em</span> <span class="small">${dateModified.toLocaleDateString('pt-BR')}</span> </div>` : '' let refDate = (configuration.showRefDate && validity.canShowRefDate.state) ? new Date(document.content.documentType.contentFields[0].contentFieldValue.data) : null let refDateHTML = (refDate) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">${configuration.labelForRefDate}</span> <span class="small">${refDate.toLocaleDateString('pt-BR', {timeZone: 'UTC'})}</span> </div>` : '' let year = (configuration.showYear && validity.canShowYear.state) ? document.content.documentType.contentFields[0].contentFieldValue.data : null let yearHTML = (year) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">${configuration.labelForYear}</span> <span class="small">${year}</span> </div>` : '' let hasMetadatas = (year || refDate || dateCreated || dateModified) let metadataHTML = (hasMetadatas) ? ` <div class="d-flex flex-column flex-md-row"> ${yearHTML} ${refDateHTML} ${dateCreatedHTML} ${dateModifiedHTML} </div>` : '' let listItemHTML = ` <li class="list-group-item list-group-item-flex align-items-center"> <div class="autofit-col"> <svg class="lexicon-icon text-tertiary lexicon-icon-lg" focusable="false" role="presentation" viewBox="0 0 512 512"> <use xlink:href="${spritemapBNB}#arquivo-${document.content.fileExtension}" /> </svg> </div> <div class="autofit-col autofit-col-expand"> <div class="d-flex flex-column flex-lg-row justify-content-start justify-content-lg-between"> <div class="d-flex flex-column"> <span class="list-group-title"> <a href="${document.content.contentUrl}">${document.title}</a> </span> <span class="list-group-subtitle text-uppercase small"> ${document.content.fileExtension}, ${Liferay.Util.formatStorage(document.content.sizeInBytes, {addSpaceBeforeSuffix: true})} </span> </div> ${metadataHTML} </div> </div> </li> ` return listItemHTML } // renderiza paginação function renderPaginationBar(page, lastPage, totalCount) { let paginationBar = getNodeElement(fragmentElement, 'beforeend', 'div', '.pagination-bar') let lastIndex = (page === lastPage) ? totalCount : configuration.pageSize*page let nDocuments = (page+1 === lastPage) ? totalCount - configuration.pageSize*page : configuration.pageSize paginationBar.classList.add('justify-content-center', 'justify-content-lg-between') let textColor = (configuration.textColor.cssClass) ? `text-${configuration.textColor.cssClass}` : '' paginationBar.innerHTML = ` <div class="pagination-results mr-0 ${textColor}">Exibindo 1 a ${lastIndex} de ${totalCount} documentos.</div> <ul class="pagination"> <li class="page-item"> <button class="btn btn-unstyled page-link" type="button"> Exibir mais ${nDocuments} documentos ${renderIcon('angle-down', spritemapClay, 'ml-2')} </button> </li> </ul> ` let showMoreButton = paginationBar.querySelector('button.page-link') if (page !== lastPage) { showMoreButton.addEventListener('click', e => { showMoreButton.querySelector('svg').remove() let loadAnimation = getNodeElement(showMoreButton, 'beforeend', 'span', '.loading-animation') loadAnimation.classList.add('loading-animation-sm', 'ml-2') fetchDocumentsPage(page+1) }) } else { showMoreButton.remove() } } // imprime um mensagem de alerta function displayAlert(style, title, msg, parentNode, position) { let styleIcons = { 'danger': 'exclamation-full', 'success': 'check-circle-full', 'info': 'info-circle', 'warning': 'warning-full' } let html = ` <div class="alert p-4 alert-${style}" role="alert"> <span class="alert-indicator"> ${renderIcon(styleIcons[style], spritemapClay, '')} </span> <strong>${title}:</strong> <p class="mt-2 mb-0">${msg}</p> </div> ` parentNode.insertAdjacentHTML(position, html) } // limpa mensagens de alerta function cleanAlerts() { let alerts = fragmentElement.querySelectorAll('.alert') alerts.forEach(alert => alert.remove()) } // imprime icone SGV function renderIcon(icon, spritemap, cssClasses) { return ` <svg class="lexicon-icon lexicon-icon-${icon} ${cssClasses}" focusable="false" role="presentation"> <use href="${spritemap}#${icon}"></use> </svg> ` } // retorna/cria um elemento html de uma classe css // ascendantNode é um nó ascendente // position é uma string 'beforeend', 'afterbegin' + // elementType uma string 'ul', 'div' etc // cssClass é uma classe css function getNodeElement(ascendantNode, position, elementType, cssClass) { let nodeElement if (ascendantNode.querySelector(cssClass)) { nodeElement = ascendantNode.querySelector(cssClass) } else { nodeElement = document.createElement(elementType) nodeElement = ascendantNode.insertAdjacentElement(position, nodeElement) nodeElement.classList.add(cssClass.slice(1)) } return nodeElement } // retorna nome amigável do campo usado como 1ª ordenação function getOrderByFieldName(orderByColumn) { let regExp = /^ddm__keyword__\d+__(.+)/ let matchExp = regExp.exec(orderByColumn) return (matchExp) ? matchExp[1] : Liferay.Language.get(orderByColumn) };}());</script>]]>
2824 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-krmq'); var configuration = {"height":"py-3"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
2844 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-pwxr'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h3","textColor":{"cssClass":"","rgbValue":""}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
2864 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-qhbz'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"","rgbValue":""}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
2908 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-meht'); var configuration = {"height":"py-4"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
2928 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-nlfo'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h2","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
2974 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-xymb'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h3","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
2994 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-fqei'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3018 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-lweo'); var configuration = {"height":"py-3"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3086 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-qbfm'); var configuration = {"height":"py-3"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3134 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-mmox'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h3","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3154 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-ndfi'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3178 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-hoty'); var configuration = {"height":"py-3"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3245 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-caoa'); var configuration = {"height":"py-3"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3265 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-mzlj'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h3","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3285 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-tmxf'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3352 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-vlqx'); var configuration = {"height":"py-3"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3371 <![CDATA[<script id="data_edjv" type="application/json">{"title":"Formulários de Referência - CVM","type":0,"typeSettings":{"anyClassTypeDLFileEntryAssetRendererFactory":"47053","orderByColumn1":"ddm__keyword__47054__Ano"}}</script>]]>
3380 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-2316268-edjv'); var configuration = {"contentSetId":"2360568","showDateConversions":false,"showModifiedDate":true,"showRefDate":false,"textAlign":"left","pageSize":"5","showYear":false,"groupBy":"noGroup","textColor":{"cssClass":"white","rgbValue":"rgb(236, 236, 236)"},"useTitle":true,"usePagination":true,"bottomSpacing":"3","labelForYear":"Ocorrido em","useContentSetTitle":false,"labelForRefDate":"Referente a","headingLevel":"h3","showCreateDate":true,"activeDebug":false};const editMode = document.body.classList.contains('has-edit-mode-menu') const apiURL = `${Liferay.ThemeDisplay.getPortalURL()}/o/headless-delivery` const contentSetsEndPoint = `/v1.0/content-sets/${configuration.contentSetId}/content-set-elements` const restrictFields = 'title,content.contentUrl,content.dateCreated,content.dateModified,content.documentType,content.fileExtension,content.sizeInBytes' const params = { fields: restrictFields, 'pageSize': configuration.pageSize, 'page': 1 } const pathThemeImages = Liferay.ThemeDisplay.getPathThemeImages() const spritemapBNB = `${pathThemeImages}/bnb/icons.svg` const spritemapClay = `${pathThemeImages}/clay/icons.svg` const scriptAssetListJson = fragmentElement.querySelector(`script#data_${fragmentElement.id.slice(-4)}`) const assetListObject = (scriptAssetListJson) ? JSON.parse(scriptAssetListJson.text) : null const documentsList = fragmentElement.querySelector('.documents-list') const loadingAnimation = fragmentElement.querySelector('.loading-animation') const orderByYearAttrs = ['modifiedDate', 'createDate', 'publishDate', 'ddm__keyword__47047__DataReferência', 'ddm__keyword__47054__Ano'] const orderByMonthYearAttrs = ['modifiedDate', 'createDate', 'publishDate', 'ddm__keyword__47047__DataReferência'] const orderByDayAttrs = ['modifiedDate', 'createDate', 'publishDate', 'ddm__keyword__47047__DataReferência'] const fileEntryTypes = { 'docOrdin': 47046, 'docAnual': 47053 } const validity = (assetListObject) ? validateConfiguration() : null validity && init() // funcao de inicialização function init() { fragmentElement.classList.add('mb-4') editMode && reportConstraints() fetchDocumentsPage() } // constrói um objeto para verificar status de validade de algumas configurações function validateConfiguration() { let orderByColumn = assetListObject.typeSettings.orderByColumn1 let orderByColumnName = getOrderByFieldName(orderByColumn) let canGroupByYear = orderByYearAttrs.includes(orderByColumn) let canGroupByMonthYear = orderByMonthYearAttrs.includes(orderByColumn) let canGroupByDay = orderByDayAttrs.includes(orderByColumn) let canShowRefDate = (assetListObject.typeSettings.anyClassTypeDLFileEntryAssetRendererFactory == fileEntryTypes.docOrdin) let canShowYear = (assetListObject.typeSettings.anyClassTypeDLFileEntryAssetRendererFactory == fileEntryTypes.docAnual) let validityState = { 'canGroupByYear': { 'state': canGroupByYear, 'msg' : canGroupByYear ? '' : `A coleção não pode ser agrupada por ano, pois está ordenada por ${orderByColumnName}.` }, 'canGroupByMonthYear': { 'state': canGroupByMonthYear, 'msg' : canGroupByMonthYear ? '' : `A coleção não pode ser agrupada por mês e ano, pois está ordenada por ${orderByColumnName}.` }, 'canGroupByDay': { 'state': canGroupByDay, 'msg' : canGroupByDay ? '' : `A coleção não pode ser agrupada por dia, pois está ordenada por ${orderByColumnName}.` }, 'canShowRefDate': { 'state': canShowRefDate, 'msg' : canShowRefDate ? '' : 'Não é possível mostrar o campo Data de Referência. Esse metadado existe apenas em coleções de Documentos Ordinários.' }, 'canShowYear': { 'state': canShowYear, 'msg' : canShowYear ? '' : 'Não é possível mostrar o campo Ano. Esse metadado existe apenas em coleções de Documentos Anuais.' } } return validityState } // alerta sobre restrições na configuração function reportConstraints() { cleanAlerts() // alerta sobre restrições let validationMessages = [] configuration.groupBy == 'groupByYear' && !validity.canGroupByYear.state && validationMessages.push(validity.canGroupByYear.msg) configuration.groupBy == 'groupByMonthYear' && !validity.canGroupByMonthYear.state && validationMessages.push(validity.canGroupByMonthYear.msg) configuration.groupBy == 'groupByDay' && !validity.canGroupByDay.state && validationMessages.push(validity.canGroupByDay.msg) configuration.showRefDate && !validity.canShowRefDate.state && validationMessages.push(validity.canShowRefDate.msg) configuration.showYear && !validity.canShowYear.state && validationMessages.push(validity.canShowYear.msg) validationMessages.length > 0 && displayAlert('danger', 'Configuração inválida', validationMessages.join('<br/>'), documentsList, 'beforebegin') // debug if (configuration.activeDebug) { console.clear() console.log('Propriedades da Coleção:') console.log(assetListObject) console.log('Configuração do Fragmento:') console.log(configuration) console.log('Validade da Configuração:') console.log(validity) } } // principal funcao para pegar os dados function fetchDocumentsPage(page) { params.page = (page) ? page : params.page let request = Liferay.Util.addParams(params, apiURL+contentSetsEndPoint) fetch( request, { method: 'GET', headers: { 'Content-Type': 'application/json' } } ).then(response => { if (response.ok) { return response.json() } }).then(documents => { handleDocuments(documents) if (editMode && configuration.activeDebug) { console.log(`Retorno da requisição (page ${params.page}):`) console.log(documents) } }) } // manipula dados retornados da coleção function handleDocuments(documents) { loadingAnimation && loadingAnimation.remove() if (documents.items.length > 0) { switch (configuration.groupBy) { case 'noGroup': renderDocumentsList(documents) break case 'groupByYear': (validity.canGroupByYear.state) ? renderDocumentsListByGroup(documents) : renderDocumentsList(documents) break case 'groupByMonthYear': (validity.canGroupByMonthYear.state) ? renderDocumentsListByGroup(documents) : renderDocumentsList(documents) break case 'groupByDay': (validity.canGroupByDay.state) ? renderDocumentsListByGroup(documents) : renderDocumentsList(documents) break } configuration.usePagination && renderPaginationBar(documents.page, documents.lastPage, documents.totalCount) } else { displayAlert('info', 'Aviso', 'Não foram encontrados documentos', documentsList, 'afterbegin') } } // renderiza lista agrupada function renderDocumentsListByGroup(documents) { let lastListGroup = documentsList.querySelector('.list-group:last-child') let currentGroup = (lastListGroup) ? lastListGroup.dataset.group : 0 configuration.activeDebug && configuration.showDateConversions && editMode && console.log(`Extração do grupo a partir do campo ${getOrderByFieldName(assetListObject.typeSettings.orderByColumn1)}:`) documents.items.forEach(doc => { let group = getDocumentGroup(doc) if (currentGroup != group) { let listGroup = document.createElement('ul') listGroup.classList.add('list-group') listGroup.dataset.group = group listGroup.setAttribute('aria-label', `${assetListObject.title} de ${group}`) lastListGroup = documentsList.insertAdjacentElement('beforeend', listGroup) lastListGroup.insertAdjacentHTML('afterbegin', renderListGroupHeader(group)) currentGroup = group } lastListGroup.insertAdjacentHTML('beforeend', renderListGroupItem(doc)) }) } // extrai e retorna o dado (string) utilizado como agrupador (dia, mês ou ano) a partir do campo utilizado como primeira ordenação da coleção function getDocumentGroup(document) { let fieldData let group let dateField let options let test let orderByColumn = assetListObject.typeSettings.orderByColumn1 switch (orderByColumn) { case 'ddm__keyword__47047__DataReferência': fieldData = document.content.documentType.contentFields[0].contentFieldValue.data break case 'ddm__keyword__47054__Ano': fieldData = document.content.documentType.contentFields[0].contentFieldValue.data break case 'modifiedDate': fieldData = document.content.dateModified break case 'createDate': fieldData = document.content.dateCreated break case 'publishDate': // verificar esse caso por que não há uma campo data de publicação em coleções de documentos fieldData = document.content.dateCreated break } dateField = new Date(fieldData) switch (configuration.groupBy) { case 'groupByYear': test = (orderByColumn == 'ddm__keyword__47047__DataReferência' || orderByColumn == 'ddm__keyword__47054__Ano') group = test ? dateField.getUTCFullYear() : dateField.getFullYear() break case 'groupByMonthYear': test = (orderByColumn == 'ddm__keyword__47047__DataReferência') options = test ? {month:'long', year:'numeric', timeZone: 'UTC'} : { month:'long', year:'numeric' } group = dateField.toLocaleDateString('pt-BR', options) group = group.charAt(0).toUpperCase() + group.slice(1) break case 'groupByDay': test = (orderByColumn == 'ddm__keyword__47047__DataReferência') options = test ? {timeZone: 'UTC'} : {} group = dateField.toLocaleDateString('pt-BR', options) break } configuration.activeDebug && configuration.showDateConversions && editMode && console.log(`${fieldData} --> ${group}`) return group } // renderiza lista comum function renderDocumentsList(documents) { let listGroup = getNodeElement(documentsList, 'afterbegin', 'ul', '.list-group') listGroup.setAttribute('aria-label', assetListObject.title) documents.items.forEach(doc => { listGroup.insertAdjacentHTML('beforeend', renderListGroupItem(doc)) }) } // renderiza cabeçalho da lista function renderListGroupHeader(title) { let listHeaderHTML = ` <li class="list-group-header"> <span class="list-group-header-title"><big>${title}</big></span> </li> ` return listHeaderHTML } // renderiza um item da lista function renderListGroupItem(document) { let dateCreated = (configuration.showCreateDate) ? new Date(document.content.dateCreated) : null let dateCreatedHTML = (dateCreated) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">Publicado em</span> <span class="small">${dateCreated.toLocaleDateString('pt-BR')}</span> </div>` : '' let dateModified = (configuration.showModifiedDate) ? new Date(document.content.dateModified) : null let dateModifiedHTML = (dateModified) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">Atualizado em</span> <span class="small">${dateModified.toLocaleDateString('pt-BR')}</span> </div>` : '' let refDate = (configuration.showRefDate && validity.canShowRefDate.state) ? new Date(document.content.documentType.contentFields[0].contentFieldValue.data) : null let refDateHTML = (refDate) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">${configuration.labelForRefDate}</span> <span class="small">${refDate.toLocaleDateString('pt-BR', {timeZone: 'UTC'})}</span> </div>` : '' let year = (configuration.showYear && validity.canShowYear.state) ? document.content.documentType.contentFields[0].contentFieldValue.data : null let yearHTML = (year) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">${configuration.labelForYear}</span> <span class="small">${year}</span> </div>` : '' let hasMetadatas = (year || refDate || dateCreated || dateModified) let metadataHTML = (hasMetadatas) ? ` <div class="d-flex flex-column flex-md-row"> ${yearHTML} ${refDateHTML} ${dateCreatedHTML} ${dateModifiedHTML} </div>` : '' let listItemHTML = ` <li class="list-group-item list-group-item-flex align-items-center"> <div class="autofit-col"> <svg class="lexicon-icon text-tertiary lexicon-icon-lg" focusable="false" role="presentation" viewBox="0 0 512 512"> <use xlink:href="${spritemapBNB}#arquivo-${document.content.fileExtension}" /> </svg> </div> <div class="autofit-col autofit-col-expand"> <div class="d-flex flex-column flex-lg-row justify-content-start justify-content-lg-between"> <div class="d-flex flex-column"> <span class="list-group-title"> <a href="${document.content.contentUrl}">${document.title}</a> </span> <span class="list-group-subtitle text-uppercase small"> ${document.content.fileExtension}, ${Liferay.Util.formatStorage(document.content.sizeInBytes, {addSpaceBeforeSuffix: true})} </span> </div> ${metadataHTML} </div> </div> </li> ` return listItemHTML } // renderiza paginação function renderPaginationBar(page, lastPage, totalCount) { let paginationBar = getNodeElement(fragmentElement, 'beforeend', 'div', '.pagination-bar') let lastIndex = (page === lastPage) ? totalCount : configuration.pageSize*page let nDocuments = (page+1 === lastPage) ? totalCount - configuration.pageSize*page : configuration.pageSize paginationBar.classList.add('justify-content-center', 'justify-content-lg-between') let textColor = (configuration.textColor.cssClass) ? `text-${configuration.textColor.cssClass}` : '' paginationBar.innerHTML = ` <div class="pagination-results mr-0 ${textColor}">Exibindo 1 a ${lastIndex} de ${totalCount} documentos.</div> <ul class="pagination"> <li class="page-item"> <button class="btn btn-unstyled page-link" type="button"> Exibir mais ${nDocuments} documentos ${renderIcon('angle-down', spritemapClay, 'ml-2')} </button> </li> </ul> ` let showMoreButton = paginationBar.querySelector('button.page-link') if (page !== lastPage) { showMoreButton.addEventListener('click', e => { showMoreButton.querySelector('svg').remove() let loadAnimation = getNodeElement(showMoreButton, 'beforeend', 'span', '.loading-animation') loadAnimation.classList.add('loading-animation-sm', 'ml-2') fetchDocumentsPage(page+1) }) } else { showMoreButton.remove() } } // imprime um mensagem de alerta function displayAlert(style, title, msg, parentNode, position) { let styleIcons = { 'danger': 'exclamation-full', 'success': 'check-circle-full', 'info': 'info-circle', 'warning': 'warning-full' } let html = ` <div class="alert p-4 alert-${style}" role="alert"> <span class="alert-indicator"> ${renderIcon(styleIcons[style], spritemapClay, '')} </span> <strong>${title}:</strong> <p class="mt-2 mb-0">${msg}</p> </div> ` parentNode.insertAdjacentHTML(position, html) } // limpa mensagens de alerta function cleanAlerts() { let alerts = fragmentElement.querySelectorAll('.alert') alerts.forEach(alert => alert.remove()) } // imprime icone SGV function renderIcon(icon, spritemap, cssClasses) { return ` <svg class="lexicon-icon lexicon-icon-${icon} ${cssClasses}" focusable="false" role="presentation"> <use href="${spritemap}#${icon}"></use> </svg> ` } // retorna/cria um elemento html de uma classe css // ascendantNode é um nó ascendente // position é uma string 'beforeend', 'afterbegin' + // elementType uma string 'ul', 'div' etc // cssClass é uma classe css function getNodeElement(ascendantNode, position, elementType, cssClass) { let nodeElement if (ascendantNode.querySelector(cssClass)) { nodeElement = ascendantNode.querySelector(cssClass) } else { nodeElement = document.createElement(elementType) nodeElement = ascendantNode.insertAdjacentElement(position, nodeElement) nodeElement.classList.add(cssClass.slice(1)) } return nodeElement } // retorna nome amigável do campo usado como 1ª ordenação function getOrderByFieldName(orderByColumn) { let regExp = /^ddm__keyword__\d+__(.+)/ let matchExp = regExp.exec(orderByColumn) return (matchExp) ? matchExp[1] : Liferay.Language.get(orderByColumn) };}());</script>]]>
3759 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-utke'); var configuration = {"height":"py-3"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3807 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-xwzf'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h3","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3827 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-cgvt'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
3846 <![CDATA[<script id="data_vnvp" type="application/json">{"title":"Remuneração de Empregados","type":0,"typeSettings":{"anyClassTypeDLFileEntryAssetRendererFactory":"47053","orderByColumn1":"ddm__keyword__47054__Ano"}}</script>]]>
3852 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-2316268-vnvp'); var configuration = {"contentSetId":"3721429","showDateConversions":false,"showModifiedDate":true,"showRefDate":false,"textAlign":"left","pageSize":"50","showYear":false,"groupBy":"noGroup","textColor":{"cssClass":"","rgbValue":""},"useTitle":false,"usePagination":false,"bottomSpacing":"3","labelForYear":"Ocorrido em","useContentSetTitle":true,"labelForRefDate":"Referente a","headingLevel":"h2","showCreateDate":true,"activeDebug":false};const editMode = document.body.classList.contains('has-edit-mode-menu') const apiURL = `${Liferay.ThemeDisplay.getPortalURL()}/o/headless-delivery` const contentSetsEndPoint = `/v1.0/content-sets/${configuration.contentSetId}/content-set-elements` const restrictFields = 'title,content.contentUrl,content.dateCreated,content.dateModified,content.documentType,content.fileExtension,content.sizeInBytes' const params = { fields: restrictFields, 'pageSize': configuration.pageSize, 'page': 1 } const pathThemeImages = Liferay.ThemeDisplay.getPathThemeImages() const spritemapBNB = `${pathThemeImages}/bnb/icons.svg` const spritemapClay = `${pathThemeImages}/clay/icons.svg` const scriptAssetListJson = fragmentElement.querySelector(`script#data_${fragmentElement.id.slice(-4)}`) const assetListObject = (scriptAssetListJson) ? JSON.parse(scriptAssetListJson.text) : null const documentsList = fragmentElement.querySelector('.documents-list') const loadingAnimation = fragmentElement.querySelector('.loading-animation') const orderByYearAttrs = ['modifiedDate', 'createDate', 'publishDate', 'ddm__keyword__47047__DataReferência', 'ddm__keyword__47054__Ano'] const orderByMonthYearAttrs = ['modifiedDate', 'createDate', 'publishDate', 'ddm__keyword__47047__DataReferência'] const orderByDayAttrs = ['modifiedDate', 'createDate', 'publishDate', 'ddm__keyword__47047__DataReferência'] const fileEntryTypes = { 'docOrdin': 47046, 'docAnual': 47053 } const validity = (assetListObject) ? validateConfiguration() : null validity && init() // funcao de inicialização function init() { fragmentElement.classList.add('mb-4') editMode && reportConstraints() fetchDocumentsPage() } // constrói um objeto para verificar status de validade de algumas configurações function validateConfiguration() { let orderByColumn = assetListObject.typeSettings.orderByColumn1 let orderByColumnName = getOrderByFieldName(orderByColumn) let canGroupByYear = orderByYearAttrs.includes(orderByColumn) let canGroupByMonthYear = orderByMonthYearAttrs.includes(orderByColumn) let canGroupByDay = orderByDayAttrs.includes(orderByColumn) let canShowRefDate = (assetListObject.typeSettings.anyClassTypeDLFileEntryAssetRendererFactory == fileEntryTypes.docOrdin) let canShowYear = (assetListObject.typeSettings.anyClassTypeDLFileEntryAssetRendererFactory == fileEntryTypes.docAnual) let validityState = { 'canGroupByYear': { 'state': canGroupByYear, 'msg' : canGroupByYear ? '' : `A coleção não pode ser agrupada por ano, pois está ordenada por ${orderByColumnName}.` }, 'canGroupByMonthYear': { 'state': canGroupByMonthYear, 'msg' : canGroupByMonthYear ? '' : `A coleção não pode ser agrupada por mês e ano, pois está ordenada por ${orderByColumnName}.` }, 'canGroupByDay': { 'state': canGroupByDay, 'msg' : canGroupByDay ? '' : `A coleção não pode ser agrupada por dia, pois está ordenada por ${orderByColumnName}.` }, 'canShowRefDate': { 'state': canShowRefDate, 'msg' : canShowRefDate ? '' : 'Não é possível mostrar o campo Data de Referência. Esse metadado existe apenas em coleções de Documentos Ordinários.' }, 'canShowYear': { 'state': canShowYear, 'msg' : canShowYear ? '' : 'Não é possível mostrar o campo Ano. Esse metadado existe apenas em coleções de Documentos Anuais.' } } return validityState } // alerta sobre restrições na configuração function reportConstraints() { cleanAlerts() // alerta sobre restrições let validationMessages = [] configuration.groupBy == 'groupByYear' && !validity.canGroupByYear.state && validationMessages.push(validity.canGroupByYear.msg) configuration.groupBy == 'groupByMonthYear' && !validity.canGroupByMonthYear.state && validationMessages.push(validity.canGroupByMonthYear.msg) configuration.groupBy == 'groupByDay' && !validity.canGroupByDay.state && validationMessages.push(validity.canGroupByDay.msg) configuration.showRefDate && !validity.canShowRefDate.state && validationMessages.push(validity.canShowRefDate.msg) configuration.showYear && !validity.canShowYear.state && validationMessages.push(validity.canShowYear.msg) validationMessages.length > 0 && displayAlert('danger', 'Configuração inválida', validationMessages.join('<br/>'), documentsList, 'beforebegin') // debug if (configuration.activeDebug) { console.clear() console.log('Propriedades da Coleção:') console.log(assetListObject) console.log('Configuração do Fragmento:') console.log(configuration) console.log('Validade da Configuração:') console.log(validity) } } // principal funcao para pegar os dados function fetchDocumentsPage(page) { params.page = (page) ? page : params.page let request = Liferay.Util.addParams(params, apiURL+contentSetsEndPoint) fetch( request, { method: 'GET', headers: { 'Content-Type': 'application/json' } } ).then(response => { if (response.ok) { return response.json() } }).then(documents => { handleDocuments(documents) if (editMode && configuration.activeDebug) { console.log(`Retorno da requisição (page ${params.page}):`) console.log(documents) } }) } // manipula dados retornados da coleção function handleDocuments(documents) { loadingAnimation && loadingAnimation.remove() if (documents.items.length > 0) { switch (configuration.groupBy) { case 'noGroup': renderDocumentsList(documents) break case 'groupByYear': (validity.canGroupByYear.state) ? renderDocumentsListByGroup(documents) : renderDocumentsList(documents) break case 'groupByMonthYear': (validity.canGroupByMonthYear.state) ? renderDocumentsListByGroup(documents) : renderDocumentsList(documents) break case 'groupByDay': (validity.canGroupByDay.state) ? renderDocumentsListByGroup(documents) : renderDocumentsList(documents) break } configuration.usePagination && renderPaginationBar(documents.page, documents.lastPage, documents.totalCount) } else { displayAlert('info', 'Aviso', 'Não foram encontrados documentos', documentsList, 'afterbegin') } } // renderiza lista agrupada function renderDocumentsListByGroup(documents) { let lastListGroup = documentsList.querySelector('.list-group:last-child') let currentGroup = (lastListGroup) ? lastListGroup.dataset.group : 0 configuration.activeDebug && configuration.showDateConversions && editMode && console.log(`Extração do grupo a partir do campo ${getOrderByFieldName(assetListObject.typeSettings.orderByColumn1)}:`) documents.items.forEach(doc => { let group = getDocumentGroup(doc) if (currentGroup != group) { let listGroup = document.createElement('ul') listGroup.classList.add('list-group') listGroup.dataset.group = group listGroup.setAttribute('aria-label', `${assetListObject.title} de ${group}`) lastListGroup = documentsList.insertAdjacentElement('beforeend', listGroup) lastListGroup.insertAdjacentHTML('afterbegin', renderListGroupHeader(group)) currentGroup = group } lastListGroup.insertAdjacentHTML('beforeend', renderListGroupItem(doc)) }) } // extrai e retorna o dado (string) utilizado como agrupador (dia, mês ou ano) a partir do campo utilizado como primeira ordenação da coleção function getDocumentGroup(document) { let fieldData let group let dateField let options let test let orderByColumn = assetListObject.typeSettings.orderByColumn1 switch (orderByColumn) { case 'ddm__keyword__47047__DataReferência': fieldData = document.content.documentType.contentFields[0].contentFieldValue.data break case 'ddm__keyword__47054__Ano': fieldData = document.content.documentType.contentFields[0].contentFieldValue.data break case 'modifiedDate': fieldData = document.content.dateModified break case 'createDate': fieldData = document.content.dateCreated break case 'publishDate': // verificar esse caso por que não há uma campo data de publicação em coleções de documentos fieldData = document.content.dateCreated break } dateField = new Date(fieldData) switch (configuration.groupBy) { case 'groupByYear': test = (orderByColumn == 'ddm__keyword__47047__DataReferência' || orderByColumn == 'ddm__keyword__47054__Ano') group = test ? dateField.getUTCFullYear() : dateField.getFullYear() break case 'groupByMonthYear': test = (orderByColumn == 'ddm__keyword__47047__DataReferência') options = test ? {month:'long', year:'numeric', timeZone: 'UTC'} : { month:'long', year:'numeric' } group = dateField.toLocaleDateString('pt-BR', options) group = group.charAt(0).toUpperCase() + group.slice(1) break case 'groupByDay': test = (orderByColumn == 'ddm__keyword__47047__DataReferência') options = test ? {timeZone: 'UTC'} : {} group = dateField.toLocaleDateString('pt-BR', options) break } configuration.activeDebug && configuration.showDateConversions && editMode && console.log(`${fieldData} --> ${group}`) return group } // renderiza lista comum function renderDocumentsList(documents) { let listGroup = getNodeElement(documentsList, 'afterbegin', 'ul', '.list-group') listGroup.setAttribute('aria-label', assetListObject.title) documents.items.forEach(doc => { listGroup.insertAdjacentHTML('beforeend', renderListGroupItem(doc)) }) } // renderiza cabeçalho da lista function renderListGroupHeader(title) { let listHeaderHTML = ` <li class="list-group-header"> <span class="list-group-header-title"><big>${title}</big></span> </li> ` return listHeaderHTML } // renderiza um item da lista function renderListGroupItem(document) { let dateCreated = (configuration.showCreateDate) ? new Date(document.content.dateCreated) : null let dateCreatedHTML = (dateCreated) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">Publicado em</span> <span class="small">${dateCreated.toLocaleDateString('pt-BR')}</span> </div>` : '' let dateModified = (configuration.showModifiedDate) ? new Date(document.content.dateModified) : null let dateModifiedHTML = (dateModified) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">Atualizado em</span> <span class="small">${dateModified.toLocaleDateString('pt-BR')}</span> </div>` : '' let refDate = (configuration.showRefDate && validity.canShowRefDate.state) ? new Date(document.content.documentType.contentFields[0].contentFieldValue.data) : null let refDateHTML = (refDate) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">${configuration.labelForRefDate}</span> <span class="small">${refDate.toLocaleDateString('pt-BR', {timeZone: 'UTC'})}</span> </div>` : '' let year = (configuration.showYear && validity.canShowYear.state) ? document.content.documentType.contentFields[0].contentFieldValue.data : null let yearHTML = (year) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">${configuration.labelForYear}</span> <span class="small">${year}</span> </div>` : '' let hasMetadatas = (year || refDate || dateCreated || dateModified) let metadataHTML = (hasMetadatas) ? ` <div class="d-flex flex-column flex-md-row"> ${yearHTML} ${refDateHTML} ${dateCreatedHTML} ${dateModifiedHTML} </div>` : '' let listItemHTML = ` <li class="list-group-item list-group-item-flex align-items-center"> <div class="autofit-col"> <svg class="lexicon-icon text-tertiary lexicon-icon-lg" focusable="false" role="presentation" viewBox="0 0 512 512"> <use xlink:href="${spritemapBNB}#arquivo-${document.content.fileExtension}" /> </svg> </div> <div class="autofit-col autofit-col-expand"> <div class="d-flex flex-column flex-lg-row justify-content-start justify-content-lg-between"> <div class="d-flex flex-column"> <span class="list-group-title"> <a href="${document.content.contentUrl}">${document.title}</a> </span> <span class="list-group-subtitle text-uppercase small"> ${document.content.fileExtension}, ${Liferay.Util.formatStorage(document.content.sizeInBytes, {addSpaceBeforeSuffix: true})} </span> </div> ${metadataHTML} </div> </div> </li> ` return listItemHTML } // renderiza paginação function renderPaginationBar(page, lastPage, totalCount) { let paginationBar = getNodeElement(fragmentElement, 'beforeend', 'div', '.pagination-bar') let lastIndex = (page === lastPage) ? totalCount : configuration.pageSize*page let nDocuments = (page+1 === lastPage) ? totalCount - configuration.pageSize*page : configuration.pageSize paginationBar.classList.add('justify-content-center', 'justify-content-lg-between') let textColor = (configuration.textColor.cssClass) ? `text-${configuration.textColor.cssClass}` : '' paginationBar.innerHTML = ` <div class="pagination-results mr-0 ${textColor}">Exibindo 1 a ${lastIndex} de ${totalCount} documentos.</div> <ul class="pagination"> <li class="page-item"> <button class="btn btn-unstyled page-link" type="button"> Exibir mais ${nDocuments} documentos ${renderIcon('angle-down', spritemapClay, 'ml-2')} </button> </li> </ul> ` let showMoreButton = paginationBar.querySelector('button.page-link') if (page !== lastPage) { showMoreButton.addEventListener('click', e => { showMoreButton.querySelector('svg').remove() let loadAnimation = getNodeElement(showMoreButton, 'beforeend', 'span', '.loading-animation') loadAnimation.classList.add('loading-animation-sm', 'ml-2') fetchDocumentsPage(page+1) }) } else { showMoreButton.remove() } } // imprime um mensagem de alerta function displayAlert(style, title, msg, parentNode, position) { let styleIcons = { 'danger': 'exclamation-full', 'success': 'check-circle-full', 'info': 'info-circle', 'warning': 'warning-full' } let html = ` <div class="alert p-4 alert-${style}" role="alert"> <span class="alert-indicator"> ${renderIcon(styleIcons[style], spritemapClay, '')} </span> <strong>${title}:</strong> <p class="mt-2 mb-0">${msg}</p> </div> ` parentNode.insertAdjacentHTML(position, html) } // limpa mensagens de alerta function cleanAlerts() { let alerts = fragmentElement.querySelectorAll('.alert') alerts.forEach(alert => alert.remove()) } // imprime icone SGV function renderIcon(icon, spritemap, cssClasses) { return ` <svg class="lexicon-icon lexicon-icon-${icon} ${cssClasses}" focusable="false" role="presentation"> <use href="${spritemap}#${icon}"></use> </svg> ` } // retorna/cria um elemento html de uma classe css // ascendantNode é um nó ascendente // position é uma string 'beforeend', 'afterbegin' + // elementType uma string 'ul', 'div' etc // cssClass é uma classe css function getNodeElement(ascendantNode, position, elementType, cssClass) { let nodeElement if (ascendantNode.querySelector(cssClass)) { nodeElement = ascendantNode.querySelector(cssClass) } else { nodeElement = document.createElement(elementType) nodeElement = ascendantNode.insertAdjacentElement(position, nodeElement) nodeElement.classList.add(cssClass.slice(1)) } return nodeElement } // retorna nome amigável do campo usado como 1ª ordenação function getOrderByFieldName(orderByColumn) { let regExp = /^ddm__keyword__\d+__(.+)/ let matchExp = regExp.exec(orderByColumn) return (matchExp) ? matchExp[1] : Liferay.Language.get(orderByColumn) };}());</script>]]>
4263 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-invp'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h3","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
4283 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-cinu'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
4302 <![CDATA[<script id="data_geqw" type="application/json">{"title":"Diárias e Passagens","type":0,"typeSettings":{"anyClassTypeDLFileEntryAssetRendererFactory":"47053","orderByColumn1":"ddm__keyword__47054__Ano"}}</script>]]>
4308 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-2316268-geqw'); var configuration = {"contentSetId":"2707193","showDateConversions":false,"showModifiedDate":true,"showRefDate":false,"textAlign":"left","pageSize":"5","showYear":false,"groupBy":"noGroup","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"},"useTitle":false,"usePagination":true,"bottomSpacing":"3","labelForYear":"Ocorrido em","useContentSetTitle":true,"labelForRefDate":"Referente a","headingLevel":"h2","showCreateDate":true,"activeDebug":false};const editMode = document.body.classList.contains('has-edit-mode-menu') const apiURL = `${Liferay.ThemeDisplay.getPortalURL()}/o/headless-delivery` const contentSetsEndPoint = `/v1.0/content-sets/${configuration.contentSetId}/content-set-elements` const restrictFields = 'title,content.contentUrl,content.dateCreated,content.dateModified,content.documentType,content.fileExtension,content.sizeInBytes' const params = { fields: restrictFields, 'pageSize': configuration.pageSize, 'page': 1 } const pathThemeImages = Liferay.ThemeDisplay.getPathThemeImages() const spritemapBNB = `${pathThemeImages}/bnb/icons.svg` const spritemapClay = `${pathThemeImages}/clay/icons.svg` const scriptAssetListJson = fragmentElement.querySelector(`script#data_${fragmentElement.id.slice(-4)}`) const assetListObject = (scriptAssetListJson) ? JSON.parse(scriptAssetListJson.text) : null const documentsList = fragmentElement.querySelector('.documents-list') const loadingAnimation = fragmentElement.querySelector('.loading-animation') const orderByYearAttrs = ['modifiedDate', 'createDate', 'publishDate', 'ddm__keyword__47047__DataReferência', 'ddm__keyword__47054__Ano'] const orderByMonthYearAttrs = ['modifiedDate', 'createDate', 'publishDate', 'ddm__keyword__47047__DataReferência'] const orderByDayAttrs = ['modifiedDate', 'createDate', 'publishDate', 'ddm__keyword__47047__DataReferência'] const fileEntryTypes = { 'docOrdin': 47046, 'docAnual': 47053 } const validity = (assetListObject) ? validateConfiguration() : null validity && init() // funcao de inicialização function init() { fragmentElement.classList.add('mb-4') editMode && reportConstraints() fetchDocumentsPage() } // constrói um objeto para verificar status de validade de algumas configurações function validateConfiguration() { let orderByColumn = assetListObject.typeSettings.orderByColumn1 let orderByColumnName = getOrderByFieldName(orderByColumn) let canGroupByYear = orderByYearAttrs.includes(orderByColumn) let canGroupByMonthYear = orderByMonthYearAttrs.includes(orderByColumn) let canGroupByDay = orderByDayAttrs.includes(orderByColumn) let canShowRefDate = (assetListObject.typeSettings.anyClassTypeDLFileEntryAssetRendererFactory == fileEntryTypes.docOrdin) let canShowYear = (assetListObject.typeSettings.anyClassTypeDLFileEntryAssetRendererFactory == fileEntryTypes.docAnual) let validityState = { 'canGroupByYear': { 'state': canGroupByYear, 'msg' : canGroupByYear ? '' : `A coleção não pode ser agrupada por ano, pois está ordenada por ${orderByColumnName}.` }, 'canGroupByMonthYear': { 'state': canGroupByMonthYear, 'msg' : canGroupByMonthYear ? '' : `A coleção não pode ser agrupada por mês e ano, pois está ordenada por ${orderByColumnName}.` }, 'canGroupByDay': { 'state': canGroupByDay, 'msg' : canGroupByDay ? '' : `A coleção não pode ser agrupada por dia, pois está ordenada por ${orderByColumnName}.` }, 'canShowRefDate': { 'state': canShowRefDate, 'msg' : canShowRefDate ? '' : 'Não é possível mostrar o campo Data de Referência. Esse metadado existe apenas em coleções de Documentos Ordinários.' }, 'canShowYear': { 'state': canShowYear, 'msg' : canShowYear ? '' : 'Não é possível mostrar o campo Ano. Esse metadado existe apenas em coleções de Documentos Anuais.' } } return validityState } // alerta sobre restrições na configuração function reportConstraints() { cleanAlerts() // alerta sobre restrições let validationMessages = [] configuration.groupBy == 'groupByYear' && !validity.canGroupByYear.state && validationMessages.push(validity.canGroupByYear.msg) configuration.groupBy == 'groupByMonthYear' && !validity.canGroupByMonthYear.state && validationMessages.push(validity.canGroupByMonthYear.msg) configuration.groupBy == 'groupByDay' && !validity.canGroupByDay.state && validationMessages.push(validity.canGroupByDay.msg) configuration.showRefDate && !validity.canShowRefDate.state && validationMessages.push(validity.canShowRefDate.msg) configuration.showYear && !validity.canShowYear.state && validationMessages.push(validity.canShowYear.msg) validationMessages.length > 0 && displayAlert('danger', 'Configuração inválida', validationMessages.join('<br/>'), documentsList, 'beforebegin') // debug if (configuration.activeDebug) { console.clear() console.log('Propriedades da Coleção:') console.log(assetListObject) console.log('Configuração do Fragmento:') console.log(configuration) console.log('Validade da Configuração:') console.log(validity) } } // principal funcao para pegar os dados function fetchDocumentsPage(page) { params.page = (page) ? page : params.page let request = Liferay.Util.addParams(params, apiURL+contentSetsEndPoint) fetch( request, { method: 'GET', headers: { 'Content-Type': 'application/json' } } ).then(response => { if (response.ok) { return response.json() } }).then(documents => { handleDocuments(documents) if (editMode && configuration.activeDebug) { console.log(`Retorno da requisição (page ${params.page}):`) console.log(documents) } }) } // manipula dados retornados da coleção function handleDocuments(documents) { loadingAnimation && loadingAnimation.remove() if (documents.items.length > 0) { switch (configuration.groupBy) { case 'noGroup': renderDocumentsList(documents) break case 'groupByYear': (validity.canGroupByYear.state) ? renderDocumentsListByGroup(documents) : renderDocumentsList(documents) break case 'groupByMonthYear': (validity.canGroupByMonthYear.state) ? renderDocumentsListByGroup(documents) : renderDocumentsList(documents) break case 'groupByDay': (validity.canGroupByDay.state) ? renderDocumentsListByGroup(documents) : renderDocumentsList(documents) break } configuration.usePagination && renderPaginationBar(documents.page, documents.lastPage, documents.totalCount) } else { displayAlert('info', 'Aviso', 'Não foram encontrados documentos', documentsList, 'afterbegin') } } // renderiza lista agrupada function renderDocumentsListByGroup(documents) { let lastListGroup = documentsList.querySelector('.list-group:last-child') let currentGroup = (lastListGroup) ? lastListGroup.dataset.group : 0 configuration.activeDebug && configuration.showDateConversions && editMode && console.log(`Extração do grupo a partir do campo ${getOrderByFieldName(assetListObject.typeSettings.orderByColumn1)}:`) documents.items.forEach(doc => { let group = getDocumentGroup(doc) if (currentGroup != group) { let listGroup = document.createElement('ul') listGroup.classList.add('list-group') listGroup.dataset.group = group listGroup.setAttribute('aria-label', `${assetListObject.title} de ${group}`) lastListGroup = documentsList.insertAdjacentElement('beforeend', listGroup) lastListGroup.insertAdjacentHTML('afterbegin', renderListGroupHeader(group)) currentGroup = group } lastListGroup.insertAdjacentHTML('beforeend', renderListGroupItem(doc)) }) } // extrai e retorna o dado (string) utilizado como agrupador (dia, mês ou ano) a partir do campo utilizado como primeira ordenação da coleção function getDocumentGroup(document) { let fieldData let group let dateField let options let test let orderByColumn = assetListObject.typeSettings.orderByColumn1 switch (orderByColumn) { case 'ddm__keyword__47047__DataReferência': fieldData = document.content.documentType.contentFields[0].contentFieldValue.data break case 'ddm__keyword__47054__Ano': fieldData = document.content.documentType.contentFields[0].contentFieldValue.data break case 'modifiedDate': fieldData = document.content.dateModified break case 'createDate': fieldData = document.content.dateCreated break case 'publishDate': // verificar esse caso por que não há uma campo data de publicação em coleções de documentos fieldData = document.content.dateCreated break } dateField = new Date(fieldData) switch (configuration.groupBy) { case 'groupByYear': test = (orderByColumn == 'ddm__keyword__47047__DataReferência' || orderByColumn == 'ddm__keyword__47054__Ano') group = test ? dateField.getUTCFullYear() : dateField.getFullYear() break case 'groupByMonthYear': test = (orderByColumn == 'ddm__keyword__47047__DataReferência') options = test ? {month:'long', year:'numeric', timeZone: 'UTC'} : { month:'long', year:'numeric' } group = dateField.toLocaleDateString('pt-BR', options) group = group.charAt(0).toUpperCase() + group.slice(1) break case 'groupByDay': test = (orderByColumn == 'ddm__keyword__47047__DataReferência') options = test ? {timeZone: 'UTC'} : {} group = dateField.toLocaleDateString('pt-BR', options) break } configuration.activeDebug && configuration.showDateConversions && editMode && console.log(`${fieldData} --> ${group}`) return group } // renderiza lista comum function renderDocumentsList(documents) { let listGroup = getNodeElement(documentsList, 'afterbegin', 'ul', '.list-group') listGroup.setAttribute('aria-label', assetListObject.title) documents.items.forEach(doc => { listGroup.insertAdjacentHTML('beforeend', renderListGroupItem(doc)) }) } // renderiza cabeçalho da lista function renderListGroupHeader(title) { let listHeaderHTML = ` <li class="list-group-header"> <span class="list-group-header-title"><big>${title}</big></span> </li> ` return listHeaderHTML } // renderiza um item da lista function renderListGroupItem(document) { let dateCreated = (configuration.showCreateDate) ? new Date(document.content.dateCreated) : null let dateCreatedHTML = (dateCreated) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">Publicado em</span> <span class="small">${dateCreated.toLocaleDateString('pt-BR')}</span> </div>` : '' let dateModified = (configuration.showModifiedDate) ? new Date(document.content.dateModified) : null let dateModifiedHTML = (dateModified) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">Atualizado em</span> <span class="small">${dateModified.toLocaleDateString('pt-BR')}</span> </div>` : '' let refDate = (configuration.showRefDate && validity.canShowRefDate.state) ? new Date(document.content.documentType.contentFields[0].contentFieldValue.data) : null let refDateHTML = (refDate) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">${configuration.labelForRefDate}</span> <span class="small">${refDate.toLocaleDateString('pt-BR', {timeZone: 'UTC'})}</span> </div>` : '' let year = (configuration.showYear && validity.canShowYear.state) ? document.content.documentType.contentFields[0].contentFieldValue.data : null let yearHTML = (year) ? ` <div class="d-flex flex-row flex-lg-column text-lg-right ml-lg-3 mr-md-2 mr-lg-0"> <span class="small font-weight-bold text-nowrap mr-1 mr-lg-0">${configuration.labelForYear}</span> <span class="small">${year}</span> </div>` : '' let hasMetadatas = (year || refDate || dateCreated || dateModified) let metadataHTML = (hasMetadatas) ? ` <div class="d-flex flex-column flex-md-row"> ${yearHTML} ${refDateHTML} ${dateCreatedHTML} ${dateModifiedHTML} </div>` : '' let listItemHTML = ` <li class="list-group-item list-group-item-flex align-items-center"> <div class="autofit-col"> <svg class="lexicon-icon text-tertiary lexicon-icon-lg" focusable="false" role="presentation" viewBox="0 0 512 512"> <use xlink:href="${spritemapBNB}#arquivo-${document.content.fileExtension}" /> </svg> </div> <div class="autofit-col autofit-col-expand"> <div class="d-flex flex-column flex-lg-row justify-content-start justify-content-lg-between"> <div class="d-flex flex-column"> <span class="list-group-title"> <a href="${document.content.contentUrl}">${document.title}</a> </span> <span class="list-group-subtitle text-uppercase small"> ${document.content.fileExtension}, ${Liferay.Util.formatStorage(document.content.sizeInBytes, {addSpaceBeforeSuffix: true})} </span> </div> ${metadataHTML} </div> </div> </li> ` return listItemHTML } // renderiza paginação function renderPaginationBar(page, lastPage, totalCount) { let paginationBar = getNodeElement(fragmentElement, 'beforeend', 'div', '.pagination-bar') let lastIndex = (page === lastPage) ? totalCount : configuration.pageSize*page let nDocuments = (page+1 === lastPage) ? totalCount - configuration.pageSize*page : configuration.pageSize paginationBar.classList.add('justify-content-center', 'justify-content-lg-between') let textColor = (configuration.textColor.cssClass) ? `text-${configuration.textColor.cssClass}` : '' paginationBar.innerHTML = ` <div class="pagination-results mr-0 ${textColor}">Exibindo 1 a ${lastIndex} de ${totalCount} documentos.</div> <ul class="pagination"> <li class="page-item"> <button class="btn btn-unstyled page-link" type="button"> Exibir mais ${nDocuments} documentos ${renderIcon('angle-down', spritemapClay, 'ml-2')} </button> </li> </ul> ` let showMoreButton = paginationBar.querySelector('button.page-link') if (page !== lastPage) { showMoreButton.addEventListener('click', e => { showMoreButton.querySelector('svg').remove() let loadAnimation = getNodeElement(showMoreButton, 'beforeend', 'span', '.loading-animation') loadAnimation.classList.add('loading-animation-sm', 'ml-2') fetchDocumentsPage(page+1) }) } else { showMoreButton.remove() } } // imprime um mensagem de alerta function displayAlert(style, title, msg, parentNode, position) { let styleIcons = { 'danger': 'exclamation-full', 'success': 'check-circle-full', 'info': 'info-circle', 'warning': 'warning-full' } let html = ` <div class="alert p-4 alert-${style}" role="alert"> <span class="alert-indicator"> ${renderIcon(styleIcons[style], spritemapClay, '')} </span> <strong>${title}:</strong> <p class="mt-2 mb-0">${msg}</p> </div> ` parentNode.insertAdjacentHTML(position, html) } // limpa mensagens de alerta function cleanAlerts() { let alerts = fragmentElement.querySelectorAll('.alert') alerts.forEach(alert => alert.remove()) } // imprime icone SGV function renderIcon(icon, spritemap, cssClasses) { return ` <svg class="lexicon-icon lexicon-icon-${icon} ${cssClasses}" focusable="false" role="presentation"> <use href="${spritemap}#${icon}"></use> </svg> ` } // retorna/cria um elemento html de uma classe css // ascendantNode é um nó ascendente // position é uma string 'beforeend', 'afterbegin' + // elementType uma string 'ul', 'div' etc // cssClass é uma classe css function getNodeElement(ascendantNode, position, elementType, cssClass) { let nodeElement if (ascendantNode.querySelector(cssClass)) { nodeElement = ascendantNode.querySelector(cssClass) } else { nodeElement = document.createElement(elementType) nodeElement = ascendantNode.insertAdjacentElement(position, nodeElement) nodeElement.classList.add(cssClass.slice(1)) } return nodeElement } // retorna nome amigável do campo usado como 1ª ordenação function getOrderByFieldName(orderByColumn) { let regExp = /^ddm__keyword__\d+__(.+)/ let matchExp = regExp.exec(orderByColumn) return (matchExp) ? matchExp[1] : Liferay.Language.get(orderByColumn) };}());</script>]]>
4687 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-tldj'); var configuration = {"height":"py-3"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
4707 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-pgyj'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h3","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
4725 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-dxpl'); var configuration = {"buttonType":"outline-primary","buttonAlign":"left","bottomSpacing":"3","buttonSize":"nm"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
4743 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-dxlr'); var configuration = {"buttonType":"outline-primary","buttonAlign":"left","bottomSpacing":"3","buttonSize":"nm"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
4761 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-ebto'); var configuration = {"buttonType":"outline-primary","buttonAlign":"left","bottomSpacing":"3","buttonSize":"nm"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
4779 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-btye'); var configuration = {"buttonType":"outline-primary","buttonAlign":"left","bottomSpacing":"3","buttonSize":"nm"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
4843 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-47411-orru'); var configuration = {"spritemap":"bnb","symbol":"aperto-mao","cardShadow":"shadow","borderRadius":"","externalLink":false,"bottomSpacing":"mb-3","btnStyle":"btn-link","btLegend":"","cardOrientation":"d-flex flex-column flex-lg-row","iconStyle":"bg-quaternary text-primary","hasButton":true,"iconBox":"rounded-circle"};let links = fragmentElement.querySelectorAll('a.btn') let titles = fragmentElement.querySelectorAll('div.h4') links.forEach((link, index) => { let ariaLabel = (configuration.btLegend == '') ? 'Saiba mais sobre ' + titles[index].innerText : configuration.btLegend ariaLabel = (configuration.externalLink) ? ariaLabel + ' (link externo)' : ariaLabel link.setAttribute("aria-label", ariaLabel) });}());</script>]]>
4872 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-47411-mxpa'); var configuration = {"spritemap":"clay","symbol":"sheets","cardShadow":"shadow","borderRadius":"","externalLink":false,"bottomSpacing":"mb-3","btnStyle":"btn-link","btLegend":"","cardOrientation":"d-flex flex-column flex-lg-row","iconStyle":"bg-quaternary text-primary","hasButton":true,"iconBox":"rounded-circle"};let links = fragmentElement.querySelectorAll('a.btn') let titles = fragmentElement.querySelectorAll('div.h4') links.forEach((link, index) => { let ariaLabel = (configuration.btLegend == '') ? 'Saiba mais sobre ' + titles[index].innerText : configuration.btLegend ariaLabel = (configuration.externalLink) ? ariaLabel + ' (link externo)' : ariaLabel link.setAttribute("aria-label", ariaLabel) });}());</script>]]>
4912 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-fvfv'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h2","textColor":{"cssClass":"","rgbValue":""}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
4932 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-fegs'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"","rgbValue":""}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
4954 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-kjbk'); var configuration = {"bottomSpacing":"3"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
4972 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-jveu'); var configuration = {"buttonType":"link","buttonAlign":"left","bottomSpacing":"3","buttonSize":"nm"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
4990 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-xfqg'); var configuration = {"buttonType":"link","buttonAlign":"left","bottomSpacing":"3","buttonSize":"nm"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
5008 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-xtxn'); var configuration = {"buttonType":"link","buttonAlign":"left","bottomSpacing":"3","buttonSize":"nm"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
5026 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-hyvs'); var configuration = {"buttonType":"link","buttonAlign":"left","bottomSpacing":"3","buttonSize":"nm"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
5044 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-rsbb'); var configuration = {"buttonType":"link","buttonAlign":"left","bottomSpacing":"3","buttonSize":"nm"};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
5092 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-pbqj'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h2","textColor":{"cssClass":"white","rgbValue":"rgb(231, 231, 231)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
5112 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-kpci'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"white","rgbValue":"rgb(230, 230, 230)"}};/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */;}());</script>]]>
6008 <![CDATA[<script type="text/javascript"> // <![CDATA[ Liferay.BrowserSelectors.run(); // ]]> </script>]]>
6037 <![CDATA[<script type="text/javascript"> // <![CDATA[ Liferay.currentURL = '\x2fweb\x2fguest\x2facesso-a-informacao\x2freceitas-e-despesas'; Liferay.currentURLEncoded = '\x252Fweb\x252Fguest\x252Facesso-a-informacao\x252Freceitas-e-despesas'; // ]]> </script>]]>
6054 <![CDATA[<script type="text/javascript"> // <![CDATA[ // ]]> </script>]]>
6085 <![CDATA[<script type="text/javascript"> // <![CDATA[ (function() {var $ = AUI.$;var _ = AUI._; var onVote = function(event) { if (window.Analytics) { Analytics.send('VOTE', 'Ratings', { className: event.className, classPK: event.classPK, ratingType: event.ratingType, score: event.score }); } }; var onDestroyPortlet = function() { Liferay.detach('ratings:vote', onVote); Liferay.detach('destroyPortlet', onDestroyPortlet); }; Liferay.on('ratings:vote', onVote); Liferay.on('destroyPortlet', onDestroyPortlet); })();(function() {var $ = AUI.$;var _ = AUI._; var onDestroyPortlet = function() { Liferay.detach('messagePosted', onMessagePosted); Liferay.detach('destroyPortlet', onDestroyPortlet); }; Liferay.on('destroyPortlet', onDestroyPortlet); var onMessagePosted = function(event) { if (window.Analytics) { Analytics.send('posted', 'Comment', { className: event.className, classPK: event.classPK, commentId: event.commentId, text: event.text }); } }; Liferay.on('messagePosted', onMessagePosted); })();(function() {var $ = AUI.$;var _ = AUI._; var onShare = function(data) { if (window.Analytics) { Analytics.send('shared', 'SocialBookmarks', { className: data.className, classPK: data.classPK, type: data.type, url: data.url }); } }; var onDestroyPortlet = function() { Liferay.detach('socialBookmarks:share', onShare); Liferay.detach('destroyPortlet', onDestroyPortlet); }; Liferay.on('socialBookmarks:share', onShare); Liferay.on('destroyPortlet', onDestroyPortlet); })();(function() {var $ = AUI.$;var _ = AUI._; var pathnameRegexp = /\/documents\/(\d+)\/(\d+)\/(.+?)\/([^&]+)/; function handleDownloadClick(event) { if (event.target.nodeName.toLowerCase() === 'a' && window.Analytics) { var anchor = event.target; var match = pathnameRegexp.exec(anchor.pathname); var fileEntryId = anchor.dataset.analyticsFileEntryId || (anchor.parentElement && anchor.parentElement.dataset.analyticsFileEntryId); if (fileEntryId && match) { var getParameterValue = function(parameterName) { var result = null; anchor.search .substr(1) .split('&') .forEach(function(item) { var tmp = item.split('='); if (tmp[0] === parameterName) { result = decodeURIComponent(tmp[1]); } }); return result; }; Analytics.send('documentDownloaded', 'Document', { groupId: match[1], fileEntryId: fileEntryId, preview: !!window._com_liferay_document_library_analytics_isViewFileEntry, title: decodeURIComponent(match[3].replace(/\+/gi, ' ')), version: getParameterValue('version') }); } } } var onDestroyPortlet = function() { document.body.removeEventListener('click', handleDownloadClick); }; Liferay.once('destroyPortlet', onDestroyPortlet); var onPortletReady = function() { document.body.addEventListener('click', handleDownloadClick); }; Liferay.once('portletReady', onPortletReady); })();(function() {var $ = AUI.$;var _ = AUI._; function showDialog(uri, title, namespace, refreshOnClose) { Liferay.Util.openWindow({ dialog: { centered: true, constrain: true, cssClass: 'sharing-dialog', destroyOnHide: true, modal: true, height: 540, width: 600, on: { visibleChange: function(event) { if (refreshOnClose && !event.newVal) { Liferay.Portlet.refresh('#p_p_id' + namespace); } } } }, id: 'sharingDialog', title: Liferay.Util.escapeHTML(title), uri: uri }); } var Sharing = {}; Liferay.provide( Sharing, 'share', function(classNameId, classPK, title, namespace, refreshOnClose) { var sharingParameters = { classNameId: classNameId, classPK: classPK }; var sharingURL = Liferay.Util.PortletURL.createPortletURL( 'https://www.bnb.gov.br/group/guest/~/control_panel/manage?p_p_id=com_liferay_sharing_web_portlet_SharingPortlet&p_p_lifecycle=0&p_p_state=pop_up&_com_liferay_sharing_web_portlet_SharingPortlet_mvcRenderCommandName=%2Fsharing%2Fshare&p_p_auth=g6tf2mo1', sharingParameters ); showDialog(sharingURL.toString(), title, namespace, refreshOnClose); }, ['liferay-util-window'] ); Liferay.provide( Sharing, 'manageCollaborators', function(classNameId, classPK, namespace, refreshOnClose) { var manageCollaboratorsParameters = { classNameId: classNameId, classPK: classPK }; var manageCollaboratorsURL = Liferay.Util.PortletURL.createPortletURL( 'https://www.bnb.gov.br/group/guest/~/control_panel/manage?p_p_id=com_liferay_sharing_web_portlet_ManageCollaboratorsPortlet&p_p_lifecycle=0&p_p_state=pop_up&_com_liferay_sharing_web_portlet_ManageCollaboratorsPortlet_mvcRenderCommandName=%2Fsharing%2Fmanage_collaborators&p_p_auth=L7aG6g96', manageCollaboratorsParameters ); showDialog( manageCollaboratorsURL.toString(), 'Gerenciar colaboradores', namespace, refreshOnClose ); }, ['liferay-util-window'] ); Liferay.Sharing = Sharing; })(); if (Liferay.Data.ICONS_INLINE_SVG) { svg4everybody( { attributeName: 'data-href', polyfill: true, validate: function (src, svg, use) { return !src || !src.startsWith('#'); } } ); } Liferay.Portlet.register('com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_name_navigation_menu'); Liferay.Portlet.onLoad( { canEditTitle: false, columnPos: 0, isStatic: 'end', namespacedId: 'p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_name_navigation_menu_', portletId: 'com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_name_navigation_menu', refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d84\x26p_p_id\x3dcom_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_name_navigation_menu\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dnull\x26p_p_col_pos\x3dnull\x26p_p_col_count\x3dnull\x26p_p_static\x3d1\x26p_p_isolated\x3d1\x26currentURL\x3d\x252Fweb\x252Fguest\x252Facesso-a-informacao\x252Freceitas-e-despesas', refreshURLData: {} } ); Liferay.Portlet.register('com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_lgpd_navigation_menu'); Liferay.Portlet.onLoad( { canEditTitle: false, columnPos: 0, isStatic: 'end', namespacedId: 'p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_lgpd_navigation_menu_', portletId: 'com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_lgpd_navigation_menu', refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d84\x26p_p_id\x3dcom_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_lgpd_navigation_menu\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dnull\x26p_p_col_pos\x3dnull\x26p_p_col_count\x3dnull\x26p_p_static\x3d1\x26p_p_isolated\x3d1\x26currentURL\x3d\x252Fweb\x252Fguest\x252Facesso-a-informacao\x252Freceitas-e-despesas', refreshURLData: {} } ); Liferay.Portlet.register('com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_INSTANCE_bdBSZcEPvDWD'); Liferay.Portlet.onLoad( { canEditTitle: false, columnPos: 0, isStatic: 'end', namespacedId: 'p_p_id_com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_INSTANCE_bdBSZcEPvDWD_', portletId: 'com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_INSTANCE_bdBSZcEPvDWD', refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d84\x26p_p_id\x3dcom_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_INSTANCE_bdBSZcEPvDWD\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dnull\x26p_p_col_pos\x3dnull\x26p_p_col_count\x3dnull\x26p_p_static\x3d1\x26p_p_isolated\x3d1\x26currentURL\x3d\x252Fweb\x252Fguest\x252Facesso-a-informacao\x252Freceitas-e-despesas', refreshURLData: {} } ); Liferay.Loader.require('metal-dom/src/all/dom', function(metalDomSrcAllDom) { (function(){ var dom = metalDomSrcAllDom; (function() {var $ = AUI.$;var _ = AUI._; var focusInPortletHandler = dom.delegate( document, 'focusin', '.portlet', function(event) { dom.addClasses(dom.closest(event.delegateTarget, '.portlet'), 'open'); } ); var focusOutPortletHandler = dom.delegate( document, 'focusout', '.portlet', function(event) { dom.removeClasses(dom.closest(event.delegateTarget, '.portlet'), 'open'); } ); })();})(); });AUI().use('liferay-menu', 'liferay-notice', 'aui-base', 'liferay-session', 'liferay-poller', function(A) {(function() {var $ = AUI.$;var _ = AUI._; if (A.UA.mobile) { Liferay.Util.addInputCancel(); } })();(function() {var $ = AUI.$;var _ = AUI._; new Liferay.Menu(); var liferayNotices = Liferay.Data.notices; for (var i = 1; i < liferayNotices.length; i++) { new Liferay.Notice(liferayNotices[i]); } })();(function() {var $ = AUI.$;var _ = AUI._; Liferay.Session = new Liferay.SessionBase( { autoExtend: true, redirectOnExpire: false, redirectUrl: 'https\x3a\x2f\x2fwww\x2ebnb\x2egov\x2ebr\x2fweb\x2fguest', sessionLength: 900, sessionTimeoutOffset: 70, warningLength: 0 } ); })();}); // ]]> </script>]]>
6405 <![CDATA[<script type="text/javascript"> // <![CDATA[ AUI().use( 'aui-base', function(A) { var frameElement = window.frameElement; if (frameElement && frameElement.getAttribute('id') === 'simulationDeviceIframe') { A.getBody().addClass('lfr-has-simulation-panel'); } } ); // ]]> </script>]]>
6418 <![CDATA[<script type="text/javascript"> // <![CDATA[ Liferay.Loader.require('frontend-js-tooltip-support-web@2.0.5/index', function(frontendJsTooltipSupportWeb205Index) { (function(){ var TooltipSupport = frontendJsTooltipSupportWeb205Index; (function() { try { TooltipSupport.default() } catch (err) { console.error(err); } })();})(); }); // ]]> </script>]]>