Files
edx-platform/lms/static/js/pdf-analytics.js
2016-08-05 15:29:20 -04:00

103 lines
3.6 KiB
JavaScript

function sendLog(name, data, event_type) {
var message = data || {};
message.chapter = PDF_URL || '';
message.name = 'textbook.pdf.' + name;
Logger.log(event_type ? event_type : message.name, message);
}
// this event is loaded after the others to accurately represent the order of events:
// click next -> pagechange
$(function() {
var first_page = true;
var scroll = {timeStamp: 0, direction: null};
$(window).bind('pagechange', function(event) {
// log every page render
var page = PDFViewerApplication.page;
var old_page = event.originalEvent.previousPageNumber;
// pagechange is called many times per viewing.
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;
}
});
$('#viewerContainer').bind('DOMMouseScroll mousewheel', function(event) {
scroll.timeStamp = event.timeStamp;
scroll.direction = PDFViewerApplication.pdfViewer.scroll.down ? 'down' : 'up';
});
});
$('#viewThumbnail,#sidebarToggle').on('click', function() {
sendLog('thumbnails.toggled', {'page': PDFViewerApplication.page});
});
$('#thumbnailView a').live('click', function() {
sendLog('thumbnail.navigated', {'page': $('#thumbnailView a').index(this) + 1, 'thumbnail_title': $(this).attr('title')});
});
$('#viewOutline').on('click', function() {
sendLog('outline.toggled', {'page': PDFViewerApplication.page});
});
$('#previous').on('click', function() {
sendLog('page.navigatednext', {'type': 'prevpage', 'new': PDFViewerApplication.page - 1}, 'book');
});
$('#next').on('click', function() {
sendLog('page.navigatednext', {'type': 'nextpage', 'new': PDFViewerApplication.page + 1}, 'book');
});
$('#zoomIn,#zoomOut').on('click', function() {
sendLog('zoom.buttons.changed', {'direction': $(this).attr('id') == 'zoomIn' ? 'in' : 'out', 'page': PDFViewerApplication.page});
});
$('#pageNumber').on('change', function() {
sendLog('page.navigated', {'page': $(this).val()});
});
var old_amount = 1;
$(window).bind('scalechange', function(event) {
var amount = event.originalEvent.scale;
if (amount !== old_amount) {
sendLog('display.scaled', {'amount': amount, 'page': PDFViewerApplication.page});
old_amount = amount;
}
});
$('#scaleSelect').on('change', function() {
sendLog('zoom.menu.changed', {'amount': $('#scaleSelect').val(), 'page': PDFViewerApplication.page});
});
var search_event = null;
$(window).bind('find findhighlightallchange findagain findcasesensitivitychange', function(event) {
if (search_event && event.type == 'find') {
clearTimeout(search_event);
}
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);
});