{"id":2656,"date":"2025-06-06T05:33:16","date_gmt":"2025-06-06T05:33:16","guid":{"rendered":"https:\/\/corporate.pslzero6.net\/analisi-dell-ente\/"},"modified":"2025-10-14T16:21:01","modified_gmt":"2025-10-14T16:21:01","slug":"analisi-dell-ente","status":"publish","type":"page","link":"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/","title":{"rendered":"Analysis of the institution"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2656\" class=\"elementor elementor-2656 elementor-1769\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0198a5b box-layout-gray e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no e-con e-parent\" data-id=\"0198a5b\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-ce5a0a1 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"ce5a0a1\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9165d8b elementor-widget elementor-widget-heading\" data-id=\"9165d8b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/corporate.pslzero6-demo.net\/en\/\">Area Corporate<\/a><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bbeda32 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"bbeda32\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-5909371 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"5909371\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dc65287 elementor-widget elementor-widget-shortcode\" data-id=\"dc65287\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><span><span><a href=\"https:\/\/corporate.pslzero6-demo.net\/en\/\">Home<\/a><\/span><\/span><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-12fc6a9 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"12fc6a9\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-ae3c025 e-con-full main-page-contentDiv e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"ae3c025\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-ab3bf22 e-con-full main_sidebar_page e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no e-con e-child\" data-id=\"ab3bf22\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-70f7cee sidebar_menu_main eael-simple-menu-hamburger-align-left eael_simple_menu_hamburger_disable_selected_menu_no eael-hamburger--tablet elementor-widget elementor-widget-eael-simple-menu\" data-id=\"70f7cee\" data-element_type=\"widget\" data-widget_type=\"eael-simple-menu.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n                        @media screen and (max-width: 1023px) {\n                            .eael-hamburger--tablet {\n                                .eael-simple-menu-horizontal,\n                                .eael-simple-menu-vertical {\n                                    display: none;\n                                }\n                            }\n                            .eael-hamburger--tablet {\n                                .eael-simple-menu-container .eael-simple-menu-toggle {\n                                    display: block;\n                                }\n                            }\n                        }\n                    <\/style>            <div data-hamburger-icon=\"&lt;svg aria-hidden=&quot;true&quot; class=&quot;e-font-icon-svg e-fas-bars&quot; viewBox=&quot;0 0 448 512&quot; xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot;&gt;&lt;path d=&quot;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&quot;&gt;&lt;\/path&gt;&lt;\/svg&gt;\" data-indicator-icon=\"&lt;svg aria-hidden=&quot;true&quot; class=&quot;e-font-icon-svg e-fas-angle-down&quot; viewBox=&quot;0 0 320 512&quot; xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot;&gt;&lt;path d=&quot;M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z&quot;&gt;&lt;\/path&gt;&lt;\/svg&gt;\" data-dropdown-indicator-icon=\"&lt;svg class=&quot;e-font-icon-svg e-fas-angle-down&quot; viewBox=&quot;0 0 320 512&quot; xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot;&gt;&lt;path d=&quot;M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z&quot;&gt;&lt;\/path&gt;&lt;\/svg&gt;\" class=\"eael-simple-menu-container eael-simple-menu-align-left eael-simple-menu--stretch eael-simple-menu-dropdown-align-left preset-1\" data-hamburger-breakpoints=\"{&quot;mobile&quot;:&quot;Mobile Portrait (&gt; 767px)&quot;,&quot;tablet&quot;:&quot;Tablet Portrait (&gt; 1023px)&quot;,&quot;tablet_extra&quot;:&quot;Tablet Landscape (&gt; 1199px)&quot;,&quot;desktop&quot;:&quot;Desktop (&gt; 2400px)&quot;,&quot;none&quot;:&quot;None&quot;}\" data-hamburger-device=\"tablet\">\n                <ul id=\"menu-dashboard-menu\" class=\"eael-simple-menu eael-simple-menu-dropdown-animate-to-top eael-simple-menu-indicator eael-simple-menu-vertical\"><li id=\"menu-item-1611\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1611\"><a href=\"https:\/\/corporate.pslzero6-demo.net\/client-dashboard\/\">Client Dashboard<\/a><\/li>\n<li id=\"menu-item-1613\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1613\"><a href=\"https:\/\/corporate.pslzero6-demo.net\/registrazione-final\/\">Group Registration<\/a><\/li>\n<li id=\"menu-item-1614\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1614\"><a href=\"https:\/\/corporate.pslzero6-demo.net\/manage-groups\/\">Manage Groups<\/a><\/li>\n<li id=\"menu-item-1777\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1777\"><a href=\"https:\/\/corporate.pslzero6-demo.net\/analisi-dell-ente\/\">Analysis of the institution<\/a><\/li>\n<li id=\"menu-item-1797\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1797\"><a href=\"https:\/\/corporate.pslzero6-demo.net\/codici-promozionali\/\">Promotional Codes<\/a><\/li>\n<li id=\"menu-item-1615\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1615\"><a href=\"https:\/\/corporate.pslzero6-demo.net\/archive-agenda\/\">Agenda Archive<\/a><\/li>\n<\/ul>                <button class=\"eael-simple-menu-toggle\">\n                    <span class=\"sr-only \">Hamburger Toggle Menu<\/span>\n                    <svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-bars\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"><\/path><\/svg>                <\/button>\n            <\/div>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2342dff elementor-hidden-desktop elementor-hidden-laptop elementor-hidden-tablet_extra elementor-widget elementor-widget-heading\" data-id=\"2342dff\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Menu<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a270e3e e-con-full corporate-content-side e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"a270e3e\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-7a1a1df e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"7a1a1df\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-e5b7647 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"e5b7647\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-22c5157 elementor-widget elementor-widget-heading\" data-id=\"22c5157\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Data Analysis Skills Tool<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c71497 corporate-user-name elementor-widget elementor-widget-shortcode\" data-id=\"7c71497\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><h1 class='elementor-heading-title elementor-size-default psl_company_name'>Hi, Organizzatore\/Supervisore!<\/h1>\n\n            <h6 class='elementor-heading-title elementor-size-default psl_role_user'>Supervisore of PSL Organizzazione Demo<\/h6><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3c4130c client-dash-banner-LOGO-img elementor-widget elementor-widget-shortcode\" data-id=\"3c4130c\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><img decoding=\"async\" src=\"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/wpforms\/1052-57f6914823241bcd9cbf84553e2dd7af\/ChatGPT-Image-Dec-24-2025-06_41_25-PM-9884493b1db68ac66105583aa76f4067.jpg\" alt=\"Company Logo\" class=\"psl_company_logo\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-21750ec e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"21750ec\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6a0be0e basic-banner-big-img elementor-widget elementor-widget-image\" data-id=\"6a0be0e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"780\" height=\"1034\" src=\"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2.webp\" class=\"attachment-full size-full wp-image-2184\" alt=\"\" srcset=\"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2.webp 780w, https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2-226x300.webp 226w, https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2-772x1024.webp 772w, https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2-768x1018.webp 768w\" sizes=\"(max-width: 780px) 100vw, 780px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2dd612c e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"2dd612c\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-c1b36b0 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"c1b36b0\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-16f271f elementor-widget elementor-widget-shortcode\" data-id=\"16f271f\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><style>\n.dashboard-cards {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    margin-top: 40px;\n    grid-gap: 20px;\n}\n\n.dashboard-card {\n    background-color: #ffffff;\n    color: #333;\n    border-radius: 16px;\n    padding: 24px;\n    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);\n    transition: transform 0.3s ease, box-shadow 0.3s ease;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    align-items: flex-start;\n}\n\n@media (max-width: 1199px) {\n    .dashboard-cards {\n        grid-template-columns: repeat(2, 1fr);\n    }\n}\n\n@media (max-width: 575px) {\n    .dashboard-cards {\n        grid-template-columns: repeat(1, 1fr);\n    }\n}\n\n.dashboard-card:hover {\n    transform: translateY(-5px);\n    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.12);\n}\n\n.dashboard-card h4 {\n    font-size: 14px;\n    font-weight: 600;\n    color: #666;\n    margin: 0 0 12px;\n    line-height: 1.4;\n}\n\n.dashboard-card .count {\n    font-size: 32px;\n    font-weight: 800;\n    color: #111;\n}\n\n.filter-box {\n    margin-top: 40px;\n    padding: 20px;\n    border: 1px solid #999;\n    border-radius: 8px;\n    color: #fff;\n}\n\n.filter-box .select2-container .select2-selection--single {\n    height: 38px;\n}\n\n.filter-box h2 {\n    text-align: center;\n    margin-bottom: 20px;\n    color: #fff;\n}\n\n.filter-fullwidth {\n    margin-bottom: 50px;\n}\n\n.filter-grid-bottom {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n    gap: 20px;\n    align-items: end;\n}\n\n.filter-grid-bottom label {\n    display: block;\n    font-weight: bold;\n    margin-bottom: 5px;\n}\n\n.filter-grid-bottom input,\n.filter-grid-bottom select,\n.filter-grid-bottom button {\n    width: 100%;\n    padding: 8px 10px;\n    font-size: 14px;\n    border: 1px solid #ccc;\n    border-radius: 4px;\n}\n\n.filter-grid-bottom button {\n    border-radius: 8px;\n    background-color: var(--e-global-color-accent);\n    color: #fff;\n    border: 2px solid var(--e-global-color-accent);\n    font-size: 20px;\n    font-weight: 500;\n    line-height: 19px;\n}\n\n.fiter-btn.loading {\n    opacity: 0.6;\n    pointer-events: none;\n    cursor: not-allowed;\n}\n\n#filter-results h3 {\n    margin: 40px 0;\n    color: #fff;\n}\n\n#filter-results p,\n#filter-results .loading {\n    color: #fff;\n    font-size:24px;\n    line-height: 1.5;\n}\n\n#form-tabs {\n    font-family: \"Poppins\", Sans-serif;\n    margin: 20px 0;\n}\n\n#form-tabs .tab-titles {\n    list-style: none;\n    padding: 0;\n    margin: 0 0 15px;\n    display: flex;\n    gap: 10px;\n    border-bottom: 2px solid #ccc;\n}\n\n#form-tabs .tab-titles li {\n    margin: 0;\n}\n\n#form-tabs .tab-titles a {\n    display: block;\n    padding: 10px 15px;\n    text-decoration: none;\n    color: #333;\n    border: 1px solid transparent;\n    border-radius: 5px 5px 0 0;\n    background: #f1f1f1;\n}\n\n#form-tabs .tab-titles a.active {\n    background: #fff;\n    border-color: #ccc;\n    border-bottom-color: white;\n    font-weight: bold;\n}\n\n#form-tabs .tab-content {\n    display: none;\n}\n\n#form-tabs .tab-content.active {\n    display: block;\n}\n\n.area-container {\n    padding: 15px;\n    margin-bottom: 20px;\n    background: #fff;\n    border-radius: 24px;\n}\n\n.paginated-table {\n    font-family: \"Poppins\", Sans-serif;\n}\n\n.paginated-table th {\n    background: #7d5da0;\n    color: #fff;\n    font-size: 15px;\n    font-weight: 500;\n    line-height: 1.2em;\n}\n\n.pagination-controls {\n    margin-top: 1rem;\n    text-align: center;\n}\n\nbutton.pagination-button {\n    margin: 0 3px;\n    padding: 0 10px;\n    background: none;\n    color: var(--e-global-color-accent);\n}\n\nbutton.pagination-button:hover,\nbutton.pagination-button.active {\n    background: var(--e-global-color-accent);\n    color: white;\n    font-weight: bold;\n}\n\nspan.entries-count {\n    display: inline-block;\n    width: 35px;\n    height: 35px;\n    line-height: 35px;\n}\n\nspan.entries-count:hover {\n    background: #f19026;\n    border-radius: 50%;\n    cursor: pointer;\n}\n\n.dates-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 0.5rem;\n    list-style: none;\n    padding: 0;\n    margin: 0;\n}\n\n.dates-grid li {\n    font-size: 14px;\n    color: #333;\n    text-align: center;\n}\n\n.dates-grid i.fa {\n    margin-right: 6px;\n    color: #007bff;\n}\n\n.select2-container--default .select2-selection--single {\n    height: 38px;\n    padding: 6px 12px;\n    font-size: 14px;\n    border: 1px solid #ccc;\n    border-radius: 6px;\n}\n\n.select2-container--default .select2-selection__rendered {\n    line-height: 30px;\n    color: #333;\n}\n\n.select2-container--default .select2-selection__arrow {\n    height: 38px;\n    top: 0px;\n    right: 10px;\n}\n\n.select2-container {\n    width: 100% !important;\n}\n\nlabel.error {\n    color: red;\n    font-size: 0.875em;\n    margin-top: 4px;\n    display: block;\n}\n\ninput.error,\nselect.error,\ntextarea.error {\n    border-color: red;\n    background-color: #ffe6e6;\n}\n\ninput.valid,\nselect.valid,\ntextarea.valid {\n    border-color: green;\n    background-color: #e6ffe6;\n}\n\n.area-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 10px;\n}\n\n.area-title {\n    margin: 0;\n}\n\n.area-header button.export-btn {\n    padding: 5px 10px;\n    font-size: 0.9em;\n    cursor: pointer;\n}\n\n\/* \u2705 CHART FIX SECTION *\/\n.charts-wrapper {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 30px;\n    align-items: flex-start;\n    justify-content: space-between;\n    margin: 20px 0;\n}\n\n.charts-wrapper canvas {\n    display: block;\n}\n\n.charts-wrapper .line-chart-section,\n.charts-wrapper .bar-chart-section,\n.charts-wrapper .pie-chart-section {\n    position: relative;\n    width: 100%;\n    flex: unset;\n}\n\n.charts-wrapper .line-chart-section {\n    height: 400px;\n}\n\n.charts-wrapper .bar-chart-section {\n    height: 250px;\n}\n\n.charts-wrapper .pie-chart-section {\n    height: 300px;\n}\n\n.charts-wrapper .bar-chart-section {\n    width: 60%;\n}\n\n.charts-wrapper .pie-chart-section {\n    width: 35%;\n}\n\n@media (max-width: 1200px) {\n    .bar-chart-section,\n    .pie-chart-section {\n        width: 100%!important;\n    }\n\n    .charts-wrapper .pie-chart-section {\n        height: 250px !important;\n        width: 250px !important;\n        text-align: center;\n        margin: auto;\n    }\n}\n\n\/* @media (max-width: 1440px) {\n    .charts-wrapper .pie-chart-section {\n        height: 350px !important;\n        width: 350px !important;\n    }\n} *\/\n\n.chart-legend {\n    margin-bottom: 10px;\n    display: flex;\n    gap: 15px;\n    font-size: 14px;\n}\n\n.legend-item {\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    gap: 6px;\n}\n\n.legend-color {\n    width: 40px;\n    height: 12px;\n    display: inline-block;\n}\n\n.legend-elementare {\n    background: #da224f;\n}\n\n.legend-intermedio {\n    background: #019ff8;\n}\n\n.legend-avanzato {\n    background: #3ea898;\n}\n\n.table-responsive {\n    width: 100%;\n    overflow-x: auto;\n}\n\n.level-badge {\n    display: inline-block;\n    padding: 2px 8px;\n    font-size: 12px;\n    font-weight: 600;\n}\n\n.badge-red {\n    background-color: #f8d7da;\n    color: #da224f;\n}\n\n.badge-blue {\n    background-color: #d1ecf1;\n    color: #019ff8;\n}\n\n.badge-green {\n    background-color: #d4edda;\n    color: #3ea898;\n}\n<\/style>\n\n\n<!-- Cards -->\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/jquery-validation@1.19.3\/dist\/jquery.validate.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartjs-plugin-datalabels\"><\/script>\n<link href=\"https:\/\/cdn.jsdelivr.net\/npm\/select2@4.1.0-rc.0\/dist\/css\/select2.min.css\" rel=\"stylesheet\" \/>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/select2@4.1.0-rc.0\/dist\/js\/select2.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2canvas\/1.4.1\/html2canvas.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/apexcharts\"><\/script>\n<!-- Flatpickr CSS -->\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/flatpickr\/dist\/flatpickr.min.css\">\n\n<!-- Flatpickr Core -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/flatpickr\"><\/script>\n<!-- Italian Locale -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/flatpickr\/dist\/l10n\/it.js\"><\/script>\n\n<!-- Month Select Plugin CSS & JS -->\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/flatpickr\/dist\/plugins\/monthSelect\/style.css\">\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/flatpickr\/dist\/plugins\/monthSelect\/index.js\"><\/script>\n\n<div class=\"dashboard-cards\" id=\"dashboard-cards\">\n    <div class=\"dashboard-card\">\n        <h4>Total licenses<\/h4>\n        <div class=\"count total-licenses\">4<\/div>\n    <\/div>\n\n    <div class=\"dashboard-card\">\n        <h4>Coordinator\/Pedagogist<\/h4>\n        <div class=\"count coordinators\">2<\/div>\n    <\/div>\n\n    <div class=\"dashboard-card\">\n        <h4>Educator\/Teacher<\/h4>\n        <div class=\"count educators\">2<\/div>\n    <\/div>\n\n    <div class=\"dashboard-card\">\n        <h4>Collaborators<\/h4>\n        <div class=\"count collaborators\">1<\/div>\n    <\/div>\n<\/div>\n\n\n<!-- Filters -->\n<div class=\"filter-box\">\n    <h2>Filters<\/h2>\n    <form method=\"POST\" class=\"filter-grid\">\n                <div class=\"filter-grid-bottom\">\n            <div>\n                <label for=\"ruolo\">\n                    Role                <\/label>\n                <select id=\"ruolo\" name=\"ruolo\">\n                    <option value=\"all\">\n                        All                    <\/option>\n                    <option value=\"educatoreinsegnante\">\n                        Educator\/Teacher                    <\/option>\n                    <option value=\"coordinatorepedagogista\">\n                        Coordinator\/Pedagogist                    <\/option>\n                <\/select>\n            <\/div>\n            <div>\n                <label for=\"test\">\n                    Self-assessment test                <\/label>\n                <select id=\"test\" name=\"test\">\n                    <option value=\"9165\">Zero6 \u2013 The challenges of the present<\/option>                <\/select>\n            <\/div>\n            <div>\n            <label for=\"test\">Areas<\/label>\n                <select id=\"area\" name=\"area\">\n                    <option value=\"all\">All<\/option>\n                                            <option value=\"2597_form_area_4\">Lavorare in continuit\u00e0<\/option>\n                        <option value=\"2597_form_area_11\">Intelligenza naturalistica<\/option>\n                                    <\/select>\n            <\/div>\n            <div>\n                <label for=\"gruppo\">Groups<\/label>\n                <select id=\"gruppo\" name=\"gruppo\">\n                    <option value=\"all\">All<\/option>\n                                            <option value=\"117683\">\n                            Team Educativo Nord                        <\/option>\n                                            <option value=\"614451\">\n                            Team Educativo Sud                        <\/option>\n                                    <\/select>\n            <\/div>\n            <div>\n                <label for=\"dal\">\n                    Date From                <\/label>\n                <input type=\"date\" id=\"dal\" name=\"dal\">\n            <\/div>\n            <div>\n                <label for=\"al\">\n                    Date To                <\/label>\n                <input type=\"date\" id=\"al\" name=\"al\">\n            <\/div>\n            <div>\n                <label for=\"utente\">\n                    User                <\/label>\n                <select id=\"utente\" name=\"utente\" required>\n                    <option value=\"all\">All<\/option>\n                                            <option value=\"1378\">Coordinatore Demo Beta<\/option>\n                        <option value=\"1377\">Educatore Demo Alpha<\/option>\n                        <option value=\"1380\">Coordinatore Demo Delta<\/option>\n                        <option value=\"1379\">Educatore Demo Gamma<\/option>\n                                    <\/select>\n            <\/div>\n            <div>\n                <button class=\"fiter-btn\" type=\"submit\" >\n                    SEND                <\/button>\n            <\/div>\n        <\/div>\n    <\/form>\n<\/div>\n\n<div id=\"date-range-popup\" class=\"popup\" style=\"display: none;\">\n  <div class=\"popup-content\">\n    <h5 class=\"popup-heading\">\n        Select Time Ranges    <\/h5>\n    <div class=\"user-popup-content\">\n      <form id=\"dateRangeForm\">\n        <!-- Periodo 1 -->\n        <div class=\"date-range-group\">\n          <label>Period 1:<\/label>\n          <div class=\"date-range\">\n            <input type=\"text\" id=\"range1-start\" class=\"flatpickr-start\" placeholder=\"Start\" required>\n            <span>\u2192<\/span>\n            <input type=\"text\" id=\"range1-end\" class=\"flatpickr-end\" placeholder=\"End\" required>\n          <\/div>\n        <\/div>\n\n        <!-- Periodo 2 -->\n        <div class=\"date-range-group\">\n          <label>Period 2:<\/label>\n          <div class=\"date-range\">\n            <input type=\"text\" id=\"range2-start\" class=\"flatpickr-start\" placeholder=\"Start\" required>\n            <span>\u2192<\/span>\n            <input type=\"text\" id=\"range2-end\" class=\"flatpickr-end\" placeholder=\"End\" required>\n          <\/div>\n        <\/div>\n\n        <div style=\"margin-top: 20px;\">\n          <button type=\"submit\">He confirms<\/button>\n        <\/div>\n      <\/form>\n    <\/div>\n    <button class=\"close-popup\" style=\"margin-right: 30px; margin-bottom: 30px; float:right;\">\n        Close    <\/button>\n  <\/div>\n<\/div>\n\n<\/div> <!-- End filter-box -->\n\n<div id=\"filter-results\">\n        <div style=\"display: flex; justify-content: space-between; align-items: center; margin-top: 10px;\">\n        <h3>Risultati<\/h3>\n        <button class=\"compare-btn\">\n            <i class=\"fas fa-exchange-alt\"><\/i> COMPARA\n        <\/button>\n        <div style=\"display: flex; gap: 8px;\">\n            <button class=\"export-all-pdf-btn\">\n                Esporta in PDF\n            <\/button>\n            <button class=\"export-all-btn\">\n                Esporta in Excel\n            <\/button>\n        <\/div>\n    <\/div>\n    <p><strong>Totale utenti con compilazioni: 3<\/strong><br><strong>Totale dei test di autovalutazione compilati: 17<\/strong><\/p>\n    <div id=\"form-tabs\">\n        <div class=\"tab-content\" id=\"form-tab-2597\" style=\"display:block;\">\n            <div class=\"area-container\">\n                <div class=\"area-header\">\n                    <h6 class=\"area-title\"><strong>Lavorare in continuita<\/strong><\/h6>\n                    <div style=\"display: flex; gap: 8px;\">\n                        <button class=\"export-pdf-btn\" data-chart-id=\"chart_61095921e280088a87158542895b51ce_bar\" style=\"font-size:16.2px;\">Esporta in PDF<\/button>\n                        <button class=\"export-btn\" data-chart-id=\"chart_61095921e280088a87158542895b51ce_bar\">Esporta in Excel<\/button>\n                    <\/div>\n                <\/div>\n                <div class=\"badges-row\" style=\"margin: 8px 0; display: flex; gap: 10px; flex-wrap: wrap;\">\n                    <span class=\"badge\" style=\"background:#da224f; color:white; padding:6px 10px; border-radius:12px; font-weight:bold; font-size: small;\">Elementare: 8 (47.1%)<\/span>\n                    <span class=\"badge\" style=\"background:#019ff8; color:white; padding:6px 10px; border-radius:12px; font-weight:bold; font-size: small;\">Intermedio: 8 (47.1%)<\/span>\n                    <span class=\"badge\" style=\"background:#3ea898; color:white; padding:6px 10px; border-radius:12px; font-weight:bold; font-size: small;\">Avanzato: 1 (5.9%)<\/span>\n                <\/div>\n                <div class=\"charts-wrapper\">\n                    <div class=\"bar-chart-section\">\n                        <canvas id=\"chart_61095921e280088a87158542895b51ce_bar\"><\/canvas>\n                    <\/div>\n                    <div class=\"pie-chart-section\">\n                        <canvas id=\"chart_61095921e280088a87158542895b51ce_pie\"><\/canvas>\n                    <\/div>\n                <\/div>\n                <h6><strong>Analisi Professionisti<\/strong> - Lavorare in continuita<\/h6>\n                <div class=\"table-wrapper\">\n                    <div class=\"table-responsive\">\n                        <table class=\"paginated-table\" border=\"1\" cellpadding=\"10\" cellspacing=\"0\" style=\"border-collapse: collapse; width:100%; text-align:center;\">\n                            <thead>\n                                <tr>\n                                    <th><\/th>\n                                    <th><\/th>\n                                    <th colspan=\"3\">Livello raggiunto nella singola area di competenza<\/th>\n                                <\/tr>\n                                <tr>\n                                    <th>Ruolo<\/th>\n                                    <th>Test compilati<\/th>\n                                    <th>Elementare<\/th>\n                                    <th>Intermedio<\/th>\n                                    <th>Avanzato<\/th>\n                                <\/tr>\n                            <\/thead>\n                            <tbody>\n                                <tr>\n                                    <td style=\"text-align:left;\"><strong>Educatore Demo Alpha<\/strong><br><small>Educatore\/Insegnante<\/small><\/td>\n                                    <td><span class=\"entries-count\" data-user-id=\"1377\" data-form-id=\"2597\" data-entry-levels='[{\"date\":\"14\/01\/2026 ore 12:10\",\"level\":\"Elementare\"},{\"date\":\"16\/01\/2026 ore 10:03\",\"level\":\"Elementare\"},{\"date\":\"16\/01\/2026 ore 17:17\",\"level\":\"Elementare\"},{\"date\":\"21\/01\/2026 ore 12:11\",\"level\":\"Intermedio\"},{\"date\":\"21\/01\/2026 ore 15:10\",\"level\":\"Elementare\"},{\"date\":\"21\/01\/2026 ore 15:59\",\"level\":\"Intermedio\"},{\"date\":\"21\/01\/2026 ore 17:11\",\"level\":\"Avanzato\"},{\"date\":\"22\/01\/2026 ore 09:14\",\"level\":\"Intermedio\"},{\"date\":\"29\/01\/2026 ore 14:40\",\"level\":\"Intermedio\"},{\"date\":\"04\/02\/2026 ore 10:06\",\"level\":\"Intermedio\"},{\"date\":\"10\/02\/2026 ore 09:09\",\"level\":\"Intermedio\"},{\"date\":\"10\/02\/2026 ore 09:26\",\"level\":\"Elementare\"},{\"date\":\"10\/02\/2026 ore 09:26\",\"level\":\"Intermedio\"}]'>13<\/span><\/td>\n                                    <td>5<\/td><td>7<\/td><td>1<\/td>\n                                <\/tr>\n                                <tr>\n                                    <td style=\"text-align:left;\"><strong>Coordinatore Demo Beta<\/strong><br><small>Coordinatore\/Pedagogista<\/small><\/td>\n                                    <td><span class=\"entries-count\" data-user-id=\"1378\" data-form-id=\"2597\" data-entry-levels='[{\"date\":\"14\/01\/2026 ore 12:22\",\"level\":\"Elementare\"},{\"date\":\"20\/01\/2026 ore 11:48\",\"level\":\"Intermedio\"}]'>2<\/span><\/td>\n                                    <td>1<\/td><td>1<\/td><td>0<\/td>\n                                <\/tr>\n                                <tr>\n                                    <td style=\"text-align:left;\"><strong>Educatore Demo Gamma<\/strong><br><small>Educatore\/Insegnante<\/small><\/td>\n                                    <td><span class=\"entries-count\" data-user-id=\"1379\" data-form-id=\"2597\" data-entry-levels='[{\"date\":\"14\/01\/2026 ore 12:18\",\"level\":\"Elementare\"},{\"date\":\"22\/01\/2026 ore 16:50\",\"level\":\"Elementare\"}]'>2<\/span><\/td>\n                                    <td>2<\/td><td>0<\/td><td>0<\/td>\n                                <\/tr>\n                            <\/tbody>\n                        <\/table>\n                    <\/div>\n                    <div class=\"pagination-controls\"><\/div>\n                <\/div>\n            <\/div>\n            <div class=\"area-container\">\n                <div class=\"area-header\">\n                    <h6 class=\"area-title\"><strong>Intelligenza naturalistica<\/strong><\/h6>\n                    <div style=\"display: flex; gap: 8px;\">\n                        <button class=\"export-pdf-btn\" data-chart-id=\"chart_b2948f9aa61284f2eb23cde1cb013b20_bar\" style=\"font-size:16.2px;\">Esporta in PDF<\/button>\n                        <button class=\"export-btn\" data-chart-id=\"chart_b2948f9aa61284f2eb23cde1cb013b20_bar\">Esporta in Excel<\/button>\n                    <\/div>\n                <\/div>\n                <div class=\"badges-row\" style=\"margin: 8px 0; display: flex; gap: 10px; flex-wrap: wrap;\">\n                    <span class=\"badge\" style=\"background:#da224f; color:white; padding:6px 10px; border-radius:12px; font-weight:bold; font-size: small;\">Elementare: 9 (52.9%)<\/span>\n                    <span class=\"badge\" style=\"background:#019ff8; color:white; padding:6px 10px; border-radius:12px; font-weight:bold; font-size: small;\">Intermedio: 8 (47.1%)<\/span>\n                    <span class=\"badge\" style=\"background:#3ea898; color:white; padding:6px 10px; border-radius:12px; font-weight:bold; font-size: small;\">Avanzato: 0 (0%)<\/span>\n                <\/div>\n                <div class=\"charts-wrapper\">\n                    <div class=\"bar-chart-section\">\n                        <canvas id=\"chart_b2948f9aa61284f2eb23cde1cb013b20_bar\"><\/canvas>\n                    <\/div>\n                    <div class=\"pie-chart-section\">\n                        <canvas id=\"chart_b2948f9aa61284f2eb23cde1cb013b20_pie\"><\/canvas>\n                    <\/div>\n                <\/div>\n                <h6><strong>Analisi Professionisti<\/strong> - Intelligenza naturalistica<\/h6>\n                <div class=\"table-wrapper\">\n                    <div class=\"table-responsive\">\n                        <table class=\"paginated-table\" border=\"1\" cellpadding=\"10\" cellspacing=\"0\" style=\"border-collapse: collapse; width:100%; text-align:center;\">\n                            <thead>\n                                <tr>\n                                    <th><\/th>\n                                    <th><\/th>\n                                    <th colspan=\"3\">Livello raggiunto nella singola area di competenza<\/th>\n                                <\/tr>\n                                <tr>\n                                    <th>Ruolo<\/th>\n                                    <th>Test compilati<\/th>\n                                    <th>Elementare<\/th>\n                                    <th>Intermedio<\/th>\n                                    <th>Avanzato<\/th>\n                                <\/tr>\n                            <\/thead>\n                            <tbody>\n                                <tr>\n                                    <td style=\"text-align:left;\"><strong>Educatore Demo Alpha<\/strong><br><small>Educatore\/Insegnante<\/small><\/td>\n                                    <td><span class=\"entries-count\" data-user-id=\"1377\" data-form-id=\"2597\" data-entry-levels='[{\"date\":\"14\/01\/2026 ore 12:10\",\"level\":\"Elementare\"},{\"date\":\"16\/01\/2026 ore 10:03\",\"level\":\"Elementare\"},{\"date\":\"16\/01\/2026 ore 17:17\",\"level\":\"Elementare\"},{\"date\":\"21\/01\/2026 ore 12:11\",\"level\":\"Intermedio\"},{\"date\":\"21\/01\/2026 ore 15:10\",\"level\":\"Elementare\"},{\"date\":\"21\/01\/2026 ore 15:59\",\"level\":\"Intermedio\"},{\"date\":\"21\/01\/2026 ore 17:11\",\"level\":\"Intermedio\"},{\"date\":\"22\/01\/2026 ore 09:14\",\"level\":\"Intermedio\"},{\"date\":\"29\/01\/2026 ore 14:40\",\"level\":\"Elementare\"},{\"date\":\"04\/02\/2026 ore 10:06\",\"level\":\"Intermedio\"},{\"date\":\"10\/02\/2026 ore 09:09\",\"level\":\"Intermedio\"},{\"date\":\"10\/02\/2026 ore 09:26\",\"level\":\"Elementare\"},{\"date\":\"10\/02\/2026 ore 09:26\",\"level\":\"Intermedio\"}]'>13<\/span><\/td>\n                                    <td>6<\/td><td>7<\/td><td>0<\/td>\n                                <\/tr>\n                                <tr>\n                                    <td style=\"text-align:left;\"><strong>Educatore Demo Gamma<\/strong><br><small>Educatore\/Insegnante<\/small><\/td>\n                                    <td><span class=\"entries-count\" data-user-id=\"1379\" data-form-id=\"2597\" data-entry-levels='[{\"date\":\"14\/01\/2026 ore 12:18\",\"level\":\"Intermedio\"},{\"date\":\"22\/01\/2026 ore 16:50\",\"level\":\"Elementare\"}]'>2<\/span><\/td>\n                                    <td>1<\/td><td>1<\/td><td>0<\/td>\n                                <\/tr>\n                                <tr>\n                                    <td style=\"text-align:left;\"><strong>Coordinatore Demo Beta<\/strong><br><small>Coordinatore\/Pedagogista<\/small><\/td>\n                                    <td><span class=\"entries-count\" data-user-id=\"1378\" data-form-id=\"2597\" data-entry-levels='[{\"date\":\"14\/01\/2026 ore 12:22\",\"level\":\"Elementare\"},{\"date\":\"20\/01\/2026 ore 11:48\",\"level\":\"Elementare\"}]'>2<\/span><\/td>\n                                    <td>2<\/td><td>0<\/td><td>0<\/td>\n                                <\/tr>\n                            <\/tbody>\n                        <\/table>\n                    <\/div>\n                    <div class=\"pagination-controls\"><\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n    <div id=\"user-popup\" class=\"popup\" style=\"display: none;\">\n        <div class=\"popup-content\">\n            <h5 class=\"popup-heading\">Cronologia dei dati<\/h5>\n            <div class=\"user-popup-content\"><\/div>\n            <button class=\"close-popup\" style=\"margin-right: 30px;margin-bottom: 30px;\">Chiudi<\/button>\n        <\/div>\n    <\/div>\n    <\/div>\n\n\n<script>\n\nvar PSL_AJAX_URL = 'https:\/\/corporate.pslzero6-demo.net\/wp-admin\/admin-ajax.php';\njQuery(document).ready(function($) {\n\n    const $form = $('.filter-grid');\n    const $submitBtn = $('.fiter-btn');\n    const isSupervisore = true;\n    const supervisorCharts = [];\n\n    function initSupervisoreStaticCharts() {\n        if (typeof Chart === 'undefined') {\n            return;\n        }\n\n        const chartColors = ['#da224f', '#019ff8', '#3ea898'];\n        const chartConfigs = [\n            {\n                total: 17,\n                barId: 'chart_61095921e280088a87158542895b51ce_bar',\n                pieId: 'chart_61095921e280088a87158542895b51ce_pie',\n                labels: ['Elementare 8', 'Intermedio 8', 'Avanzato 1'],\n                values: [8, 8, 1]\n            },\n            {\n                total: 17,\n                barId: 'chart_b2948f9aa61284f2eb23cde1cb013b20_bar',\n                pieId: 'chart_b2948f9aa61284f2eb23cde1cb013b20_pie',\n                labels: ['Elementare 9', 'Intermedio 8', 'Avanzato 0'],\n                values: [9, 8, 0]\n            }\n        ];\n\n        chartConfigs.forEach(function(config) {\n            const barEl = document.getElementById(config.barId);\n            const pieEl = document.getElementById(config.pieId);\n            if (!barEl || !pieEl) return;\n\n            const barCtx = barEl.getContext('2d');\n            const pieCtx = pieEl.getContext('2d');\n\n            const barChart = new Chart(barCtx, {\n                type: 'bar',\n                data: {\n                    labels: config.labels,\n                    datasets: [{\n                        label: 'Totale',\n                        data: config.values,\n                        backgroundColor: chartColors,\n                        borderRadius: 6\n                    }]\n                },\n                options: {\n                    indexAxis: 'y',\n                    responsive: true,\n                    plugins: {\n                        legend: { display: false },\n                        datalabels: {\n                            color: '#fff',\n                            anchor: 'middle',\n                            align: 'middle',\n                            formatter: function(value) {\n                                if (value === 0) return '';\n                                return (value \/ config.total * 100).toFixed(1) + '%';\n                            },\n                            font: {\n                                family: 'Poppins',\n                                weight: 'bold',\n                                size: 14\n                            }\n                        },\n                        tooltip: { enabled: false }\n                    },\n                    scales: {\n                        x: {\n                            beginAtZero: true,\n                            ticks: { stepSize: 1 }\n                        }\n                    },\n                    interaction: { mode: null },\n                    hover: { mode: null }\n                }\n            });\n\n            const pieChart = new Chart(pieCtx, {\n                type: 'pie',\n                data: {\n                    labels: config.labels,\n                    datasets: [{\n                        data: config.values,\n                        backgroundColor: chartColors\n                    }]\n                },\n                options: {\n                    responsive: true,\n                    plugins: {\n                        legend: {\n                            position: 'top',\n                            labels: {\n                                font: { family: 'Poppins' },\n                                usePointStyle: true,\n                                pointStyle: 'rect'\n                            }\n                        },\n                        datalabels: {\n                            color: '#fff',\n                            formatter: function(value) {\n                                if (value === 0) return '';\n                                return (value \/ config.total * 100).toFixed(1) + '%';\n                            },\n                            font: {\n                                family: 'Poppins',\n                                weight: 'bold',\n                                size: 14\n                            }\n                        },\n                        title: {\n                            display: true,\n                            text: 'Tendenze - ',\n                            font: { family: 'Poppins' }\n                        },\n                        tooltip: { enabled: false }\n                    },\n                    interaction: { mode: null },\n                    hover: { mode: null }\n                }\n            });\n\n            supervisorCharts.push(barChart, pieChart);\n        });\n    }\n\n    if (typeof $.fn.validate !== 'function') {\n        console.error('jQuery Validation plugin not loaded');\n        return;\n    }\n\n    const validationRules = {\n        utente: { required: true }\n    };\n    const validationMessages = {\n        utente: \"Select a user\"\n    };\n\n    if (!isSupervisore) {\n        validationRules.supervisore = { required: true };\n        validationMessages.supervisore = \"Select a supervisor\";\n    }\n\n    $form.validate({\n        rules: validationRules,\n        messages: validationMessages,\n        errorPlacement: function(error, element) {\n            error.insertAfter(element);\n        },\n        highlight: function(element) {\n            $(element).addClass('error');\n        },\n        unhighlight: function(element) {\n            $(element).removeClass('error');\n        },\n        onkeyup: function(element) {\n            $(element).valid();\n            toggleSubmit();\n        },\n        onchange: function(element) {\n            $(element).valid();\n            toggleSubmit();\n        }\n    });\n\n    function toggleSubmit() {\n        if ($form.valid()) {\n            $submitBtn.prop('disabled', false);\n        } else {\n            $submitBtn.prop('disabled', true);\n        }\n    }\n\n    \/\/toggleSubmit();\n    $('#supervisore, #utente').on('change keyup', toggleSubmit);\n\n    \/\/ Initialize Select2 for the 'supervisore' select\n    $('#supervisore').select2({\n        placeholder: \"Select a supervisor\",\n        allowClear: false,\n        width: '100%' \/\/ optional: makes it full-width\n    });\n\n    \/\/ Initialize Select2 for the 'gruppo' select\n    $('#gruppo').select2({\n        placeholder: \"Select a group\",\n        allowClear: false,\n        width: '100%' \/\/ optional: makes it full-width\n    });\n\n    $('#utente').select2({\n        placeholder: \"Select a user\",\n        allowClear: false,\n        width: '100%' \/\/ optional: makes it full-width\n    });\n\n    if (isSupervisore) {\n        initSupervisoreStaticCharts();\n        if (typeof initPaginatedTables === 'function') {\n            initPaginatedTables(5);\n        }\n    }\n\n    function loadUsers(gruppo = '', supervisore = '', role = '') {\n        const $utente = $('#utente');\n        $utente.prop('disabled', true); \/\/ Disable while loading\n        $utente.empty();\n        $utente.append('<option>Loading...<\/option>');\n\n        $.ajax({\n            url: PSL_AJAX_URL,\n            method: 'POST',\n            data: {\n                action: 'get_group_users',\n                gruppo: gruppo,\n                supervisore: supervisore,\n                role: role\n            },\n            success: function(users) {\n                $utente.empty(); \/\/ Clear existing options\n                $utente.append('<option value=\"all\">All<\/option>');\n\n                if (users.length > 0) {\n                    users.forEach(function(user) {\n                        $utente.append(\n                            $('<option>', {\n                                value: user.ID,\n                                text: user.display_name\n                            })\n                        );\n                    });\n                } else {\n                    $utente.append('<option disabled>No users available<\/option>');\n                }\n\n                $utente.prop('disabled', false); \/\/ Enable after loading\n            }\n        });\n    }\n\n    \/\/ Load all users initially only for non-supervisore users\n    if (!isSupervisore) {\n        loadUsers();\n    }\n\n    function loadGruppo(supervisore = '') {\n        const $gruppo = $('#gruppo');\n        $gruppo.prop('disabled', true); \/\/ Disable while loading\n        $gruppo.empty();\n        $gruppo.append('<option>Loading...<\/option>');\n\n        $.ajax({\n            url: PSL_AJAX_URL,\n            method: 'POST',\n            data: {\n                action: 'get_supervisore_groups',\n                supervisore: supervisore\n            },\n            success: function(response) {\n                $gruppo.empty(); \/\/ Clear existing options\n                $gruppo.append('<option value=\"all\">All<\/option>');\n\n                if (response.groups && response.groups.length > 0) {\n                    response.groups.forEach(function(group) {\n                        $gruppo.append(\n                            $('<option>', {\n                                value: group.group_id,\n                                text: group.group_name\n                            })\n                        );\n                    });\n                } else {\n                    $gruppo.append('<option disabled>No groups available<\/option>');\n                }\n\n                $gruppo.prop('disabled', false); \/\/ Enable after loading\n\n                \/\/ Optional: Update dashboard counters if needed\n                if (response.total_licenses !== undefined) {\n                    $('.dashboard-card .count.total-licenses').text(response.total_licenses);\n                    $('.dashboard-card .count.coordinators').text(response.unique_coordinators);\n                    $('.dashboard-card .count.educators').text(response.unique_educators);\n                    $('.dashboard-card .count.collaborators').text(response.unique_collaborators);\n                }\n            }\n        });\n    }\n\n    \/\/ Add custom validation methods\n   $.validator.addMethod(\"dateOrder\", function (value, element, params) {\n        const start = $(params[0]).val();\n        const end = $(params[1]).val();\n        return start && end && new Date(start) <= new Date(end);\n    }, \"The start date must be before the end date.\");\n\n\n    $.validator.addMethod(\"notSameRange\", function (value, element) {\n        const r1Start = $('#range1Start').val();\n        const r1End = $('#range1End').val();\n        const r2Start = $('#range2Start').val();\n        const r2End = $('#range2End').val();\n        return !(r1Start === r2Start && r1End === r2End);\n    }, \"The two intervals cannot be identical.\");\n\n\n    \/\/ Init validation\n    $('#dateRangeForm').validate({\n        rules: {\n        range1Start: {\n            required: true,\n            dateOrder: ['#range1Start', '#range1End'],\n            notSameRange: true\n        },\n        range1End: {\n            required: true,\n            dateOrder: ['#range1Start', '#range1End']\n        },\n        range2Start: {\n            required: true,\n            dateOrder: ['#range2Start', '#range2End'],\n            notSameRange: true\n        },\n        range2End: {\n            required: true,\n            dateOrder: ['#range2Start', '#range2End']\n        }\n        },\n        submitHandler: function () {\n            submitCompareData();\n        }\n    });\n\n    $('.close-popup').click(function () {\n        $('#date-range-popup').hide();\n    });\n\n    if (!isSupervisore) {\n        \/\/ When gruppo changes\n        $('#gruppo').on('change', function() {\n            const selectedGroup = $(this).val();\n            loadUsers(selectedGroup);\n        });\n\n        \/\/ When role changes\n        $('#ruolo').on('change', function() {\n            const selectedRole = $(this).val();\n            const selectedGroup = $('#gruppo').val();\n            const selectedSupervisore = $('#supervisore').val();\n            loadUsers(selectedGroup, selectedSupervisore, selectedRole);\n        });\n\n        \/\/ When supervisore changes\n        $('#supervisore').on('change', function() {\n            const selectedSupervisore = $(this).val();\n            const selectedGroup = $('#gruppo').val();\n            loadGruppo(selectedSupervisore);\n            loadUsers(selectedGroup, selectedSupervisore);\n            \n            setTimeout(function () {\n                const offsetTop = $('#dashboard-cards').offset()?.top;\n                if (offsetTop !== undefined) {\n                    $('html, body').animate({\n                        scrollTop: offsetTop - 50 \n                    }, 500);\n                }\n            }, 500);\n        });\n    }\n\n    function loadFormAreas() {\n        const form = $('.filter-grid');\n        const formId = $('#test').val();\n        const $area = $('#area');\n        const $filterBtn = form.find('.fiter-btn');\n\n        \/\/ Disable while loading\n        $area.prop('disabled', true).empty().append('<option value=\"\">Loading...<\/option>');\n        $filterBtn.prop('disabled', true).addClass('loading');\n\n        $.ajax({\n            url: PSL_AJAX_URL,\n            method: 'POST',\n            dataType: 'json',\n            data: {\n                action: 'get_form_areas',\n                form_id: formId\n            },\n            success: function(response) {\n                $area.empty(); \/\/ Clear all previous options\n\n                if (response.success && Array.isArray(response.data)) {\n                    $area.append('<option value=\"all\">All<\/option>');\n\n                    \/\/ Group areas by form_id\n                    const groupedAreas = {};\n                    response.data.forEach(function(area) {\n                        if (!groupedAreas[area.form]) {\n                            groupedAreas[area.form] = [];\n                        }\n                        groupedAreas[area.form].push(area);\n                    });\n\n                    const formCount = Object.keys(groupedAreas).length;\n\n                    if (formCount > 1) {\n                        \/\/ Use <optgroup> for multiple forms\n                        Object.keys(groupedAreas).forEach(function(formId) {\n                            const group = groupedAreas[formId];\n                            const $optgroup = $('<optgroup>', { label: formId });\n\n                            group.forEach(function(area) {\n                                $optgroup.append($('<option>', {\n                                    value: area.name,\n                                    text: area.value\n                                }));\n                            });\n\n                            $area.append($optgroup);\n                        });\n                    } else {\n                        \/\/ Single form: just list areas without optgroup\n                        const singleGroup = groupedAreas[Object.keys(groupedAreas)[0]];\n                        singleGroup.forEach(function(area) {\n                            $area.append($('<option>', {\n                                value: area.name,\n                                text: area.value\n                            }));\n                        });\n                    }\n\n                    $area.prop('disabled', false); \/\/ Re-enable select\n                } else {\n                    $area.append('<option disabled>No areas found<\/option>');\n                    $area.prop('disabled', false);\n                }\n            },\n            error: function(xhr, status, error) {\n                console.error('AJAX error:', status, error);\n                $area.empty().append('<option disabled>Loading error<\/option>').prop('disabled', false);\n            },\n            complete: function() {\n                \/\/ Always re-enable filter button\n                $filterBtn.prop('disabled', false).removeClass('loading');\n            }\n        });\n    }\n\n    $(document).on('click', '.compare-btn', function () {\n        $('#date-range-popup').show();\n        \/\/ Initialize Flatpickr on visible fields (if not already initialized)\n        $(\".flatpickr-start, .flatpickr-end\").flatpickr({\n            locale: \"it\",\n            dateFormat: \"d\/m\/Y\",\n            monthSelectorType: \"static\",\n            yearSelectorType: \"dropdown\"\n        });\n    });\n\n    $(document).on('click', '.remove-compare-btn', function () {\n        $('.filter-grid').trigger('submit');\n    });\n\n    \/\/ Close popup\n    $(document).on(\"click\", \".close-popup\", function () {\n        $(\"#date-range-popup\").hide();\n    });\n\n    $(document).on('click', '.export-btn', function () {\n        const $btn = $(this);\n        $btn.prop('disabled', true).text('Export...');\n\n        const $container = $btn.closest('.area-container');\n        const $table = $container.find('.paginated-table');\n        const $title = $container.find('h6').first().text().trim() || 'export';\n\n        let data = [];\n\n        \/\/ \u2705 Manually define headers\n        const headers = [\n            'Name',\n            'Role',\n            'Compiled tests',\n            'Elementary',\n            'Intermediate',\n            'Advanced'\n        ];\n\n        data.push(headers);\n\n        \/\/ \u2705 Skip first 2 rows (header rows)\n        $table.find('tr').slice(2).each(function () {\n            let row = [];\n\n            $(this).find('th, td').each(function (i) {\n                const $cell = $(this);\n                const $small = $cell.find('small');\n                const mainText = $cell.clone().find('small').remove().end().text().trim();\n                const smallText = $small.length ? $small.text().trim() : '';\n\n                if (i === 0) {\n                    row.push(mainText);    \/\/ Nome\n                    row.push(smallText);   \/\/ Ruolo\n                } else {\n                    row.push(mainText);\n                }\n            });\n\n            data.push(row);\n        });\n\n        $.ajax({\n            url: PSL_AJAX_URL,\n            method: 'POST',\n            data: {\n                action: 'export_excel',\n                title: $title,\n                data: JSON.stringify(data)\n            },\n            xhrFields: { responseType: 'blob' },\n            success: function (blob) {\n                const url = window.URL.createObjectURL(blob);\n                const a = document.createElement('a');\n                a.href = url;\n                a.download = `${$title}_${new Date().toISOString().slice(0, 19).replace(\/[:T]\/g, '-')}.xlsx`;\n                a.click();\n                window.URL.revokeObjectURL(url);\n            },\n            error: function () {\n                alert('Export failed.');\n            },\n            complete: function () {\n                $btn.prop('disabled', false).html('Export to Excel');\n            }\n\n        });\n    });\n\n    $(document).on('click', '.export-all-btn', function () {\n        const $btn = $(this);\n        $btn.prop('disabled', true).text('Export...');\n\n        let exportData = [];\n\n        $('.area-container').each(function () {\n            const $container = $(this);\n            const $title = $container.find('h6').first().text().trim();\n            const $table = $container.find('.paginated-table');\n\n            if ($table.length === 0) return;\n\n            let tableData = [];\n\n            \/\/ Define headers\n            const headers = [\n                'Name',\n                'Role',\n                'Compiled tests',\n                'Elementary',\n                'Intermediate',\n                'Advanced'\n            ];\n            tableData.push(headers);\n\n            \/\/ Skip the first 2 rows (assumed to be header rows)\n            $table.find('tr').slice(2).each(function () {\n                let row = [];\n\n                $(this).find('th, td').each(function (i) {\n                    const $cell = $(this);\n                    const $small = $cell.find('small');\n                    const mainText = $cell.clone().find('small').remove().end().text().trim();\n                    const smallText = $small.length ? $small.text().trim() : '';\n\n                    if (i === 0) {\n                        row.push(mainText);    \/\/ Nome\n                        row.push(smallText);   \/\/ Ruolo\n                    } else {\n                        row.push(mainText);\n                    }\n                });\n\n                tableData.push(row);\n            });\n\n            exportData.push({\n                title: $title,\n                rows: tableData\n            });\n        });\n\n        $.ajax({\n            url: PSL_AJAX_URL,\n            method: 'POST',\n            data: {\n                action: 'export_all_excel',\n                data: JSON.stringify(exportData)\n            },\n            xhrFields: { responseType: 'blob' },\n            success: function (blob) {\n                const url = window.URL.createObjectURL(blob);\n                const a = document.createElement('a');\n                a.href = url;\n\n                \/\/ \u2705 Use tab title if available, fallback to #test\n                let title = $('.tab-titles a.active').text().trim();\n                if (!title) {\n                    title = $('#test option:selected').text().trim() || 'export';\n                }\n                const slugified = title.toLowerCase().replace(\/[^a-z0-9]+\/g, '_').replace(\/^_+|_+$\/g, '');\n\n                const now = new Date();\n                const timestamp = now.toISOString().slice(0, 19).replace(\/[:T]\/g, '-');\n\n                a.download = `${slugified}_${timestamp}.xlsx`;\n                a.click();\n                window.URL.revokeObjectURL(url);\n            },\n            error: function () {\n                alert('Export failed.');\n            },\n            complete: function () {\n                $btn.prop('disabled', false).html('Export to Excel');\n            }\n        });\n    });\n\n    $(document).on('click', '.export-pdf-btn', async function () {\n        const $btn = $(this);\n        $btn.prop('disabled', true).text('Export...');\n\n        try {\n            const { jsPDF } = window.jspdf;\n            const pdf = new jsPDF({ orientation: 'portrait', unit: 'mm', format: 'a4' });\n\n            \/\/ Find the closest area-container\n            const $container = $btn.closest('.area-container');\n\n            if (!$container.length) {\n                alert('No areas found to export.');\n                return;\n            }\n\n            \/\/ Generate filename\n            let baseName = $container.find('.area-title').text().trim();\n            if (!baseName) {\n                baseName = 'area-export';\n            }\n\n            const slugifiedName = baseName\n                .toLowerCase()\n                .replace(\/[^\\w\\s-]\/g, '')\n                .replace(\/[\\s_-]+\/g, '-')\n                .replace(\/^-+|-+$\/g, '');\n\n            const now = new Date();\n            const timestamp = now.toISOString()\n                .replace(\/[:.]\/g, '-')\n                .replace('T', '_')\n                .slice(0, 19);\n\n            const filename = `${slugifiedName}-${timestamp}.pdf`;\n\n            \/\/ Add main title\n            let currentYPosition = 15;\n            const pageWidth = pdf.internal.pageSize.getWidth();\n            const textWidth = pdf.getTextWidth(baseName);\n            const centerX = (pageWidth - textWidth) \/ 2;\n\n            pdf.setFontSize(18);\n            pdf.setFont(\"helvetica\", \"bold\");\n            pdf.text(baseName, centerX, currentYPosition);\n            currentYPosition += 15;\n\n            \/\/ Get all .period-section elements in the area\n            const $sections = $container.find('.period-section');\n            const targets = $sections.length ? $sections.toArray() : [$container.find('.charts-wrapper')[0]];\n\n            for (let i = 0; i < targets.length; i++) {\n                const section = targets[i];\n                if (!section) continue;\n\n                \/\/ const sectionTitle = $(section).find('.period-title, .section-title').text().trim() || `Sezione ${i + 1}`;\n                \n                \/\/ pdf.setFontSize(14);\n                \/\/ pdf.setFont(\"helvetica\", \"bold\");\n                \/\/ pdf.text(sectionTitle, 10, currentYPosition);\n                \/\/ currentYPosition += 10;\n\n                try {\n                    const canvas = await html2canvas(section, {\n                        backgroundColor: \"#ffffff\",\n                        scale: 2,\n                        useCORS: true,\n                        logging: false,\n                        ignoreElements: (element) =>\n                            element.tagName === 'CANVAS' &&\n                            (element.width === 0 || element.height === 0)\n                    });\n\n                    const imgData = canvas.toDataURL('image\/png');\n                    const imgProps = pdf.getImageProperties(imgData);\n                    const pdfWidth = 190;\n                    const pdfHeight = (imgProps.height * pdfWidth) \/ imgProps.width;\n\n                    if (currentYPosition + pdfHeight > 280) {\n                        pdf.addPage();\n                        currentYPosition = 15;\n                    }\n\n                    pdf.addImage(imgData, 'PNG', 10, currentYPosition, pdfWidth, pdfHeight);\n                    currentYPosition += pdfHeight + 10;\n\n                } catch (err) {\n                    console.error(`Error capturing section ${i + 1}:`, err);\n                    pdf.setFontSize(10);\n                    pdf.setFont(\"helvetica\", \"normal\");\n                    pdf.text(`Sezione ${i + 1} non esportabile.`, 10, currentYPosition);\n                    currentYPosition += 20;\n                }\n            }\n\n            pdf.save(filename);\n\n        } catch (err) {\n            console.error(\"PDF export error:\", err);\n            alert('Export failed: \\' + err.message + \\'');\n        } finally {\n            $btn.prop('disabled', false).text('Export to PDF');\n        }\n    });\n\n\n    $(document).on('click', '.export-all-pdf-btn', async function () {\n        const $btn = $(this);\n        $btn.prop('disabled', true).text('Export...');\n\n        try {\n            const { jsPDF } = window.jspdf;\n            const pdf = new jsPDF({ orientation: 'portrait', unit: 'mm', format: 'a4' });\n\n            \/\/ Get visible area containers\n            const $areaContainers = $('.area-container').filter(function () {\n                const $tabContent = $(this).closest('.tab-content');\n                return $tabContent.length === 0 || $tabContent.css('display') !== 'none';\n            });\n\n            if ($areaContainers.length === 0) {\n                alert('No visible areas found to export.');\n                return;\n            }\n\n            \/\/ Generate filename\n            let baseName = $('.tab-titles a.active').text().trim();\n            if (!baseName) {\n                baseName = $('#test option:selected').text().trim() || 'export';\n            }\n\n            const slugifiedName = baseName\n                .toLowerCase()\n                .replace(\/[^\\w\\s-]\/g, '')\n                .replace(\/[\\s_-]+\/g, '-')\n                .replace(\/^-+|-+$\/g, '');\n\n            const now = new Date();\n            const timestamp = now.toISOString()\n                .replace(\/[:.]\/g, '-')\n                .replace('T', '_')\n                .slice(0, 19);\n\n            const filename = `${slugifiedName}-${timestamp}.pdf`;\n\n            let currentYPosition = 15;\n            const pageWidth = pdf.internal.pageSize.getWidth();\n\n            \/\/ Add main title\n            pdf.setFontSize(18);\n            pdf.setFont(\"helvetica\", \"bold\");\n            const textWidth = pdf.getTextWidth(baseName);\n            const centerX = (pageWidth - textWidth) \/ 2;\n            pdf.text(baseName, centerX, currentYPosition);\n            currentYPosition += 15;\n\n            for (let i = 0; i < $areaContainers.length; i++) {\n                const $container = $($areaContainers[i]);\n                const areaTitle = $container.find('.area-title').text().trim() || `Area ${i + 1}`;\n\n                const $sections = $container.find('.period-section');\n                const targets = $sections.length ? $sections.toArray() : [$container.find('.charts-wrapper')[0]];\n\n                for (let j = 0; j < targets.length; j++) {\n                    const section = targets[j];\n                    if (!section) continue;\n\n                    \/\/ Add area and section title\n                    pdf.setFontSize(14);\n                    pdf.setFont(\"helvetica\", \"bold\");\n                    const sectionTitle = areaTitle\n                    pdf.text(sectionTitle, 10, currentYPosition);\n                    currentYPosition += 10;\n\n                    try {\n                        const canvas = await html2canvas(section, {\n                            backgroundColor: \"#ffffff\",\n                            scale: 2,\n                            useCORS: true,\n                            logging: false,\n                            ignoreElements: (element) =>\n                                element.tagName === 'CANVAS' &&\n                                (element.width === 0 || element.height === 0)\n                        });\n\n                        const imgData = canvas.toDataURL('image\/png');\n                        const imgProps = pdf.getImageProperties(imgData);\n                        const pdfWidth = 190;\n                        const pdfHeight = (imgProps.height * pdfWidth) \/ imgProps.width;\n\n                        if (currentYPosition + pdfHeight > 280) {\n                            pdf.addPage();\n                            currentYPosition = 15;\n                        }\n\n                        pdf.addImage(imgData, 'PNG', 10, currentYPosition, pdfWidth, pdfHeight);\n                        currentYPosition += pdfHeight + 10;\n\n                    } catch (err) {\n                        console.error(`Error capturing area ${i + 1}, section ${j + 1}:`, err);\n                        pdf.setFontSize(10);\n                        pdf.setFont(\"helvetica\", \"normal\");\n                        pdf.text(`Section ${j + 1} could not be exported.`, 10, currentYPosition);\n                        currentYPosition += 20;\n                    }\n                }\n            }\n\n            pdf.save(filename);\n\n        } catch (err) {\n            console.error(\"PDF export error:\", err);\n            alert('Export failed:' + err.message);\n        } finally {\n            $btn.prop('disabled', false).html('Export to PDF');\n        }\n    });\n\n\n\n\n    \/\/ Run area loading only for non-supervisore users\n    if (!isSupervisore) {\n        $('#test').on('change', loadFormAreas);\n        loadFormAreas();\n    }\n    \n    \/\/ Function to fetch and display data\n    $('.filter-grid').on('submit', function(e) {\n        e.preventDefault();\n\n        if (isSupervisore) {\n            const targetOffset = $('#filter-results').offset()?.top;\n            if (targetOffset !== undefined) {\n                $('html, body').animate({\n                    scrollTop: targetOffset\n                }, 400);\n            }\n            return;\n        }\n\n        const form = $(this);\n        const data = {};\n        const $filterBtn = form.find('.fiter-btn');\n        const total_licenze = parseInt($('.total-licenses').text().trim());\n\n        form.find('select, input').each(function() {\n            const name = $(this).attr('name');\n            const isSelect = $(this).is('select');\n            const value = $(this).val();\n\n            if (isSelect && (value === 'all' || value === '')) {\n                const name = $(this).attr('name');\n                if (name === 'ruolo') return;\n                \/\/ Get all options except \"all\" and empty ones\n                const allValues = $(this).find('option').map(function() {\n                    const val = $(this).val();\n                    return (val !== 'all' && val !== '') ? val : null;\n                }).get();\n\n                data[name] = allValues;\n            } else {\n                data[name] = value;\n            }\n        });\n\n        data.supervisore_label = $('#supervisore option:selected').text().trim();\n        data.total_licenses = total_licenze;\n\n        $.ajax({\n            url: PSL_AJAX_URL,\n            type: 'POST',\n            data: {\n                action: 'filter_grid_data',\n                ...data\n            },\n            beforeSend: function() {\n                $('#filter-results').html('<div class=\"loading\">Loading...<\/div>');\n                $filterBtn.prop('disabled', true).addClass('loading');\n            },\n            success: function(response) {\n                $('#filter-results').html(response);\n\n                setTimeout(function () {\n                    const $firstTab = $('#form-tabs .tab-titles a').first();\n                    if ($firstTab.length) {\n                        $firstTab.trigger('click');\n                    }\n                }, 50);\n\n                setTimeout(function () {\n                    if (typeof initUserLevelCharts === 'function') {\n                        initUserLevelCharts();\n                    }\n                    if (typeof initPaginatedTables === 'function') {\n                        initPaginatedTables(5);\n                    }\n                }, 100); \/\/ Ensure DOM is fully ready\n\n                \/\/ Scroll after everything is initialized\n                setTimeout(function () {\n                    const targetOffset = $('#filter-results').offset()?.top;\n                    if (targetOffset !== undefined) {\n                        $('html, body').animate({\n                            scrollTop: targetOffset\n                        }, 500); \/\/ Slightly longer duration for smoothness\n                    }\n                }, 200); \/\/ Wait a bit after layout updates\n            },\n            error: function(err) {\n                console.error('AJAX Error:', err);\n            },\n            complete: function() {\n                $filterBtn.prop('disabled', false).removeClass('loading'); \n            }\n        });\n    });\n\n    function submitCompareData() {\n        if (isSupervisore) {\n            $('#date-range-popup').hide();\n            return;\n        }\n\n        const range1Start = $('#range1-start').val();\n        const range1End = $('#range1-end').val();\n        const range2Start = $('#range2-start').val();\n        const range2End = $('#range2-end').val();\n\n        const filterData = {};\n        $('.filter-grid').find('select, input').each(function () {\n            const name = $(this).attr('name');\n            const value = $(this).val();\n            const isSelect = $(this).is('select');\n\n            if (isSelect && (value === 'all' || value === '')) {\n            if (name === 'ruolo') return;\n            const allValues = $(this).find('option').map(function () {\n                const val = $(this).val();\n                return (val !== 'all' && val !== '') ? val : null;\n            }).get();\n            filterData[name] = allValues;\n            } else {\n            filterData[name] = value;\n            }\n        });\n\n        const data = {\n            action: 'compare_date_ranges',\n            range1_start: range1Start,\n            range1_end: range1End,\n            range2_start: range2Start,\n            range2_end: range2End,\n            ...filterData\n        };\n\n        data.supervisore_label = $('#supervisore option:selected').text().trim();\n\n        $.ajax({\n            url: PSL_AJAX_URL,\n            type: 'POST',\n            data,\n            beforeSend: function () {\n            $('#filter-results').html('<div class=\"loading\">Comparison in progress...<\/div>');\n            },\n            success: function (response) {\n                $('#filter-results').html(response);\n                $('#date-range-popup').hide();\n            },\n            error: function () {\n            $('#filter-results').html('<div class=\"error\">Error during comparison<\/div>');\n            }\n        });\n    }\n});\n\njQuery(document).on('click', '#form-tabs .tab-titles a', function(e) {\n    e.preventDefault();\n\n    const $ = jQuery;\n    const targetId = $(this).attr(\"href\");\n\n    \/\/ Hide all tab contents and show the selected one\n    $(\"#form-tabs .tab-content\").hide();\n    $(targetId).show();\n\n    \/\/ Set active class\n    $(\"#form-tabs .tab-titles a\").removeClass(\"active\");\n    $(this).addClass(\"active\");\n});\n\n\njQuery(document).on('click', '.entries-count', function () {\n    const entryLevels = JSON.parse(jQuery(this).attr('data-entry-levels') || '[]');\n    const popup = jQuery('#user-popup');\n    const content = popup.find('.user-popup-content');\n\n    if (entryLevels.length) {\n        const levelClassMap = {\n            'Elementare': 'badge-red',\n            'Intermedio': 'badge-blue',\n            'Avanzato': 'badge-green'\n        };\n\n        const list = entryLevels.map(function (entry) {\n            const badgeClass = levelClassMap[entry.level] || '';\n            return '<li><i class=\"fa fa-calendar-alt\"><\/i> ' + entry.date +\n                   ' <span class=\"level-badge ' + badgeClass + '\">' + entry.level + '<\/span><\/li>';\n        }).join('');\n\n        content.html('<ul class=\"dates-grid\">' + list + '<\/ul>');\n    } else {\n        content.html('<p>No dates available.<\/p>');\n    }\n\n    popup.show();\n});\n\n\njQuery(document).on('click', '.close-popup', function() {\n    jQuery('#user-popup').hide();\n});\n\n\nfunction initPaginatedTables(rowsPerPage = 1) {\n    jQuery(\".paginated-table\").each(function () {\n        const $table = jQuery(this);\n        const $tbody = $table.find(\"tbody\");\n        const $rows = $tbody.find(\"tr\");\n        const totalPages = Math.ceil($rows.length \/ rowsPerPage);\n        const $controls = $table.closest(\".table-wrapper\").find(\".pagination-controls\");\n\n        if (!$controls.length || totalPages <= 1) return;\n\n        let currentPage = 1;\n        let currentRangeStart = 1;\n\n        function showPage(page, scroll = false) {\n            currentPage = page;\n            $rows.each(function (index) {\n                jQuery(this).toggle(index >= (page - 1) * rowsPerPage && index < page * rowsPerPage);\n            });\n            renderControls();\n\n            if (scroll) {\n                const offsetTop = $table.offset()?.top;\n                if (offsetTop !== undefined) {\n                    jQuery(\"html, body\").animate({\n                        scrollTop: offsetTop - 50\n                    }, 400);\n                }\n            }\n        }\n\n        function renderControls() {\n            $controls.empty();\n\n            const rangeSize = 10;\n            const currentRange = Math.floor((currentPage - 1) \/ rangeSize);\n            const start = currentRange * rangeSize + 1;\n            const end = Math.min(start + rangeSize - 1, totalPages);\n\n            \/\/ Prev range button\n            if (start > 1) {\n                const $prev = jQuery(\"<button>\")\n                    .text(\"\u00ab Indietro\")\n                    .addClass(\"pagination-button\")\n                    .on(\"click\", function () {\n                        currentRangeStart = start - rangeSize;\n                        showPage(currentRangeStart, true);\n                    });\n                $controls.append($prev);\n            }\n\n            \/\/ Page number buttons\n            for (let i = start; i <= end; i++) {\n                const $btn = jQuery(\"<button>\")\n                    .text(i)\n                    .addClass(\"pagination-button\")\n                    .toggleClass(\"active\", i === currentPage)\n                    .on(\"click\", () => showPage(i, true));\n                $controls.append($btn);\n            }\n\n            \/\/ Next range button\n            if (end < totalPages) {\n                const $next = jQuery(\"<button>\")\n                    .text(\"Avanti \u00bb\")\n                    .addClass(\"pagination-button\")\n                    .on(\"click\", function () {\n                        currentRangeStart = end + 1;\n                        showPage(currentRangeStart, true);\n                    });\n                $controls.append($next);\n            }\n        }\n\n        \/\/ Initialize on first page\n        showPage(1, false);\n    });\n}\n\n\n\n<\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Area Corporate Area Corporate Profilo professionale Registrazione gruppi Gestisci gruppi Analisi dell\u2019ente Codici Promozionali Archivio Agenda Menu de altern\u00e2ncia de hamb\u00farguer Menu Data Analysis Skills Tool<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-2656","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.1.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Analysis of the institution - Corporate<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Analysis of the institution - Corporate\" \/>\n<meta property=\"og:description\" content=\"Area Corporate Area Corporate Profilo professionale Registrazione gruppi Gestisci gruppi Analisi dell\u2019ente Codici Promozionali Archivio Agenda Menu de altern\u00e2ncia de hamb\u00farguer Menu Data Analysis Skills Tool\" \/>\n<meta property=\"og:url\" content=\"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/\" \/>\n<meta property=\"og:site_name\" content=\"Corporate\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-14T16:21:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2.webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/\",\"url\":\"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/\",\"name\":\"Analysis of the institution - Corporate\",\"isPartOf\":{\"@id\":\"https:\/\/corporate.pslzero6-demo.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2.webp\",\"datePublished\":\"2025-06-06T05:33:16+00:00\",\"dateModified\":\"2025-10-14T16:21:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/#primaryimage\",\"url\":\"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2.webp\",\"contentUrl\":\"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2.webp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/corporate.pslzero6-demo.net\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Analysis of the institution\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/corporate.pslzero6-demo.net\/en\/#website\",\"url\":\"https:\/\/corporate.pslzero6-demo.net\/en\/\",\"name\":\"Corporate\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/corporate.pslzero6-demo.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/corporate.pslzero6-demo.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/corporate.pslzero6-demo.net\/en\/#organization\",\"name\":\"Corporate\",\"url\":\"https:\/\/corporate.pslzero6-demo.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/corporate.pslzero6-demo.net\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2024\/11\/Logo-PSL-zerosei.png\",\"contentUrl\":\"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2024\/11\/Logo-PSL-zerosei.png\",\"width\":328,\"height\":152,\"caption\":\"Corporate\"},\"image\":{\"@id\":\"https:\/\/corporate.pslzero6-demo.net\/en\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Analysis of the institution - Corporate","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Analysis of the institution - Corporate","og_description":"Area Corporate Area Corporate Profilo professionale Registrazione gruppi Gestisci gruppi Analisi dell\u2019ente Codici Promozionali Archivio Agenda Menu de altern\u00e2ncia de hamb\u00farguer Menu Data Analysis Skills Tool","og_url":"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/","og_site_name":"Corporate","article_modified_time":"2025-10-14T16:21:01+00:00","og_image":[{"url":"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2.webp","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/","url":"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/","name":"Analysis of the institution - Corporate","isPartOf":{"@id":"https:\/\/corporate.pslzero6-demo.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/#primaryimage"},"image":{"@id":"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/#primaryimage"},"thumbnailUrl":"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2.webp","datePublished":"2025-06-06T05:33:16+00:00","dateModified":"2025-10-14T16:21:01+00:00","breadcrumb":{"@id":"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/#primaryimage","url":"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2.webp","contentUrl":"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2025\/05\/bisogno-interazione-2.webp"},{"@type":"BreadcrumbList","@id":"https:\/\/corporate.pslzero6-demo.net\/en\/analisi-dell-ente\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/corporate.pslzero6-demo.net\/en\/"},{"@type":"ListItem","position":2,"name":"Analysis of the institution"}]},{"@type":"WebSite","@id":"https:\/\/corporate.pslzero6-demo.net\/en\/#website","url":"https:\/\/corporate.pslzero6-demo.net\/en\/","name":"Corporate","description":"","publisher":{"@id":"https:\/\/corporate.pslzero6-demo.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/corporate.pslzero6-demo.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/corporate.pslzero6-demo.net\/en\/#organization","name":"Corporate","url":"https:\/\/corporate.pslzero6-demo.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/corporate.pslzero6-demo.net\/en\/#\/schema\/logo\/image\/","url":"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2024\/11\/Logo-PSL-zerosei.png","contentUrl":"https:\/\/corporate.pslzero6-demo.net\/wp-content\/uploads\/sites\/5\/2024\/11\/Logo-PSL-zerosei.png","width":328,"height":152,"caption":"Corporate"},"image":{"@id":"https:\/\/corporate.pslzero6-demo.net\/en\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/corporate.pslzero6-demo.net\/en\/wp-json\/wp\/v2\/pages\/2656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/corporate.pslzero6-demo.net\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/corporate.pslzero6-demo.net\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/corporate.pslzero6-demo.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/corporate.pslzero6-demo.net\/en\/wp-json\/wp\/v2\/comments?post=2656"}],"version-history":[{"count":11,"href":"https:\/\/corporate.pslzero6-demo.net\/en\/wp-json\/wp\/v2\/pages\/2656\/revisions"}],"predecessor-version":[{"id":2859,"href":"https:\/\/corporate.pslzero6-demo.net\/en\/wp-json\/wp\/v2\/pages\/2656\/revisions\/2859"}],"wp:attachment":[{"href":"https:\/\/corporate.pslzero6-demo.net\/en\/wp-json\/wp\/v2\/media?parent=2656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}