in source/web_site/js/dash.js [404:472]
var getLatestMetrics = function () {
var docClient = new AWS.DynamoDB.DocumentClient();
docClient.scan({ TableName : stackMetricsTable }, (err, data) => {
if(err) {
console.log('SCAN ERROR:' + err);
} else {
for(let i = 0; i<data.Items.length;i++) {
var crt_ts = document.getElementById(data.Items[i].MetricType).attributes[1].value;
if(data.Items[i].LatestEventTimestamp > crt_ts) {
var params = {
TableName : stackMetricDetailsTable,
KeyConditionExpression: 'MetricType = :hkey and EventTimestamp = :rkey',
ExpressionAttributeValues: {
':hkey': data.Items[i].MetricType,
':rkey': data.Items[i].LatestEventTimestamp
}
};
console.log('params=' + JSON.stringify(params,null,2));
docClient.query(params, (err, datadtl) => {
if(err) {
console.error('err=' + err);
} else {
try{
if(datadtl.Count>0) {
console.log(JSON.stringify(datadtl,null,2));
var items = datadtl.Items[0].MetricDetails;
var mtype = datadtl.Items[0].MetricType;
switch(mtype) {
case 'hourly_events' :
makeBarChart(mtype, items);
break;
case 'event_anomaly' :
makeAmomalyBarChart(mtype, items);
break;
case 'agent_count' :
makePieChart(mtype, items);
break;
case 'referral_count' :
case 'top_pages' :
makeHorizontalBarChart(mtype,items);
break;
case 'visitor_count' :
document.getElementById(mtype).innerHTML = 'Current Visitor Count:' + items[0].UNITVALUEINT;
makeVisitorLineChart(mtype,items);
break;
case 'event_count' :
makeAllEventsLineChart(items);
makeEventLineChart(mtype,items);
break;
}
document.getElementById(mtype).attributes[1].value = datadtl.Items[0].EventTimestamp;
}
} catch (ex) {
console.log('error creating chart:' + ex);
console.log('datadtl=' + JSON.stringify(datadtl,null,2));
}
}
});
}
}
}
});
setTimeout( function() {
console.log('tick\n');
getLatestMetrics();
var rightnow = new Date();
document.getElementById("last_updated").innerHTML = "<H2> Last Updated: " + rightnow.toLocaleTimeString() + "</H2>";
}, 10000);
}