1$(function () { 2 var cisionBaseUrl = 'https://publish.ne.cision.com/papi/'; 3 var cisionStockPriceUrl = 'Ticker/'; 4 var cisionNewsletterUrl = 'NewsFeed/'; 5 var cisionGraphUrl = 'Share/'; 6 7 var sharePriceSelector = '.cision-item-share-price'; 8 var newsletterSelector = '.cision-item-press-release'; 9 var reportSelector = '.cision-item-report'; 10 var graphSelector = '.cision-item-chart'; 11 12 function formatDate(date) 13 { 14 return date.getFullYear() + '-' + 15 String(date.getMonth() + 1).padStart(2, '0') + '-' + 16 String(date.getDate()).padStart(2, '0'); 17 } 18 19 function formatTime(date) 20 { 21 return String(date.getHours()).padStart(2, '0') + ':' + 22 String(date.getMinutes()).padStart(2, '0') 23 } 24 25 var newsFeedCache = []; 26 27 $(sharePriceSelector).each(function () { 28 if ($(this).data('identifier')) { 29 var self = this; 30 $.ajax({ 31 url: cisionBaseUrl + cisionStockPriceUrl + $(this).data('identifier'), 32 method: 'GET', 33 dataType: 'json', 34 success: function (data) { 35 var quote = data.Instruments[0].Quotes[0]; 36 37 var arrowClass = 'arrow-down'; 38 if (quote.Delta > 0) { 39 arrowClass = 'arrow-up'; 40 } 41 42 $('.cision-item__large-text', self) 43 .text(Math.round(quote.Price)) 44 .addClass(arrowClass); 45 46 var date = new Date(quote.QuoteTime); 47 $('.share-price-date', self).text(formatDate(date)); 48 $('.share-price-time', self).text(formatTime(date)); 49 50 $('.cision-item__loader', self).hide(); 51 $('.cision-item__content', self).show(); 52 } 53 }); 54 } 55 }); 56 57 $(newsletterSelector + ',' + reportSelector).each(function () { 58 if ($(this).data('identifier')) { 59 var self = this; 60 $.ajax({ 61 url: cisionBaseUrl + cisionNewsletterUrl + $(this).data('identifier') + '?pageSize=10', 62 method: 'GET', 63 dataType: 'json', 64 success: function (data) { 65 if (data.Releases.length === 0) { 66 return; 67 } 68 69 var releases = []; 70 var informationTypes = $(self).data('information-types').split(','); 71 if (informationTypes.length > 1) { 72 for (var i = 0; i < data.Releases.length; i++) { 73 // remove break, loop through files and add 2 dates 74 if ($.inArray(data.Releases[i].InformationType, informationTypes) >= 0 && releases.length < 2) { 75 releases.push(data.Releases[i]); 76 } 77 } 78 79 if (releases.length === 0) { 80 return; 81 } 82 } else { 83 releases.push(data.Releases[0]); 84 } 85 86 $('.cision-item__medium-text.i-1', self).text(releases[0].Title); 87 88 var date = new Date(releases[0].PublishDate); 89 $('.share-price-date.i-1', self).text(formatDate(date)); 90 $('.share-price-time.i-1', self).text(formatTime(date)); 91 92 if (releases[1]) { 93 $('.cision-item__medium-text.i-2', self).text(releases[1].Title); 94 95 date = new Date(releases[1].PublishDate); 96 $('.share-price-date.i-2', self).text(formatDate(date)); 97 $('.share-price-time.i-2', self).text(formatTime(date)); 98 } 99 100 $('.cision-item__loader', self).hide(); 101 $('.item-1', self).show(); 102 if (releases[1]) { 103 $('.item-2', self).show(); 104 } 105 } 106 }); 107 } 108 }); 109 110 $(graphSelector).each(function () { 111 var self = this; 112 113 var offsetMilliseconds = $(this).data('offset-seconds') * 1000; 114 var startDate = formatDate(new Date(new Date().getTime() - offsetMilliseconds)); 115 116 $.ajax({ 117 url: cisionBaseUrl + cisionGraphUrl + $(this).data('identifier') + '?quoteType=EndOfDay&startDate=' + startDate, 118 method: 'GET', 119 dataType: 'json', 120 success: function (data) { 121 var isins = $(self).data('isin').split(','); 122 var series = []; 123 var currencies = []; 124 125 for (let i = 0; i < data.Instruments.length; i++) { 126 if ($.inArray(data.Instruments[i].ISIN, isins) > -1) { 127 let quotePackage = data.Instruments[i]; 128 let quotes = []; 129 130 for (let y = 0; y < quotePackage.Quotes.length; y++) { 131 quotes.push([ 132 new Date(quotePackage.Quotes[y].QuoteTime).getTime(), 133 quotePackage.Quotes[y].Price 134 ]); 135 } 136 137 if ($.inArray(quotePackage.TradeCurrency, currencies) === -1) { 138 currencies.push(quotePackage.TradeCurrency); 139 } 140 141 series.push({ 142 name: quotePackage.TickerName + ' (' + quotePackage.TradeCurrency + ')', 143 data: quotes 144 }); 145 } 146 } 147 148 Highcharts.chart(self, { 149 title: { 150 text: $(self).data('chart-title') 151 }, 152 xAxis: { 153 type: 'datetime' 154 }, 155 yAxis: { 156 title: { 157 text: currencies.join('/') 158 } 159 }, 160 legend: { 161 enabled: series.length > 1 162 }, 163 credits: { 164 enabled: false 165 }, 166 series: series, 167 }); 168 } 169 }); 170 }); 171});
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.