Changeset 13849


Ignore:
Timestamp:
05/23/12 21:12:27 (13 years ago)
Author:
tbretz
Message:
Added min, max and median to binary files and hence to graphics.
Location:
trunk/FACT++
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/smartfact.cc

    r13847 r13849  
    304304// ========================================================================
    305305
    306 class StateMachineSmartFACT : public StateMachineDim//, public DimInfoHandler
     306class StateMachineSmartFACT : public StateMachineDim
    307307{
    308308private:
     
    407407        void WriteBinary(const EventImp &d, const string &fname, const T &t, double scale, double offset=0)
    408408    {
     409        const Statistics stat(t);
     410
    409411        vector<uint8_t> val(t.size(), 0);
    410412        for (uint64_t i=0; i<t.size(); i++)
     
    424426        out << offset << '\n';
    425427        out << offset+scale << '\n';
     428        out << setprecision(3);
     429        out << stat.min << '\n';
     430        out << stat.med << '\n';
     431        out << stat.max << '\n';
    426432        out.write(ptr, val.size()*sizeof(uint8_t));
    427433
     
    13911397
    13921398        // -------------- System status --------------
    1393         if (fMcpConfigurationState>=5) // Idle
     1399        if (fDimMcp.state()>=5) // Idle
    13941400        {
    13951401            string col = kHtmlBlue;
  • trunk/FACT++/www/smartfact/index.js

    r13845 r13849  
    204204        switch (args[i])
    205205        {
    206         case "max": $("body").setAttribute("data-max", "yes"); continue;
     206        case "max":     $("body").setAttribute("data-max",     "yes"); continue;
     207        case "noslide": $("body").setAttribute("data-noslide", "yes"); continue;
    207208        }
    208209
     
    802803
    803804    var W = window.innerWidth;
    804     if (W==0)
    805     {
    806         $("table"+newz).style.left="0px";
     805    if (W==0 || $("body").getAttribute("data-noslide")=="yes")
     806    {
    807807        $("body").setAttribute("data-visible", newz);
    808808        $("body").removeChild($("table"+oldz));
     809        $("table"+newz).style.left="0px";
    809810        return;
    810811    }
     
    819820    // This is needed on my mobile to ensure that te browser
    820821    // doesn't try to zoom during shifting
    821     //    $("table"+newz).style.position="fixed";
    822     //    $("table"+oldz).style.position="fixed";
     822    $("table"+newz).style.position="fixed";
     823    $("table"+oldz).style.position="fixed";
    823824
    824825    intervalSlide = setInterval(function(){doShift(oldz,newz)}, 75);
     
    835836        $("body").removeChild(t0);
    836837
    837         // t1.style.position="absolute";
     838        t1.style.position="absolute";
    838839
    839840        // Now the scroll bar might have to appear or disappear
     
    12641265}
    12651266
    1266 function drawCamLegend(canv, min, max)
    1267 {
     1267function drawCamLegend(canv, data)
     1268{
     1269    var umin = data[1];
     1270    var umax = data[2];
     1271
    12681272    var unit = canv.getAttribute("data-data");//.split("/");
    1269     if (unit.length>0)
    1270         unit = " "+unit;
    1271 
    1272     var v0 = parseFloat(min);
    1273     var v1 = parseFloat(max);
     1273    unit = unit.replace("&deg;", "\u00B0");
     1274    unit = unit.replace("&deg;", "\u00B5");
     1275
     1276    var min = data[3]+unit
     1277    var med = data[4]+unit;
     1278    var max = data[5]+unit;
     1279
     1280    var v0 = parseFloat(umin);
     1281    var v1 = parseFloat(umax);
    12741282
    12751283    var diff = v1-v0;
     
    12891297        ctx.strokeText((v0+diff*i/10).toPrecision(3)+unit, cw-5, 125-i*12);
    12901298    }
    1291 }
    1292 
    1293 function drawGraph(canv, min, max, data)
     1299
     1300    var mw = Math.max(ctx.measureText(min).width,
     1301                      ctx.measureText(med).width,
     1302                      ctx.measureText(max).width);
     1303
     1304    ctx.textBaseline = "top";
     1305    ctx.strokeStyle  = "#000";
     1306
     1307    ctx.strokeText(min, 5+mw, 5);
     1308    ctx.strokeText(med, 5+mw, 5+12);
     1309    ctx.strokeText(max, 5+mw, 5+24);
     1310}
     1311
     1312function drawGraph(canv, vals, data)
    12941313{
    12951314    var unit = canv.getAttribute("data-data");//.split("/");
    1296     if (unit.length>0)
    1297         unit = " "+unit;
     1315    unit = unit.replace("&deg;",   "\u00B0");
     1316    unit = unit.replace("&micro;", "\u00B5");
     1317
     1318    var umin = vals[1]+unit;
     1319    var umax = vals[2]+unit;
     1320
     1321    var stat = vals[3]+unit+"   /   "+vals[4]+unit+"   /   "+vals[5]+unit;
    12981322
    12991323    var cw = canv.width;
     
    13091333    ctx.textAlign = "right";
    13101334
    1311     var dim0 = ctx.measureText(min+unit);
    1312     var dim1 = ctx.measureText(max+unit);
     1335    var dim0 = ctx.measureText(umin);
     1336    var dim1 = ctx.measureText(umax);
    13131337
    13141338    var tw = Math.max(dim0.width, dim1.width)+dw+2;
     
    13171341    var mr = 10;   // margin right
    13181342
    1319     var mt = fs/2+5; // margin top
    1320     var mb = fs/2+4; // margin bottom
     1343    var mt = 5+2*fs+4; // margin top
     1344    var mb = fs/2+4;   // margin bottom
    13211345
    13221346    var nx = 20;
     
    13521376    for (var i=1; i<=nx; i++)
    13531377    {
    1354         ctx.moveTo(ml+w/nx*i, ch-mb);
    1355         ctx.lineTo(ml+w/nx*i,    mt);
     1378        ctx.moveTo(ml+w*i/nx, ch-mb);
     1379        ctx.lineTo(ml+w*i/nx,    mt);
    13561380    }
    13571381    for (var i=0; i<ny; i++)
    13581382    {
    1359         ctx.moveTo(ml,   mb+h/ny*i);
    1360         ctx.lineTo(ml+w, mb+h/ny*i);
     1383        ctx.moveTo(ml,   mt+h*i/ny);
     1384        ctx.lineTo(ml+w, mt+h*i/ny);
    13611385    }
    13621386    ctx.stroke();
     
    13731397    for (var i=1; i<=nx; i++)
    13741398    {
    1375         ctx.moveTo(ml+w/nx*i, ch-mb-dw);
    1376         ctx.lineTo(ml+w/nx*i, ch-mb+dw);
     1399        ctx.moveTo(ml+w*i/nx, ch-mb-dw);
     1400        ctx.lineTo(ml+w*i/nx, ch-mb+dw);
    13771401    }
    13781402    for (var i=0; i<ny; i++)
    13791403    {
    1380         ctx.moveTo(ml-dw, mb+h/ny*i);
    1381         ctx.lineTo(ml+dw, mb+h/ny*i);
     1404        ctx.moveTo(ml-dw, mt+h*i/ny);
     1405        ctx.lineTo(ml+dw, mt+h*i/ny);
    13821406    }
    13831407    ctx.stroke();
     
    13851409
    13861410    ctx.textBaseline = "bottom";
    1387     ctx.strokeText(min+unit, ml-dw-2, ch-1);
     1411    ctx.strokeText(umin, ml-dw-2, ch-1);
     1412
     1413    ctx.textBaseline = mt>fs/2 ? "middle" : "top";
     1414    ctx.strokeText(umax, ml-dw-2, mt);
    13881415
    13891416    ctx.textBaseline = "top";
    1390     ctx.strokeText(max+unit, ml-dw-2, 0);
     1417    ctx.textAlign    = "center";
     1418    ctx.strokeText(stat, ml+w/2, 5);
    13911419}
    13921420
     
    14101438        return;
    14111439
    1412     var l = data[0].length+1+data[1].length+1+data[2].length+1;
     1440    var len = 0;
     1441    for (var i=0; i<6; i++)
     1442        len += data[i].length+1;
    14131443
    14141444    switch (type)
     
    14161446        //case "camera": drawCam(result);     break;
    14171447    case "hist":
    1418         drawGraph(canv, data[1], data[2], result.substr(l));
     1448        drawGraph(canv, data, result.substr(len));
    14191449        break;
    14201450    case "camera":
    1421         drawFullCam(result.substr(l));
    1422         drawCamLegend(canv, data[1], data[2]);
     1451        drawFullCam(result.substr(len));
     1452        drawCamLegend(canv, data);
    14231453        break;
    14241454    }
Note: See TracChangeset for help on using the changeset viewer.