PageSourceSearch

https://www.addtech.com/typo3conf/ext/theme_addtech/Resources/Priv…/Cision/cision_files/cision_widgets.js

js addtech.com collected 2026-10-02 18:08:29 UTC 6,465 bytes, 171 lines download raw bytes

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.