diff --git a/www/pocwww/pocwww/__init__.py b/www/pocwww/pocwww/__init__.py
index 019d116..cd44805 100644
--- a/www/pocwww/pocwww/__init__.py
+++ b/www/pocwww/pocwww/__init__.py
@@ -128,6 +128,9 @@ def main(global_config, **settings):
config.add_route('values_time', '/values/time/{time}')
config.add_route('json_values_time', '/json/values/time/{time}')
+ config.add_route('gaugeoff_all', '/gaugeoff')
+ config.add_route('json_gaugeoff_all', '/json/gaugeoff')
+
# JSON-ONLY ROUTES
config.add_route('json_lastcard', "/json/lastcard")
config.add_route('json_valuesbetween_wparams', "/json/values/between/{startdt}/{enddt}")
diff --git a/www/pocwww/pocwww/static/cards.js b/www/pocwww/pocwww/static/cards.js
deleted file mode 100644
index d98ddd5..0000000
--- a/www/pocwww/pocwww/static/cards.js
+++ /dev/null
@@ -1,139 +0,0 @@
-function d3_card_chart(all_position, margin) {
- var width = 640,
- height = 480,
- xlabel = "Position (in.)",
- ylabel = "Load (lbs.)" ;
-
- function chart(selection) {
- selection.each(function(datasets) {
- //
- // Create the plot.
- //
-
- var innerwidth = width - margin.left - margin.right;
- var innerheight = height - margin.top - margin.bottom ;
-
- var x_scale = d3.scale.linear()
- .range([0, innerwidth])
- // .domain([ d3.min(datasets, function(d) { return d3.min(d.x) ; }),
- // d3.max(datasets, function(d) { return d3.max(d.x); }) ]) ;
- .domain([ d3.min(all_position) - 10,
- d3.max(all_position) + 10 ]) ;
-
- var y_scale = d3.scale.linear()
- .range([innerheight, 0])
- .domain([ d3.min(datasets, function(d) { return d3.min(d.y); }) - 1000,
- d3.max(datasets, function(d) { return d3.max(d.y); }) + 1000 ]) ;
-
- var color_scale = d3.scale.category10()
- .domain(d3.range(datasets.length)) ;
-
- var x_axis = d3.svg.axis()
- .scale(x_scale)
- .orient("bottom") ;
-
- var y_axis = d3.svg.axis()
- .scale(y_scale)
- .orient("left") ;
-
- var x_grid = d3.svg.axis()
- .scale(x_scale)
- .orient("bottom")
- .tickSize(-innerheight)
- .tickFormat("") ;
-
- var y_grid = d3.svg.axis()
- .scale(y_scale)
- .orient("left")
- .tickSize(-innerwidth)
- .tickFormat("") ;
-
- var draw_line = d3.svg.line()
- .interpolate("basis")
- .x(function(d) { return x_scale(d[0]); })
- .y(function(d) { return y_scale(d[1]); }) ;
-
- var svg = d3.select(this)
- .attr("width", width)
- .attr("height", height)
- .append("g")
- .attr("transform", "translate(" + margin.left + "," + margin.top + ")") ;
-
- svg.append("g")
- .attr("class", "x grid")
- .attr("transform", "translate(0," + innerheight + ")")
- .call(x_grid) ;
-
- svg.append("g")
- .attr("class", "y grid")
- .call(y_grid) ;
-
- svg.append("g")
- .attr("class", "x axis")
- .attr("transform", "translate(0," + innerheight + ")")
- .call(x_axis)
- .append("text")
- .attr("dy", "-.71em")
- .attr("x", innerwidth)
- .style("text-anchor", "end")
- .text(xlabel) ;
-
- svg.append("g")
- .attr("class", "y axis")
- .call(y_axis)
- .append("text")
- .attr("transform", "rotate(-90)")
- .attr("y", 6)
- .attr("dy", "0.71em")
- .style("text-anchor", "end")
- .text(ylabel) ;
-
- var data_lines = svg.selectAll(".d3_xy_chart_line")
- .data(datasets.map(function(d) {return d3.zip(d.x, d.y);}))
- .enter().append("g")
- .attr("class", "d3_xy_chart_line") ;
-
- data_lines.append("path")
- .attr("class", "line")
- .attr("d", function(d) {return draw_line(d); })
- .attr("stroke", function(_, i) {return color_scale(i);}) ;
-
- data_lines.append("text")
- .datum(function(d, i) { return {name: datasets[i].label, final: d[d.length-1]}; })
- .attr("transform", function(d) {
- return ( "translate(" + x_scale(d.final[0]) + "," +
- y_scale(d.final[1]) + ")" ) ; })
- .attr("x", 3)
- .attr("dy", ".35em")
- .attr("fill", function(_, i) { return color_scale(i); })
- .text(function(d) { return d.name; }) ;
-
- }) ;
- }
-
- chart.width = function(value) {
- if (!arguments.length) return width;
- width = value;
- return chart;
- };
-
- chart.height = function(value) {
- if (!arguments.length) return height;
- height = value;
- return chart;
- };
-
- chart.xlabel = function(value) {
- if(!arguments.length) return xlabel ;
- xlabel = value ;
- return chart ;
- } ;
-
- chart.ylabel = function(value) {
- if(!arguments.length) return ylabel ;
- ylabel = value ;
- return chart ;
- } ;
-
- return chart;
-}
diff --git a/www/pocwww/pocwww/static/graphs.js b/www/pocwww/pocwww/static/graphs.js
new file mode 100644
index 0000000..0f230ce
--- /dev/null
+++ b/www/pocwww/pocwww/static/graphs.js
@@ -0,0 +1,179 @@
+function drawCards(data){
+ var simple_color_scale = ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33", "#a65628", "#f781bf"];
+ var color_scale = ['#a6cee3','#1f78b4','#b2df8a','#33a02c','#fb9a99','#e31a1c','#fdbf6f','#ff7f00','#cab2d6','#6a3d9a','#ffff99','#b15928'];
+ var graph_data = [] ;
+ var json_data = data.card;
+ var surf = document.getElementById("surfacecard");
+ var down = document.getElementById("downholecard");
+
+ var surfaceCardData = [{
+ label: 'Surface Card',
+ fill: false,
+ data: [],
+ lineTension: 0.05,
+ borderColor: color_scale[2],
+ pointRadius: 2
+ }];
+
+ var downholeCardData = [{
+ label: 'Downhole Card',
+ fill: false,
+ data: [],
+ lineTension: 0.05,
+ borderColor: color_scale[1],
+ pointRadius: 2
+ }];
+
+ for (var i = 0; i < json_data['surface_position'].length; i++){
+ surfaceCardData[0].data.push({
+ x: json_data['surface_position'][i],
+ y: json_data['surface_load'][i]
+ });
+ }
+
+ for (var i = 0; i < json_data['downhole_position'].length; i++){
+ downholeCardData[0].data.push({
+ x: json_data['downhole_position'][i],
+ y: json_data['downhole_load'][i]
+ });
+ }
+
+ var surfaceChart = new Chart(surf, {
+ type: 'line',
+ responsive: true,
+ data: {
+ datasets: surfaceCardData
+ },
+ options: {
+ scales: {
+ xAxes: [{
+ type: 'linear',
+ position: 'bottom'
+ }]
+ },
+ legend: {
+ display: false
+ }
+ }
+ });
+
+ var downholeChart = new Chart(down, {
+ type: 'line',
+ responsive: true,
+ data: {
+ datasets: downholeCardData
+ },
+ options: {
+ scales: {
+ xAxes: [{
+ type: 'linear',
+ position: 'bottom'
+ }]
+ },
+ legend: {
+ display: false
+ }
+ }
+ });
+}
+
+function drawChart(data){
+ var simple_color_scale = ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33", "#a65628", "#f781bf"];
+ var color_scale = ['#a6cee3','#1f78b4','#b2df8a','#33a02c','#fb9a99','#e31a1c','#fdbf6f','#ff7f00','#cab2d6','#6a3d9a','#ffff99','#b15928'];
+ var graph_data = [] ;
+ var json_data = data.values;
+ var ctx = document.getElementById("valueChart");
+ for (var i = 0; i < json_data.length; i++){
+ var newObj = {
+ label: json_data[i].tagname,
+ fill: false,
+ data: [],
+ lineTension: 0.05,
+ borderColor: color_scale[i % color_scale.length],
+ pointRadius: 2
+ }
+ for(var j = 0; j < json_data[i].timestamps.length; j++){
+ newObj.data.push({
+ x: json_data[i].timestamps[j],
+ y: json_data[i].currentValues[j]
+ });
+ }
+ graph_data.push(newObj);
+ }
+ var scatterChart = new Chart(ctx, {
+ type: 'line',
+ responsive: true,
+ data: {
+ datasets: graph_data
+ },
+ options: {
+ scales: {
+ xAxes: [{
+ type: 'time',
+ position: 'bottom'
+ }]
+ },
+ legend: {
+ labels: {
+ boxWidth: 20
+ }
+ }
+ }
+ });
+}
+
+function drawSlider(data){
+
+ var date_min = new Date(Date.parse(data.first_date));
+ var date_max = new Date(Date.parse(data.last_date));
+ console.log(data);
+
+ var min_val = date_min/1000;
+ var max_val = date_max/1000;
+
+ var urlparts = decodeURIComponent(window.location).split("/").slice(3)
+ var endD = new Date();
+ var end = endD.toISOString().replace("T", " ");
+ var dummyDate = new Date();
+ var startD = new Date(dummyDate.setDate(endD.getDate() - 7));
+ var start = startD.toISOString().replace("T", " ");
+
+
+ var start_date = startD/1000;
+ $('#slider-start').html(startD.toString());
+ if(start_date < min_val){
+ start_date = min_val;
+ $('#slider-start').html(date_min.toString().replace("T", " "));
+ }
+
+ var end_date = endD/1000;
+ $('#slider-end').html(startD.toString());
+ if(end_date > max_val){
+ end_date = max_val;
+ $('#slider-end').html(date_max.toString().replace("T", " "));
+ }
+
+ $("#slider-range").slider({
+ range: true,
+ min: min_val,
+ max: max_val,
+ step: 10,
+ values: [start_date, end_date],
+ slide: function (e, ui) {
+ var dt_cur_from = new Date(ui.values[0]*1000); //.format("yyyy-mm-dd hh:ii:ss");
+ $('#slider-start').html(dt_cur_from.toString().replace("T", " "));
+
+ var dt_cur_to = new Date(ui.values[1]*1000); //.format("yyyy-mm-dd hh:ii:ss");
+ $('#slider-end').html(dt_cur_to.toString().replace("T", " "));
+ },
+ stop: function(e, ui){
+ var startD = new Date(ui.values[0]*1000);
+ var endD = new Date(ui.values[1]*1000);
+ $.ajax({
+ dataType: 'json',
+ url:"/json/values/between/" + startD.toISOString() + "/" + endD.toISOString(),
+ success: drawChart
+ });
+ }
+ });
+}
diff --git a/www/pocwww/pocwww/static/linechart.js b/www/pocwww/pocwww/static/linechart.js
deleted file mode 100644
index 4e473e1..0000000
--- a/www/pocwww/pocwww/static/linechart.js
+++ /dev/null
@@ -1,137 +0,0 @@
-function d3_xy_chart(margin) {
- var width = 640,
- height = 480,
- xlabel = "Position (in.)",
- ylabel = "Load (lbs.)" ;
-
- function chart(selection) {
- selection.each(function(datasets) {
- //
- // Create the plot.
- //
-
- var innerwidth = width - margin.left - margin.right;
- var innerheight = height - margin.top - margin.bottom ;
-
- var x_scale = d3.scale.linear()
- .range([0, innerwidth])
- .domain([ d3.min(datasets, function(d) { return d3.min(d.x) ; }),
- d3.max(datasets, function(d) { return d3.max(d.x); }) ]) ;
-
- var y_scale = d3.scale.linear()
- .range([innerheight, 0])
- .domain([ d3.min(datasets, function(d) { return d3.min(d.y); }) - 1000,
- d3.max(datasets, function(d) { return d3.max(d.y); }) + 1000 ]) ;
-
- var color_scale = d3.scale.category10()
- .domain(d3.range(datasets.length)) ;
-
- var x_axis = d3.svg.axis()
- .scale(x_scale)
- .orient("bottom") ;
-
- var y_axis = d3.svg.axis()
- .scale(y_scale)
- .orient("left") ;
-
- var x_grid = d3.svg.axis()
- .scale(x_scale)
- .orient("bottom")
- .tickSize(-innerheight)
- .tickFormat("") ;
-
- var y_grid = d3.svg.axis()
- .scale(y_scale)
- .orient("left")
- .tickSize(-innerwidth)
- .tickFormat("") ;
-
- var draw_line = d3.svg.line()
- .interpolate("basis")
- .x(function(d) { return x_scale(d[0]); })
- .y(function(d) { return y_scale(d[1]); }) ;
-
- var svg = d3.select(this)
- .attr("width", width)
- .attr("height", height)
- .append("g")
- .attr("transform", "translate(" + margin.left + "," + margin.top + ")") ;
-
- svg.append("g")
- .attr("class", "x grid")
- .attr("transform", "translate(0," + innerheight + ")")
- .call(x_grid) ;
-
- svg.append("g")
- .attr("class", "y grid")
- .call(y_grid) ;
-
- svg.append("g")
- .attr("class", "x axis")
- .attr("transform", "translate(0," + innerheight + ")")
- .call(x_axis)
- .append("text")
- .attr("dy", "-.71em")
- .attr("x", innerwidth)
- .style("text-anchor", "end")
- .text(xlabel) ;
-
- svg.append("g")
- .attr("class", "y axis")
- .call(y_axis)
- .append("text")
- .attr("transform", "rotate(-90)")
- .attr("y", 6)
- .attr("dy", "0.71em")
- .style("text-anchor", "end")
- .text(ylabel) ;
-
- var data_lines = svg.selectAll(".d3_xy_chart_line")
- .data(datasets.map(function(d) {return d3.zip(d.x, d.y);}))
- .enter().append("g")
- .attr("class", "d3_xy_chart_line") ;
-
- data_lines.append("path")
- .attr("class", "line")
- .attr("d", function(d) {return draw_line(d); })
- .attr("stroke", function(_, i) {return color_scale(i);}) ;
-
- data_lines.append("text")
- .datum(function(d, i) { return {name: datasets[i].label, final: d[d.length-1]}; })
- .attr("transform", function(d) {
- return ( "translate(" + x_scale(d.final[0]) + "," +
- y_scale(d.final[1]) + ")" ) ; })
- .attr("x", 3)
- .attr("dy", ".35em")
- .attr("fill", function(_, i) { return color_scale(i); })
- .text(function(d) { return d.name; }) ;
-
- }) ;
- }
-
- chart.width = function(value) {
- if (!arguments.length) return width;
- width = value;
- return chart;
- };
-
- chart.height = function(value) {
- if (!arguments.length) return height;
- height = value;
- return chart;
- };
-
- chart.xlabel = function(value) {
- if(!arguments.length) return xlabel ;
- xlabel = value ;
- return chart ;
- } ;
-
- chart.ylabel = function(value) {
- if(!arguments.length) return ylabel ;
- ylabel = value ;
- return chart ;
- } ;
-
- return chart;
-}
diff --git a/www/pocwww/pocwww/static/theme.css b/www/pocwww/pocwww/static/theme.css
index ad1982c..f928621 100644
--- a/www/pocwww/pocwww/static/theme.css
+++ b/www/pocwww/pocwww/static/theme.css
@@ -23,6 +23,15 @@ body {
padding-top: 50px;
}
+.allcaps{
+ text-transform: uppercase;
+ /*font-size: 14px;*/
+ color: #666;
+ font-weight: 400;
+ letter-spacing: 1px;
+ z-index: 100;
+}
+
/*
* Global add-ons
diff --git a/www/pocwww/pocwww/templates/cardlist.jinja2 b/www/pocwww/pocwww/templates/cardlist.jinja2
index d89f77b..9c610eb 100644
--- a/www/pocwww/pocwww/templates/cardlist.jinja2
+++ b/www/pocwww/pocwww/templates/cardlist.jinja2
@@ -29,3 +29,12 @@
{% endblock content %}
+
+{% block card_dates %}
+
Card Dates
+
+{% endblock card_dates %}
diff --git a/www/pocwww/pocwww/templates/cardsingle.jinja2 b/www/pocwww/pocwww/templates/cardsingle.jinja2
index b6b7f07..355c90c 100644
--- a/www/pocwww/pocwww/templates/cardsingle.jinja2
+++ b/www/pocwww/pocwww/templates/cardsingle.jinja2
@@ -3,38 +3,22 @@
{% block content %}
+
BACK
{{card.timestamp | datetime('long')}}
+
+
-
-
-
{% endblock content %}
diff --git a/www/pocwww/pocwww/templates/dashboard.jinja2 b/www/pocwww/pocwww/templates/dashboard.jinja2
index 81ae564..81cf890 100644
--- a/www/pocwww/pocwww/templates/dashboard.jinja2
+++ b/www/pocwww/pocwww/templates/dashboard.jinja2
@@ -1,98 +1,76 @@
{% extends "layout.jinja2" %}
{% block content %}
-
-
Henry Pump POC
-
-
-
Latest Tag Values
- {% if tag_values|length > 0 %}
-
-
-
+
+
Henry Pump POC
+
+
+
Latest Tag Values
+ {% if tag_values|length > 0 %}
+
+
+
+
+ | Name |
+ |
+ Value |
+ Timestamp |
+
+
+
+
+
+ {% for t in tag_values %}
- | Name |
- |
- Value |
- Timestamp |
-
+ {{t._id}} |
+
+
+ |
+ {{t.value | round(3)}} |
+ {{t.timestamp | datetime('medium')}} |
+
-
-
-
- {% for t in tag_values %}
-
- | {{t._id}} |
-
-
- |
- {{t.value | round(3)}} |
- {{t.timestamp | datetime('medium')}} |
-
-
- {% endfor %}
-
-
-
-
- {% else %}
-
No tag values yet...
- {% endif %}
-
+ {% endfor %}
+
+
-
-
Latest Card
- {% if latest_card|length > 0 %}
-
{{latest_card.timestamp | datetime('long')}}
-
-
- {% else %}
- No card data yet...
- {% endif %}
-
+ {% else %}
+
No tag values yet...
+ {% endif %}
+
+
+
+
+
Latest Card
+ {% if card is defined %}
+ {{card.timestamp | datetime('long')}}
+
+
+ {% else %}
+ No card data yet...
+ {% endif %}
+
-
-
+
{% endblock content %}
diff --git a/www/pocwww/pocwww/templates/gaugeoff_all.jinja2 b/www/pocwww/pocwww/templates/gaugeoff_all.jinja2
new file mode 100644
index 0000000..c961e34
--- /dev/null
+++ b/www/pocwww/pocwww/templates/gaugeoff_all.jinja2
@@ -0,0 +1,44 @@
+{% extends "layout.jinja2" %}
+
+{% block content %}
+
+
+
+
Gauge Off Data
+ {% if data is defined %}
+
+ {% for d in data %}
+
{{d.date|date('long')}}
+
+
+
+
+ | Name |
+ Last |
+ Max |
+ Min |
+ Average |
+ Total |
+
+
+
+ {% for t in d.tags %}
+
+ | {{t}} |
+ {{d['tags'][t].last | round(3)}} |
+ {{d['tags'][t].max | round(3)}} |
+ {{d['tags'][t].min | round(3)}} |
+ {{d['tags'][t].average | round(3)}} |
+ {{d['tags'][t].total | round(3)}} |
+
+ {% endfor %}
+
+
+
+ {% endfor %}
+ {% endif %}
+
+
+
+
+{% endblock content %}
diff --git a/www/pocwww/pocwww/templates/layout.jinja2 b/www/pocwww/pocwww/templates/layout.jinja2
index ab1febc..1ea2406 100644
--- a/www/pocwww/pocwww/templates/layout.jinja2
+++ b/www/pocwww/pocwww/templates/layout.jinja2
@@ -31,6 +31,7 @@
+
@@ -56,6 +57,10 @@
@@ -75,6 +80,13 @@
Fluid Shots
Well Tests
+
+ {% block card_dates %}
+ {% endblock card_dates %}
+
+ {% block cards %}
+ {% endblock cards %}
+
{% block content %}
diff --git a/www/pocwww/pocwww/templates/valuesall.jinja2 b/www/pocwww/pocwww/templates/valuesall.jinja2
index 306fb2a..501e730 100644
--- a/www/pocwww/pocwww/templates/valuesall.jinja2
+++ b/www/pocwww/pocwww/templates/valuesall.jinja2
@@ -60,109 +60,8 @@
-