in src/packageLogs.js [246:321]
export function packageIntervalLog(e) {
const target = getSelector(e.target);
const path = buildPath(e);
const type = e.type;
const timestamp = Math.floor((e.timeStamp && e.timeStamp > 0) ? config.time(e.timeStamp) : Date.now());
// Init - this should only happen once on initialization
if (intervalID == null) {
intervalID = target;
intervalType = type;
intervalPath = path;
intervalTimer = timestamp;
intervalCounter = 0;
}
if (intervalID !== target || intervalType !== type) {
// When to create log? On transition end
// @todo Possible for intervalLog to not be pushed in the event the interval never ends...
intervalLog = {
'target': intervalID,
'path': intervalPath,
'pageUrl': window.location.href,
'pageTitle': document.title,
'pageReferrer': document.referrer,
'browser': detectBrowser(),
'count': intervalCounter,
'duration': timestamp - intervalTimer, // microseconds
'startTime': intervalTimer,
'endTime': timestamp,
'type': intervalType,
'logType': 'interval',
'targetChange': intervalID !== target,
'typeChange': intervalType !== type,
'userAction': false,
'userId': config.userId,
'toolVersion': config.version,
'toolName': config.toolName,
'useraleVersion': config.useraleVersion,
'sessionID': config.sessionID
};
if (typeof filterHandler === 'function' && !filterHandler(intervalLog)) {
return false;
}
if (typeof mapHandler === 'function') {
intervalLog = mapHandler(intervalLog, e);
}
for (const func of Object.values(cbHandlers)) {
if (typeof func === 'function') {
intervalLog = func(intervalLog, null);
if(!intervalLog) {
return false;
}
}
}
logs.push(intervalLog);
// Reset
intervalID = target;
intervalType = type;
intervalPath = path;
intervalTimer = timestamp;
intervalCounter = 0;
}
// Interval is still occuring, just update counter
if (intervalID == target && intervalType == type) {
intervalCounter = intervalCounter + 1;
}
return true;
}