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
1.1 Respeitar os Padrões Web.

Recomendações

Número Descrição Quantidade Linhas Código Fonte
1.1.3 Presença de CSS(s) in-line 27 1053 1521 1522 1594 1595 1667 1668 1735 1736 1773 1962 2340 2426 2494 3570 3605 3642 3675 3711 3777 3919 5105 5110 5115 5120 5203 5206
1.1.4 Presença de CSS(s) interno 18 731 2237 2296 2304 2352 2372 2438 2458 2506 2526 3165 3582 3619 3741 3789 3828 3967 4031
1.1.6 Presença de javascript(s) interno 41 101 231 580 603 662 770 799 911 1047 2306 2354 2374 2392 2440 2460 2508 2528 3478 3584 3654 3723 3743 3791 3829 3860 3891 3931 3949 3969 3987 4003 4022 4033 4415 4424 5646 5675 5692 5723 6004 6017
1053 <![CDATA[<span class="text-white" style="font-size:xx-large"><svg class="lexicon-icon lexicon-icon-acessibilidade" focusable="false" id="yxya" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#acessibilidade"/></svg></span>]]>
1521 <![CDATA[<div class="card m-0 background-position-y-center background-position-x-center" style="border:none; background-size:cover; background-image: url(/o/adaptive-media/image/2909253/lg/cdc-convenios-home.png?t=1669057647127)"> <div class="card m-0 p-4 d-flex justify-content-end" style="border:none; min-height: 240px; background: linear-gradient(transparent 30%, rgba(0,0,0,0.6) 70%); background-blend-mode: darken;"> <a href="/credito-pessoal-consignado-convenios" class="stretched-link h5 text-white" aria-label="Saiba mais sobre CDC Convênio"> CDC Convênio </a> <div class="text-white"><p>Crédito pessoal na medida, com vantagens exclusivas pra você</p></div> </div> </div>]]>
1522 <![CDATA[<div class="card m-0 p-4 d-flex justify-content-end" style="border:none; min-height: 240px; background: linear-gradient(transparent 30%, rgba(0,0,0,0.6) 70%); background-blend-mode: darken;"> <a href="/credito-pessoal-consignado-convenios" class="stretched-link h5 text-white" aria-label="Saiba mais sobre CDC Convênio"> CDC Convênio </a> <div class="text-white"><p>Crédito pessoal na medida, com vantagens exclusivas pra você</p></div> </div>]]>
1594 <![CDATA[<div class="card m-0 background-position-y-center background-position-x-center" style="border:none; background-size:cover; background-image: url(/o/adaptive-media/image/2191866/md/mulher-com-oculos-de-realidade-virtual.jpg?t=1660251216072)"> <div class="card m-0 p-4 d-flex justify-content-end" style="border:none; min-height: 240px; background: linear-gradient(transparent 30%, rgba(0,0,0,0.6) 70%); background-blend-mode: darken;"> <a href="https://www.bnb.gov.br/fne-inovacao" class="stretched-link h5 text-white" aria-label="Saiba mais sobre FNE Inovação"> FNE Inovação </a> <div class="text-white"><p>Inove em produtos, serviços e processos da sua empresa.</p></div> </div> </div>]]>
1595 <![CDATA[<div class="card m-0 p-4 d-flex justify-content-end" style="border:none; min-height: 240px; background: linear-gradient(transparent 30%, rgba(0,0,0,0.6) 70%); background-blend-mode: darken;"> <a href="https://www.bnb.gov.br/fne-inovacao" class="stretched-link h5 text-white" aria-label="Saiba mais sobre FNE Inovação"> FNE Inovação </a> <div class="text-white"><p>Inove em produtos, serviços e processos da sua empresa.</p></div> </div>]]>
1667 <![CDATA[<div class="card m-0 background-position-y-center background-position-x-center" style="border:none; background-size:cover; background-image: url(/o/adaptive-media/image/1529191/md/Cart%C3%A3o+BNB+Agro.jpg?t=1652818815671)"> <div class="card m-0 p-4 d-flex justify-content-end" style="border:none; min-height: 240px; background: linear-gradient(transparent 30%, rgba(0,0,0,0.6) 70%); background-blend-mode: darken;"> <a href="/cartao-bnb-agro" class="stretched-link h5 text-white" aria-label="Saiba mais sobre Cartão BNB Agro"> Cartão BNB Agro </a> <div class="text-white"><p>Saiba como obter o financiamento para desenvolver o seu agronegócio</p></div> </div> </div>]]>
1668 <![CDATA[<div class="card m-0 p-4 d-flex justify-content-end" style="border:none; min-height: 240px; background: linear-gradient(transparent 30%, rgba(0,0,0,0.6) 70%); background-blend-mode: darken;"> <a href="/cartao-bnb-agro" class="stretched-link h5 text-white" aria-label="Saiba mais sobre Cartão BNB Agro"> Cartão BNB Agro </a> <div class="text-white"><p>Saiba como obter o financiamento para desenvolver o seu agronegócio</p></div> </div>]]>
1735 <![CDATA[<div class="card m-0 background-position-y-center background-position-x-center" style="border:none; background-size:cover; background-image: url(/o/adaptive-media/image/56619/md/por-do-sol.jpg?t=1623335791470)"> <div class="card m-0 p-4 d-flex justify-content-end" style="border:none; min-height: 240px; background: linear-gradient(transparent 30%, rgba(0,0,0,0.6) 70%); background-blend-mode: darken;"> <a href="/agroamigo-sol" class="stretched-link h5 text-white" aria-label="Saiba mais sobre Agroamigo Sol"> Agroamigo Sol </a> <div class="text-white"><p>Crédito para geração de energia solar no meio rural.</p></div> </div> </div>]]>
1736 <![CDATA[<div class="card m-0 p-4 d-flex justify-content-end" style="border:none; min-height: 240px; background: linear-gradient(transparent 30%, rgba(0,0,0,0.6) 70%); background-blend-mode: darken;"> <a href="/agroamigo-sol" class="stretched-link h5 text-white" aria-label="Saiba mais sobre Agroamigo Sol"> Agroamigo Sol </a> <div class="text-white"><p>Crédito para geração de energia solar no meio rural.</p></div> </div>]]>
1773 <![CDATA[<ul class="nav" style="max-height: 344px" role="navigation"> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/institucional"> <svg class="lexicon-icon lexicon-icon-bnb-simbolo mr-2" focusable="false" id="rbwt" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#bnb-simbolo"/></svg> Institucional </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/desenvolvimento-regional"> <svg class="lexicon-icon lexicon-icon-trajeto mr-2" focusable="false" id="ngpz" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#trajeto"/></svg> Desenvolvimento Regional </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/sustentabilidade"> <svg class="lexicon-icon lexicon-icon-responsabilidade-ambiental mr-2" focusable="false" id="rlrt" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#responsabilidade-ambiental"/></svg> Sustentabilidade </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/cultura"> <svg class="lexicon-icon lexicon-icon-mascaras-cultura mr-2" focusable="false" id="zswa" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#mascaras-cultura"/></svg> Cultura </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/etene"> <svg class="lexicon-icon lexicon-icon-prancheta-dados mr-2" focusable="false" id="emvq" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#prancheta-dados"/></svg> Etene </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/hub-de-inovacao"> <svg class="lexicon-icon lexicon-icon-foguete mr-2" focusable="false" id="mgro" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#foguete"/></svg> Hubine </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/fundeci"> <svg class="lexicon-icon lexicon-icon-pasta-indicadores mr-2" focusable="false" id="yljx" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#pasta-indicadores"/></svg> Fundeci </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/relacao-com-acionistas-e-investidores"> <svg class="lexicon-icon lexicon-icon-relacionamento-2 mr-2" focusable="false" id="zhou" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#relacionamento-2"/></svg> Relação com Acionistas e Investidores </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/open-finance"> <svg class="lexicon-icon lexicon-icon-open-finance mr-2" focusable="false" id="qhxk" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#open-finance"/></svg> Open Finance </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/atividades-financiadas"> <svg class="lexicon-icon lexicon-icon-credito-2 mr-2" focusable="false" id="hdwp" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#credito-2"/></svg> Atividades Financiadas </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/eventos"> <svg class="lexicon-icon lexicon-icon-programacao mr-2" focusable="false" id="tahm" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#programacao"/></svg> Eventos </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/revista-juridica"> <svg class="lexicon-icon lexicon-icon-livro-aberto mr-2" focusable="false" id="wvnc" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#livro-aberto"/></svg> Revista Jurídica </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/transparencia-e-prestacao-de-contas"> <svg class="lexicon-icon lexicon-icon-view mr-2" focusable="false" id="nahx" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/clay/icons.svg#view"/></svg> Transparência e Prestação de Contas </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/seguranca"> <svg class="lexicon-icon lexicon-icon-protegido mr-2" focusable="false" id="wcwf" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#protegido"/></svg> Segurança </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/privacidade-e-protecao-de-dados"> <svg class="lexicon-icon lexicon-icon-hidden mr-2" focusable="false" id="nzts" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/clay/icons.svg#hidden"/></svg> Privacidade e Proteção de Dados </a> </li> <li class="nav-item " role="presentation"> <a class="nav-link text-secondary-d1" href="https://www.bnb.gov.br/web/guest/sobre-o-banco"> <svg class="lexicon-icon lexicon-icon-bnb-simbolo mr-2" focusable="false" id="ytgm" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#bnb-simbolo"/></svg> Tudo Sobre o Banco </a> </li> </ul>]]>
1962 <![CDATA[<section class="bg-" style=""> <div class="container px-3 py-5"> <div class="row "> <div class="col-md-12"> <div id="fragment-0-iofy" > <div class="portlet-boundary portlet-boundary_com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_ portlet-static portlet-static-end portlet-breadcrumb " id="p_p_id_com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_INSTANCE_bdBSZcEPvDWD_"> <span id="p_com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_INSTANCE_bdBSZcEPvDWD"></span> <section class="portlet" id="portlet_com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_INSTANCE_bdBSZcEPvDWD"> <div class="portlet-content"> <div class="autofit-float autofit-row portlet-header mb-0"> </div> <div class=" portlet-content-container"> <div class="portlet-body"> <nav aria-label="Caminho de Navegação" id="_com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_INSTANCE_bdBSZcEPvDWD_breadcrumbs-defaultScreen"> <style> .isDisabled { color: darkslategray !important; pointer-events: none; } .confIcon{ height:0.7em; margin-top:0; } </style> <a class="breadcrumb-last-item" href="https://www.bnb.gov.br/web/guest/acesso-a-informacao">Acesso à Informação</a> <svg class="lexicon-icon lexicon-icon-caret-right-l" focusable="false" id="ifvk" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/clay/icons.svg#caret-right-l" /></svg> <span class="breadcrumb-item">Participação Social</span> </nav> </div> </div> </div> </section> </div> </div> <div id="fragment-1170299-bfrq" > <div class="fragment_1170299"> <h1 class="text-primary mt-4 mb-3"> Participação Social </h1> </div></div><style>.fragment_1170299 { }</style> <div id="fragment-0-vinp" > <div class="component-paragraph pb-3 text-left text-break"> <div><p class="lead">Nesta seção, são divulgadas informações referentes à realização de audiências públicas, consultas públicas ou outras formas de incentivo à participação popular realizadas pelo Banco do Nordeste.</p> </div> </div></div><style>.component-paragraph img { max-width: 100%; }</style><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> </div> </div> </div> </section>]]>
2340 <![CDATA[<section class="bg-light" style=""> <div class="container px-3 py-5"> <div class="row "> <div class="col-md-12"> <div id="fragment-0-ziwj" > <h2 class="component-heading mb-0 pb-3 text-dark text-left text-break fragment-heading-text-colored"> <span>Ouvidoria</span> </h2></div><style>.fragment-heading-text-colored a { color: inherit; }</style><script>(function() {var fragmentElement = document.querySelector('#fragment-0-ziwj'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h2","textColor":{"cssClass":"dark","rgbValue":"rgb(23, 23, 23)"}};/** * 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> <div id="fragment-0-fkeu" > <div class="component-paragraph pb-3 text-dark text-left text-break"> <div>O canal de atendimento da Ouvidoria representa os interesses do cidadão, atuando imparcialmente na intermediação de possíveis conflitos e, preventivamente, trabalhando pontos que devam ser aperfeiçoados para que o atendimento e o relacionamento do Banco do Nordeste com a sociedade sejam cada vez melhores.</div> </div></div><style>.component-paragraph img { max-width: 100%; }</style><script>(function() {var fragmentElement = document.querySelector('#fragment-0-fkeu'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"dark","rgbValue":"rgb(23, 23, 23)"}};/** * 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> <div id="fragment-0-ywua" > <div class="component-button pb-3 text-left text-break"> <div><a class="btn btn-nm btn-link" href="/ouvidoria" id="fragment-ywua-link">Acessar a Ouvidoria</a></div> </div></div><script>(function() {var fragmentElement = document.querySelector('#fragment-0-ywua'); 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> </div> </div> </div> </section>]]>
2426 <![CDATA[<section class="bg-quaternary" style=""> <div class="container px-3 py-5"> <div class="row "> <div class="col-md-12"> <div id="fragment-0-tjpf" > <h2 class="component-heading mb-0 pb-3 text-dark text-left text-break fragment-heading-text-colored"> <span>Audiências e Consultas Públicas</span> </h2></div><style>.fragment-heading-text-colored a { color: inherit; }</style><script>(function() {var fragmentElement = document.querySelector('#fragment-0-tjpf'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h2","textColor":{"cssClass":"dark","rgbValue":"rgb(23, 23, 23)"}};/** * 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> <div id="fragment-0-vxta" > <div class="component-paragraph pb-3 text-left text-break"> <div>O Banco do Nordeste não realizou, até o momento, nenhuma audiência ou consulta pública.</div> </div></div><style>.component-paragraph img { max-width: 100%; }</style><script>(function() {var fragmentElement = document.querySelector('#fragment-0-vxta'); 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> </div> </div> </div> </section>]]>
2494 <![CDATA[<section class="bg-" style=""> <div class="container px-3 py-5"> <div class="row "> <div class="col-md-6"> <div id="fragment-0-tffy" > <h2 class="component-heading mb-0 pb-3 text-left text-break "> <span>Conselhos e Órgãos Colegiados</span> </h2></div><style>.fragment-heading-text-colored a { color: inherit; }</style><script>(function() {var fragmentElement = document.querySelector('#fragment-0-tffy'); 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> <div id="fragment-0-qgmo" > <div class="component-paragraph pb-3 text-left text-break"> <div>Nesta seção, consta quais são os conselhos e órgãos colegiados mantidos pelo Banco do Nordeste, incluindo informações sobre a estrutura, legislação e afins.</div> </div></div><style>.component-paragraph img { max-width: 100%; }</style><script>(function() {var fragmentElement = document.querySelector('#fragment-0-qgmo'); 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> <div id="fragment-0-iwpi" > <div class="portlet-boundary portlet-boundary_com_liferay_site_navigation_site_map_web_portlet_SiteNavigationSiteMapPortlet_ portlet-static portlet-static-end portlet-site-map " id="p_p_id_com_liferay_site_navigation_site_map_web_portlet_SiteNavigationSiteMapPortlet_INSTANCE_6gubfPpzWTkf_"> <span id="p_com_liferay_site_navigation_site_map_web_portlet_SiteNavigationSiteMapPortlet_INSTANCE_6gubfPpzWTkf"></span> <section class="portlet" id="portlet_com_liferay_site_navigation_site_map_web_portlet_SiteNavigationSiteMapPortlet_INSTANCE_6gubfPpzWTkf"> <div class="portlet-content"> <div class="autofit-float autofit-row portlet-header mb-0"> </div> <div class=" portlet-content-container"> <div class="portlet-body"> <ul><li><a href="https://www.bnb.gov.br/web/guest/acesso-a-informacao/participacao-social/assembleia-geral"> Assembleia Geral</a></li><li><a href="https://www.bnb.gov.br/web/guest/acesso-a-informacao/participacao-social/conselho-fiscal"> Conselho Fiscal</a></li><li><a href="https://www.bnb.gov.br/web/guest/acesso-a-informacao/participacao-social/conselho-de-administracao"> Conselho de Administração</a></li><li><a href="https://www.bnb.gov.br/web/guest/acesso-a-informacao/participacao-social/comite-de-auditoria"> Comitê de Auditoria</a></li><li><a href="https://www.bnb.gov.br/web/guest/acesso-a-informacao/participacao-social/comite-de-pessoas-elegibilidade-sucessao-e-remuneracao"> Comitê de Pessoas, Elegibilidade, Sucessão e Remuneração</a></li><li><a href="https://www.bnb.gov.br/web/guest/acesso-a-informacao/participacao-social/comite-de-sustentabilidade-riscos-e-de-capital"> Comitê de Sustentabilidade, Riscos e de Capital</a></li></ul> </div> </div> </div> </section> </div> </div> </div> <div class="col-md-6"> <div id="fragment-0-rkkj" > <div class="portlet-boundary portlet-boundary_com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet_ portlet-static portlet-static-end portlet-asset-categories-navigation " id="p_p_id_com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet_INSTANCE_ulik6shVhZZz_"> <span id="p_com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet_INSTANCE_ulik6shVhZZz"></span> <section class="portlet" id="portlet_com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet_INSTANCE_ulik6shVhZZz"> <div class="portlet-content"> <div class="autofit-float autofit-row portlet-header mb-0"> </div> <div class=" portlet-content-container"> <div class="portlet-body"> <div xmlns="xhtml" class="centered"> <ul class="organograma"> <li class="root"> <div class="org max ">Assembléia Geral</div> <ul class="assessor" role="presentation"> <li class="leaf"> <div class="org ass">Conselho Fiscal</div> </li> </ul> <ul class="comum"> <li class=""> <div class="org max ">Conselho de Administração</div> <ul class="assessor" role="presentation"> <li class="leaf"> <div class="org ass">Comitê de Auditoria</div> </li> <li class="leaf"> <div class="org ass">Comitê de Pessoas, Elegibilidade, Sucessão e Remuneração</div> </li> <li class="leaf"> <div class="org ass">Comitê de Sustentabilidade, Riscos e de Capital</div> </li> </ul> <ul class="comum"> <li class=""> <div class="org max trunc">Diretoria Executiva</div> </li> </ul> </li> </ul> </li> </ul> </div> <style> /* Estilos baseados em ZK Template Exampleson https://github.com/zkoss-demo/zk-template-examples/blob/orgchart/README.md */ .organograma { display: inline-block; } .organograma, .organograma ul { padding: 0; margin: 0; } .organograma ul { display: flex; align-self: center; } .organograma li { display: flex; flex-direction: column; position: relative; } .organograma > li > .org, .organograma ul.comum > li > .org { align-self: center; position: relative; margin: 20px 5px; } .organograma .collapsed > ul { display: none; } /* conexões */ .organograma > li > .org::after, .organograma ul.comum > li::before, .organograma ul.comum > li > .org::after, .organograma ul.comum > li > .org::before { box-sizing: border-box; content: ''; position: absolute; z-index: -1; z-index: 0; border: 0px solid #ccc; } .organograma ul.comum > li:not(:only-child)::before { border-top-width: 2px; width: 100%; height: 20px; top: 0px; } .organograma ul.comum > li:first-child::before { width: calc(50% + 1px); right: 0; border-left-width: 2px; border-top-left-radius: 7px; } .organograma ul.comum > li:last-child::before { width: calc(50% + 1px); border-right-width: 2px; border-top-right-radius: 7px; } .organograma > li > .org::after, .organograma ul.comum > li > .org::after, .organograma ul.comum > li > .org::before { border-left-width: 2px; width: 2px; height: 20px; left: calc(50% - 1px); } .organograma ul.comum > li > .org::before { top: -20px; } .organograma > li > .org::after, .organograma ul.comum > li > .org::after { bottom: -20px; } .organograma ul.comum > li:first-child:not(:only-child) > .org::before, .organograma ul.comum > li:last-child:not(:only-child) > .org::before { border-left-width: 0px; } .organograma .leaf > .org::after, .organograma .root > .org::before, .organograma .collapsed > .org::after { display: none; } /* estilos gerais das organizações */ .centered { text-align: center; } .organograma .org { display: inline-block; color: white; line-height: 1.15em; font-size: .85em; } /* diminui a fonte em resoluções menores */ @media(max-width: 767px) { .organograma .org { font-size:small; } } .organograma .org.max { background-color: var(--salmon); color: var(--primary); } .organograma .org.pre, .organograma .org.dir { background-color: var(--primary); text-shadow: 1px 1px 2px var(--wine); } .organograma .org.sup { background-color: var(--gray); text-shadow: 1px 1px 2px var(--gray-dark); } .organograma .org.ass { background-color: var(--pink); text-shadow: 1px 1px 2px var(--primary); } /* a classe "exp" foi criada nesse modelo, ela não vem de uma chave de categoria. é usada para indicar que orgãoes podem expandir/contrair */ .organograma .exp { cursor: pointer } .organograma .exp:hover { background-color: var(--pink); } /* em desuso */ .organograma .org.abs { background-color: var(--dark-gray); text-shadow: 1px 1px 2px var(--gray); } .organograma > li > .org, .organograma .comum > li > .org { padding: 10px; border-radius: 10px 10px 10px 0; } .organograma .assessor > li > .org { padding: 4px 10px; border-radius: 4px 4px 4px 0; font-size: 12px; } .organograma .pre .assessor > li:last-child { padding-bottom: 20px; } .organograma .org .collapse { position: absolute; bottom: -15px; left: calc(50% - 6px); color: #EEEEEE; background-color: #F88A27; border-radius: 6px; height: 12px; width: 12px; font-size: 12px; text-align: center; } /* modificações da biblioteca original para organizações assessoras (filhas que aparecem à esquerda em conexão mãe > filhas) */ .organograma .assessor { display: block; width: 200px; text-align: right; right: 99px; position: relative; border-right: 2px solid #ccc; } .organograma .assessor > li { position: relative; display: block; } .organograma .assessor > li > .org { position: relative; margin: 5px 20px; } .organograma .assessor > li::before, .organograma .assessor > li::after, .organograma .assessor > li > .org::after, .organograma .assessor > li > .org::before { box-sizing: border-box; content: ''; position: absolute; z-index: -1; z-index: 0; border: 0px solid #ccc; } .organograma .assessor > li > .org::after, .organograma .assessor > li > .org::before { border-top-width: 2px; width: 20px; height: 2px; left: calc(100%); } .organograma .assessor > li > .org::before { top: calc(50%); } .organograma .assessor > li > .org::after { bottom: -20px; } /* disposição vertical de organizações filhas */ .organograma ul.comum > li.vertical > ul { flex-direction: column; align-items: flex-start; margin: 0 5px; position: relative; } .organograma ul.comum > li.vertical > ul > li.vertical > ul { margin: 20px 0px 0 10px; } .organograma ul.comum > li.vertical > ul > li > .org { margin: 10px 0 0 10px; align-self: auto; } /* conectores nas disposição vertical */ .organograma ul.comum > li.vertical > ul::before { box-sizing: border-box; content: ''; position: absolute; top: -2px; left: 10px; height: 10px; width: calc(50% - 19px); border-top: 2px solid #CCCCCC; } .organograma ul.comum > li.vertical > .org::after { border-width: 0 2px 2px 0; border-bottom-right-radius: 7px; width: 10px; left: auto; right: calc(50% - 1px); } .organograma ul.comum > li.vertical > ul > li::before { border-width: 0 0 0 2px; left: 0px; height: 100%; width: 10px; border-radius: 0; } .organograma ul.comum > li.vertical > ul > li:first-child::before { top: -2px; height: calc(100% + 2px); border-top-width: 2px; border-top-left-radius: 7px; } .organograma ul.comum > li.vertical > ul > li:last-child::before { height: calc(50% + 6px); border-bottom-width: 2px; border-bottom-left-radius: 7px; } .organograma ul.comum > li.vertical > ul > li > .org::before { height: 2px; width: 8px; top: calc(50% - 1px); left: -8px; border-width: 2px 0 0 0; } .organograma ul.comum > li.vertical > ul > li:last-child > .org::before { display: none; } .organograma > li > .org.trunc::after, .organograma ul.comum > li > .org.trunc::after { border: none; } </style> <script> // verificar se precisa usar AUI.ready() function expandirOrg(org) { ramo = org.parentNode ramo.classList.toggle("collapsed") } orgs = document.querySelectorAll(".org"); orgs.forEach( org => { if (org.classList.contains("exp")) { org.addEventListener("click", function() { expandirOrg(org); }); } }); window.addEventListener("resize", function() { contraiOrgs(this.innerWidth) }); function contraiOrgs(size) { if (size < 1200 ) { orgs.forEach( org => { if (org.classList.contains("exp") && !org.parentNode.classList.contains("collapsed")) { expandirOrg(org); } }) } } contraiOrgs(window.innerWidth) </script> </div> </div> </div> </section> </div> </div> </div> </div> </div> </section>]]>
3570 <![CDATA[<section class="bg-light" style=""> <div class="container px-3 py-5"> <div class="row "> <div class="col-md-12"> <div id="fragment-0-vyot" > <h2 class="component-heading mb-0 pb-3 text-left text-break "> <span>Composição Diretoria Executiva e Conselho de Administração</span> </h2></div><style>.fragment-heading-text-colored a { color: inherit; }</style><script>(function() {var fragmentElement = document.querySelector('#fragment-0-vyot'); 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> <div id="fragment-47410-nvmc" > <div class="card card-horizontal shadow"> <div class="card-body"> <div class="card-row"> <div class="autofit-col align-self-start" style="font-size:4.5rem"> <svg class="lexicon-icon lexicon-icon-arquivo-pdf text-tertiary mt-1" focusable="false" id="onhp" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#arquivo-pdf" /></svg> </div> <div class="autofit-col autofit-col-expand autofit-col-gutters"> <div class="card-title"><div class="h6"><a href="https://www.bnb.gov.br/documents/45883/3995796/Composi%C3%A7%C3%A3o+Diretoria+Executiva+e+Conselho+de+Administra%C3%A7%C3%A3o+-+2012+a+2022.pdf/7c307b90-9b39-58d7-8c15-0d6a8aa06a3a?version=1.0&amp;t=1682355829333&amp;download=true" class="stretched-link">Composição Diretoria Executiva e Conselho de Administração - 2012 a 2022.pdf</a></div></div> <div class="card-subtitle"> <span class="font-weight-bold">Atualizado em: </span>24/04/2023 </div> <div class="card-detail"> <span class="label label-unstyled text-uppercase" id="tani"><span class="label-item label-item-expand">pdf</span></span><span class="label label-unstyled text-uppercase" id="vsis"><span class="label-item label-item-expand">562 KB</span></span> </div> </div> </div> </div> </div></div><style>.fragment_136960 { }</style> </div> </div> </div> </section>]]>
3605 <![CDATA[<div class="autofit-col align-self-start" style="font-size:4.5rem"> <svg class="lexicon-icon lexicon-icon-arquivo-pdf text-tertiary mt-1" focusable="false" id="onhp" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#arquivo-pdf" /></svg> </div>]]>
3642 <![CDATA[<section class="bg-quaternary" style=""> <div class="container px-3 py-5"> <div class="row "> <div class="col-md-12"> <div id="fragment-0-cxen" > <h2 class="component-heading mb-0 pb-3 text-left text-break "> <span>Conselhos e Comitês externos</span> </h2></div><script>(function() {var fragmentElement = document.querySelector('#fragment-0-cxen'); 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> <div id="fragment-47410-xztc" > <div class="card card-horizontal shadow"> <div class="card-body"> <div class="card-row"> <div class="autofit-col align-self-start" style="font-size:4.5rem"> <svg class="lexicon-icon lexicon-icon-arquivo-pdf text-tertiary mt-1" focusable="false" id="uwec" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#arquivo-pdf" /></svg> </div> <div class="autofit-col autofit-col-expand autofit-col-gutters"> <div class="card-title"><div class="h6"><a href="https://www.bnb.gov.br/documents/45803/1362251/Conselhos+e+Comit%C3%AAs+externos.ods.pdf/e83eb9f3-79ee-664d-2c93-2ad66230eceb?version=4.0&amp;t=1686072438793&amp;download=true" class="stretched-link">Conselhos e Comitês externos.ods</a></div></div> <div class="card-subtitle"> <span class="font-weight-bold">Atualizado em: </span>06/06/2023 </div> <div class="card-detail"> <span class="label label-unstyled text-uppercase" id="ypqw"><span class="label-item label-item-expand">pdf</span></span><span class="label label-unstyled text-uppercase" id="ravl"><span class="label-item label-item-expand">95 KB</span></span> </div> </div> </div> </div> </div></div> </div> </div> </div> </section>]]>
3675 <![CDATA[<div class="autofit-col align-self-start" style="font-size:4.5rem"> <svg class="lexicon-icon lexicon-icon-arquivo-pdf text-tertiary mt-1" focusable="false" id="uwec" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#arquivo-pdf" /></svg> </div>]]>
3711 <![CDATA[<section class="bg-secondary" style=""> <div class="container px-3 py-5"> <div class="row "> <div class="col-md-12"> <div id="fragment-0-ajvx" > <h2 class="component-heading mb-0 pb-3 text-white text-left text-break fragment-heading-text-colored"> <span>Conferências</span> </h2></div><script>(function() {var fragmentElement = document.querySelector('#fragment-0-ajvx'); 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> <div id="fragment-0-wopq" > <div class="component-paragraph pb-3 text-white text-left text-break"> <div>O Banco do Nordeste não realizou, até o momento, nenhuma conferência.</div> </div></div><style>.component-paragraph img { max-width: 100%; }</style><script>(function() {var fragmentElement = document.querySelector('#fragment-0-wopq'); 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> </div> </div> </div> </section>]]>
3777 <![CDATA[<section class="bg-primary" style=""> <div class="container px-3 py-5"> <div class="row "> <div class="col-md-12"> <div id="fragment-0-mvuw" > <h2 class="component-heading mb-0 pb-3 text-white text-left text-break fragment-heading-text-colored"> <span>Editais de Chamamento Público</span> </h2></div><style>.fragment-heading-text-colored a { color: inherit; }</style><script>(function() {var fragmentElement = document.querySelector('#fragment-0-mvuw'); 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> <div id="fragment-47411-rjgm" > <div class="card mb-3 shadow "> <div class="d-flex flex-column flex-lg-row"> <div class="px-5 pt-5 pb-4 pb-lg-5 pr-lg-5"> <div class="lexicon-icon-box rounded-circle bg-tertiary text-white"> <svg class="lexicon-icon lexicon-icon-document-text" focusable="false" id="qnyt" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/clay/icons.svg#document-text" /></svg> </div> </div> <div class="px-5 pb-5 pl-lg-0 pt-lg-5"> <div class="h4"> <div>Editais de Patrocínio</div> </div> <div> <div><p>Consulte os editais de patrocínio vigentes e expirados do Banco do Nordeste.</p> </div> </div> <div><a class="btn btn-link" href="/acesso-a-informacao/licitacoes-e-contratos/patrocinios/editais" rel=""> Saiba mais </a></div> </div> </div> </div> </div><style>.fragment_169311 { }</style><script>(function() {var fragmentElement = document.querySelector('#fragment-47411-rjgm'); var configuration = {"spritemap":"clay","symbol":"document-text","cardShadow":"shadow","borderRadius":"","externalLink":false,"bottomSpacing":"mb-3","btnStyle":"btn-link","btLegend":"","cardOrientation":"d-flex flex-column flex-lg-row","iconStyle":"bg-tertiary text-white","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> <div id="fragment-47411-tcol" > <div class="card mb-3 shadow "> <div class="d-flex flex-column flex-lg-row"> <div class="px-5 pt-5 pb-4 pb-lg-5 pr-lg-5"> <div class="lexicon-icon-box rounded-circle bg-tertiary text-white"> <svg class="lexicon-icon lexicon-icon-document-text" focusable="false" id="zgxw" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/clay/icons.svg#document-text" /></svg> </div> </div> <div class="px-5 pb-5 pl-lg-0 pt-lg-5"> <div class="h4"> <div>Editais do Fundeci</div> </div> <div> <div><p>Nesta página, são divulgadas informações sobre os editais de seleção de projetos do Fundeci.</p> </div> </div> <div><a class="btn btn-link" href="/fundeci/editais" rel=""> Saiba mais </a></div> </div> </div> </div> </div><script>(function() {var fragmentElement = document.querySelector('#fragment-47411-tcol'); var configuration = {"spritemap":"clay","symbol":"document-text","cardShadow":"shadow","borderRadius":"","externalLink":false,"bottomSpacing":"mb-3","btnStyle":"btn-link","btLegend":"","cardOrientation":"d-flex flex-column flex-lg-row","iconStyle":"bg-tertiary text-white","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> <div id="fragment-47411-qdap" > <div class="card mb-3 shadow "> <div class="d-flex flex-column flex-lg-row"> <div class="px-5 pt-5 pb-4 pb-lg-5 pr-lg-5"> <div class="lexicon-icon-box rounded-circle bg-tertiary text-white"> <svg class="lexicon-icon lexicon-icon-document-text" focusable="false" id="rcpn" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/clay/icons.svg#document-text" /></svg> </div> </div> <div class="px-5 pb-5 pl-lg-0 pt-lg-5"> <div class="h4"> <div>Editais do Hub de Inovação</div> </div> <div> <div><p>Nesta página, são divulgadas as principais informações dos Editais do Hub de Inovação do Banco do Nordeste.</p> </div> </div> <div><a class="btn btn-link" href="/hub-de-inovacao/coworking/editais" rel=""> Saiba mais </a></div> </div> </div> </div> </div><script>(function() {var fragmentElement = document.querySelector('#fragment-47411-qdap'); var configuration = {"spritemap":"clay","symbol":"document-text","cardShadow":"shadow","borderRadius":"","externalLink":false,"bottomSpacing":"mb-3","btnStyle":"btn-link","btLegend":"","cardOrientation":"d-flex flex-column flex-lg-row","iconStyle":"bg-tertiary text-white","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> </div> </div> </div> </section>]]>
3919 <![CDATA[<section class="bg-" style=""> <div class="container px-3 py-5"> <div class="row "> <div class="col-md-12"> <div id="fragment-0-iykd" > <h2 class="component-heading mb-0 pb-3 text-left text-break "> <span>Outras Ações - Mecanismos de Participação Popular</span> </h2></div><script>(function() {var fragmentElement = document.querySelector('#fragment-0-iykd'); 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> <div id="fragment-0-zvwu" > <h3 class="component-heading mb-0 pb-3 text-primary text-left text-break fragment-heading-text-colored"> <span>Prodeter</span> </h3></div><script>(function() {var fragmentElement = document.querySelector('#fragment-0-zvwu'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h3","textColor":{"cssClass":"primary","rgbValue":"rgb(122, 18, 44)"}};/** * 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> <div id="fragment-0-ffkn" > <div class="component-paragraph pb-3 text-left text-break"> <div>O Banco do Nordeste mantém o Programa de Desenvolvimento Territorial – Prodeter que busca promover o planejamento, a implementação e o controle do processo de desenvolvimento sustentável dos territórios e o fortalecimento da sua economia.</div> </div></div><style>.component-paragraph img { max-width: 100%; }</style><script>(function() {var fragmentElement = document.querySelector('#fragment-0-ffkn'); 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> <div id="fragment-0-huhr" > <div class="component-button pb-3 text-left text-break"> <div><a class="btn btn-nm btn-link" href="/prodeter" id="fragment-huhr-link">Acessar o Prodeter</a></div> </div></div><script>(function() {var fragmentElement = document.querySelector('#fragment-0-huhr'); 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> <div id="fragment-0-rhta" > <div class="py-3"></div></div><script>(function() {var fragmentElement = document.querySelector('#fragment-0-rhta'); 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> <div id="fragment-2316268-chpi" > <script id="data_chpi" type="application/json">{"title":"Pesquisas de Satisfação","type":0,"typeSettings":{"anyClassTypeDLFileEntryAssetRendererFactory":"47046","orderByColumn1":"ddm__keyword__47047__DataReferência"}}</script> <h3 class="mb-0 pb-3 text-primary text-left text-break fragment-heading-text-colored"> Pesquisas de Satisfação </h3> <span class="loading-animation"></span> <div class="documents-list"></div> </div><style>.page-item button { border-radius: 2rem !important; }</style><script>(function() {var fragmentElement = document.querySelector('#fragment-2316268-chpi'); var configuration = {"contentSetId":"2706895","showDateConversions":false,"showModifiedDate":true,"showRefDate":true,"textAlign":"left","pageSize":"50","showYear":false,"groupBy":"groupByYear","textColor":{"cssClass":"primary","rgbValue":"rgb(122, 18, 44)"},"useTitle":true,"usePagination":false,"bottomSpacing":"3","labelForYear":"Ocorrido em","useContentSetTitle":true,"labelForRefDate":"Publicado em","headingLevel":"h3","showCreateDate":false,"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> <div id="fragment-2316268-pxhi" > <script id="data_pxhi" type="application/json">{"title":"Pesquisas de Avaliação dos Serviços Públicos Prestados","type":0,"typeSettings":{"anyClassTypeDLFileEntryAssetRendererFactory":"47046","orderByColumn1":"ddm__keyword__47047__DataReferência"}}</script> <h3 class="mb-0 pb-3 text-primary text-left text-break fragment-heading-text-colored"> Pesquisas de Avaliação dos Serviços Públicos Prestados </h3> <span class="loading-animation"></span> <div class="documents-list"></div> </div><script>(function() {var fragmentElement = document.querySelector('#fragment-2316268-pxhi'); var configuration = {"contentSetId":"2706897","showDateConversions":false,"showModifiedDate":true,"showRefDate":true,"textAlign":"left","pageSize":"50","showYear":false,"groupBy":"groupByYear","textColor":{"cssClass":"primary","rgbValue":"rgb(122, 18, 44)"},"useTitle":true,"usePagination":false,"bottomSpacing":"3","labelForYear":"Ocorrido em","useContentSetTitle":true,"labelForRefDate":"Publicado em","headingLevel":"h3","showCreateDate":false,"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> </div> </div> </div> </section>]]>
5105 <![CDATA[<a aria-label="Instagram" href="https://www.instagram.com/bancodonordeste/" target="_blank" class="mx-2 lexicon-icon-box bg-dark text-white rounded-circle" style="font-size:1.3em" role="menuitem"> <span> <svg class="lexicon-icon lexicon-icon-social-instagram" focusable="false" id="btne" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#social-instagram"/></svg> </span> <span class="hide-accessible">Instagram</span> </a>]]>
5110 <![CDATA[<a aria-label="Youtube" href="https://www.youtube.com/bancodonordesteoficial" target="_blank" class="mx-2 lexicon-icon-box bg-dark text-white rounded-circle" style="font-size:1.3em" role="menuitem"> <span> <svg class="lexicon-icon lexicon-icon-social-youtube" focusable="false" id="xpis" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#social-youtube"/></svg> </span> <span class="hide-accessible">Youtube</span> </a>]]>
5115 <![CDATA[<a aria-label="Facebook" href="https://www.facebook.com/bancodonordeste" target="_blank" class="mx-2 lexicon-icon-box bg-dark text-white rounded-circle" style="font-size:1.3em" role="menuitem"> <span> <svg class="lexicon-icon lexicon-icon-social-facebook" focusable="false" id="mtla" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#social-facebook"/></svg> </span> <span class="hide-accessible">Facebook</span> </a>]]>
5120 <![CDATA[<a aria-label="Twitter" href="https://twitter.com/BancodoNordeste" target="_blank" class="mx-2 lexicon-icon-box bg-dark text-white rounded-circle" style="font-size:1.3em" role="menuitem"> <span> <svg class="lexicon-icon lexicon-icon-social-twitter" focusable="false" id="hrui" role="presentation"><use xlink:href="https://www.bnb.gov.br/o/bnb-dxp-theme/images/bnb/icons.svg#social-twitter"/></svg> </span> <span class="hide-accessible">Twitter</span> </a>]]>
5203 <![CDATA[<img alt="Selo da Ética" style="width:154px" src="https://www.bnb.gov.br/o/bnb-dxp-theme/images/selo-etica.svg" />]]>
5206 <![CDATA[<img alt="Selo da Lei de Acesso à Informação" style="width:42px" src="https://www.bnb.gov.br/o/bnb-dxp-theme/images/selo-lai.svg" />]]>
731 <![CDATA[<style data-senna-track="temporary" type="text/css"> </style>]]>
2237 <![CDATA[<style> .isDisabled { color: darkslategray !important; pointer-events: none; } .confIcon{ height:0.7em; margin-top:0; } </style>]]>
2296 <![CDATA[<style>.fragment_1170299 { }</style>]]>
2304 <![CDATA[<style>.component-paragraph img { max-width: 100%; }</style>]]>
2352 <![CDATA[<style>.fragment-heading-text-colored a { color: inherit; }</style>]]>
2372 <![CDATA[<style>.component-paragraph img { max-width: 100%; }</style>]]>
2438 <![CDATA[<style>.fragment-heading-text-colored a { color: inherit; }</style>]]>
2458 <![CDATA[<style>.component-paragraph img { max-width: 100%; }</style>]]>
2506 <![CDATA[<style>.fragment-heading-text-colored a { color: inherit; }</style>]]>
2526 <![CDATA[<style>.component-paragraph img { max-width: 100%; }</style>]]>
3165 <![CDATA[<style> /* Estilos baseados em ZK Template Exampleson https://github.com/zkoss-demo/zk-template-examples/blob/orgchart/README.md */ .organograma { display: inline-block; } .organograma, .organograma ul { padding: 0; margin: 0; } .organograma ul { display: flex; align-self: center; } .organograma li { display: flex; flex-direction: column; position: relative; } .organograma > li > .org, .organograma ul.comum > li > .org { align-self: center; position: relative; margin: 20px 5px; } .organograma .collapsed > ul { display: none; } /* conexões */ .organograma > li > .org::after, .organograma ul.comum > li::before, .organograma ul.comum > li > .org::after, .organograma ul.comum > li > .org::before { box-sizing: border-box; content: ''; position: absolute; z-index: -1; z-index: 0; border: 0px solid #ccc; } .organograma ul.comum > li:not(:only-child)::before { border-top-width: 2px; width: 100%; height: 20px; top: 0px; } .organograma ul.comum > li:first-child::before { width: calc(50% + 1px); right: 0; border-left-width: 2px; border-top-left-radius: 7px; } .organograma ul.comum > li:last-child::before { width: calc(50% + 1px); border-right-width: 2px; border-top-right-radius: 7px; } .organograma > li > .org::after, .organograma ul.comum > li > .org::after, .organograma ul.comum > li > .org::before { border-left-width: 2px; width: 2px; height: 20px; left: calc(50% - 1px); } .organograma ul.comum > li > .org::before { top: -20px; } .organograma > li > .org::after, .organograma ul.comum > li > .org::after { bottom: -20px; } .organograma ul.comum > li:first-child:not(:only-child) > .org::before, .organograma ul.comum > li:last-child:not(:only-child) > .org::before { border-left-width: 0px; } .organograma .leaf > .org::after, .organograma .root > .org::before, .organograma .collapsed > .org::after { display: none; } /* estilos gerais das organizações */ .centered { text-align: center; } .organograma .org { display: inline-block; color: white; line-height: 1.15em; font-size: .85em; } /* diminui a fonte em resoluções menores */ @media(max-width: 767px) { .organograma .org { font-size:small; } } .organograma .org.max { background-color: var(--salmon); color: var(--primary); } .organograma .org.pre, .organograma .org.dir { background-color: var(--primary); text-shadow: 1px 1px 2px var(--wine); } .organograma .org.sup { background-color: var(--gray); text-shadow: 1px 1px 2px var(--gray-dark); } .organograma .org.ass { background-color: var(--pink); text-shadow: 1px 1px 2px var(--primary); } /* a classe "exp" foi criada nesse modelo, ela não vem de uma chave de categoria. é usada para indicar que orgãoes podem expandir/contrair */ .organograma .exp { cursor: pointer } .organograma .exp:hover { background-color: var(--pink); } /* em desuso */ .organograma .org.abs { background-color: var(--dark-gray); text-shadow: 1px 1px 2px var(--gray); } .organograma > li > .org, .organograma .comum > li > .org { padding: 10px; border-radius: 10px 10px 10px 0; } .organograma .assessor > li > .org { padding: 4px 10px; border-radius: 4px 4px 4px 0; font-size: 12px; } .organograma .pre .assessor > li:last-child { padding-bottom: 20px; } .organograma .org .collapse { position: absolute; bottom: -15px; left: calc(50% - 6px); color: #EEEEEE; background-color: #F88A27; border-radius: 6px; height: 12px; width: 12px; font-size: 12px; text-align: center; } /* modificações da biblioteca original para organizações assessoras (filhas que aparecem à esquerda em conexão mãe > filhas) */ .organograma .assessor { display: block; width: 200px; text-align: right; right: 99px; position: relative; border-right: 2px solid #ccc; } .organograma .assessor > li { position: relative; display: block; } .organograma .assessor > li > .org { position: relative; margin: 5px 20px; } .organograma .assessor > li::before, .organograma .assessor > li::after, .organograma .assessor > li > .org::after, .organograma .assessor > li > .org::before { box-sizing: border-box; content: ''; position: absolute; z-index: -1; z-index: 0; border: 0px solid #ccc; } .organograma .assessor > li > .org::after, .organograma .assessor > li > .org::before { border-top-width: 2px; width: 20px; height: 2px; left: calc(100%); } .organograma .assessor > li > .org::before { top: calc(50%); } .organograma .assessor > li > .org::after { bottom: -20px; } /* disposição vertical de organizações filhas */ .organograma ul.comum > li.vertical > ul { flex-direction: column; align-items: flex-start; margin: 0 5px; position: relative; } .organograma ul.comum > li.vertical > ul > li.vertical > ul { margin: 20px 0px 0 10px; } .organograma ul.comum > li.vertical > ul > li > .org { margin: 10px 0 0 10px; align-self: auto; } /* conectores nas disposição vertical */ .organograma ul.comum > li.vertical > ul::before { box-sizing: border-box; content: ''; position: absolute; top: -2px; left: 10px; height: 10px; width: calc(50% - 19px); border-top: 2px solid #CCCCCC; } .organograma ul.comum > li.vertical > .org::after { border-width: 0 2px 2px 0; border-bottom-right-radius: 7px; width: 10px; left: auto; right: calc(50% - 1px); } .organograma ul.comum > li.vertical > ul > li::before { border-width: 0 0 0 2px; left: 0px; height: 100%; width: 10px; border-radius: 0; } .organograma ul.comum > li.vertical > ul > li:first-child::before { top: -2px; height: calc(100% + 2px); border-top-width: 2px; border-top-left-radius: 7px; } .organograma ul.comum > li.vertical > ul > li:last-child::before { height: calc(50% + 6px); border-bottom-width: 2px; border-bottom-left-radius: 7px; } .organograma ul.comum > li.vertical > ul > li > .org::before { height: 2px; width: 8px; top: calc(50% - 1px); left: -8px; border-width: 2px 0 0 0; } .organograma ul.comum > li.vertical > ul > li:last-child > .org::before { display: none; } .organograma > li > .org.trunc::after, .organograma ul.comum > li > .org.trunc::after { border: none; } </style>]]>
3582 <![CDATA[<style>.fragment-heading-text-colored a { color: inherit; }</style>]]>
3619 <![CDATA[<style>.fragment_136960 { }</style>]]>
3741 <![CDATA[<style>.component-paragraph img { max-width: 100%; }</style>]]>
3789 <![CDATA[<style>.fragment-heading-text-colored a { color: inherit; }</style>]]>
3828 <![CDATA[<style>.fragment_169311 { }</style>]]>
3967 <![CDATA[<style>.component-paragraph img { max-width: 100%; }</style>]]>
4031 <![CDATA[<style>.page-item button { border-radius: 2rem !important; }</style>]]>
101 <![CDATA[<script id="f5_cspm">(function(){var f5_cspm={f5_p:'MECGLMKNFCBCKAOPJMFEGCHJBLBPCMOGKBMFPIFGDOPKALBDKLLLNKDDNABMHMCEEEMBABIGAAEPBLOMIHEAKALFAAEEJCLEJINOLHHJEFDEAFFIKBBPINAHEGFLDHEE',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 '29'; }, getLayoutRelativeControlPanelURL: function() { return '/group/guest/~/control_panel/manage'; }, getLayoutRelativeURL: function() { return '/web/guest/acesso-a-informacao/participacao-social'; }, getLayoutURL: function() { return 'https://www.bnb.gov.br/web/guest/acesso-a-informacao/participacao-social'; }, 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\x2fparticipacao-social'; }, 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 '54'; }, 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=54'; }, 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=1694179751488'; }, 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 = 'nLBrSOEA'; Liferay.currentURL = '\x2fweb\x2fguest\x2facesso-a-informacao\x2fparticipacao-social'; Liferay.currentURLEncoded = '\x252Fweb\x252Fguest\x252Facesso-a-informacao\x252Fparticipacao-social'; // ]]> </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>]]>
770 <![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>]]>
799 <![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>]]>
911 <![CDATA[<script data-senna-track="temporary" type="text/javascript"> if (window.Analytics) { window._com_liferay_document_library_analytics_isViewFileEntry = false; } </script>]]>
1047 <![CDATA[<script> new window.VLibras.Widget('https://vlibras.gov.br/app'); </script>]]>
2306 <![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>]]>
2354 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-ziwj'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h2","textColor":{"cssClass":"dark","rgbValue":"rgb(23, 23, 23)"}};/** * 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>]]>
2374 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-fkeu'); var configuration = {"textAlign":"left","bottomSpacing":"3","textColor":{"cssClass":"dark","rgbValue":"rgb(23, 23, 23)"}};/** * 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>]]>
2392 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-ywua'); 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>]]>
2440 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-tjpf'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h2","textColor":{"cssClass":"dark","rgbValue":"rgb(23, 23, 23)"}};/** * 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>]]>
2460 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-vxta'); 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>]]>
2508 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-tffy'); 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>]]>
2528 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-qgmo'); 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>]]>
3478 <![CDATA[<script> // verificar se precisa usar AUI.ready() function expandirOrg(org) { ramo = org.parentNode ramo.classList.toggle("collapsed") } orgs = document.querySelectorAll(".org"); orgs.forEach( org => { if (org.classList.contains("exp")) { org.addEventListener("click", function() { expandirOrg(org); }); } }); window.addEventListener("resize", function() { contraiOrgs(this.innerWidth) }); function contraiOrgs(size) { if (size < 1200 ) { orgs.forEach( org => { if (org.classList.contains("exp") && !org.parentNode.classList.contains("collapsed")) { expandirOrg(org); } }) } } contraiOrgs(window.innerWidth) </script>]]>
3584 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-vyot'); 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>]]>
3654 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-cxen'); 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>]]>
3723 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-ajvx'); 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>]]>
3743 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-wopq'); 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>]]>
3791 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-mvuw'); 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>]]>
3829 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-47411-rjgm'); var configuration = {"spritemap":"clay","symbol":"document-text","cardShadow":"shadow","borderRadius":"","externalLink":false,"bottomSpacing":"mb-3","btnStyle":"btn-link","btLegend":"","cardOrientation":"d-flex flex-column flex-lg-row","iconStyle":"bg-tertiary text-white","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>]]>
3860 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-47411-tcol'); var configuration = {"spritemap":"clay","symbol":"document-text","cardShadow":"shadow","borderRadius":"","externalLink":false,"bottomSpacing":"mb-3","btnStyle":"btn-link","btLegend":"","cardOrientation":"d-flex flex-column flex-lg-row","iconStyle":"bg-tertiary text-white","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>]]>
3891 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-47411-qdap'); var configuration = {"spritemap":"clay","symbol":"document-text","cardShadow":"shadow","borderRadius":"","externalLink":false,"bottomSpacing":"mb-3","btnStyle":"btn-link","btLegend":"","cardOrientation":"d-flex flex-column flex-lg-row","iconStyle":"bg-tertiary text-white","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>]]>
3931 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-iykd'); 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>]]>
3949 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-zvwu'); var configuration = {"textAlign":"left","bottomSpacing":"3","headingLevel":"h3","textColor":{"cssClass":"primary","rgbValue":"rgb(122, 18, 44)"}};/** * 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>]]>
3969 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-ffkn'); 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>]]>
3987 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-huhr'); 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>]]>
4003 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-0-rhta'); 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>]]>
4022 <![CDATA[<script id="data_chpi" type="application/json">{"title":"Pesquisas de Satisfação","type":0,"typeSettings":{"anyClassTypeDLFileEntryAssetRendererFactory":"47046","orderByColumn1":"ddm__keyword__47047__DataReferência"}}</script>]]>
4033 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-2316268-chpi'); var configuration = {"contentSetId":"2706895","showDateConversions":false,"showModifiedDate":true,"showRefDate":true,"textAlign":"left","pageSize":"50","showYear":false,"groupBy":"groupByYear","textColor":{"cssClass":"primary","rgbValue":"rgb(122, 18, 44)"},"useTitle":true,"usePagination":false,"bottomSpacing":"3","labelForYear":"Ocorrido em","useContentSetTitle":true,"labelForRefDate":"Publicado em","headingLevel":"h3","showCreateDate":false,"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>]]>
4415 <![CDATA[<script id="data_pxhi" type="application/json">{"title":"Pesquisas de Avaliação dos Serviços Públicos Prestados","type":0,"typeSettings":{"anyClassTypeDLFileEntryAssetRendererFactory":"47046","orderByColumn1":"ddm__keyword__47047__DataReferência"}}</script>]]>
4424 <![CDATA[<script>(function() {var fragmentElement = document.querySelector('#fragment-2316268-pxhi'); var configuration = {"contentSetId":"2706897","showDateConversions":false,"showModifiedDate":true,"showRefDate":true,"textAlign":"left","pageSize":"50","showYear":false,"groupBy":"groupByYear","textColor":{"cssClass":"primary","rgbValue":"rgb(122, 18, 44)"},"useTitle":true,"usePagination":false,"bottomSpacing":"3","labelForYear":"Ocorrido em","useContentSetTitle":true,"labelForRefDate":"Publicado em","headingLevel":"h3","showCreateDate":false,"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>]]>
5646 <![CDATA[<script type="text/javascript"> // <![CDATA[ Liferay.BrowserSelectors.run(); // ]]> </script>]]>
5675 <![CDATA[<script type="text/javascript"> // <![CDATA[ Liferay.currentURL = '\x2fweb\x2fguest\x2facesso-a-informacao\x2fparticipacao-social'; Liferay.currentURLEncoded = '\x252Fweb\x252Fguest\x252Facesso-a-informacao\x252Fparticipacao-social'; // ]]> </script>]]>
5692 <![CDATA[<script type="text/javascript"> // <![CDATA[ // ]]> </script>]]>
5723 <![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); })(); 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_site_map_web_portlet_SiteNavigationSiteMapPortlet_INSTANCE_6gubfPpzWTkf'); Liferay.Portlet.onLoad( { canEditTitle: false, columnPos: 0, isStatic: 'end', namespacedId: 'p_p_id_com_liferay_site_navigation_site_map_web_portlet_SiteNavigationSiteMapPortlet_INSTANCE_6gubfPpzWTkf_', portletId: 'com_liferay_site_navigation_site_map_web_portlet_SiteNavigationSiteMapPortlet_INSTANCE_6gubfPpzWTkf', refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d54\x26p_p_id\x3dcom_liferay_site_navigation_site_map_web_portlet_SiteNavigationSiteMapPortlet_INSTANCE_6gubfPpzWTkf\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\x252Fparticipacao-social', refreshURLData: {} } ); Liferay.Portlet.register('com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet_INSTANCE_ulik6shVhZZz'); Liferay.Portlet.onLoad( { canEditTitle: false, columnPos: 0, isStatic: 'end', namespacedId: 'p_p_id_com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet_INSTANCE_ulik6shVhZZz_', portletId: 'com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet_INSTANCE_ulik6shVhZZz', refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d54\x26p_p_id\x3dcom_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet_INSTANCE_ulik6shVhZZz\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\x252Fparticipacao-social', refreshURLData: {} } ); 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\x3d54\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\x252Fparticipacao-social', 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\x3d54\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\x252Fparticipacao-social', 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\x3d54\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\x252Fparticipacao-social', 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>]]>
6004 <![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>]]>
6017 <![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>]]>