1(function ($, Drupal, drupalSettings) { 2 $(function () { 3 var owl = $("#currentcampaigns"); 4 owl.owlCarousel({ 5 margin: 10, 6 loop: true, 7 nav: true, 8 dots: false, 9 responsive: { 10 0: { 11 items: 1, 12 }, 13 14 600: { 15 items: 1, 16 }, 17 18 1024: { 19 items: 1, 20 }, 21 22 1366: { 23 items: 1, 24 }, 25 }, 26 }); 27 var owls = $("#casestudy"); 28 owls.owlCarousel({ 29 items: 3, 30 margin: 10, 31 loop: true, 32 nav: true, 33 dots: false, 34 responsive: { 35 0: { 36 items: 1, 37 }, 38 39 600: { 40 items: 2, 41 }, 42 43 1024: { 44 items: 3, 45 }, 46 47 1366: { 48 items: 3, 49 }, 50 }, 51 }); 52 }); 53 54 var testimonials = $(".testimonials"); 55 testimonials.owlCarousel({ 56 items: 1, 57 merge: true, 58 loop: true, 59 margin: 10, 60 video: true, 61 lazyLoad: true, 62 nav: true, 63 dots: false, 64 center: true, 65 responsive: { 66 480: { 67 items: 1, 68 }, 69 600: { 70 items: 1, 71 }, 72 991: { 73 items: 1, 74 }, 75 }, 76 onTranslate: function (event) { 77 var currentSlide, player, command; 78 currentSlide = $(".owl-item.active"); 79 player = currentSlide.find(".item-video iframe").get(0); 80 command = { 81 event: "command", 82 func: "pauseVideo", 83 }; 84 if (player != undefined) { 85 player.contentWindow.postMessage(JSON.stringify(command), "*"); 86 } 87 }, 88 }); 89 90 $(document).ready(function () { 91 let SIH_API = drupalSettings.SIH_API_PATH; 92 let PAGE_URL = drupalSettings.PAGE_URL; 93 // Load Featured Program 94 let AllFeaturedProgram = []; 95 function BindFeaturedProgram() { 96 $(".owl-carouselThree").empty(); 97 $(".owl-carouselThree").show(); 98 var data = AllFeaturedProgram; 99 data = AllFeaturedProgram.filter((a) => a.featureProgram == true); 100 101 let sc = "'"; 102 $.each(data, function (i, v) { 103 let dateString = 104 new Date(v.endDate).getFullYear() + 105 "-" + 106 (new Date(v.endDate).getMonth() < 9 ? "0" : "") + 107 (new Date(v.endDate).getMonth() + 1) + 108 "-" + 109 (new Date(v.endDate).getDate() < 10 ? "0" : "") + 110 "" + 111 new Date(v.endDate).getDate(); 112 let givenDate = new Date(dateString + " 23:59:59"); 113 let currentDate = new Date(); 114 let timeDifference = givenDate - currentDate; 115 let daysLeft = Math.floor(timeDifference / (1000 * 60 * 60 * 24)); 116 117 let card = '<div class="item">'; 118 card += 119 ' <a target="_blank" href="' + 120 PAGE_URL + 121 "/content/sih/en/ams-application/" + 122 v.type.toLowerCase().replace(/_/g, "-") + 123 ".html?applicationId=" + 124 v.id + 125 '">'; 126 card += ' <div class="card">'; 127 card += ' <div class="bage-card">'; 128 card += 129 ' <img class="ams-badge" title="Featured program" src="https://www.startupindia.gov.in/content/dam/invest-india/ams-badge.png">'; 130 card += " </div>"; 131 card += ' <div class="card-img-top">'; 132 card += 133 ' <img src="https://api.startupindia.gov.in/sih/api/file/ams/banner/logo?fileName=' + 134 v?.bannerImage?.compressedFileName + 135 '" alt="' + 136 v.title + 137 '" onerror="this.src=' + 138 sc + 139 "https://www.startupindia.gov.in/content/dam/invest-india/no-image-found.jpg" + 140 sc + 141 '">'; 142 // card += ' <img src="' + SIH_API + '/sih/api/file/ams/banner/logo?fileName=' + v?.bannerImage?.compressedFileName + '" alt="' + v.title + '" onerror="this.src=' + sc + 'https://www.startupindia.gov.in/content/dam/invest-india/no-image-found.jpg' + sc + '">'; 143 card += ' <div class="product-contnet">'; 144 card += 145 '<div class="apply-days-left ' + 146 (daysLeft <= 0 ? "complete-prog" : "") + 147 '">'; 148 if (daysLeft > 0) { 149 card += ' <div class="apply-buy">'; 150 card += " <h4>Apply By</h4>"; 151 card += 152 ' <label style="color:white;">' + dateString + "</label>";
153 card += " </div>"; 154 card += ' <div class="days-left">'; 155 card += " <h4>Day Left</h4>"; 156 card += 157 ' <label style="color:white;">' + daysLeft + "</label>"; 158 card += " </div>"; 159 } else { 160 card += ' <div class="apply-buy">'; 161 card += " <h4>Closed</h4>"; 162 card += " </div>"; 163 } 164 card += "</div>"; 165 card += " </div>"; 166 card += " </div>"; 167 card += ' <div class="card-body d-flex">'; 168 card += ' <div class="card-subtitle d-flex">'; 169 card += 170 ' <h5 class="card-title d-flex">' + 171 v.title + 172 "</h5>"; 173 card += " </div>"; 174 card += " </div>"; 175 card += " </div>"; 176 card += " </a>"; 177 card += "</div>"; 178 $(".owl-carouselThree").append(card); 179 }); 180 if (data.length > 3) { 181 let owl = $("#featuredprogram"); 182 owl.owlCarousel({ 183 margin: 10, 184 autoplay: true, 185 autoplayTimeout: 4000, 186 loop: true, 187 nav: true, 188 dots: false, 189 responsive: { 190 0: { 191 items: 1, 192 }, 193 194 600: { 195 items: 2, 196 }, 197 198 767: { 199 items: 2, 200 }, 201 202 768: { 203 items: 2, 204 }, 205 206 1000: { 207 items: 3, 208 }, 209 }, 210 }); 211 } else if (data.length == 0) { 212 $(".owl-carouselThree").html( 213 '<img src="/sih/themes/custom/startup_india/images/noresult.png" style="height: 200px;margin: 0 auto;display:flex">' 214 ); 215 } else if (data.length == 1) { 216 let owl = $("#featuredprogram"); 217 owl.owlCarousel({ 218 margin: 10, 219 loop: false, 220 rewind: true, 221 center: true, 222 nav: false, 223 dots: false, 224 responsive: { 225 0: { 226 items: 1, 227 nav: true, 228 }, 229 230 600: { 231 items: 2, 232 nav: true, 233 }, 234 235 1000: { 236 items: 3, 237 nav: false, 238 }, 239 }, 240 }); 241 } else { 242 let owl = $("#featuredprogram"); 243 owl.owlCarousel({ 244 margin: 10, 245 loop: false, 246 rewind: true, 247 nav: false, 248 dots: false, 249 responsive: { 250 0: { 251 items: 1, 252 autoplay: true, 253 autoplayTimeout: 4000, 254 nav: true, 255 }, 256 257 600: { 258 items: 2, 259 autoplay: true, 260 autoplayTimeout: 4000, 261 nav: true, 262 }, 263 264 1000: { 265 items: 3, 266 nav: false, 267 }, 268 }, 269 }); 270 } 271 } 272 273 function GetAllFeaturedProgram() { 274 $.ajax({ 275 url: 276 SIH_API + "/sih/api/noauth/ams/application/getFeaturedProgram/true", 277 type: "GET", 278 contentType: "application/json", 279 crossDomain: true, 280 success: function (res) { 281 AllFeaturedProgram = res.data; 282 BindFeaturedProgram(); 283 }, 284 }); 285 } 286 if ($(".owl-carouselThree")[0] != undefined) { 287 GetAllFeaturedProgram(); 288 } 289 290 var el = $(".our-partner"); 291 292 var carousel; 293 var carouselOptions = { 294 margin: 20, 295 nav: true, 296 loop: false, 297 dots: false, 298 slideBy: "page", 299 responsive: { 300 0: { 301 items: 2, 302 rows: 2, 303 }, 304 500: { 305 items: 2, 306 rows: 2, 307 }, 308 768: { 309 items: 3, 310 rows: 2, 311 }, 312 991: { 313 items: 5, 314 rows: 2, 315 }, 316 }, 317 }; 318 319 //Taken from Owl Carousel so we calculate width the same way 320 var viewport = function () { 321 var width; 322 if ( 323 carouselOptions.responsiveBaseElement && 324 carouselOptions.responsiveBaseElement !== window 325 ) {
326 width = $(carouselOptions.responsiveBaseElement).width(); 327 } else if (window.innerWidth) { 328 width = window.innerWidth; 329 } else if ( 330 document.documentElement && 331 document.documentElement.clientWidth 332 ) { 333 width = document.documentElement.clientWidth; 334 } else { 335 console.warn("Can not detect viewport width."); 336 } 337 return width; 338 }; 339 340 var severalRows = false; 341 var orderedBreakpoints = []; 342 for (var breakpoint in carouselOptions.responsive) { 343 if (carouselOptions.responsive[breakpoint].rows > 1) { 344 severalRows = true; 345 } 346 orderedBreakpoints.push(parseInt(breakpoint)); 347 } 348 349 //Custom logic is active if carousel is set up to have more than one row for some given window width 350 if (severalRows) { 351 orderedBreakpoints.sort(function (a, b) { 352 return b - a; 353 }); 354 var slides = el.find("[data-slide-index]"); 355 var slidesNb = slides.length; 356 if (slidesNb > 0) { 357 var rowsNb; 358 var previousRowsNb = undefined; 359 var colsNb; 360 var previousColsNb = undefined; 361 362 //Calculates number of rows and cols based on current window width 363 var updateRowsColsNb = function () { 364 var width = viewport(); 365 for (var i = 0; i < orderedBreakpoints.length; i++) { 366 var breakpoint = orderedBreakpoints[i]; 367 if (width >= breakpoint || i == orderedBreakpoints.length - 1) { 368 var breakpointSettings = 369 carouselOptions.responsive["" + breakpoint]; 370 rowsNb = breakpointSettings.rows; 371 colsNb = breakpointSettings.items; 372 break; 373 } 374 } 375 }; 376 377 var updateCarousel = function () { 378 updateRowsColsNb(); 379 380 //Carousel is recalculated if and only if a change in number of columns/rows is requested 381 if (rowsNb != previousRowsNb || colsNb != previousColsNb) { 382 var reInit = false; 383 if (carousel) { 384 //Destroy existing carousel if any, and set html markup back to its initial state 385 carousel.trigger("destroy.owl.carousel"); 386 carousel = undefined; 387 slides = el.find("[data-slide-index]").detach().appendTo(el); 388 el.find(".fake-col-wrapper").remove(); 389 reInit = true; 390 } 391 392 //This is the only real 'smart' part of the algorithm 393 394 //First calculate the number of needed columns for the whole carousel 395 var perPage = rowsNb * colsNb; 396 var pageIndex = Math.floor(slidesNb / perPage); 397 var fakeColsNb = 398 pageIndex * colsNb + 399 (slidesNb >= pageIndex * perPage + colsNb 400 ? colsNb 401 : slidesNb % colsNb); 402 403 //Then populate with needed html markup 404 var count = 0; 405 for (var i = 0; i < fakeColsNb; i++) { 406 //For each column, create a new wrapper div 407 var fakeCol = $('<div class="fake-col-wrapper"></div>').appendTo( 408 el 409 ); 410 for (var j = 0; j < rowsNb; j++) { 411 //For each row in said column, calculate which slide should be present 412 var index = 413 Math.floor(count / perPage) * perPage + 414 (i % colsNb) + 415 j * colsNb; 416 if (index < slidesNb) { 417 //If said slide exists, move it under wrapper div 418 slides 419 .filter("[data-slide-index=" + index + "]") 420 .detach() 421 .appendTo(fakeCol); 422 } 423 count++; 424 } 425 } 426 //end of 'smart' part 427 428 previousRowsNb = rowsNb; 429 previousColsNb = colsNb; 430 431 if (reInit) { 432 //re-init carousel with new markup 433 carousel = el.owlCarousel(carouselOptions); 434 } 435 } 436 }; 437 438 //Trigger possible update when window size changes 439 $(window).on("resize", updateCarousel); 440 441 //We need to execute the algorithm once before first init in any case 442 updateCarousel(); 443 } 444 } 445 446 //init 447 carousel = el.owlCarousel(carouselOptions); 448 449 // prevent carousal slider change once button disabled
450 // $(".our-partner-wrapper .owl-next").css("pointer-events", "auto"); 451 $(".our-partner-wrapper .owl-prev").css("pointer-events", "none"); 452 $(".our-partner-wrapper .owl-next").on("click", function () { 453 if ($(this).hasClass("disabled")) { 454 $(this).css("pointer-events", "none"); 455 } else { 456 $(this).css("pointer-events", "auto"); 457 } 458 $(".our-partner-wrapper .owl-prev").css("pointer-events", "auto"); 459 }); 460 $(".our-partner-wrapper .owl-prev").on("click", function () { 461 if ($(this).hasClass("disabled")) { 462 $(this).css("pointer-events", "none"); 463 } else { 464 $(this).css("pointer-events", "auto"); 465 } 466 $(".our-partner-wrapper .owl-next").css("pointer-events", "auto"); 467 }); 468 }); 469 470 var recognitionApiPrefix = drupalSettings.RECOGNITION_API_PATH; 471 // countlist API 472 // function formatNumber(inputNumber) { 473 // let counterValue = parseInt(inputNumber); 474 // const options = { 475 // style: 'decimal', 476 // minimumFractionDigits: 0, 477 // maximumFractionDigits: 0, 478 // }; 479 // return counterValue.toLocaleString('en-IN', options) + '+'; 480 // } 481 482 function formatNumber(inputNumber) { 483 let numberStr = inputNumber; 484 const hasPlusSign = numberStr.endsWith("+"); 485 if (!hasPlusSign) { 486 numberStr = numberStr.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + "+"; 487 } 488 return numberStr; 489 } 490 491 var settings = { 492 url: `${recognitionApiPrefix}/application/fetchStaticDynamicCountList`, 493 method: "POST", 494 timeout: 0, 495 headers: { 496 "Access-Control-Allow-Origin": "*", 497 "Content-Type": "application/json", 498 "cache-control": "no-cache, no-store, max-age=0, must-revalidate", 499 }, 500 data: JSON.stringify([ 501 "internationalBridges", 502 "exclusivePrograms", 503 "individualInnovators", 504 "startupsBenefitted", 505 "diipCount", 506 "worthBenefitsDisbursed", 507 ]), 508 }; 509 510 $.ajax(settings).done(function (response) { 511 if (response["status"]) { 512 APIDataResponse = response["data"]; 513 APIData = APIDataResponse; 514 515 const diipCount = APIData["diipCount"] 516 ? formatNumber(APIData["diipCount"]) 517 : "Unidentified"; 518 const innovatorsCount = APIData["individualInnovators"] 519 ? formatNumber(APIData["individualInnovators"]) 520 : "Unidentified"; 521 const startupsCount = APIData["startupsBenefitted"] 522 ? formatNumber(APIData["startupsBenefitted"]) 523 : "Unidentified"; 524 const programCount = APIData["exclusivePrograms"] 525 ? formatNumber(APIData["exclusivePrograms"]) 526 : "Unidentified"; 527 const bridgeCount = APIData["internationalBridges"] 528 ? APIData["internationalBridges"] 529 : "Unidentified"; 530 const distributedBenifitsCount = APIData["worthBenefitsDisbursed"] 531 ? `INR ${APIData["worthBenefitsDisbursed"]} CR` 532 : "INR 95 CR"; 533 $(".diip-count").text(diipCount); 534 $(".innovators-count").text(innovatorsCount); 535 $(".startups-count").text(startupsCount); 536 $(".programs-count").text(programCount); 537 $(".bridges-count").text(bridgeCount); 538 $(".benifits-count").text(distributedBenifitsCount); 539 } 540 }); 541 542 function toggleCardContent(event) { 543 event.preventDefault(); 544 $(this).toggleClass("arrow-up"); 545 $(this).next().slideToggle(); 546 } 547 548 $(window) 549 .resize(function () { 550 if ($(window).width() <= 900) { 551 $(".homeEvents h3.min-height") 552 .off("click", toggleCardContent) 553 .on("click", toggleCardContent); 554 } else { 555 $(".homeEvents h3.min-height").off("click", toggleCardContent); 556 } 557 }) 558 .resize(); 559})(jQuery, Drupal, drupalSettings); 560 561function labnolIframe(div) { 562 var iframe = document.createElement("iframe"); 563 iframe.setAttribute( 564 "src", 565 "https://www.youtube.com/embed/" + 566 div.dataset.id + 567 "?autoplay=1&enablejsapi=1" 568 ); 569 iframe.setAttribute("frameborder", "0"); 570 iframe.setAttribute("allowfullscreen", "1"); 571 iframe.setAttribute( 572 "allow", 573 "accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" 574 ); 575 div.parentNode.replaceChild(iframe, div); 576} 577 578function initYouTubeVideos() { 579 var playerElements = document.querySelectorAll(".youtube-player"); 580 for (var n = 0; n < playerElements.length; n++) { 581 var videoId = playerElements[n].dataset.id; 582 var div = document.createElement("div"); 583 div.setAttribute("data-id", videoId); 584 var thumbNode = document.createElement("img"); 585 thumbNode.src = "//i.ytimg.com/vi/ID/hqdefault.jpg".replace("ID", videoId); 586 thumbNode.alt = "video Thumbnail"; 587 div.appendChild(thumbNode); 588 var playButton = document.createElement("div"); 589 playButton.setAttribute("class", "play"); 590 div.appendChild(playButton); 591 div.onclick = function () { 592 labnolIframe(this); 593 }; 594 playerElements[n].appendChild(div); 595 } 596} 597 598document.addEventListener("DOMContentLoaded", initYouTubeVideos);
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.