Beispiel #1
0
 var createSelector = function(canvas) {
     var sel = new Selector({canvas:canvas});  
     var imgset = new Preloader;
     imgset
         .add('img/selector_left.png')
         .add('img/selector_right.png')
         .add('img/selector_left_hover.png')
         .add('img/selector_right_hover.png')
         .add('img/selector_left_down.png')
         .add('img/selector_right_down.png')
         .success(function(images) {
             sel.setImages(images);
             sel.draw();
         })
         .error(function(msg) { console.log("Error:" + msg) })
         .done();
     return sel;
 };
Beispiel #2
0
 var createPositionBar = function(canvas) {
     var bar = new PositionBar({canvas:canvas,selector:selector});
     var imgset = new Preloader;
     imgset
         .add('img/play.png')
         .add('img/play_light.png')
         .add('img/pause.png')
         .add('img/pause_light.png')
         .add('img/positionbar.png')
         .success(function(images) { 
             bar.setImages(images);
             bar.draw();
         })
         .error(function(msg) {
             console.log(msg)
         })
         .done();
     return bar;
 };
Beispiel #3
0
$(window).ready(function() {
    var focus = document.getElementById('focus');
    var focusctx = focus.getContext('2d');
    var canvas = document.getElementById('mycanvas');
    var ctx = canvas.getContext('2d');
    var dataslider = new DataSlider;
    dataslider.to(canvas);
    dataslider.onchange(function(params) {
        var pos = params.pos;
        var ctx = focusctx;
        ctx.clearRect(0,0,focus.width,focus.height);
        ctx.strokeRect(0,0,focus.width,focus.height);
        ctx.fillStyle = '#000000';
        var width = pos.right.pos - pos.left.pos;
        var data = dataslider.getData();
        var unitwidth = canvas.width  / data.length;
        var unitsize = focus.width * (unitwidth / width);
        
        ctx.font = Math.round(unitsize) + "px Courier";
        for (var i = 0; i < data.length; i++) {
            ctx.fillText(data[i],Math.floor(unitsize*i) - (focus.width/width)*(pos.left.pos),focus.height);
        }
    });
    var imgset = new Preloader;
    imgset
        .add('img/selector_left.png')
        .add('img/selector_right.png')
        .add('img/selector_left_hover.png')
        .add('img/selector_right_hover.png')
        .add('img/selector_left_down.png')
        .add('img/selector_right_down.png')
        .success(function(images) {
            dataslider.setImages(images);
        })
        .error(function(msg) { console.log("Error:" + msg) })
        .done();
    dataslider.load("Jameson",function(canvas,data) {
        var basesize = Math.floor(canvas.width / data.length);
        var ctx = canvas.getContext('2d');
        ctx.fillStyle = '#000000';
        ctx.font = basesize + "px Courier";
        for (var i = 0; i < data.length; i++) {
            ctx.fillStyle = '#000000';
            ctx.fillText(data[i],basesize*i,canvas.height);
        }
    });
    dataslider.listen(datasource,'data');    
    dataslider.setAddFn(function(old,newdata) {
        return old.concat(':').concat(newdata); 
    })
    dataslider.setDisplayAddFn(function(canvas,old,newdata) {
        var basesize = Math.floor(canvas.width / old.length);
        var ctx = canvas.getContext('2d');
        ctx.clearRect(0,0,canvas.width,canvas.height);
        ctx.font = basesize + "px Courier";
        for (var i = 0; i < old.length; i++) {
            ctx.fillStyle = '#000000';
            ctx.fillText(old[i],basesize*i,canvas.height);
        }
        dataslider.draw();
    });
    dataslider.draw();
    
    var words = ['Buffalo Trace', 'Laphroaig', 'Glennfiddich', 'Glenlivet', 'Bullit', 'Woodford Reserve'];
    var give = function() {
        if (words.length > 1) {
            datasource.emit('data',words.pop());
            setTimeout(give,3000);
        }
    }
    setTimeout(give,3000)
});
Beispiel #4
0
$(window).ready(function() {
    var chart = new Chart;
    chart.series(datasource);
    var myCropData = function(list,windowsize,boundaries) {
        if (list.length < windowsize)
            return list
        var indices = lib.getIndicesByTimestamp(list,boundaries);
        var newlist =  list.slice(indices.left);
        if (newlist.length > windowsize) {
            return newlist.slice(0,windowsize);
        } else
            return newlist;
    };
    chart.custom.cropFn = myCropData;

    var focus = document.getElementById('focus');
    chart.to(focus);
    var focusctx = focus.getContext('2d');
    var canvas = document.getElementById('mycanvas');
    var ctx = canvas.getContext('2d');
    var dataslider = new DataSlider;

    // panorama data .. global cross function sad face ><
    // it is rekeyed across on displayaddfn to store
    // new locations of where each point lives
    // and accessed in onchange.
    var data = []; 
    dataslider.to(canvas);
    var imgset = new Preloader;
    imgset
        .add('img/selector_left.png')
        .add('img/selector_right.png')
        .add('img/selector_left_hover.png')
        .add('img/selector_right_hover.png')
        .add('img/selector_left_down.png')
        .add('img/selector_right_down.png')
        .success(function(images) {
            dataslider.setImages(images);
        })
        .error(function(msg) { console.log("Error:" + msg) })
        .done();
    dataslider.load([], function(canvas,data){
    });
    dataslider.listen(datasource,'data');    
    dataslider.setAddFn(function(old,newdata) {
        old.push(newdata);
        return old;
    });
    dataslider.onchange(function(params) {
        var pos = params.pos;
/*
        var indices = lib.getIndices(data,pos);
        $('#data').html('Left:' + indices.left + ' right:' + indices.right);
*/
    });
    dataslider.setDisplayAddFn(function(canvas,old,newdata) { 
        if (old.length > 50) {
            dataslider.thin();
            old = dataslider.getData();
        }
        if ((old.length - 1) == 0)
            return
        var ctx = canvas.getContext('2d');
        ctx.clearRect(0,0,canvas.width,canvas.height); 
        ctx.beginPath();
        var range = lib.rangeY(old,'y');
        var step = canvas.width / (old.length - 1);
        data = [];
        ctx.moveTo(0,canvas.height);
        for (var i = 0; i < old.length; i++) {
            var normalized = (old[i].y / range.max) * canvas.height;
            var obj = {};
            obj.x = Math.floor(i*step);
            obj.y = Math.floor(canvas.height - normalized);
            obj.date = old[i].date;
            data.push(obj);
            ctx.lineTo(obj.x,obj.y);
        }
        ctx.lineTo(canvas.width,canvas.height);
        ctx.lineTo(0,canvas.height);
        ctx.fillStyle = '#d6e7f2';
        ctx.fill();
        ctx.strokeStyle = '#517ea5';
        ctx.stroke();

        // dots
        for (var i = 0; i < old.length; i++) {
            var normalized = (old[i].y / range.max) * canvas.height;
            var obj = {};
            obj.x = Math.floor(i*step);
            obj.y = Math.floor(canvas.height - normalized);
            ctx.beginPath();
            ctx.arc(obj.x,obj.y, 3, 0, Math.PI*2, false);
            ctx.stroke();
        }
        // find out UI.left -> data[i]  and UI.right -> data[j]
        var pos = dataslider.getConfig(); 
        var indices = lib.getIndices(data,pos);
        chart.custom.boundaries.left = indices.left;
        chart.custom.boundaries.right = indices.right;
        var ldate = lib.getDateString(indices.left);
        var rdate = lib.getDateString(indices.right);
        $('#data').html('Left:' + ldate + ' right:' + rdate);
        
    });
    var idx = 0;
    var step = 0.1;
    setInterval(function() {
        var random = Math.abs(Math.floor(Math.sin(Math.PI*(idx+step))*100));
        var random2 = Math.floor(Math.random()*200);
        idx += step;
        datasource.emit('data',{x:random,y:random2});
    },1000);
});