MediaWiki:Skin/Kamelopedia:Zeitreisemaschine.js: Unterschied zwischen den Versionen

aus Kamelopedia, der wüsten Enzyklopädie
Zur Navigation springen Zur Suche springen
 
(32 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
var links = document.getElementsByTagName("A");
+
/*
 +
* Zeitwähler-Code
 +
*/
  
for(var i=0; i<links.length; i++)
+
function getTotalOffset( element, offsetType, sum )
     links[i].keepToday = true;
+
{
 +
    if ( element.offsetParent != null )
 +
        sum += getTotalOffset( element.offsetParent, offsetType, sum );
 +
    return sum + element[offsetType];
 +
}
 +
 
 +
Node.prototype.getTotalOffsetTop = function () { return getTotalOffset( this, "offsetTop", 0 ); };
 +
Node.prototype.getTotalOffsetLeft = function () { return getTotalOffset( this, "offsetLeft", 0 ); };
 +
 
 +
var s = {
 +
    init: function () {
 +
        s.info = document.getElementById("sliderinfo");
 +
        s.info2 = document.getElementById("sliderinfo2");
 +
        s.case = document.getElementById("slidercase");
 +
        s.back = document.getElementById("sliderback");
 +
        s.slider = document.getElementById("slider");
 +
        s.slider2 = document.getElementById("slider2");
 +
        s.top = s.case.getTotalOffsetTop();
 +
        s.left = s.case.getTotalOffsetLeft();
 +
    },
 +
    move: function (e) {
 +
        var x = document.all ? window.event.clientX : e.pageX;
 +
        var y = document.all ? window.event.clientY : e.pageY;
 +
        if ( x > s.left && x < s.left + s.case.offsetWidth &&
 +
            y > s.top  && y < s.top  + s.case.offsetHeight )
 +
        {
 +
            s.dx = x - s.left - 1 ;
 +
            s.px = s.dx / ( s.case.offsetWidth - 2 );
 +
            s.date = s.calcTime(s.px);
 +
            s.dateInfo = "";
 +
            s.dateInfo += s.date.getDate() + ". ";
 +
            s.dateInfo += ["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"][s.date.getMonth()] + " ";
 +
            s.dateInfo += s.date.getFullYear();
 +
            s.info.innerHTML = s.dateInfo;
 +
            s.slider.style.left = (s.dx - 1 ) + "px";
 +
            s.slider.style.display = "block";
 +
           
 +
        }
 +
        else
 +
        {
 +
            s.info.innerHTML = "Kein Datum ausgewählt.";
 +
            s.slider.style.display = "none";
 +
        }
 +
    },
 +
    calcTime: function (p) {
 +
        return new Date( ( (s.today - s.birth) * p + s.birth ) * 1000 );
 +
    },
 +
     click: function (e) {
 +
        s.move(e);
 +
        s.info2.innerHTML = s.dateInfo;
 +
        s.slider2.style.left = (s.dx - 2 ) + "px";
 +
        s.slider2.style.display="block";
 +
        s.fkt();
 +
    }
 +
}
  
  
ready = function ( a ) { alert(a.wiki.HTML ) };
+
 
 +
function initSlider()
 +
{
 +
    s.init();
 +
    window.onmousemove = s.move;
 +
    s.case.onclick = s.click;
 +
    s.birth = parseInt( document.getElementById("t_birth").innerHTML );
 +
    s.today = parseInt( document.getElementById("t_today").innerHTML );
 +
    var b = new Date ( s.birth * 1000 );
 +
    var t = new Date ( s.today * 1000 );
 +
    s.back.innerHTML="";
 +
    for (var x=b.getFullYear(); x<t.getFullYear(); x++)
 +
    {
 +
        var e = document.createElement("DIV");
 +
        e.style.position = "absolute";
 +
        e.style.height = "100%";
 +
        e.style.width = "100%";
 +
        e.innerHTML = x+1;
 +
        e.style.margin = "0px";
 +
        e.style.padding = "0px";
 +
        e.style.borderLeft = "1px darkblue solid";
 +
        e.style.color = "darkblue";
 +
        e.style.top = "0px";
 +
        e.style.width = "5em";
 +
        e.style.left = ( (new Date(x+1,0,1) - b) / ( t - b ) * (s.case.offsetWidth - 2) ) + "px";
 +
        s.back.appendChild(e);
 +
    }
 +
}
 +
 
 +
/*
 +
* Zeitmaschinen-Code
 +
*/
  
 
var ret;
 
var ret;
  
parseRevision = function ( a )
+
function parseRevision( a )
 
{
 
{
 +
    console.log("parseRevision", a);
 
     document.getElementById("zr_content").innerHTML = a.wiki.HTML;
 
     document.getElementById("zr_content").innerHTML = a.wiki.HTML;
 +
    document.getElementsByTagName("H1")[0].innerHTML = page;
 +
    dbg = wiki.transport;
 
     var links = document.getElementsByTagName("A");
 
     var links = document.getElementsByTagName("A");
  
Zeile 17: Zeile 107:
 
         if (links[i].keepToday != true)
 
         if (links[i].keepToday != true)
 
             links[i].onclick = nextlink;
 
             links[i].onclick = nextlink;
        else
+
    //keine Ahnung warum, aber wir müssen den Slider neu setzen!
            links[i].innerHTML += "*";
+
    initSlider();
 +
    s.slider2.style.left = (s.dx - 2 ) + "px";
 +
    document.getElementById("shadow").style.display="none";
 +
    return a;
 
}
 
}
  
mkSOS = function ()
 
{
 
    var str = "";
 
    str += "<b>["+parseInt(time)+"]</b> ";
 
    str += 'Siehe vielleicht: <a href="'+wgServer+wgScript+'/Hauptseite">Hauptseite</a>';
 
    document.getElementById("zr_info").innerHTML = str;
 
}
 
  
 
nextlink = function ()  
 
nextlink = function ()  
Zeile 33: Zeile 119:
 
     page = this.title;
 
     page = this.title;
 
     getRevision.start();
 
     getRevision.start();
    mkSOS();
 
 
     return false;
 
     return false;
 
}
 
}
  
 
var time="20050101";
 
var time="20050101";
var page="Hauptseite";
+
var page="Kamelopedia:Hauptseite";
 +
var dbg;
 +
 
 +
var getRevision;
 +
var getRescue;
 +
 
 +
// in den Datumswähler einhängen:
 +
s.fkt = function () {
 +
    var y = String(s.date.getFullYear());
 +
    var m = String(s.date.getMonth()+1);
 +
    var d = String(s.date.getDate());
 +
    if (d.length == 1 )
 +
        d = "0"+d;
 +
    if (m.length == 1 )
 +
        m = "0"+m;
 +
    time = y+m+d;
 +
    getRevision.start();
 +
 
 +
}
 +
 
 +
function initTM()
 +
{
  
 
getRevision = new Async( [
 
getRevision = new Async( [
     function () { return { wiki: { source: "{{#dpl: namespace = | lastrevisionbefore = "+parseInt(time)+" | format=,%REVISION%, | skipthispage = no | count = 1 | title = "+escape(page)+"}}", title: "Hauptseite" } } },
+
     function () { document.getElementById("shadow").style.display="table"; var a = { wiki: { source: "{{#dpl: namespace = | lastrevisionbefore = "+parseInt(window.time)+" | format=,%REVISION%, | skipthispage = no | count = 1 | titlematch = "+page+" | count = 1}}", title: "Hauptseite" } }; return a; },
 +
    wiki.parse,
 +
    function (a) { var rev = parseInt(jQuery(a.wiki.HTML).text()); if (isNaN(rev)) {a.wiki.HTML="Diese Seite gab es damals noch nicht."; console.log(a); parseRevision(a); getRevision.pointer ++; return;} a.wiki.args = "oldid="+rev; a.wiki.title =  page; return a; },
 +
    wiki.getHTML,
 +
    parseRevision
 +
], function () {} );
 +
 
 +
getRescue = new Async( [
 +
    function (a) { document.getElementById("shadow").style.display="table"; page="Zufällige Artikelvorschläge"; return { wiki: { source: "Probier doch mal: {{#dpl: namespace = | lastrevisionbefore = "+parseInt(time)+" | format = ,\\n*[[%PAGE%]], | randomcount = 6 }}", title: "Hauptseite" } } },
 
     wiki.parse,
 
     wiki.parse,
     function (a) { a.wiki.args = "oldid="+parseInt(a.wiki.HTML); a.wiki.title =  page; return a; },
+
     parseRevision
    wiki.getHTML
+
], function () {} );
], parseRevision )
 
  
getRevision.start();
+
 
 +
    var links = document.getElementsByTagName("A");
 +
 
 +
    for(var i=0; i<links.length; i++)
 +
        links[i].keepToday = true;
 +
 
 +
 
 +
 
 +
    document.getElementById("zr_info").onclick = function () { getRescue.start(); };
 +
    initSlider();
 +
}
 +
addOnloadHook(initTM);

Aktuelle Version vom 22. Mai 2015, 07:05 Uhr

/*
 * Zeitwähler-Code
 */

function getTotalOffset( element, offsetType, sum )
{
    if ( element.offsetParent != null )
        sum += getTotalOffset( element.offsetParent, offsetType, sum );
    return sum + element[offsetType];
}

Node.prototype.getTotalOffsetTop = function () { return getTotalOffset( this, "offsetTop", 0 ); };
Node.prototype.getTotalOffsetLeft = function () { return getTotalOffset( this, "offsetLeft", 0 ); };

var s = {
    init: function () {
        s.info = document.getElementById("sliderinfo");
        s.info2 = document.getElementById("sliderinfo2");
        s.case = document.getElementById("slidercase");
        s.back = document.getElementById("sliderback");
        s.slider = document.getElementById("slider");
        s.slider2 = document.getElementById("slider2");
        s.top = s.case.getTotalOffsetTop();
        s.left = s.case.getTotalOffsetLeft();
    },
    move: function (e) {
        var x = document.all ? window.event.clientX : e.pageX;
        var y = document.all ? window.event.clientY : e.pageY;
        if ( x > s.left && x < s.left + s.case.offsetWidth &&
             y > s.top  && y < s.top  + s.case.offsetHeight )
        {
            s.dx = x - s.left - 1 ;
            s.px = s.dx / ( s.case.offsetWidth - 2 );
            s.date = s.calcTime(s.px);
            s.dateInfo = "";
            s.dateInfo += s.date.getDate() + ". ";
            s.dateInfo += ["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"][s.date.getMonth()] + " ";
            s.dateInfo += s.date.getFullYear();
            s.info.innerHTML = s.dateInfo;
            s.slider.style.left = (s.dx - 1 ) + "px";
            s.slider.style.display = "block";
            
        }
        else
        {
            s.info.innerHTML = "Kein Datum ausgewählt.";
            s.slider.style.display = "none";
        }
    },
    calcTime: function (p) {
        return new Date( ( (s.today - s.birth) * p + s.birth ) * 1000 );
    },
    click: function (e) {
        s.move(e);
        s.info2.innerHTML = s.dateInfo;
        s.slider2.style.left = (s.dx - 2 ) + "px";
        s.slider2.style.display="block";
        s.fkt();
    }
}



function initSlider()
{
    s.init();
    window.onmousemove = s.move;
    s.case.onclick = s.click;
    s.birth = parseInt( document.getElementById("t_birth").innerHTML );
    s.today = parseInt( document.getElementById("t_today").innerHTML );
    var b = new Date ( s.birth * 1000 );
    var t = new Date ( s.today * 1000 );
    s.back.innerHTML="";
    for (var x=b.getFullYear(); x<t.getFullYear(); x++)
    {
        var e = document.createElement("DIV");
        e.style.position = "absolute";
        e.style.height = "100%";
        e.style.width = "100%";
        e.innerHTML = x+1;
        e.style.margin = "0px";
        e.style.padding = "0px";
        e.style.borderLeft = "1px darkblue solid";
        e.style.color = "darkblue";
        e.style.top = "0px";
        e.style.width = "5em";
        e.style.left = ( (new Date(x+1,0,1) - b) / ( t - b ) * (s.case.offsetWidth - 2) ) + "px";
        s.back.appendChild(e);
    }
}

/*
 * Zeitmaschinen-Code
 */

var ret;

function parseRevision( a )
{
    console.log("parseRevision", a);
    document.getElementById("zr_content").innerHTML = a.wiki.HTML;
    document.getElementsByTagName("H1")[0].innerHTML = page;
    dbg = wiki.transport;
    var links = document.getElementsByTagName("A");

    for(var i=0; i<links.length; i++)
        if (links[i].keepToday != true)
            links[i].onclick = nextlink;
    //keine Ahnung warum, aber wir müssen den Slider neu setzen!
    initSlider();
    s.slider2.style.left = (s.dx - 2 ) + "px";
    document.getElementById("shadow").style.display="none";
    return a;
}


nextlink = function () 
{
    page = this.title;
    getRevision.start();
    return false;
}

var time="20050101";
var page="Kamelopedia:Hauptseite";
var dbg;

var getRevision;
var getRescue;

// in den Datumswähler einhängen:
s.fkt = function () {
    var y = String(s.date.getFullYear());
    var m = String(s.date.getMonth()+1);
    var d = String(s.date.getDate());
    if (d.length == 1 )
        d = "0"+d;
    if (m.length == 1 )
        m = "0"+m;
    time = y+m+d;
    getRevision.start();

}

function initTM()
{

getRevision = new Async( [
    function () { document.getElementById("shadow").style.display="table"; var a = { wiki: { source: "{{#dpl: namespace = | lastrevisionbefore = "+parseInt(window.time)+" | format=,%REVISION%, | skipthispage = no | count = 1 | titlematch = "+page+" | count = 1}}", title: "Hauptseite" } }; return a; },
    wiki.parse,
    function (a) { var rev = parseInt(jQuery(a.wiki.HTML).text()); if (isNaN(rev)) {a.wiki.HTML="Diese Seite gab es damals noch nicht."; console.log(a); parseRevision(a); getRevision.pointer ++; return;} a.wiki.args = "oldid="+rev; a.wiki.title =  page; return a; },
    wiki.getHTML,
    parseRevision
], function () {} );

getRescue = new Async( [
    function (a) { document.getElementById("shadow").style.display="table"; page="Zufällige Artikelvorschläge"; return { wiki: { source: "Probier doch mal: {{#dpl: namespace = | lastrevisionbefore = "+parseInt(time)+" | format = ,\\n*[[%PAGE%]], | randomcount = 6 }}", title: "Hauptseite" } } },
    wiki.parse,
    parseRevision
], function () {} );


    var links = document.getElementsByTagName("A");

    for(var i=0; i<links.length; i++)
        links[i].keepToday = true;



    document.getElementById("zr_info").onclick = function () { getRescue.start(); };
    initSlider();
}
addOnloadHook(initTM);