News zur CTS Eventim Aktie
Kennzahlen und Unternehmensdaten zur CTS Eventim Aktie
Analyse zur CTS Eventim Aktie
Rendite CTS Eventim Aktie
' + 'Kauf am ' + startDate[buyYear] + ' zu ' + startPrice[buyYear].toFixed(2) + ' €
' + 'Verkauf am ' + endDate[sellYear] + ' zu ' + endPrice[sellYear].toFixed(2) + ' €'; if (isConverted(buyYear) || isConverted(sellYear)) { html += '
Aus ' + escapeHtml(conversion.currency) + ' umgerechnet – berechneter Wert'; } return html; } }, series: [{ name: '', type: 'heatmap', data: data, borderWidth: 1, borderColor: '#ffffff', dataLabels: { enabled: true, color: '#222222', style: { textOutline: 'none', fontWeight: '500', fontSize: isMobile() ? (compactLabels ? '7px' : '9px') : '11px' }, formatter: function () { if (this.point.value === null || this.point.value === undefined) { return ''; } return compactLabels ? Math.round(this.point.value) : this.point.value.toFixed(1); } } }] });// Highcharts renders an SVG of `width`, but its container div inherits the CSS // width:100% - so on a narrow screen the SVG was scaled down to fit instead of // overflowing, and the scroll box had nothing wider than itself to scroll. Pinning // the container to the chart width is what makes #ft-triangle-scroll actually scroll. container.style.width = width + 'px'; container.style.minWidth = width + 'px';return chart; }function describe(target, shown) { let text = 'Das Renditedreieck zeigt die durchschnittlichen Jahresrenditen für ' + escapeHtml(assetName) + ' (' + shown[0] + '–' + shown[shown.length - 1] + '). ' + 'Wählen Sie ein Jahr für den Kauf (vertikal) und eines für den Verkauf (horizontal).';if (conversion && shown.some(isConverted)) { // Everything interpolated here is escaped, not just the asset name: these come // from the endpoint rather than a constant in this file, and half-escaping one // string is how the next reader learns the wrong rule. const currency = escapeHtml(conversion.currency); text += ' Hinweis: Jahre vor ' + escapeHtml(cutoverYear) + ' stammen aus der ' + (conversion.currency === 'DEM' ? 'D-Mark-Zeit' : currency + '-Zeit') + ' und wurden mit dem amtlichen Kurs (1 EUR = ' + escapeHtml(String(conversion.rate).replace('.', ',')) + ' ' + currency + ') in Euro umgerechnet. Es handelt sich um berechnete, nicht um historisch ' + 'notierte Werte.'; } target.innerHTML = text; target.hidden = false; }function renderCompact() { if (compactChart) { compactChart.destroy(); } compactChart = build(compactEl, compactYears, compactScrollEl.clientWidth || 600); // Decided after the build, from the box itself, rather than recomputing the widths // the build already reconciled. wrapper.classList.toggle( 'is-scrollable', compactScrollEl.scrollWidth > compactScrollEl.clientWidth ); describe(note, compactYears); }function renderFull() { if (fullChart) { fullChart.destroy(); } fullChart = build(fullEl, fullYears, scrollEl.clientWidth || window.innerWidth); describe(noteFull, fullYears); }let lastFocus = null;function openFull() { lastFocus = document.activeElement; modalTitle.textContent = 'Renditedreieck – ' + assetName + ' (' + fullYears[0] + '–' + fullYears[fullYears.length - 1] + ')'; modal.hidden = false; document.body.style.overflow = 'hidden'; renderFull(); closeBtn.focus(); document.addEventListener('keydown', trapFocus, true); }// aria-modal="true" tells assistive tech the rest of the page is inert; without a trap // that is a lie - Tab walks straight out into the page behind the overlay. function trapFocus(event) { if (event.key !== 'Tab' || modal.hidden) { return; } const focusable = modal.querySelectorAll( 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])' ); if (!focusable.length) { return; } const first = focusable[0]; const last = focusable[focusable.length - 1]; if (event.shiftKey && document.activeElement === first) { event.preventDefault(); last.focus(); } else if (!event.shiftKey && document.activeElement === last) { event.preventDefault(); first.focus(); } }function closeFull() { modal.hidden = true; document.body.style.overflow = ''; document.removeEventListener('keydown', trapFocus, true); if (fullChart) { fullChart.destroy(); fullChart = null; } if (lastFocus && lastFocus.focus) { lastFocus.focus(); } }// Only offer the full view when there is more to see than the compact one shows. if (fullYears.length > compactYears.length) { openBtn.hidden = false; openBtn.setAttribute('title', 'Vollständiges Renditedreieck anzeigen (' + fullYears.length + ' Jahre)'); openBtn.setAttribute('aria-label', openBtn.getAttribute('title')); openBtn.addEventListener('click', openFull); closeBtn.addEventListener('click', closeFull); document.addEventListener('keydown', function (event) { if (event.key === 'Escape' && !modal.hidden) { closeFull(); } }); }renderCompact();// Cell sizing, label density and the scroll decision all depend on the viewport, and // Highcharts cannot recompute those on its own here. let resizeTimer = null; window.addEventListener('resize', function () { clearTimeout(resizeTimer); resizeTimer = setTimeout(function () { renderCompact(); if (!modal.hidden) { renderFull(); } }, 200); }); } catch (error) { console.error('Fehler beim Laden oder Parsen der Daten (Renditedreieck):', error); compactEl.innerHTML = 'Fehler beim Laden der Daten.'; } })();
