Changeset 13587 for trunk/FACT++/www


Ignore:
Timestamp:
05/07/12 20:45:06 (13 years ago)
Author:
tbretz
Message:
Improvements to the histogram display; some other little fixes and improvements
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/www/index.js

    r13568 r13587  
     1var debug = true;
     2
    13function $(id) { return document.getElementById(id); }
    24function trim(str) { return str.replace("/^\s\s*/", '').replace("/\s\s*$/", ''); }
     
    7577
    7678    var lines = text.split('\n');
     79
     80    if (lines.length==0)
     81    {
     82        alert("buildPage - received data empty.");
     83        return;
     84    }
    7785
    7886    var table = $("table"+z);
     
    124132    htd3.setAttribute("class", "tcell1");
    125133    htd3.setAttribute("width", "1px");
     134    hhtr.appendChild(htd3);
    126135    hhtr.appendChild(htd0);
    127136    hhtr.appendChild(htd1);
    128137    hhtr.appendChild(htd2);
    129     hhtr.appendChild(htd3);
    130138
    131139    var div0 = document.createElement("div");
     
    150158    sp2.setAttribute("data-color", "3");
    151159    sp0.appendChild(document.createTextNode(" \u2022 "));
    152     sp1.appendChild(document.createTextNode(lines.length>0?lines[0]:"n/a"));
     160    sp1.appendChild(document.createTextNode(lines[0]));
    153161    sp2.appendChild(document.createTextNode(" \u2022 "));
    154162
     
    163171    htd0.appendChild(div0);
    164172    htd1.appendChild(div1);
    165     htd2.appendChild(div2);
    166     htd3.appendChild(div3);
     173    if (dz!=0/* && z+dz!=0*/)
     174        htd2.appendChild(div2); // back
     175    if (lines[0]!="FACT")
     176        htd3.appendChild(div3); // home
    167177
    168178    // -----------------------------------------------------
     
    278288        {
    279289            var sp = document.createElement("div");
    280             sp.setAttribute("class", "icon_gray");
     290            sp.setAttribute("class", "icon_black");
    281291            sp.setAttribute("style", "background-position: -144px 50%;");
    282292            td0.appendChild(sp);
     
    295305        {
    296306            var sp = document.createElement("div");
    297             sp.setAttribute("class", "icon_gray");
     307            sp.setAttribute("class", "icon_black");
    298308            sp.setAttribute("style", "background-position: -108px 50%;");
    299309            td2.appendChild(sp);
     
    332342    tr.setAttribute("class", "row");
    333343
    334     td = document.createElement("td");
    335     td.setAttribute("id", "debug");
    336     td.setAttribute("colspan", "3");
    337     tr.appendChild(td);
     344    if (debug == true)
     345    {
     346        td = document.createElement("td");
     347        td.setAttribute("id", "debug"+z);
     348        td.setAttribute("colspan", "3");
     349        tr.appendChild(td);
     350    }
    338351
    339352    tbody.appendChild(tr);
     
    347360function doresize(z)
    348361{
     362    // 393 / 482    488/482 / 200   200+482-488
    349363    var img  = $("image"+z);
    350364    var canv = $("canvas"+z);
     
    368382
    369383    // ------ debug -----
    370 
    371     $('debug').innerHTML = "";
    372     $('debug').innerHTML += "|W="+W +"/"+H;
    373     $('debug').innerHTML += "|H="+h+"/"+$("table"+z).offsetHeight+"/"+img.offsetHeight;
    374     $('debug').innerHTML += "|I="+img.style.height+"+"+H+"-"+h;
     384    if (debug == true)
     385    {
     386        $('debug'+z).innerHTML = "";
     387        $('debug'+z).innerHTML += "|W="+W +"/"+H;
     388        $('debug'+z).innerHTML += "|H="+h+"/"+$("table"+z).offsetHeight+"/"+img.offsetHeight;
     389        $('debug'+z).innerHTML += "|I="+img.style.height+"+"+H+"-"+h;
     390    }
    375391}
    376392
     
    414430        $("table"+newz).style.left=(-window.innerWidth-1)+"px";
    415431
     432    //window.clearTimeout(timeoutText);
     433    //window.clearTimeout(timeoutGraphics);
     434
    416435    $("body").setAttribute("data-visible", newz);
    417436    intervalSlide = setInterval(doShift, 75, oldz, newz);
     
    420439function doShift(oldz, newz)
    421440{
    422     var W = window.innerWidth;
    423 
    424441    var t0 = $("table"+oldz);
    425442    var t1 = $("table"+newz);
    426443
     444    if (t0.style.display=="none")
     445    {
     446        clearInterval(intervalSlide);
     447        $("body").removeChild(t0);
     448        return;
     449    }
     450
    427451    var x0 = t0.offsetLeft;
    428452    var x1 = t1.offsetLeft;
    429453
     454    var W = window.innerWidth;
     455
    430456    if (newz<oldz)
    431457    {
     
    442468    if ((newz<oldz && x1>=0) || (newz>oldz && x1<=0))
    443469    {
    444         clearInterval(intervalSlide);
    445         $("body").removeChild(t0);
    446         t1.style.left = "0px";
    447         return;
     470        t0.style.display="none";
     471        x1 = 0;
    448472    }
    449473
     
    552576*/
    553577
     578var timeoutText = null;
     579
    554580function refresh_text()
    555581{
     
    561587    if (isSliding() || !valid(fname))
    562588    {
    563         setTimeout(refresh_text, 1000);
     589        timeoutText = setTimeout(refresh_text, 1000);
    564590        return;
    565591    }
     
    572598        {
    573599            alert("ERROR[1] - HTTP request '"+fname+".txt': "+xmlHttp.statusText+" ["+xmlHttp.status+"]");
    574             setTimeout(refresh_text, 10000);
     600            timeoutText = setTimeout(refresh_text, 10000);
    575601            return;
    576602        }
     
    581607            update_text(fname, xmlHttp.responseText);
    582608        }
    583         setTimeout(refresh_text, 3000);
     609        timeoutText = setTimeout(refresh_text, 3000);
    584610    };
    585611    xmlHttp.send(null);
     
    705731    if (isSliding() || !valid(fname))
    706732    {
    707         setTimeout(refresh_graphics, 1000);
     733        timeoutGraphics = setTimeout(refresh_graphics, 1000);
    708734        return;
    709735    }
     
    716742        {
    717743            alert("ERROR[2] - Request '"+fname+"': "+xmlHttp.statusText+" ["+xmlHttp.status+"]");
    718             setTimeout(refresh_text, 10000);
     744            timeoutGraphics = setTimeout(refresh_graphics, 10000);
    719745            //****** invalidate ******
    720746            return;
     
    726752            process_eventdata(xmlHttp.responseText);
    727753        }
    728         setTimeout(refresh_graphics, 5000)
     754        timeoutGraphics = setTimeout(refresh_graphics, 5000)
    729755    };
    730756    xmlHttp.send(null);
     
    937963    {
    938964        ctx.strokeStyle = "#"+color(16*i);
    939         ctx.strokeText((vals[1]-diff*i/8)+vals[2], cw-5, 135-i*15);
     965        ctx.strokeText((vals[0]-diff*(i-8)/8)+vals[2], cw-5, 135-i*15);
    940966    }
    941967}
     
    948974    var ctx = canv.getContext("2d");
    949975
    950     var dx = 15;
    951     var dy = 15;
    952 
    953     var dw =  5;
     976    var vals = canv.getAttribute("data-data").split("/");
     977
     978    var dw =  3;    // tick width
     979
     980    var fs = 8;  // font size
     981
     982    ctx.font      = fs+"pt Arial";
     983    ctx.textAlign = "right";
     984
     985    var dim0 = ctx.measureText(vals[0]);
     986    var dim1 = ctx.measureText(vals[1]);
     987
     988    var tw = vals.length>=2 ? Math.max(dim0.width, dim1.width)+dw+2 : 0;
     989
     990    var ml = vals.length>=2 ? 5+tw   : 10; // margin left
     991    var mr = 10;                           // margin right
     992
     993    var mt = vals.length>=2 ? fs/2+5 : 5; // margin top
     994    var mb = vals.length>=2 ? fs/2+4 : 5; // margin bottom
    954995
    955996    var nx = 20;
    956997    var ny = 10;
    957998
    958     var w = cw-2*dx;
    959     var h = ch-2*dy;
     999    var w = cw-ml-mr;
     1000    var h = ch-mt-mb;
    9601001
    9611002    ctx.strokeStyle = "#808080";
    9621003
     1004    // --- data ---
    9631005    ctx.beginPath();
    964     ctx.moveTo(dx, ch-dy-data.charCodeAt(0)/128*h);
     1006    ctx.moveTo(ml, ch-mb-data.charCodeAt(0)/128*h);
    9651007    for (var i=1; i<data.length; i++)
    966         ctx.lineTo(dx+w/data.length*i, ch-dy-data.charCodeAt(i)/128*h);
    967     ctx.lineTo(dx+w, ch-dy);
    968     ctx.lineTo(dx,   ch-dy);
     1008        ctx.lineTo(ml+w/(data.length-1)*i, ch-mb-data.charCodeAt(i)/128*h);
     1009
     1010    // --- finalize data ---
     1011    ctx.lineTo(cw-mr, ch-mb);
     1012    ctx.lineTo(ml,    ch-mb);
    9691013    ctx.fillStyle = "#"+color(100);
     1014    ctx.stroke();
    9701015    ctx.fill();
     1016
     1017    ctx.strokeStyle = "#000000";
     1018
     1019    ctx.beginPath();
     1020
     1021    // --- axes ---
     1022    ctx.moveTo(ml,    mt);
     1023    ctx.lineTo(ml,    ch-mb);
     1024    ctx.lineTo(cw-mr, ch-mb);
     1025
     1026    for (var i=0; i<nx; i++)
     1027    {
     1028        ctx.moveTo(ml+w/nx*i, ch-mb-dw);
     1029        ctx.lineTo(ml+w/nx*i, ch-mb+dw);
     1030    }
     1031    for (var i=0; i<ny; i++)
     1032    {
     1033        ctx.moveTo(ml-dw, mb+h/ny*i);
     1034        ctx.lineTo(ml+dw, mb+h/ny*i);
     1035    }
    9711036    ctx.stroke();
    9721037    ctx.closePath();
    9731038
    974     ctx.strokeStyle = "#000000";
    975 
    976     ctx.beginPath();
    977 
    978     ctx.moveTo(dx,    dy);
    979     ctx.lineTo(dx,    ch-dy);
    980     ctx.lineTo(cw-dx, ch-dy);
    981 
    982     for (var i=0; i<nx; i++)
    983     {
    984         ctx.moveTo(dx+w/nx*i, ch-dy-dw);
    985         ctx.lineTo(dx+w/nx*i, ch-dy+dw);
    986     }
    987     for (var i=0; i<ny; i++)
    988     {
    989         ctx.moveTo(dx-dw, dy+h/ny*i);
    990         ctx.lineTo(dx+dw, dy+h/ny*i);
    991     }
    992     ctx.stroke();
    993     ctx.closePath();
     1039    if (vals.length>=2)
     1040    {
     1041        ctx.textBaseline = "bottom";
     1042        ctx.strokeText(vals[0], ml-dw-2, ch-1);
     1043
     1044        ctx.textBaseline = "top";
     1045        ctx.strokeText(vals[1], ml-dw-2, 0);
     1046    }
    9941047}
    9951048
    9961049function process_eventdata(result)
    9971050{
    998     if (result.length!=160)
    999         return;
    1000 
    10011051    var z = $("body").getAttribute("data-visible");
    10021052    var canv = $("canvas"+z);
Note: See TracChangeset for help on using the changeset viewer.