Alters measurement function to use more efficient data structure
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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']}
|
||||
|
||||
@@ -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: {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -15,19 +15,17 @@
|
||||
<th>Min</th>
|
||||
<th>Average</th>
|
||||
<th>Total</th>
|
||||
<th>Last Stored</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for t in current_tag_values %}
|
||||
{% for t in current_values %}
|
||||
<tr>
|
||||
<td><a href="/values/tag/{{t._id}}">{{t._id}}</a></td>
|
||||
<td>{{t.value | round(3)}}</td>
|
||||
<td>{{t.max | round(3)}}</td>
|
||||
<td>{{t.min | round(3)}}</td>
|
||||
<td>{{t.average | round(3)}}</td>
|
||||
<td>{{t.total | round(3)}}</td>
|
||||
<td>{{t.timestamp | datetime('medium')}}</td>
|
||||
<td>{{t.currentValue | round(3)}} {{t.units}}</td>
|
||||
<td>{{t.maxValue | round(3)}} {{t.units}}</td>
|
||||
<td>{{t.minValue | round(3)}} {{t.units}}</td>
|
||||
<td>{% if t.useAverage %}{{t.averageValue | round(3)}} {{t.units}}{% endif %}</td>
|
||||
<td>{% if t.useTotal %}{{t.totalValue | round(3)}} {{t.units}}{% endif %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
Reference in New Issue
Block a user