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>