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)
|
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")
|
@view_config(route_name="json_runstatusnow", renderer="prettyjson")
|
||||||
def json_runstatusnow(request):
|
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")
|
@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')
|
@view_config(route_name='json_values_all', renderer='prettyjson')
|
||||||
def values_all(request):
|
def values_all(request):
|
||||||
end = datetime.now(tz=pytz.utc)
|
end = datetime.now(tz=pytz.utc)
|
||||||
@@ -158,8 +182,28 @@ def values_all(request):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
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)
|
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")
|
@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'])
|
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']}
|
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 graph_data = [] ;
|
||||||
var json_data = data.values;
|
var json_data = data.values;
|
||||||
var ctx = document.getElementById("valueChart");
|
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 = {
|
var newObj = {
|
||||||
label: json_data[i].tagname,
|
label: x,
|
||||||
fill: false,
|
fill: false,
|
||||||
data: [],
|
data: [],
|
||||||
lineTension: 0.05,
|
lineTension: 0.05,
|
||||||
borderColor: color_scale[i % color_scale.length],
|
borderColor: color_scale[color_index % color_scale.length],
|
||||||
pointRadius: 2
|
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({
|
newObj.data.push({
|
||||||
x: json_data[i].timestamps[j],
|
x: tagdata.values[j].timestamp,
|
||||||
y: json_data[i].currentValues[j]
|
y: tagdata.values[j].tagvalue
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
graph_data.push(newObj);
|
graph_data.push(newObj);
|
||||||
|
color_index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
scatterChart = new Chart(ctx, {
|
scatterChart = new Chart(ctx, {
|
||||||
type: 'line',
|
type: 'line',
|
||||||
responsive: true,
|
responsive: true,
|
||||||
@@ -133,7 +140,6 @@ function drawSingleGraph(data){
|
|||||||
|
|
||||||
var tag = data.tag[data.tagname];
|
var tag = data.tag[data.tagname];
|
||||||
console.log(tag);
|
console.log(tag);
|
||||||
console.log(tag.values.length);
|
|
||||||
|
|
||||||
var graph_data = [];
|
var graph_data = [];
|
||||||
var ctx = document.getElementById("myChart");
|
var ctx = document.getElementById("myChart");
|
||||||
@@ -149,7 +155,7 @@ function drawSingleGraph(data){
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < tag.values.length; i++){
|
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)
|
graph_data.push(currentValues)
|
||||||
@@ -165,7 +171,7 @@ function drawSingleGraph(data){
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < tag.maxes.length; i++){
|
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)
|
graph_data.push(maxValues)
|
||||||
@@ -181,7 +187,7 @@ function drawSingleGraph(data){
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < tag.mins.length; i++){
|
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)
|
graph_data.push(minValues)
|
||||||
@@ -197,7 +203,7 @@ function drawSingleGraph(data){
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < tag.averages.length; i++){
|
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)
|
graph_data.push(averageValues)
|
||||||
@@ -213,12 +219,14 @@ function drawSingleGraph(data){
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < tag.totals.length; i++){
|
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)
|
graph_data.push(totalValues)
|
||||||
color_index++;
|
color_index++;
|
||||||
|
|
||||||
|
console.log(graph_data);
|
||||||
|
|
||||||
scatterChart = new Chart(ctx, {
|
scatterChart = new Chart(ctx, {
|
||||||
type: 'line',
|
type: 'line',
|
||||||
data: {
|
data: {
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ $.ajax({
|
|||||||
success: drawSingleSlider
|
success: drawSingleSlider
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log("/json/values/tag/" + tagName + "/between/" + start + "/" + end);
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
url: "/json/values/tag/" + tagName + "/between/" + start + "/" + end,
|
url: "/json/values/tag/" + tagName + "/between/" + start + "/" + end,
|
||||||
|
|||||||
@@ -15,19 +15,17 @@
|
|||||||
<th>Min</th>
|
<th>Min</th>
|
||||||
<th>Average</th>
|
<th>Average</th>
|
||||||
<th>Total</th>
|
<th>Total</th>
|
||||||
<th>Last Stored</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for t in current_tag_values %}
|
{% for t in current_values %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="/values/tag/{{t._id}}">{{t._id}}</a></td>
|
<td><a href="/values/tag/{{t._id}}">{{t._id}}</a></td>
|
||||||
<td>{{t.value | round(3)}}</td>
|
<td>{{t.currentValue | round(3)}} {{t.units}}</td>
|
||||||
<td>{{t.max | round(3)}}</td>
|
<td>{{t.maxValue | round(3)}} {{t.units}}</td>
|
||||||
<td>{{t.min | round(3)}}</td>
|
<td>{{t.minValue | round(3)}} {{t.units}}</td>
|
||||||
<td>{{t.average | round(3)}}</td>
|
<td>{% if t.useAverage %}{{t.averageValue | round(3)}} {{t.units}}{% endif %}</td>
|
||||||
<td>{{t.total | round(3)}}</td>
|
<td>{% if t.useTotal %}{{t.totalValue | round(3)}} {{t.units}}{% endif %}</td>
|
||||||
<td>{{t.timestamp | datetime('medium')}}</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
Reference in New Issue
Block a user