mouseTracer

record mouse move

by mmis1000

HTML

<div></div>
<span id='pos'><span>
<pre><span id='list'>[]</span>
</pre>

CSS

div {
    width:200px;
    height:200px;
    background:red;
}

JavaScript

function mouseEventFactory(handler) {
    function keyEvent(event) {
        var posX, posY, position, keynum, offset;
        if (window.event) {
            keynum = event.keyCode;
        } else if (event.which) {
            keynum = event.which;
        } else {
            keynum = 0;
        }

        offset = $(this).offset();
        if (offset) {
            posX = offset.left;
            posY = offset.top;
        } else {
            posX = 0
            posY = 0
        }
        position = {
            'x': event.pageX - posX,
                'y': event.pageY - posY
        };
        handler(keynum, position);
        return true;
    }
    return keyEvent;
}

function MouseTracer(element) {
    this.target = element;
    var SESSION_COUNTS_LIMIT = 30;
    var SESSION_LENGTH_LIMIT = 400;
    var self = this;
    this.mousePeriod = {};
    this.mousePeriodUp = [];
    this.mousePeriodDown = [];
    this.lastPosition = null;

    function objectToArray(obj) {
        var arr, name, val;
        arr = $.map(obj, function (value, index) {
            return [value];
        });
        console.log(JSON.stringify(arr));
        return arr;
    }

    function limit(list, limit) {
        if (list.length > limit - 1) {
            list.splice(
            0,
            list.length - limit + 1);
        }
        return list;
    }

    function initMousePeriod(mouseNum, position) {
        if (self.mousePeriod[mouseNum] === undefined || !self.mousePeriod[mouseNum].press) {
            self.mousePeriod[mouseNum] = {
                'down': 0,
                    'up': 0,
                    'press': false,
                    'period': 0,
                    'mouse': mouseNum,
                    'path': []
            }
            return true;
        } else {
            return false;
        }
    }

    function mouseDown(mouseNum, position) {
        if (initMousePeriod(mouseNum, position)) {
            self.mousePeriod[mouseNum].press = true;
...