PageSourceSearch

https://www.alzheimer-forschung.de/typo3temp/assets/compressed/gar…9f31336dfa8ab4e22237199404e28.js?1733329493

js alzheimer-forschung.de collected 2026-10-02 05:51:40 UTC 8,191 bytes, 251 lines download raw bytes

1let fp_eg_mode = 0; // 0: slideshow, 1: detailansicht
2let fp_eg_timeoutId = -1;
3let fp_eg_lastDatensatzId = -1;
4/**
5 * Startet den Slider
6 */
7$(document).ready(function() {
8    if($('.tx-fp-erinnerungsgarten').length) {
9        setTimeout(fp_eg_slideNamesStart, 2000);
10    }
11})
12
13// Normale Steuerung verwalten
14$(document).on("click", '.tx-fp-erinnerungsgarten .person', function(e) {
15    const id = $(this).attr("data-id");
16    fp_eg_showDatensatz_delayed(id);
17    return false;
18});
19$('#namenSlider').click(function() {
20    const id = fp_eg_lastDatensatzId;
21    fp_eg_showDatensatz_delayed(id);
22    return false;
23});
24$('#container .img').click(function(e) {
25    if(!$(e.target).hasClass("person")) {
26        fp_eg_reset();
27    }
28    return false;
29});
30$('#personContainer .controls .close').click(function() {
31    fp_eg_reset();
32    return false;
33});
34
35/**
36 * Zoomt auf den Punkt einer bestimmten Person um diese anzuzeigen
37 * @param personId Die Id aus dem Array personen
38 */
39function fp_eg_showDatensatz_delayed(datensatzId) {
40    if(fp_eg_mode) {
41        return false;
42    }
43    fp_eg_mode = 1;
44    fp_eg_slideNamesStop();
45    setTimeout(function() {
46        fp_eg_showDatensatz(datensatzId, true);
47    }, 1500);
48}
49function fp_eg_showDatensatz(datensatzId, ignoreMode) {
50    if(fp_eg_mode && !ignoreMode) {
51        return false;
52    }
53    fp_eg_mode = 1;
54    const datensatz = datensaetze[datensatzId];
55    //console.log("Datensatz mit der Id " + datensatzId + " und folgenden Daten anzeigen:");
56    //console.log(datensatz);
57
58    // Breite des Containers ermitteln
59    const widthContainer = Number($('#container').css("width").replace("px", ""));
60    const heightContainer = Number($('#container').css("height").replace("px", ""));
61
62    // Position innerhalb des Containers ermittelnt
63    const positionX = widthContainer * datensatz.left / 100;
64    const positionY = heightContainer * datensatz.top / 100;
65
66    // Ansicht anpassen
67    fp_eg_zoomAndBlur(globalZoomLevel, globalBlurLevel);
68    $('#container .img').css({
69        "margin-left" : ((widthContainer / 2) - positionX * globalZoomLevel),
70        "margin-top" : ((heightContainer / 2) - positionY * globalZoomLevel)
71    });
72
73    // Infobox aufrufen
74    switch(datensatz.art) {
75        case 0: $('#personContainer .title').html("Person"); break;
76        case 1: $('#personContainer .title').html("Ehepaar"); break;
77    }
78    const personen = $('#personContainer .personen');
79    personen.html("");
80    datensatz.personen.forEach(function (person) {
81        let html = '<table class="table"><tbody><tr><th colspan="2" class="name">' + person.titel + ' ' + person.vorname + ' ' + person.nachname + '</th></tr>';
82        if(person.ort != "") {
83            html += '<tr><td colspan="2" class="ort">' + person.ort + '</td></tr>';
84        }
85        if(person.geburtstag != "" || person.sterbetag != "") {
86            html += '<tr>';
87            if(person.geburtstag != "") {
88                if(person.sterbetag != "") {
89                    html += '<td class="geburtstag">* ' + person.geburtstag + '</td>';
90                    html += '<td class="sterbetag">&dagger; ' + person.sterbetag + '</td>';
91                } else {
92                    html += '<td class="geburtstag" colspan="2">* ' + person.geburtstag + '</td>';
93                }
94            } else {
95                html += '<td class="sterbetag" colspan="2">&dagger; ' + person.sterbetag + '</td>';
96            }
97            html += '</tr>';
98        }
99        html += '</tbody></table>';
100        personen.append(html);
101    });
102    $('#personContainer').delay(300).fadeIn();
103}
104
105/**
106 * Zoomt und verpixelt das Bild
107 * @param zoomLevel int
108 * @param blurLevel int
109 */
110function fp_eg_zoomAndBlur(zoomLevel, blurLevel) {
111    const widthContainer = Number($('#container').css("width").replace("px", ""));
112    const heightContainer = Number($('#container').css("height").replace("px", ""));
113    $('#container .img').css({
114        "width" : widthContainer * zoomLevel,
115        "height" : heightContainer * zoomLevel,
116        "filter" : "blur(" + blurLevel + "px)"
117    });
118}
119
120/**
121 * Setzt die Ansicht zurück
122 */
123function fp_eg_reset() {
124    if(!fp_eg_mode) {
125        return false;
126    }
127    fp_eg_mode = 0;
128    $('#personContainer').fadeOut();
129    $('#container .img').delay(200).queue(function() {
130        $(this).css({
131            "margin-left" : 0,
132            "margin-top" : 0,
133            "filter" : "blur(0)",
134            "width" : "100%",
135            "height" : "100%"
136        });
137        $(this).dequeue();
138    }).delay(2000).queue(function() {
139        fp_eg_slideNamesStart();
140        $(this).dequeue();
141    });
142}
143
144/**
145 * Lässt die Namen rein und rausfliegen
146 */
147function fp_eg_slideNamesStart() {
148    const slider = $('#namenSlider');
149    slider.removeClass("inAction");
150    slider.removeClass("inFront");
151
152    // Datensatz und Personen ermitteln
153    const datensatzId = fp_eg_getRandomRecord(fp_eg_lastDatensatzId);
154    fp_eg_lastDatensatzId = datensatzId;
155    const datensatz = datensaetze[datensatzId];
156    const names = fp_eg_getAllPersonsOfRecord(datensatzId);
157    //console.log("Datensatz mit der Id " + datensatzId + " ermittelt.");
158    $('#namenSlider .name').html(names.join("<br>"));
159    //console.log("Folgende Daten wurden eingelesen:");
160    //console.log(names);
161
162    // Breite des Containers ermitteln
163    const widthContainer = Number($('#container').css("width").replace("px", ""));
164    const heightContainer = Number($('#container').css("height").replace("px", ""));
165    // Punkt des Datensatzes ermitteln
166    const positionX = widthContainer * datensatz.left / 100;
167    const positionY = heightContainer * datensatz.top / 100;
168
169
170    // Maße des Sliders berechnen
171    slider.css({
172        width: "",
173        height: ""
174    });
175    slider.addClass("inFront");
176    const sliderWidth = slider.css("width").replace("px", "");
177    const sliderHeight = slider.css("height").replace("px", "");
178    slider.removeClass("inFront");
179
180    // Start und Endposition des Sliders berechnen
181    const sliderPositionStartX = positionX - (sliderWidth / 2);
182    const sliderPositionStartY = positionY - (sliderHeight / 2);
183    // Frontposition des Sliders ermitteln
184    const sliderPositionFrontX = widthContainer / 2 - (sliderWidth / 2);
185    const sliderPositionFrontY = heightContainer / 2 - (sliderHeight / 2);
186
187    // Name Sliden
188    $('#namenSlider').css({
189        width: sliderWidth,
190        height: sliderHeight,
191        left : sliderPositionStartX + "px",
192        top : sliderPositionStartY + "px"
193    });
194    setTimeout(function(){
195        // Name einblenden
196        slider.addClass("inAction");
197        slider.addClass("inFront");
198        $('#namenSlider').css({
199            left : sliderPositionFrontX + "px",
200            top : sliderPositionFrontY + "px"
201        });
202
203        fp_eg_timeoutId = setTimeout(function(){
204            // Name ausblenden
205            slider.removeClass("inFront");
206            $('#namenSlider').css({
207                left : sliderPositionStartX + "px",
208                top : sliderPositionStartY + "px"
209            });
210            // Neu starten
211            fp_eg_timeoutId = setTimeout(function() {
212                fp_eg_slideNamesStart();
213            }, 3000);
214        }, 5000);
215    }, 1);
216}
217function fp_eg_slideNamesStop() {
218    const slider = $('#namenSlider');
219    clearTimeout(fp_eg_timeoutId);
220    slider.removeClass("inFront");
221}
222
223function fp_eg_getRandomRecord(mayNot) {
224    let datensatzId = -1;
225    do {
226        datensatzId = Math.floor(Math.random() * datensaetze.length);
227    } while(datensatzId == mayNot);
228    return datensatzId;
229}
230function fp_eg_getAllPersonsOfRecord(recordId) {
231    const record = datensaetze[recordId];
232    // Alle Namen einlesen
233    const names = [];
234    record.personen.forEach(function(person) {
235        const name = {
236            noTitle : (person.vorname + " " + person.nachname).trim(),
237            full : (person.titel + " " + person.vorname + " " + person.nachname).trim()
238        }
239        names.push(name);
240    });
241    // Komplette Namen zurückgeben
242    const returnArray = [];
243    names.forEach(function(name) {
244        returnArray.push(name.full);
245    });
246    return returnArray;
247}
248
249
250
251

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.