PageSourceSearch

https://www.indiabonds.com/static/customer/js/compare-bonds/compare-bonds.js?q=6421

js indiabonds.com collected 2026-09-24 10:37:00 UTC 16,222 bytes, 389 lines download raw bytes

1var selectedBondToComparesArray = []; 
2const maxBondsToCompare = 3;
3
4const hideCompareBondsOnUrls = [
5    "/customer/register/",
6    "/customer/login/",
7    "/customer/login/2FA/",
8    "/place-order/choose-bank/",
9    "/place-order/choose-demat/",
10    "/place-order/choose-demat/",
11    "/settlement/",
12    "/generate-dealsheet/",
13    "/deal-sheet/",
14    "/deal-sheet/mail/",
15    "/deal-sheet/mail/",
16    "/generate-dealsheet/verify-otp/",
17    "/dealsheet/term-and-condition/",
18    "/dealsheet/e-sign/success/",
19    "/payment/",
20    "/dealsheet/e-sign/sent/",
21    "/dealsheet/e-sign/failed/",
22    "/payment/successful/",
23    "/payment/failed/",
24    "/something-went-wrong/",
25    "/payment/bond-card/",
26    "/payment/bond-card/",
27    "/place-order/",
28    "/customer/order-book/",
29    "/compare-bond/"
30];
31
32const checkBondsTocompare = [
33    "/bond-details/",
34    "/search/"
35]
36
37function storeBondCompareData() {
38    if (selectedBondToComparesArray && selectedBondToComparesArray.length) {
39        return localStorage.setItem("selectedBondToComparesArray", JSON.stringify(selectedBondToComparesArray));
40    }
41}
42
43function resetBondCompareData() {
44    if (selectedBondToComparesArray && selectedBondToComparesArray.length) {
45        return localStorage.setItem("selectedBondToComparesArray", JSON.stringify(selectedBondToComparesArray));
46    }
47}
48
49function paintCompareBondsIcon() {
50    let compareIcon = '<span class="compare-bonds-initiate-btn"><img src="https://assets.indiabonds.com/web-site-assets/compare-bonds-button.png" /></span>';
51    $(".compare-bonds-initiate-btn").remove();
52    $("body").addClass("isCompareIconVisible");
53    return $('body').append(compareIcon);
54}
55
56function checkIfCompareStringExists(locationString, hideURLsData) {
57    if (locationString && locationString != '/') {
58        for (let i = 0; i < hideURLsData.length; i++) {
59            if (locationString.indexOf(hideURLsData[i]) != -1) {
60                return true;
61            }
62        }
63    }
64    return false;
65}
66
67function checkExistingBondData(){
68    if (checkIfCompareStringExists(window.location.pathname, hideCompareBondsOnUrls)) {
69        return true;
70    }
71    checkBondsAlreadyCompared();
72    selectedBondToComparesArray = (localStorage.getItem("selectedBondToComparesArray") ? JSON.parse(localStorage.getItem("selectedBondToComparesArray")) : selectedBondToComparesArray);
73    if (selectedBondToComparesArray.length > 0) {
74        resetCompareUI();
75    }    
76    if (window.location.search.indexOf('compare_bonds=true') != -1) {
77        $(".compareBondDetail, .compare-bonds-top-filter-section").removeClass("hide");
78        $(".filter-search-pagination, .sort-filter-container-default").addClass("hide");
79    } 
80    if (window.location.search.indexOf('compare_bonds=true') === -1 && window.location.pathname === '/search/') {
81        $(".compare-bonds-floating-bar-wrapper").remove();
82    }
83}
84
85function paintExistingCompareBondsScreen() {
86    if (checkIfCompareStringExists(window.location.pathname, hideCompareBondsOnUrls)) {
87        return true;
88    }
89    // paintCompareBondsIcon();
90}
91
92function checkIfCompareBondDetailsExist(data) {
93    let flag = false;
94    if (selectedBondToComparesArray.length && selectedBondToComparesArray.length > 0 && data) {
95        for (let i = 0; i < selectedBondToComparesArray.length; i++) {
96            if (selectedBondToComparesArray[i].isin === data) {
97                flag = true;
98            }
99        }
100    }
101    return flag;
102}
103
104function checkBondsAlreadyCompared(){
105    selectedBondToComparesArray = (localStorage.getItem("selectedBondToComparesArray") ? JSON.parse(localStorage.getItem("selectedBondToComparesArray")) : selectedBondToComparesArray);
106    if (checkIfCompareStringExists(window.location.pathname, checkBondsTocompare) && selectedBondToComparesArray.length > 0) {
107      setTimeout(function(){
108          for (let i = 0; i < selectedBondToComparesArray.length; i++) {
109              if (selectedBondToComparesArray[i].isin) {
110                  $("#" + selectedBondToComparesArray[i].isin).prop('checked', true);
111              }
112          }
113      },10);
114    }
115}
116
117function paintCompareBondsCard(issuerObj, index){
118    let bondsCard = '<div class="compare-bonds-card">'+
119        '<img src="https://assets.indiabonds.com/web-site-assets/close-app-floater.png" class="remove-bond-from-compare-list cursor-pointer" rel="' + index +'"/>'+          
120                            '<div class="row">'+
121                                '<div class="col-xs-2 compare-bonds-issuer-img-container">'+
122                                    '<img src="' + issuerObj.issuerImg + '" />'+
123                                '</div>'+
124                                '<div class="col-xs-10 compare-bonds-issuer-name-container">'+
125                                    issuerObj.issuerName +
126                                '</div>'+
127                            '</div>'+
128                            '<div class="row">'+
129                                '<div class="col-xs-4 ib-padding-right-0">'+
130                                    '<div class="compare-bonds-detail-label">'+
131                                        'Coupon'+
132                                    '</div>'+
133                                    '<div class="compare-bonds-detail-value">'+
134                                        issuerObj.coupon +
135                                    '</div>'+
136                                '</div>'+
137                                '<div class="col-xs-4 ib-padding-right-0">'+
138                                    '<div class=" compare-bonds-detail-label">'+
139                                        'Maturity'+
140                                    '</div>'+
141                                    '<div class=" compare-bonds-detail-value">'+
142                                        issuerObj.maturity +
143                                    '</div>'+
144                                '</div>'+
145                                '<div class="col-xs-4 ib-padding-right-0">'+
146                                    '<div class="compare-bonds-detail-label">'+
147                                        'Yield'+
148                                    '</div>'+
149                                    '<div class="compare-bonds-detail-value highlight-value">'+
150                                        issuerObj.yield +
151                                    '</div>'+
152                                '</div>'+
153                            '</div>'+
154                    '</div>';   
155    return bondsCard;                     
156}
157
158function paintEmptyCard(){
159    let bondsCard = '<div class="compare-bonds-card empty-card-template cursor-pointer"><span>+</span></div>';   
160    return bondsCard;                     
161}
162
163function paintCompareBondsTemplate(cardsUI){
164    let compareTemplate = '<div class="compare-bonds-floating-bar-wrapper">'+
165                                '<span class="comparing-list-validation-error hide">'+
166                                    '<img src = "https://assets.indiabonds.com/web-site-assets/close-app-floater.png" class="cursor-pointer close-limit-validation-msg">'+
167                                        'Maximum upto 3 Bonds can be compared at a time'+
168                                '</span>'+
169                                '<img src = "https://assets.indiabonds.com/web-site-assets/close-app-floater.png" class="close-compare-bonds-floater cursor-pointer"/>'+
170                                    '<div class="compare-bonds-floating-bar-container">'+
171                                        '<div class="row">'+
172                                            '<div class="col-xs-1"></div>'+
173                                            cardsUI + 
174                                            '<div class="col-xs-1 compare-cta-container">'+
175                                                '<button title="Compare" id="compareBondsSubmit" class="primary-btn">Compare</button>'+
176                                                '<button id="clearComparedBondsList" title="Clear All" class="outlined-btn">Clear All</button>'+
177                                            '</div>'+
178                                        '</div>'+
179                                    '</div>'+
180                            '</div>';
181    return compareTemplate;                        
182}
183
184function inititateCompareBarUI(){
185    let cardUI = '';
186    if (!selectedBondToComparesArray){
187        selectedBondToComparesArray = (localStorage.getItem("selectedBondToComparesArray") ? JSON.parse(localStorage.getItem("selectedBondToComparesArray")) : selectedBondToComparesArray);
188    }
189    selectedBondToComparesArray.forEach((obj, index) => {
190        cardUI += '<div class="col-xs-3">' + paintCompareBondsCard(obj, index) + '</div>';
191    });
192
193    if(selectedBondToComparesArray.length < 3){
194        let listofEmptyCards = parseInt(3 - selectedBondToComparesArray.length);
195        for(var i=0; i < listofEmptyCards; i++){
196            cardUI += '<div class="col-xs-3">' + paintEmptyCard() + '</div>';
197        }
198    }
199    
200    let baseTemplate = paintCompareBondsTemplate(cardUI);
201    return baseTemplate;
202}
203
204function getBondDetailsData(thisElement){
205    let bondISIN = $(thisElement).parent().find(".bondISIN").text().trim(),
206        bondIssuer = $(thisElement).parent().find(".bondIssuer").text().trim(),
207        bondImg = $(thisElement).parent().find(".bondImg").text().trim(),
208        bondCoupon = $(thisElement).parent().find(".bondCoupon").text().trim(),
209        bondMaturity = $(thisElement).parent().find(".bondMaturity").text().trim(),
210        bondYield = $(thisElement).parent().find(".bondYield").text().trim();
211        bondVendorId = $(thisElement).parent().find(".bondVendorId").text().trim();
212
213    let bondJSON = {
214        issuerImg: bondImg,
215        issuerName: bondIssuer,
216        coupon: bondCoupon,
217        maturity: bondMaturity,
218        yield: bondYield,
219        isin: bondISIN,
220        bondVendorId: bondVendorId
221    };
222
223    return bondJSON;
224}
225
226function checkIfSelectedBondExist(data) {
227    let flag = false;
228    if (selectedBondToComparesArray.length && selectedBondToComparesArray.length > 0) {
229        for (let i = 0; i < selectedBondToComparesArray.length; i++) {
230            if (selectedBondToComparesArray[i].isin === data.isin) {
231                flag = true;
232            }
233        }
234    }
235    return flag;
236}
237
238function clearAllBondsFromCompareList(){
239    localStorage.removeItem("selectedBondToComparesArray");
240    selectedBondToComparesArray = [];
241    $(".compare-checkbox-bond-details").prop('checked', false);
242    $(".compare-bonds-floating-bar-wrapper, .compare-bonds-initiate-btn").remove();
243    $("body").removeClass("isCompareIconVisible");
244}
245
246function removeCurrentBondFromList(index) {
247    uncheckComparedInput(selectedBondToComparesArray[index].isin);
248    if (selectedBondToComparesArray.length === 1) {
249        selectedBondToComparesArray = [];
250        localStorage.removeItem('selectedBondToComparesArray');
251        $(".compare-bonds-floating-bar-wrapper").remove();
252    }
253
254    if (selectedBondToComparesArray.length > 0) {        ;
255        selectedBondToComparesArray.splice(index, 1);
256        storeBondsCompareData();
257        checkExistingBondData();
258    }
259}
260
261function uncheckComparedInput(isin){
262    $("#"+ isin).prop('checked', false);
263}
264
265function validateBondData(thisElement){
266    let currentBond = getBondDetailsData(thisElement);
267    let returnFlag = false;
268    if (!checkIfSelectedBondExist(currentBond) && selectedBondToComparesArray.length < 3) {
269        selectedBondToComparesArray.push(currentBond);
270        storeBondsCompareData();
271        returnFlag = true;
272    }
273    return returnFlag;
274}
275
276function resetCompareUI(){
277    $(".compare-bonds-floating-bar-wrapper").remove();
278    $('body').append(inititateCompareBarUI());
279    if (!$(".compare-bonds-initiate-btn").length){
280        paintCompareBondsIcon();
281    }
282}
283
284function storeBondsCompareData(){
285    if (selectedBondToComparesArray && selectedBondToComparesArray.length) {
286        return localStorage.setItem('selectedBondToComparesArray', JSON.stringify(selectedBondToComparesArray));
287    }
288}
289
290function validateCompareBondsDataBeforeSubmit(){
291    let flag = true;
292    if (isAuthenticatedUser === 'False'){
293         window.location.href = '/customer/register/?src=compare-bond';
294        flag = false;
295    }
296    if (selectedBondToComparesArray && selectedBondToComparesArray.length <= 1){
297        let errorMsg = (selectedBondToComparesArray.length === 0 ? 'Please select at least two bonds to compare' : 'Please select at least one more bond to compare');
298        $(".empty-card-template").eq(0).html("<span>+</span><div class='compare-bonds-error-msg'>" + errorMsg +"</div>");
299        flag = false;
300    }
301    return flag;
302}
303
304function compareBonds(){
305    if(validateCompareBondsDataBeforeSubmit()){
306        let compareForm = '<form id="compareBondsForm" action="/compare-bond/" method="POST">'+
307        '<input type="hidden" name="csrfmiddlewaretoken" value="' + csrf_token + '">'+ 
308            "<input type='text' name='isin_details' value='" + JSON.stringify(selectedBondToComparesArray)  +"'/>"+
309        "</form>";
310        $("body").append(compareForm);
311        $("#compareBondsForm").submit(); 
312    }
313}
314
315function navigateToSearchFilters(){    
316    window.location.href = '/search/?compare_bonds=true';
317}
318
319$(document).ready(function(){
320    if (!isMobile){
321        $("body").off("click", ".compare-bonds-initiate-btn");
322        $("body").off("click", ".close-compare-bonds-floater");
323        $("body").off("click", ".remove-bond-from-compare-list");
324        $("body").off("change", ".compare-checkbox-bond-details");
325        $("body").off("click", "#clearComparedBondsList");
326        $("body").off("click", "#compareBondsSubmit");
327        $("body").off("click", ".empty-card-template");
328        $("body").off("click", ".close-limit-validation-msg");
329
330        if (checkIfCompareStringExists(window.location.pathname, checkBondsTocompare)) {
331            paintCompareBondsIcon();
332            paintExistingCompareBondsScreen();
333            checkExistingBondData();
334        }
335
336        $('body').on('click', ".close-limit-validation-msg", function () {
337            $(".comparing-list-validation-error").removeClass("hide").addClass('hide');
338        });
339
340        $('body').on('click', ".empty-card-template", function () {
341            navigateToSearchFilters();
342        });
343
344        $('body').on('click', "#compareBondsSubmit", function () {
345            compareBonds();
346        });
347
348        $('body').on('click', "#clearComparedBondsList", function () {
349            clearAllBondsFromCompareList();
350        });
351
352        $('body').on('click', ".close-compare-bonds-floater", function () {
353            $(".compare-bonds-floating-bar-wrapper").remove();
354        });
355
356        $('body').on('click', ".compare-bonds-initiate-btn", function () {
357            resetCompareUI();
358        });
359
360        $('body').on('click', ".remove-bond-from-compare-list", function () {
361            removeCurrentBondFromList($(this).attr('rel'));
362        });
363
364        $('body').on('change', ".compare-checkbox-bond-details", function (evt) {
365            if (this.checked) {
366                if (validateBondData(this)) {
367                    resetCompareUI();
368                } else {
369                    resetCompareUI();
370                    $(".comparing-list-validation-error").removeClass("hide");
371                    $(this).prop('checked', false)
372                }
373            } else {
374                let currentBond = { 'isin': $(this).attr('id') };
375                if (checkIfSelectedBondExist(currentBond)) {
376                    if (selectedBondToComparesArray.length && selectedBondToComparesArray.length > 0) {
377                        for (let i = 0; i < selectedBondToComparesArray.length; i++) {
378                            if (selectedBondToComparesArray[i].isin === currentBond.isin) {
379                                selectedBondToComparesArray.splice(i, 1);
380                                localStorage.setItem('selectedBondToComparesArray', JSON.stringify(selectedBondToComparesArray));
381                            }
382                        }
383                    }
384                    resetCompareUI();
385                }
386            }
387        }); 
388    }   
389});

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.