var getLatestMetrics = function()

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);
    }