menu.ftl
1 <#--
2 Element: Menu
3
4 Displays the filtering menu for identity search and mediation.
5
6 The element produces a column featuring a form section that allows the user to filter
7 potential duplicates based on different rules and to provide search criteria to refine the results.
8
9 @param first_name The first name to search for.
10 @param family_name The family name to search for.
11 @param birthdate The date of birth to search for.
12 @param current_rule_code The current rule code in context.
13 @param duplicate_rule_list The list of rules for finding duplicates.
14
15 @returns A rendered column for identity mediation and search.
16
17 Usage:
18 <@pageColumn ... />
19 -->
20 <@pageColumn id="mediation-filter-menu" width="22rem" responsiveMenuSize="xl" responsiveMenuPlacement="start"
21 responsiveMenuTitle="#i18n{identitymediation.search_duplicates.pageTitle}" class=" pt-xl-4 px-md-4 ">
22 <div class="">
23 <h1 class="mb-0 py-2 pb-1">#i18n{identitymediation.search_duplicates.pageTitle}</h1>
24 </div>
25 <hr class="d-none d-xxl-block">
26 <div class="" id="searchForm">
27 <div class="bg-transparent">
28 <div class=" bg-transparent">
29 <div id="searchContent" class="show" aria-labelledby="searchHeader" data-bs-parent="#searchAccordion">
30 <div class="">
31 <@tform method='post' name='search_identity' action='jsp/admin/plugins/identitymediation/IdentityDuplicate.jsp?view_searchDuplicates'
32 id='identitySearch'>
33 <input type='hidden' id="ruleCode" name='code' value='${current_rule_code!""}' />
34 <input type='hidden' id="currentPage" name='page' value='${current_page!""}' />
35 <@formGroup labelKey='#i18n{identitymediation.search_duplicates.first_name}' labelFor='first_name'
36 hideLabel=['all'] rows=2>
37 <@input type='text' id='first_name' name='first_name' value='${first_name!""}'
38 placeHolder='#i18n{identitymediation.search_duplicates.first_name}' size='' />
39 </@formGroup>
40 <@formGroup labelKey='#i18n{identitymediation.search_duplicates.family_name}' labelFor='family_name'
41 hideLabel=['all'] rows=2>
42 <@input type='text' id='family_name' name='family_name' value='${family_name!""}'
43 placeHolder='#i18n{identitymediation.search_duplicates.family_name}' size='' />
44 </@formGroup>
45 <@formGroup labelKey='#i18n{identitymediation.search_duplicates.birthdate}' labelFor='birthdate'
46 hideLabel=['all'] rows=2>
47 <@input type='text' id='birthdate' name='birthdate' value='${birthdate!""}'
48 placeHolder='#i18n{identitymediation.search_duplicates.birthdate}' size='' />
49 </@formGroup>
50 <@formGroup rows=2>
51 <div class="col-xs-6">
52 <button id="sendForm" type="submit" style="width: 45%;"
53 class="btn btn-primary btn-sm text-decoration-none border rounded-5">
54 <span><i class="ti ti-filter"></i> #i18n{portal.util.labelFilter}</span>
55 </button>
56 <button id="resetForm" type="button" style="width: 45%;"
57 class="btn btn-primary btn-sm text-decoration-none border rounded-5" onclick="resetSuspectForm()">
58 <span><i class="ti ti-rotate"></i> #i18n{portal.util.labelReset}</span>
59 </button>
60 </div>
61 </@formGroup>
62 <hr>
63 <div id="rulesContent" class="show" aria-labelledby="rulesHeader" data-bs-parent="#searchAccordion">
64 <div class="p-0">
65 <ul class="list-group list-group-flush">
66 <#list duplicate_rule_list as rule>
67 <#assign isCurrent = (current_rule_code?? && rule.code == current_rule_code) />
68 <a onclick="sendForm(`${rule.code}`, ${isCurrent?c});" style="cursor: pointer;"
69 class="list-group-item list-group-item-action border-bottom-0 <#if isCurrent>text-primary</#if>"
70 id="${rule.code}">
71 <div class="d-flex justify-content-between align-items-center">
72 <span class="my-auto <#if isCurrent>fw-bolder</#if>">${rule.name}</span>
73 <div class="d-flex align-items-center">
74 <#if count_duplicate_by_rule?size == duplicate_rule_list?size>
75 <#if count_duplicate_by_rule[rule.code] gt 0>
76 <@tag color="danger" class="border-1">${count_duplicate_by_rule[rule.code]}</@tag>
77 <#else>
78 <@tag color="success">${count_duplicate_by_rule[rule.code]}</@tag>
79 </#if>
80 <#else>
81 <#if rule.duplicateCount?number gt 0>
82 <@tag color="danger" class="border-1">${rule.duplicateCount}</@tag>
83 <#else>
84 <@tag color="success">${rule.duplicateCount}</@tag>
85 </#if>
86 </#if>
87 </div>
88 </div>
89 </a>
90 </#list>
91 </ul>
92 </div>
93 </div>
94 </@tform>
95 </div>
96 </div>
97 </div>
98 </div>
99 </div>
100 <script>
101 function sendForm(code, isCurrent) {
102 if(isCurrent) {
103 code = "";
104 }
105 document.getElementById('ruleCode').value = code;
106 document.getElementById('currentPage').value = 1;
107 document.getElementById('sendForm').click();
108 return false;
109 }
110 function resetSuspectForm() {
111 document.getElementById('ruleCode').value = "";
112 document.getElementById('first_name').value = "";
113 document.getElementById('family_name').value = "";
114 document.getElementById('birthdate').value = "";
115 document.getElementById('currentPage').value = 1;
116 document.getElementById('sendForm').click();
117 return false;
118 }
119 </script>
120 </@pageColumn>