PageSourceSearch

https://www.datavat.com.au/modules/cows/search_cows/js/searchResult.js?v=1009.30102020

js datavat.com.au collected 2026-09-30 16:44:46 UTC 26,470 bytes, 465 lines download raw bytes

1// Check is Block Search Cow
2jQuery(document).ready(function($) {
3    var ctx = document.getElementById("block-searchcowblock");
4    if (typeof ctx !== 'undefined' && ctx !== null) {
5
6        var apiUrl = jQuery('#api_url').val();
7        var printWindow = null;
8
9        // Criterias cow
10        function getSearchCowCriterias() {
11
12            var pAbvRelease = jQuery('[attr-select-box="abv_release"]');
13            var pBreedSelect = jQuery('[attr-select-box="breed"]');
14            var breedVal = pBreedSelect.find('[attr-hiden-value="true"]').val().trim();
15            if (breedVal === 'All') {
16                breedVal = '';
17            }
18            // var pPollCSelect = jQuery('[attr-select-box="polled_carriers"');
19            var pGenotypedCSelect = jQuery('[attr-select-box="genotyped"]');
20            var pTerminatedSelect = jQuery('[attr-select-box="terminated"]');
21
22            var criterias = {
23                "RELEASE_ID": pAbvRelease.find('[attr-hiden-value="true"]').val(),
24                "SEARCH_ID": document.forms["cow-search-form"].elements['edit-search-by-id'].value.trim(),
25                "SEARCH_NAME": document.forms["cow-search-form"].elements['edit-search-by-name'].value.trim(),
26                "SEARCH_HERD": document.forms["cow-search-form"].elements['herd-owner-cow'].value ? JSON.parse(localStorage.getItem("parameterSeachCow"))["SEARCH_HERD"].key.trim() : '',
27                "SIRE_NATIONAL_ID": document.forms["cow-search-form"].elements['sire-search-cow'].value ? JSON.parse(localStorage.getItem("parameterSeachCow"))["SIRE_NATIONAL_ID"].key.trim() : '',
28                //"INTERNATIONAL_ID": document.forms[0].elements['international_id'].value.trim(), //New UI doesn't need- Dat 
29                // "BREED_CD": document.forms[0].elements['edit-breed'].value,
30                "BREED_CD": breedVal,
31                //"LONG_NAME": document.forms[0].elements['edit-long-name'].value.trim(), //New UI doesn't need- Dat
32                //"SHORT_NAME": document.forms[0].elements['edit-short-name'].value.trim(), //New UI doesn't need- Dat
33                "BIRTH_DATE_FROM": convertDDMMYYtoMMDDYY(document.forms["cow-search-form"].elements['edit-date-of-birth-from'].value),
34                "BIRTH_DATE_TO": convertDDMMYYtoMMDDYY(document.forms["cow-search-form"].elements['edit-date-of-birth-to'].value),
35                // "BPI": document.forms["cow-search-form"].elements['edit-bpi'].value.trim(),
36                //"MSPEED_BV": document.forms["cow-search-form"].elements['edit-milking-speed-abv'].value.trim(),
37                // "OTYPE_BV": document.forms["cow-search-form"].elements['edit-overall-type-abv-min'].value.trim(),
38                // "OTYPE_BV_MAX": document.forms["cow-search-form"].elements['edit-overall-type-abv-max'].value.trim(),
39                // "HWI": document.forms["cow-search-form"].elements['edit-hwi'].value.trim(),
40                //"TEMP_BV": document.forms["cow-search-form"].elements['edit-temperament-abv'].value.trim(),
41                // "MAMM_BV": document.forms["cow-search-form"].elements['edit-mammary-system-abv-min'].value.trim(),
42                // "MAMM_BV_MAX": document.forms["cow-search-form"].elements['edit-mammary-system-abv-max'].value.trim(),
43                // "LIKE_BV": document.forms["cow-search-form"].elements['edit-likability-abv'].value.trim(),
44                // "POLLED": pPollCSelect.find('[attr-hiden-value="true"]').val().trim(),
45                // "GENOTYPED": document.forms[0].elements['edit-genotyped'].value.trim(),
46                // "GENOTYPED": pGenotypedCSelect.find('[attr-hiden-value="true"]').val().trim(),
47                // "ASI": document.forms["cow-search-form"].elements['edit-asi'].value.trim(),
48                // "GENETIC_CODE": document.forms["cow-search-form"].elements['edit-genetic-codes'].value.trim(),
49                // "TERMINATED": pTerminatedSelect.find('[attr-hiden-value="true"]').val().trim(),
50
51                
52                // "FERT_BV": document.forms["cow-search-form"].elements['edit-daughter-fertility-abv'].value.trim(),
53                // "SCC_BV": document.forms["cow-search-form"].elements['edit-cell-count-abv'].value.trim(),
54                // "FEEDEF_BV": document.forms["cow-search-form"].elements['edit-feed-saved-abv'].value.trim(),
55                // "SURV_BV": document.forms["cow-search-form"].elements['edit-survival-abv'].value.trim(),
56                // "PARTY_CODE": document.forms["cow-search-form"].elements['company-search-cow'].value.trim()
57
58                "LAST_CALVING_DATE_FROM": convertDDMMYYtoMMDDYY(document.forms["cow-search-form"].elements['edit-last-calving-date-from'].value),
59                "LAST_CALVING_DATE_TO": convertDDMMYYtoMMDDYY(document.forms["cow-search-form"].elements['edit-last-calving-date-to'].value),
60                "GENETIC_CODE": document.forms["cow-search-form"].elements['edit-genetic-codes'].value.trim(),
61                "GENOTYPED": pGenotypedCSelect.find('[attr-hiden-value="true"]').val().trim(),
62            };
63
64            // Column 1
65            processFieldMore(criterias, "#more-field-cow-bpi-conditional", "#more-field-cow-bpi-value", "BPI");
66            processFieldMore(criterias, "#more-field-cow-hwi-conditional", "#more-field-cow-hwi-value", "HWI");
67            processFieldMore(criterias, "#more-field-cow-asi-conditional", "#more-field-cow-asi-value", "ASI");
68            processFieldMore(criterias, "#more-field-cow-si-conditional", "#more-field-cow-si-value", "SI");
69            // Column 2
70            processFieldMore(criterias, "#more-field-cow-daughter-fertility-conditional", "#more-field-cow-daughter-fertility-value", "FERT_BV");
71            processFieldMore(criterias, "#more-field-cow-calving-ease-conditional", "#more-field-cow-calving-ease-value", "EASE_BV");
72            processFieldMore(criterias, "#more-field-cow-gestation-length-conditional", "#more-field-cow-gestation-length-value", "GESTATION_BV");
73            processFieldMore(criterias, "#more-field-cow-dsb-conditional", "#more-field-cow-dsb-value", "DSB_BV");
74            processFieldMore(criterias, "#more-field-cow-msb-conditional", "#more-field-cow-msb-value", "MSB_BV");
75            processFieldMore(criterias, "#more-field-cow-mastitis-resistance-conditional", "#more-field-cow-mastitis-resistance-value", "MAS_BV");
76            processFieldMore(criterias, "#more-field-cow-feed-saved-conditional", "#more-field-cow-feed-saved-value", "FEEDEF_BV");
77            processFieldMore(criterias, "#more-field-cow-survival-conditional", "#more-field-cow-survival-value", "SURV_BV");
78            processFieldMore(criterias, "#more-field-cow-heat-tolerance-conditional", "#more-field-cow-heat-tolerance-value", "HEATT_BV");
79            // Column 3
80            processFieldMore(criterias, "#more-field-cow-overall-type-conditional", "#more-field-cow-overall-type-value", "OTYPE_BV");
81            processFieldMore(criterias, "#more-field-cow-mammary-system-conditional", "#more-field-cow-mammary-system-value", "MAMM_BV");
82
83            processFieldMore(criterias, "#more-field-cow-milking-speed-conditional", "#more-field-cow-milking-speed-value", "MSPEED_BV");
84            processFieldMore(criterias, "#more-field-cow-temperament-conditional", "#more-field-cow-temperament-value", "TEMP_BV");
85            processFieldMore(criterias, "#more-field-cow-likability-conditional", "#more-field-cow-likability-value", "LIKE_BV");
86
87            criterias["TERMINATED"] = pTerminatedSelect.find('[attr-hiden-value="true"]').val().trim();
88            
89            return criterias;
90        }
91
92        function formatAnimalSelected() {
93            return GlobalVariable.selectedSearchCow.join(",");
94        }
95
96        function getRelease() {
97            var el = $('[attr-select-box="abv_release"]').find('[attr-hiden-value="true"]');
98            if (el && el.val() !== "") {
99                return el.val();
100            }
101            return $('#abv_release').val();
102        }
103
104        async function getReportParams(isCriterias) {
105            var isReload = await checkpointReloadPage('cow');
106
107            if(!isReload){
108                var criterias = {};
109                if (isCriterias) {
110                    criterias = getSearchCowCriterias();
111                    criterias = cleanCriterias(criterias);
112                }
113                criterias['RELEASE_ID'] = getRelease();
114
115                selectedCowItems = formatAnimalSelected();
116                if (selectedCowItems != null && selectedCowItems != "") {
117                    // have selected
118                    criterias['ANIMAL_NATIONAL_ID'] = selectedCowItems;
119                }
120
121                // Check table result selected
122                var params = {
123                    'criterias': criterias,
124                    'sortedBy': "",
125                    "partyCode": localStorage.getItem(constCurrentParty),
126                    "isDescSorting": true
127                };
128
129                return params;
130            } else {
131                return null;
132            }
133        }
134
135        //Handle button press
136        jQuery('#export-dif-202').click(async function() {
137            var params = await getReportParams(true);
138            
139            if(params){
140                // Reset array select
141                resetSelected();
142
143                var contentType = 'application/octet-stream';
144                downloadFile(apiUrl + "/api/cows/export-202-dif-excel-report", 'POST', params, "txt", contentType);
145            }
146        });
147
148        jQuery('#export-cow-abv-summary-report').click(async function() {
149            var params = await getReportParams(true);
150            
151            if(params){
152                // Reset array select
153                resetSelected();
154                
155                var contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
156                downloadFile(apiUrl + "/api/cows/export-cow-abv-summary-report", 'POST', params, "xlsx", contentType);
157            }
158
159        });
160        jQuery('#btnPrint').click(function() {
161            var apiUrl = jQuery('#api_url').val();
162            var releaseId = getRelease();
163
164            selectedFormat = formatAnimalSelected();
165            lengthSelected = GlobalVariable.selectedSearchCow.length;
166            if (lengthSelected > 0 && lengthSelected < 26) {
167                printWindow = window.open('', '', 'height=' + screen.height + ',width=' + screen.width + ', top=0, left=0, fullscreen=ye
167s');
168                var params = {
169                    'criterias': {
170                        "RELEASE_ID": releaseId,
171                        "ANIMAL_NATIONAL_ID": selectedFormat
172                    },
173                    'sortedBy': "",
174                    "partyCode": "Datagene",
175                    "isDescSorting": true
176                };
177                var objPrint = {
178                    url: apiUrl + '/api/cows/get-print-selected-animals',
179                    data: JSON.stringify(params),
180                    successCallbackFunction: getDataPrintSuccess,
181                    errorCallBackFunction: getDataPrintFailed
182                };
183                postAjax(objPrint, false);
184            } else if (lengthSelected > 25) {
185                alertModal('Alert Information', 'Number of animals selected in excess of 25 elements');
186            } else {
187                alertModal('Alert Information', 'No row is selected');
188            }
189
190        });
191
192        //======== Function
193        function getDataPrintSuccess(result) {
194            // Show loading spinner
195            hideLoading();
196            // Call function print
197            renderCowDocPrint(result);
198
199            // Reset animal selected
200            resetSelected();
201            renderItemSelected(GlobalVariable.selectedSearchCow);
202        }
203
204        function getDataPrintFailed(xhr) {
205            // Hide loading spinner
206            hideLoading();
207            // alertModal('Alert Information', 'Error: ' + xhr.statusText + ' ' + xhr.responseText + ' ' + xhr.status);
208            alertModal('Alert Information', 'Have an error in printing!');
209        }
210
211        function resetSelected() {
212            deselectSearchResult(GlobalVariable.searchBullResult);
213            GlobalVariable.selectedSearchCow = [];
214            var table = jQuery('#bulls-table');
215            jQuery("tbody tr.background-color-primary-1", table).each(function() {
216                jQuery(this).removeClass("background-color-primary-1 selected");
217            });
218            jQuery(".label-header-block").css("background", "#6F8D25")
219        }
220
221        function renderCowDocPrint(result) {
222            var today = new Date();
223            var dd = today.getDate();
224            var mm = today.getMonth() + 1;
225
226            var yyyy = today.getFullYear();
227            if (dd < 10) {
228                dd = "0" + dd;
229            }
230            if (mm < 10) {
231                mm = "0" + mm;
232            }
233            var today = dd + "-" + mm + "-" + yyyy;
234            document.title = "Search Cow-" + today;
235            var header = jQuery(document).find("head").html();
236
237            var html = '<html>';
238            html += header;
239            html += '<body id="search-result-print" style="height:auto">';
240            html += '<div id="content-main" style="height:auto">';
241            html += '<div>';
242            html += createPrintHeader(dd, mm, yyyy, result.length);
243            if (result) {
244                if (result.length <= 7) {
245                    html += createPrintTable(result, 0, result.length);
246                } else {
247                    if (result.length > 7 && result.length <= 14) {
248                        html += createPrintTable(result, 0, 7);
249                        html += createPrintPageBreak();
250                        html += createPrintHeader(dd, mm, yyyy, result.length);
251                        html += createPrintTable(result, 7, result.length);
252                    } else {
253                        if (result.length > 14 && result.length <= 21) {
254                            html += createPrintTable(result, 0, 7);
255                            html += createPrintPageBreak();
256                            html += createPrintHeader(dd, mm, yyyy, result.length);
257                            html += createPrintTable(result, 7, 14);
258                            html += createPrintPageBreak();
259                            html += createPrintHeader(dd, mm, yyyy, result.length);
260                            html += createPrintTable(result, 14, result.length);
261                        } else {
262                            if (result.length > 21) {
263                                html += createPrintTable(result, 0, 7);
264                                html += createPrintPageBreak();
265                                html += createPrintHeader(dd, mm, yyyy, result.length);
266                                html += createPrintTable(result, 7, 14);
267                                html += createPrintPageBreak();
268                                html += createPrintHeader(dd, mm, yyyy, result.length);
269                                html += createPrintTable(result, 14, 21);
270                                html += createPrintPageBreak();
271                                html += createPrintHeader(dd, mm, yyyy, result.length);
272                                html += createPrintTable(result, 21, result.length);
273                            }
274                        }
275                    }
276                }
277            }
278            html += '<footer>';
279            html += '<div class="disclaimer-footer">';
280            html += '<div class="container no-padding-left-right-container animal-print-table">';
281            html += '<div class="no-padding-left-right-container notefirst" style="width: 70%; float:left; font-size: 11px">';
282            html += '<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 no-padding-left-right-container semi-bold animal-footer-marign">Disclaimer</div>';
283            html += '<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 no-padding-left-right-container animal-footer-marign">';
284            html += 'DataGene takes no responsibility for any errors, omissions, or defect in the data (whether negligent or otherwise) contained in this report ';
285            html += 'and makes no warranty (express or implied) that the data in this report is complete, accurate or fit for any particular purpose';
286            html += '</div></div>';
287            html += '</div>';
288            html += '</div>';
289            html += '</footer>';
290            html += '</div>';
291            html += '</section>';
292            html += '</div>';
293            html += '</div>';
294            html += '</div>';
295            html += '</body>';
296            html += '</html>';
297            printWindow.document.write(html);
298
299            setTimeout(function() {
300                // get total pages
301                var total_page_count_print = printWindow.document.getElementsByClassName("datavat-logo-header-print").length;
302                var page_count = printWindow.document.getElementsByClassName("page-count");
303                for (var i = 0; i < page_count.length; i++) {
304                    page_count[i].innerHTML = total_page_count_print;
305                }
306                printWindow.print();
307                printWindow.close();
308            }, 1500);
309        }
310
311        //Dat code
312        function createPrintPageBreak() {
313            return '<div class="page-break"></div>';
314        }
315
316        function createPrintHeader(dd, mm, yyyy, length) {
317            var pathDataVatLogo = jQuery('#base_url').val() + '/themes/datagene/images/DataVatLogo.PNG';
318            var html = "";
319            html += '<header class="datavat-logo-header-print"><div class="layout-container">';
320            html += '<div style="padding-top: 0px;">';
321            html += '<div class="container padding-header no-padding-left-right-container" style="padding-top: 0px;">';
322            html += '<div class="row">';
323            html += '<div class="col-md-9 col-sm-9 col-xs-9 col-lg-9">';
324            html += '<img alt="Logo Datagene" width="auto" height="48" src="' + pathDataVatLogo + '">';
325            html += '</div>';
326            html += '<div class=" col-md-3 col-sm-3 col-xs-3 col-lg-3 margin-account" style="padding-top: 0px; font-size: 10px;">';
327            html += '<div class="row" style="padding-left: 20px;font-size: 11px">';
328            html += '<div class="col-md-12 col-sm-12 col-xs-12 col-lg-12"><span class="semi-bold">Date prepared:</span> ' + dd + "/" + mm + "/" + yyyy + '</div>';
329            html += '<div class="col-md-12 col-sm-12 col-xs-12 col-lg-12"><span class="semi-bold">Number of results:</span> ' + length + '</div>';
330            html += '<div class="col-md-12 col-sm-12 col-xs-12 col-lg-12"><span class="semi-bold">Page:</span> <span class="page-number"></span> of <span class="page-count"></span></div>';
331            html += '</div>';
332            html += '</div>';
333            html += '</div>';
334            html += '</div>';
335            html += '</div>';
336            html += '</div>';
337            html += '<div style="padding-bottom: 0px;">';
338            html += '<section id="block-ffrblock" class="block block-ffr block-ffrblock clearfix">';
339            html += '<div class="label-header-block green">';
340            html += '<div class="container no-padding-left-right-container panel-header">';
341            html += '<div class="row">';
342            html += '<div><h4 class="block-title"><strong>Animal Search - Cow</strong> (selected results)</h4></div>';
343            html += '</div>';
344            html += '</div>';
345            html += '</div>';
346            html += '</header>';
347            html += '<div id="panel-header" class="container-fluid cd-search-criteria gred" style="padding-top: 15px !important;padding-bottom: 15px;">';
348            html += '<div class="container no-padding-left-right-container">';
349            html += createSearchDetail("ABV Release", "bvRunName");
350            // html += createSearchDetail("Breed", 'breedRunName');
351            html += createSearchDetail("From Birthday", 'fromBirthday');
352            html += createSearchDetail("To Birthday", 'toBirthday');
353            html += createSearchDetail("ID", 'searchID');
354            html += createSearchDetail("Name", 'searchName');
355            html += createSearchDetail("BPI", 'searchBPI');
356            html += createSearchDetail("HWI", 'searchHWI');
357            html += createSearchDetail("ASI", 'searchASI');
358            html += createSearchDetail("SI", 'searchSI');
359            html += createSearchDetail("Daughter Fertility ABV", 'searchDaughFA');
360            html += createSearchDetail("Cell Count ABV", 'searchCellCA');
361            html += createSearchDetail("Feed Saved ABV", 'searchFeedSA');
362            html += createSearchDetail("Survival ABV", 'searchSurA');
363            html += createSearchDetail("Overall Type ABV Min", 'searchOverallTypeABVMin');
364            html += createSearchDetail("Overall Type ABV Max", 'searchOverallTypeABVMax');
365            html += createSearchDetail("Mammary System ABV Min", 'searchMammarySystemABVMin');
366            html += createSearchDetail("Mammary System ABV Max", 'searchMammarySystemABVMax');
367            html += createSearchDetail("Milking Speed ABV", 'searchMilkingSpeed');
368            html += createSearchDetail("Temperament ABV", 'searchTemperament');
369            html += createSearchDetail("Likability ABV", 'searchLikability');
370            html += createSearchDetail("Genetic Codes", 'searchGeneticCodes');
371            html += createSearchDetail("Polled Carriers", 'searchPolledCarriers');
372            html += createSearchDetail("Genotyped", 'searchGenotyped');
373            // html +=					'<div class="row-flex">';
374            // html +=                		'<div class="col-xs-2 col-sm-2 col-md-2 col-lg-2 semi-bold">ABV Release</div>';
375            // html += 					'<div class="col-xs-2 col-sm-2 col-md-2 col-lg-2 semi-bold">Breed</div>';
376            // html += 					'<div class="col-xs-2 col-sm-2 col-md-2 col-lg-2"></div>';
377            // html +=					'</div>';
378            // html +=					'<div class="row-flex">';
379            // html +=                		'<div class="col-xs-2 col-sm-2 col-md-2 col-lg-2">' + localStorage.getItem('bvRunName') + '</div>';
380            // html +=                		'<div class="col-xs-2 col-sm-2 col-md-2 col-lg-2">' + localStorage.getItem('breedRunName') + '</div>';
381            // html += 					'<div class="col-xs-2 col-sm-2 col-md-2 col-lg-2"></div>';
382            // html +=					'</div>';
383            html += '</div>';
384            html += '</div>';
385            return html;
386        }
387
388        function createSearchDetail(label, key) {
389            var html = "";
390            var value = localStorage.getItem(key);
391            if (value) {
392                html += '<div style="width:16%; float:left; font-size:8pt">';
393                html += '<table style="width:100%;">'
394                html += '<tr><td class="semi-bold" style="font-size:11px;">' + label + '</td></tr>';
395                html += '<tr><td style="font-size:11px;">' + value + '</td></tr>';
396                html += '</table>'
397                html += '</div>';
398            }
399            return html;
400        }
401
402        function createPrintTable(result, start_index, finish_index) {
403            var html = "";
404            html += '<article><div>';
405            html += '<div class="row container" style="padding-left: 0; padding-right: 5px;">';
406            html += '<div class="print-table-content animal-print-table" style="margin-left: 15px; margin-right: -15px;">'
407            html += '<table id="bulls-table" class="dataTable animal-print-table" style="width: 100%;" role="grid" aria-describedby="bulls-table_info">';
408            html += '<thead>';
409            html += '<tr>';
410            html += '<th  style="border: 1px solid #b4b4b4;border-top-left-radius: 5px!important;border-top:none">National ID</th>';
411            html += '<th  style="border-right: 1px solid #b4b4b4">Long Name</th>';
412            html += '<th  style="border-right: 1px solid #b4b4b4">Short Name</th>';
413            html += '<th  style="border-right: 1px solid #b4b4b4">Within Herd ID</th>';
414            html += '<th  style="border-right: 1px solid #b4b4b4">Herd Owner</th>';
415            html += '<th  style="border-right: 1px solid #b4b4b4">Birth Date</th>';
416            html += '<th  style="border-right: 1px solid #b4b4b4">Sire</th>';
417            html += '<th  style="border-right: 1px solid #b4b4b4">Dam</th>';
418            html += '<th  style="border-right: 1px solid #b4b4b4;">BPI</th>';
419            html += '</tr>';
420            html += '</thead>';
421            html += '<tbody>';
422            if (result) {
423                // Remove row checkbox and action
424                for (var i = start_index; i < finish_index; i++) {
425                    html += '<td>' + result[i].animaL_NATIONAL_ID + '</td>';
426                    html += '<td style="max-width:150px;">' + result[i].lonG_NAME + '</td>';
427                    html += '<td>' + result[i].shorT_NAME + '</td>';
428                    html += '<td>' + result[i].withiN_HERD_ID + '</td>';
429                    html += '<td>' + result[i].herD_OWNER + '</td>';
430                    // html += '<td>' + result[i].provider_code + '</td>';
431                    html += '<td>' + result[i].birtH_DATE + '</td>';
432                    html += '<td>' + result[i].sirE_NATIONAL_ID + '</td>';
433                    html += '<td>' + result[i].daM_NATIONAL_ID + '</td>';
434                    html += '<td>' + result[i].bpi + '</td>';
435                    html += '</tr>';
436                }
437            }
438            html += '</tbody>';
439            html += '</table>';
440            html += '</div></div></article>';
441            return html;
442        }
443
444        // Close the dropdown if the user clicks outside of it
445        ctx.onclick = function(event) {
446            if (event.target && event.target.className && event.target.className.toString().indexOf("dropbtn") !== 0) {
447
448                var dropdowns = document.getElementsByClassName("dropdown-content");
449                var i;
450                for (i = 0; i < dropdowns.length; i++) {
451                    var openDropdown = dropdowns[i];
452                    if (openDropdown.className.indexOf("show") !== -1) {
453                        openDropdown.classList.remove("show");
454                    }
455                }
456            }
457        }
458
459    }
460
461    if (jQuery("#search-result-popover").length > 0) {
462        createPopover("#search-result-popover");
463    }
464
465});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.