duplicate_list.ftl

 1   <#if duplicate_rule_list?has_content && mediation_identity_list?has_content && current_page??>
 2       <#if count_total_duplicated gt 0 >
 3           <#if current_rule_code?has_content>
 4               <#assign title><strong>${count_duplicate_by_rule[current_rule_code]}</strong> <#if count_duplicate_by_rule[current_rule_code] gt 1>#i18n{identitymediation.choose_duplicate_type.pendingDuplicates}<#else>#i18n{identitymediation.choose_duplicate_type.pendingDuplicate}</#if></#assign>
 5           <#else>
 6               <#assign title><strong>${count_total_duplicated}</strong> <#if count_total_duplicated gt 1>#i18n{identitymediation.choose_duplicate_type.pendingDuplicates}<#else>#i18n{identitymediation.choose_duplicate_type.pendingDuplicate}</#if></#assign>
 7           </#if>
 8       <#else>
 9         <#list duplicate_rule_list as rule>
 10             <#if rule.code == current_rule_code>
 11                 <#assign title><strong>${rule.duplicateCount}</strong> <#if rule.duplicateCount?number gt 1>#i18n{identitymediation.choose_duplicate_type.pendingDuplicates}<#else>#i18n{identitymediation.choose_duplicate_type.pendingDuplicate}</#if></#assign>
 12             </#if>
 13         </#list>
 14       </#if>
 15       <#assign isClosed = false />
 16       <#if identity_list?? && identity_list?size gt 3>
 17       <#assign isClosed = true />
 18       </#if>
 19       <@pageColumn width="25rem" flush=true responsiveMenuSize="xxl" responsiveMenuPlacement="end"
 20         responsiveMenuTitle="#i18n{identitymediation.search_duplicates.pageTitle}" id="mediation-duplicate-list" class=" border-start-0" responsiveMenuClose=isClosed>
 21           <div class="border-bottom p-4 sticky-top">
 22           <h1 class="text-center mb-0 py-2 pb-1">${title!''}
 23           </h1>
 24           </div>
 25           <ul id="duplicate-list" class="list-group list-group-flush overflow-auto" style="height:calc(100vh - 280px)">
 26             <#if mediation_identity_list?size gt 0>
 27               <#list mediation_identity_list as mediation_identity>
 28               <#assign selectedClasses></#assign>
 29                 <#if suspicious_identity?? && suspicious_identity.customerId == mediation_identity.suspiciousIdentity.customerId >
 30                   <#assign selectedClasses>bg-secondary-subtle shadow selected</#assign>
 31                 </#if>
 32                 <a href='jsp/admin/plugins/identitymediation/IdentityDuplicate.jsp?view=selectIdentities&cuid=${mediation_identity.suspiciousIdentity.customerId}&code=${rule_by_identity[mediation_identity.suspiciousIdentity.customerId]}&page=${current_page}&family_name=${family_name!""}&first_name=${first_name!""}&birthdate=${birthdate!""}'
 33                    class="list-group-item list-group-item-action px-4 py-3 ${selectedClasses}" style="cursor: pointer;">
 34                     <#assign familyNameAttr = mediation_identity.suspiciousIdentity.attributes?filter(a -> a.key == "family_name")?first!{}>
 35                     <#assign firstNameAttr = mediation_identity.suspiciousIdentity.attributes?filter(a -> a.key == "first_name")?first!{}>
 36                     <#assign emailAttr = mediation_identity.suspiciousIdentity.attributes?filter(a -> a.key == "email")?first!{}>
 37                     <#assign birthdateAttr = mediation_identity.suspiciousIdentity.attributes?filter(a -> a.key == "birthdate")?first!{}>
 38                     <div class="d-flex w-100 justify-content-between">
 39                       <h3 class="mb-1 title mt-1 text-break fw-bold">
 40                         <#if familyNameAttr??>
 41                           ${familyNameAttr.value!'-'}
 42                         </#if>
 43                         <#if familyNameAttr??>
 44                           ${firstNameAttr.value!'-'}
 45                         </#if>
 46                       </h3>
 47                     <div>
 48                       <#if mediation_identity.duplicatesToMergeAttributes??>
 49                       <#assign duplicatesToMergeAttributesSize = mediation_identity.duplicatesToMergeAttributes?size />
 50                       <#if duplicatesToMergeAttributesSize gt 1>
 51                         <@tag color="primary"><strong>${duplicatesToMergeAttributesSize}</strong> #i18n{identitymediation.search_duplicates.status.selection}</@tag>
 52                       <#elseif  duplicatesToMergeAttributesSize == 1 >
 53                         <#assign firstKey = mediation_identity.duplicatesToMergeAttributes?keys[0]>
 54                         <#if firstKey.monParisActive >
 55                           <@tag color="warning">#i18n{identitymediation.search_duplicates.status.notification}</@tag>
 56                         <#else>
 57                           <@tag color="warning">#i18n{identitymediation.search_duplicates.status.merge}</@tag>
 58                         </#if>
 59                       <#else>
 60                         <@tag color="success">#i18n{identitymediation.search_duplicates.status.empty}</@tag>
 61                       </#if>
 62                     </#if>
 63                       </div>
 64                       </div>
 65                       <#if emailAttr.value??>
 66                         <div>${emailAttr.value}</div>
 67                       </#if>
 68                       <#if birthdateAttr.value??>
 69                       <div>${birthdateAttr.value}</div>
 70                     </#if>
 71                     <#if mediation_identity.duplicatesToMergeAttributes??>
 72                   </#if>
 73                 </a>
 74               </#list>
 75             </#if>
 76           </ul>
 77           <nav aria-label="Pagination" class="border-top">
 78               <ul class="pagination justify-content-center mt-3 mb-0">
 79                   <li class="page-item <#if current_page == 1>disabled</#if>">
 80                       <a class="page-link" onclick="changePage(${current_page - 1})" tabindex="-1" aria-disabled="true"><i class="ti ti-chevron-left"></i></a>
 81                   </li>
 82                   <#if total_pages gt 6>
 83                   <li class="page-item">
 84                       <select id="paginationSelect" class="form-select rounded-0" style="width: auto;">
 85                           <#list 1..total_pages as page>
 86                               <option value="${page}" <#if current_page == page>selected</#if>>${page}</option>
 87                           </#list>
 88                       </select>
 89                   </li>
 90                   <#elseif total_pages gt 0>
 91                       <#list 1..total_pages as page>
 92                       <li class="page-item <#if current_page == page>border-primary-subtle border-end border-top-0 border-start-0 border-bottom-0</#if>">
 93                           <a class="page-link <#if current_page == page>text-primary-emphasis bg-primary-subtle border border-primary-subtle border-end</#if> <#if current_page == page - 1>border-start-0</#if>" onclick="changePage(${page})">${page}</a>
 94                       </li>
 95                       </#list>
 96                   </#if>
 97                   <li class="page-item <#if current_page == total_pages>disabled</#if>">
 98                       <a class="page-link" onclick="changePage(${current_page + 1})"><i class="ti ti-chevron-right"></i></a>
 99                   </li>
 100               </ul>
 101           </nav>
 102       </@pageColumn>
 103       <script type="module">
 104           const selectedItem = document.querySelector('#duplicate-list .selected');
 105           const paginationSelect = document.getElementById("paginationSelect");
 106           paginationSelect && paginationSelect.addEventListener("change", function() {
 107             let selectedPage = this.value;
 108             window.location.href = "jsp/admin/plugins/identitymediation/IdentityDuplicate.jsp?view_searchDuplicates&code=${current_rule_code}&page=" + selectedPage;
 109           });
 110           if (selectedItem) {
 111               setTimeout(function() {
 112                   const ulElement = document.getElementById("duplicate-list");
 113                   ulElement.scrollTop = selectedItem.offsetTop - (ulElement.clientHeight / 2) + (selectedItem.clientHeight / 2);
 114               }, 100);
 115           }
 116       </script>
 117       <script>
 118           function changePage(page)
 119           {
 120               document.getElementById('currentPage').value = page;
 121               document.getElementById('sendForm').click();
 122           }
 123       </script>
 124   </#if>