pdf-analytics.js 3.57 KB
Newer Older
1
function sendLog(name, data, event_type) {
2 3 4 5 6
    var message = data || {};
    message.chapter = PDF_URL || '';
    message.name = 'textbook.pdf.' + name;
    Logger.log(event_type ? event_type : message.name, message);
}
7 8 9 10

// this event is loaded after the others to accurately represent the order of events:
// click next -> pagechange
$(function() {
11 12
    var first_page = true;
    var scroll = {timeStamp: 0, direction: null};
13

14
    $(window).bind('pagechange', function(event) {
15
    // log every page render
16 17
        var page = PDFViewerApplication.page;
        var old_page = event.originalEvent.previousPageNumber;
18
    // pagechange is called many times per viewing.
19 20 21 22 23 24 25 26 27
        if (old_page !== page || first_page) {
            first_page = false;
            if ((event.timeStamp - scroll.timeStamp) < 50) {
                sendLog('page.scrolled', {'page': page, 'direction': scroll.direction});
            }
            sendLog('page.loaded', {'type': 'gotopage', 'old': old_page, 'new': page}, 'book');
            scroll.timeStamp = 0;
        }
    });
28

29 30 31 32
    $('#viewerContainer').bind('DOMMouseScroll mousewheel', function(event) {
        scroll.timeStamp = event.timeStamp;
        scroll.direction = PDFViewerApplication.pdfViewer.scroll.down ? 'down' : 'up';
    });
33 34 35
});

$('#viewThumbnail,#sidebarToggle').on('click', function() {
36 37
    sendLog('thumbnails.toggled', {'page': PDFViewerApplication.page});
});
38

39 40
$('#thumbnailView a').live('click', function() {
    sendLog('thumbnail.navigated', {'page': $('#thumbnailView a').index(this) + 1, 'thumbnail_title': $(this).attr('title')});
41 42 43
});

$('#viewOutline').on('click', function() {
44 45
    sendLog('outline.toggled', {'page': PDFViewerApplication.page});
});
46 47

$('#previous').on('click', function() {
48 49
    sendLog('page.navigatednext', {'type': 'prevpage', 'new': PDFViewerApplication.page - 1}, 'book');
});
50 51

$('#next').on('click', function() {
52 53
    sendLog('page.navigatednext', {'type': 'nextpage', 'new': PDFViewerApplication.page + 1}, 'book');
});
54 55

$('#zoomIn,#zoomOut').on('click', function() {
56 57
    sendLog('zoom.buttons.changed', {'direction': $(this).attr('id') == 'zoomIn' ? 'in' : 'out', 'page': PDFViewerApplication.page});
});
58 59

$('#pageNumber').on('change', function() {
60 61
    sendLog('page.navigated', {'page': $(this).val()});
});
62 63

var old_amount = 1;
64
$(window).bind('scalechange', function(event) {
65 66 67 68 69
    var amount = event.originalEvent.scale;
    if (amount !== old_amount) {
        sendLog('display.scaled', {'amount': amount, 'page': PDFViewerApplication.page});
        old_amount = amount;
    }
70 71 72
});

$('#scaleSelect').on('change', function() {
73
    sendLog('zoom.menu.changed', {'amount': $('#scaleSelect').val(), 'page': PDFViewerApplication.page});
74 75 76
});

var search_event = null;
77 78 79
$(window).bind('find findhighlightallchange findagain findcasesensitivitychange', function(event) {
    if (search_event && event.type == 'find') {
        clearTimeout(search_event);
80
    }
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
    search_event = setTimeout(function() {
        var message = event.originalEvent.detail;
        message.status = $('#findMsg').text();
        message.page = PDFViewerApplication.page;
        var event_name = 'search';
        switch (event.type) {
        case 'find':
            event_name += '.executed';
            break;
        case 'findhighlightallchange':
            event_name += '.highlight.toggled';
            break;
        case 'findagain':
            event_name += '.navigatednext';
            break;
        case 'findcasesensitivitychange':
            event_name += 'casesensitivity.toggled';
            break;
        }
        sendLog(event_name, message);
    }, 500);
102
});