diff --git a/pocwww/json.py b/pocwww/json.py index 2819e01..8686bbf 100644 --- a/pocwww/json.py +++ b/pocwww/json.py @@ -11,71 +11,6 @@ def json_lastcard(request): return get_latest_card(request) -@view_config(route_name="json_valuesbetween", renderer="prettyjson") -@view_config(route_name="json_valuesbetween_wparams", renderer="prettyjson") -def json_valuesbetween(request): - end = datetime.now() - try: # Attempt to get a value from the request. - end = request.matchdict['enddt'] - end = end.replace("T", " ") - end = datetime.strptime(end, "%Y-%m-%d %H:%M:%S.%fZ") - except KeyError: - pass - - start = end - timedelta(days=2) - try: # Attempt to get a value from the request. - start = request.matchdict['startdt'] - start = start.replace("T", " ") - start = datetime.strptime(start, "%Y-%m-%d %H:%M:%S.%fZ") - except KeyError: - pass - - tag_data = [] - grouped_tags = request.db['wellData'].aggregate([ - { - '$match': {"timestamp": {"$gt": start, "$lte": end}} - }, - { - '$sort': {"tagname": 1, "timestamp": 1} - }, - { - '$group': { - '_id': "$tagname", - 'timestamps': {'$push': "$timestamp"}, - 'currentValues': {'$push': "$currentValue"} - } - } - ]) - - for t in grouped_tags: - tag_data.append({"tagname": t['_id'], "timestamps": list(map(lambda a: a.strftime("%Y-%m-%d %H:%M:%S.%fZ"), t['timestamps'])), "currentValues": t['currentValues']}) - return {'values': tag_data, 'start': start, 'end': end} - - -@view_config(route_name="json_valuesdaterange", renderer="prettyjson") -def json_valuesdaterange(request): - date_limits = list(request.db['wellData'].aggregate([ - {"$group": { - "_id": 'null', - "last": {"$max": "$timestamp"}, - "first": {"$min": "$timestamp"} - }} - ]))[0] - return {'first_date': date_limits['first'], 'last_date': date_limits['last']} - - -@view_config(route_name="json_singlevaluedaterange", renderer="prettyjson") -def json_singlevaluedaterange(request): - date_limits = list(request.db['wellData'].aggregate([ - {"$match": {"tagname": request.matchdict['tagname']}}, - {"$group": { - "_id": 'null', - "last": {"$max": "$timestamp"}, - "first": {"$min": "$timestamp"} - }} - ]))[0] - return {'first_date': date_limits['first'], 'last_date': date_limits['last']} - @view_config(route_name="json_runstatusnow", renderer="prettyjson") def json_runstatusnow(request): diff --git a/pocwww/measurements.py b/pocwww/measurements.py index f283bb8..7442db5 100644 --- a/pocwww/measurements.py +++ b/pocwww/measurements.py @@ -140,6 +140,30 @@ def get_grouped_measurements_between(request, start_datetime, end_datetime, tagn @view_config(route_name='values_all', renderer="templates/valuesall.jinja2") +def values_page(request): + latest_tag_values = [] + latesttag_agg = request.db['measurements'].aggregate([ + {'$sort': {'dateStored': 1}}, + { + '$group': { + '_id': '$tagname', + 'currentValue': {'$last': '$currentValue'}, + 'units': {'$last': '$units'}, + 'maxValue': {'$last': '$maxValue'}, + 'minValue': {'$last': '$minValue'}, + 'totalValue': {'$last': '$totalValue'}, + 'averageValue': {'$last': '$averageValue'}, + 'useTotal': {'$last': '$useTotal'}, + 'useAverage': {'$last': '$useAverage'} + } + } + ]) + for t in latesttag_agg: + latest_tag_values.append(t) + + return {'navgroup': 'values', "current_values": latest_tag_values} + + @view_config(route_name='json_values_all', renderer='prettyjson') def values_all(request): end = datetime.now(tz=pytz.utc) @@ -158,8 +182,28 @@ def values_all(request): except KeyError: pass + latest_tag_values = [] + latesttag_agg = request.db['measurements'].aggregate([ + {'$sort': {'dateStored': 1}}, + { + '$group': { + '_id': '$tagname', + 'currentValue': {'$last': '$currentValue'}, + 'units': {'$last': '$units'}, + 'maxValue': {'$last': '$maxValue'}, + 'minValue': {'$last': '$minValue'}, + 'totalValue': {'$last': '$totalValue'}, + 'averageValue': {'$last': '$averageValue'}, + 'useTotal': {'$last': '$useTotal'}, + 'useAverage': {'$last': '$useAverage'} + } + } + ]) + for t in latesttag_agg: + latest_tag_values.append(t) + all_values = get_grouped_measurements_between(request, start, end) - return {'navgroup': 'values', 'current_tag_values': all_values} + return {'navgroup': 'values', 'values': all_values, "current_values": latest_tag_values} @view_config(route_name="json_singlevaluebetween", renderer="prettyjson") @@ -183,3 +227,51 @@ def json_singlevaluebetween(request): all_values = get_grouped_measurements_between(request, start, end, tagname=request.matchdict['tagname']) return {'tag': all_values, 'start': start, 'end': end, 'tagname': request.matchdict['tagname']} + + +@view_config(route_name="json_valuesbetween", renderer="prettyjson") +@view_config(route_name="json_valuesbetween_wparams", renderer="prettyjson") +def json_valuesbetween(request): + end = datetime.now(tz=pytz.utc) + try: # Attempt to get a value from the request. + end = request.matchdict['enddt'] + end = end.replace("T", " ") + end = pytz.utc.localize(datetime.strptime(end, "%Y-%m-%d %H:%M:%S.%fZ")) + except KeyError: + pass + + start = end - timedelta(days=2) + try: # Attempt to get a value from the request. + start = request.matchdict['startdt'] + start = start.replace("T", " ") + start = pytz.utc.localize(datetime.strptime(start, "%Y-%m-%d %H:%M:%S.%fZ")) + except KeyError: + pass + + tag_data = get_grouped_measurements_between(request, start, end) + return {'values': tag_data, 'start': start, 'end': end} + + +@view_config(route_name="json_valuesdaterange", renderer="prettyjson") +def json_valuesdaterange(request): + date_limits = list(request.db['measurements'].aggregate([ + {"$group": { + "_id": 'null', + "last": {"$max": "$dateStored"}, + "first": {"$min": "$dateStored"} + }} + ]))[0] + return {'first_date': date_limits['first'], 'last_date': date_limits['last']} + + +@view_config(route_name="json_singlevaluedaterange", renderer="prettyjson") +def json_singlevaluedaterange(request): + date_limits = list(request.db['measurements'].aggregate([ + {"$match": {"tagname": request.matchdict['tagname']}}, + {"$group": { + "_id": 'null', + "last": {"$max": "$dateStored"}, + "first": {"$min": "$dateStored"} + }} + ]))[0] + return {'first_date': date_limits['first'], 'last_date': date_limits['last']} diff --git a/pocwww/static/graphs.js b/pocwww/static/graphs.js index b1aff55..9a47fe6 100644 --- a/pocwww/static/graphs.js +++ b/pocwww/static/graphs.js @@ -86,23 +86,30 @@ function drawChart(data){ var graph_data = [] ; var json_data = data.values; var ctx = document.getElementById("valueChart"); - for (var i = 0; i < json_data.length; i++){ + + var color_index = 0; + + for (x in data.values){ + var tagdata = data.values[x]; var newObj = { - label: json_data[i].tagname, + label: x, fill: false, data: [], lineTension: 0.05, - borderColor: color_scale[i % color_scale.length], + borderColor: color_scale[color_index % color_scale.length], pointRadius: 2 - } - for(var j = 0; j < json_data[i].timestamps.length; j++){ + }; + + for (var j = 0; j < tagdata.values.length; j++){ newObj.data.push({ - x: json_data[i].timestamps[j], - y: json_data[i].currentValues[j] + x: tagdata.values[j].timestamp, + y: tagdata.values[j].tagvalue }); } graph_data.push(newObj); + color_index++; } + scatterChart = new Chart(ctx, { type: 'line', responsive: true, @@ -133,7 +140,6 @@ function drawSingleGraph(data){ var tag = data.tag[data.tagname]; console.log(tag); - console.log(tag.values.length); var graph_data = []; var ctx = document.getElementById("myChart"); @@ -149,7 +155,7 @@ function drawSingleGraph(data){ } for (var i = 0; i < tag.values.length; i++){ - currentValues.data.push({x: tag.values.timestamp, y: tag.values.tagvalue}); + currentValues.data.push({x: tag.values[i].timestamp, y: tag.values[i].tagvalue}); } graph_data.push(currentValues) @@ -165,7 +171,7 @@ function drawSingleGraph(data){ } for (var i = 0; i < tag.maxes.length; i++){ - maxValues.data.push({x: tag.maxes.timestamp, y: tag.maxes.maxValue}); + maxValues.data.push({x: tag.maxes[i].timestamp, y: tag.maxes[i].maxValue}); } graph_data.push(maxValues) @@ -181,7 +187,7 @@ function drawSingleGraph(data){ } for (var i = 0; i < tag.mins.length; i++){ - minValues.data.push({x: tag.mins.timestamp, y: tag.mins.maxValue}); + minValues.data.push({x: tag.mins[i].timestamp, y: tag.mins[i].maxValue}); } graph_data.push(minValues) @@ -197,7 +203,7 @@ function drawSingleGraph(data){ } for (var i = 0; i < tag.averages.length; i++){ - averageValues.data.push({x: tag.averages.timestamp, y: tag.averages.maxValue}); + averageValues.data.push({x: tag.averages[i].timestamp, y: tag.averages[i].maxValue}); } graph_data.push(averageValues) @@ -213,12 +219,14 @@ function drawSingleGraph(data){ } for (var i = 0; i < tag.totals.length; i++){ - totalValues.data.push({x: tag.totals.timestamp, y: tag.totals.maxValue}); + totalValues.data.push({x: tag.totals[i].timestamp, y: tag.totals[i].maxValue}); } graph_data.push(totalValues) color_index++; + console.log(graph_data); + scatterChart = new Chart(ctx, { type: 'line', data: { diff --git a/pocwww/templates/values_single.jinja2 b/pocwww/templates/values_single.jinja2 index 8012303..449bdb9 100644 --- a/pocwww/templates/values_single.jinja2 +++ b/pocwww/templates/values_single.jinja2 @@ -47,6 +47,8 @@ $.ajax({ success: drawSingleSlider }); +console.log("/json/values/tag/" + tagName + "/between/" + start + "/" + end); + $.ajax({ dataType: 'json', url: "/json/values/tag/" + tagName + "/between/" + start + "/" + end, diff --git a/pocwww/templates/valuesall.jinja2 b/pocwww/templates/valuesall.jinja2 index 6ef108a..938258a 100644 --- a/pocwww/templates/valuesall.jinja2 +++ b/pocwww/templates/valuesall.jinja2 @@ -15,19 +15,17 @@