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>