1$(function () { 2 var vw = $(window).innerWidth(); 3 var tab = "ideas"; 4 var planDetails = JSON.parse($("#plan_details").text()); 5 var userPrefs = JSON.parse($("#user_prefs").text()); 6 var queryParams = new URLSearchParams(location.search); 7 8 setExchangeFilingsLink(); 9 function setExchangeFilingsLink() { 10 var endDate = new Date(); 11 endDate = new Intl.DateTimeFormat("en-US").format(endDate); 12 var startDate = new Date(); 13 startDate.setDate(startDate.getDate() - 89); 14 startDate = new Intl.DateTimeFormat("en-US").format(startDate); 15 var events = 16 "28,29,26,27,31,32,25,30,73,74,20,72,66,67,68,70,71,69,19,21,24,53,52,88,89,90,91,92"; 17 if (planDetails.plan_tier != "premium") { 18 events = "28,27,31,25,73,74,72,67,68,70,21,52,88,89,90,91,92"; 19 } 20 if (userPrefs.ideas_dashboard_exchange_filings_events) { 21 events = JSON.parse( 22 userPrefs.ideas_dashboard_exchange_filings_events 23 ).join(","); 24 } 25 var path = `/ideas-dashboard/all-exchange-filings/?daterange=${startDate},${endDate}&events=${events}`; 26 $(".exchange_filing__link a").attr("href", path); 27 } 28 29 $(".tabs button").on("click", function () { 30 var id = $(this).attr("for"); 31 var desc = $(this).data("desc"); 32 var $cont = $(this).parents(".tab_cards"); 33 var $cards = $cont.find(".card_tj"); 34 $cards.hide(); 35 $cont.find(`#${id}`).show(); 36 $(this).siblings().removeClass("active"); 37 $(this).addClass("active"); 38 $cont.find(".description").text(desc); 39 40 //update view all url 41 var $viewAll = $(this).parents(".tabs_container").find("a"); 42 var slug = $(this).data("slug"); 43 $viewAll.attr("href", `/ideas-dashboard/${slug}/`); 44 }); 45 46 $(".results_and_concalls .switch input").on("change", function () { 47 var slug = $(this).prop("checked") ? "concalls" : "upcoming-results"; 48 $(".results_and_concalls .card_body").toggle(); 49 $(this) 50 .parents(".card_header") 51 .find(".view_all a") 52 .attr("href", `/ideas-dashboard/${slug}/`); 53 }); 54 55 function renderTweetLinks() { 56 var $containers = $(".twitter-widget[data-render='no']"); 57 $($containers).each(function () { 58 var $self = $(this); 59 var link = $self.data("link");
60 try { 61 var data = JSON.parse($self.find("script").text()); 62 var $cont = $self.parents(".tweet_mob"); 63 64 var date = new Date(data.created_at); 65 date = new Intl.DateTimeFormat("en-IN", { 66 day: "numeric", 67 month: "short", 68 year: "numeric", 69 }).format(date); 70 $cont.find(".date").text(date); 71 } catch (error) {} 72 $cont.find(".tweet_link a").append(link).attr("href", link); 73 $self.remove(); 74 }); 75 } 76 77 if (vw <= 520) { 78 //renderTweetLinks(); 79 if (queryParams.get("tab")) { 80 tab = queryParams.get("tab"); 81 } 82 $("[data-tab]").hide(); 83 $(`[data-tab="${tab}"]`).show(); 84 $(".page_tabs li").removeClass("active"); 85 $(`.page_tabs li[data-tab-name="${tab}"]`).addClass("active"); 86 } 87 88 $(".page_tabs li").on("click", function () { 89 $(this).siblings().removeClass("active"); 90 $(this).addClass("active"); 91 tab = $(this).data("tab-name"); 92 $("[data-tab]").hide(); 93 $(`[data-tab="${tab}"]`).show(); 94 // Need to change the query params in the url. 95 let url = new URL(window.location.href); 96 url.searchParams.set("tab", tab); 97 window.history.pushState({}, "", url); 98 }); 99 100 // Non-blocking widget load: only AJAX-fetch card bodies that are cold (show .no_data). 101 // Warm-cache widgets are already rendered in HTML by the server â skip them. 102 // _inflight deduplicates slugs that appear in multiple elements (e.g. Twitter desktop + mobile). 103 var _inflight = {}; 104 $(".card_body[data-slug]").each(function () { 105 var $el = $(this); 106 var slug = $el.data("slug"); 107 if (!slug) return; 108 // Already warm â server rendered real data, nothing to do. 109 if ($el.find(".no_data").length === 0) return; 110 if (_inflight[slug]) { 111 _inflight[slug].done(function (html) { 112 var $new = $(html); 113 if ($el.css("display") === "none") { $new.hide(); } 114 $el.replaceWith($new); 115 }); 116 return; 117 } 118 _inflight[slug] = $.ajax({ url: "/ideas-dashboard/" + slug + "/card-body/" }) 119 .done(function (html) { 120 var $new = $(html); 121 // Preserve hide_by_default display state (e.g. concalls hidden by default) 122 if ($el.css("display") === "none") { 123 $new.hide(); 124 } 125 $el.replaceWith($new); 126 // Twitter: also populate the desktop carousel from the same response and render tweet widgets. 127 if (slug === "trending-on-social-media") { 128 $(".tweets__container").html($new.find(".tweet").clone()); 129 if (typeof renderTwitterWidgets === "function") { 130 renderTwitterWidgets(); 131 } 132 } 133 }); 134 }); 135 136 // Delegated click â handles both skeleton and AJAX-injected card bodies 137 $(document).on("click", ".card_body", function () { 138 var slug = $(this).data("slug"); 139 if (slug) { 140 location = `/ideas-dashboard/${slug}/`; 141 } 142 }); 143 144 $(".tweets__container").on( 145 "scroll", 146 $.debounce(50, function (e) { 147 var scrollWidth = e.target.scrollWidth; 148 var width = e.target.clientWidth; 149 var scrollableX = scrollWidth - width; 150 var scrollLeft = $(e.target).scrollLeft(); 151 var buffer = 8; 152 if (scrollLeft >= 0 && scrollLeft <= buffer) { 153 $(".bg-gradient.start").hide(); 154 $(".bg-gradient.end").show(); 155 return; 156 } 157 if ( 158 scrollLeft >= scrollableX - buffer && 159 scrollLeft <= scrollableX + buffer 160 ) { 161 $(".bg-gradient.start").show(); 162 $(".bg-gradient.end").hide(); 163 return; 164 } 165 $(".bg-gradient.start").show(); 166 $(".bg-gradient.end").show(); 167 }) 168 ); 169 170 scrollbarInstance?.on("scroll", function (e) { 171 $("[data-toggle='popover']").popover("hide"); 172 }); 173});
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.