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.