Benutzer:Wiegels/js/age.js

Dieser Artikel befasst sich mit dem Thema Benutzer:Wiegels/js/age.js, das in verschiedenen Bereichen der Gesellschaft großes Interesse geweckt hat. Benutzer:Wiegels/js/age.js ist ein hochaktuelles Thema, das in den letzten Jahren zu zahlreichen Debatten, Studien und Forschungen geführt hat. Seine Bedeutung liegt in den Auswirkungen, die es auf das tägliche Leben der Menschen hat, sowie in seinem Einfluss auf verschiedene Bereiche wie Wirtschaft, Technologie, Kultur, Politik und andere. Daher ist es wichtig, das Wissen und Verständnis von Benutzer:Wiegels/js/age.js zu vertiefen, um seinen Umfang, seine Auswirkungen und mögliche Lösungen zu analysieren.
// Alter anzeigen
var mw = mw ?? null;
(function() {
    var metadata = $('#Vorlage_Personendaten');
    if ($('#jw-age').length==0 && metadata.length>0) {
        $('head').append(
            '<link href="/w/index.php?title=Benutzer:Wiegels/css/indicator.css&action=raw&ctype=text/css" rel="stylesheet" type="text/css"/>'+
            '<link href="/w/index.php?title=Benutzer:Wiegels/css/age.css&action=raw&ctype=text/css" rel="stylesheet" type="text/css"/>'
        );
        metadata = metadata.clone().attr('id', '').addClass('jw-indicator');
        $('.mw-indicators').append('<div id="jw-age" class="jw-indicator"></div>').append(metadata);
        var dates = ;
        var intro = $('.mw-parser-output > p').
            filter((index, element) =>
                $(element).html().replace(/<span style="display:none;">.*?<\/span>/, '').replace(/\s/g, '')!='' &&
                $(element).text().replace(/\s/g, '')!=''
            ).
            first().text().replace(/\s+/g, ' ').replace(/\]+\]/g, '');
        var months = mw.config.get('wgMonthNames').join('|').replace(/(Januar)/, 'Jänner|$1');
        var matches = [
            metadata.text().match(/GEBURTSDATUM\n\n(+)/),
            metadata.text().match(/STERBEDATUM\n\n(+)/)
        ];
        $(matches).each(function(index, match) {
            if (match) {
                var date = match.match(RegExp('^.*?(\\d{1,2}\. |)('+months+'|) ?(\\d{4})$'));
                if (date) {
                    if (
                        !intro.replace(/(\(.*?)\(.*?\)(.*?\))/g, '$1$2').replace(/\s+/g, ' ').
                        match(RegExp((date+date.replace(/(Januar)/, '($1|Jänner)')).replace(/ $/, '')+' '+date))
                    ) {
                        metadata.html(metadata.html().
                            replace(RegExp('('++'\\n<\\/td>\\n<td>)(+)'), '$1<mark>$2</mark>'
                        ));
                    }
                    dates = [
                        0,
                        parseInt('0'+date),
                        Math.max(months.replace(RegExp(date+'.*$'), '').replace(//g, '').length-1, 0),
                        parseInt(date)
                    ];
                }
            }
        });
        var date0 = dates;
        var today = new Date();
        var date1 = dates || ;
        var age = date0 ?
            (Math.max(date0, date1)>12 || Math.min(date0, date1)==0 ? '&asymp;' : '')+
            (date1-date0-(date1*32+date1<date0*32+date0 ? 1 : 0)) :
            null;
        var cats = '|'+mw.config.get('wgCategories').join('|')+'|';
        $('#jw-age').append(
            '<span><a href="#" accesskey="b" title="Personendaten umschalten ">'+
            (age ? age+ ' Jahr'+(age.replace('&asymp;', '')!=1 ? 'e' : '')+' alt' : 'Alter unbekannt')+'</a></span>'
        );
        $('#jw-age').addClass(
            (cats.match(/\|Frau\|/) ? 'jw-female' : cats.match(/\|Mann\|/) ? 'jw-male' : '')+
            (dates ? ' jw-died' : date0+'-'+date0==date1+'-'+date1 ? ' jw-birthday' : '')
        );
        $('#jw-age a').on('click', function(event) {
            event.preventDefault();
            metadata.toggle();
        });
        metadata.filter(':has(mark)').on('mouseenter mouseleave', function(event) {
            $(this).find('tr:not(:has(mark))').toggle(event.type=='mouseenter');
        });
        if (metadata.html().match(/<mark>/)!=null) {
            metadata.toggle().find('tr:not(:has(mark))').toggle();
        }
    }
})();