244
									
								
								templates/history.html
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										244
									
								
								templates/history.html
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,244 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
  <head>
 | 
			
		||||
    <!-- Basic Page Needs
 | 
			
		||||
    –––––––––––––––––––––––––––––––––––––––––––––––––– -->
 | 
			
		||||
    <meta charset="utf-8">
 | 
			
		||||
    <title>Temp Conditions by RPi</title>
 | 
			
		||||
    <meta name="description" content="Temp conditions - RPi">
 | 
			
		||||
    <meta name="author" content="Clayton Walker">
 | 
			
		||||
    <!-- Mobile Specific Metas
 | 
			
		||||
    –––––––––––––––––––––––––––––––––––––––––––––––––– -->
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
			
		||||
    <!-- FONT
 | 
			
		||||
    –––––––––––––––––––––––––––––––––––––––––––––––––– -->
 | 
			
		||||
    <link href="//fonts.googleapis.com/css?family=Raleway:400,300,600" rel="stylesheet" type="text/css">
 | 
			
		||||
    <!-- CSS
 | 
			
		||||
    –––––––––––––––––––––––––––––––––––––––––––––––––– -->
 | 
			
		||||
    <link rel="stylesheet" href="/static/css/normalize.css">
 | 
			
		||||
    <link rel="stylesheet" href="/static/css/skeleton.css">
 | 
			
		||||
    <!-- Favicon
 | 
			
		||||
    –––––––––––––––––––––––––––––––––––––––––––––––––– -->
 | 
			
		||||
    <link rel="icon" type="image/png" href="/static/images/favicon.png">
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div class="container">
 | 
			
		||||
      <div class="row">
 | 
			
		||||
	      <form id="datetime_range" action="/pi_temp_db" method="GET"> 
 | 
			
		||||
	        <!-- <div class="row">          -->
 | 
			
		||||
	          <div class="three columns">
 | 
			
		||||
	            <label for="from">From date</label>
 | 
			
		||||
	            <input class="u-full-width" id="datetimepicker1" type="text" value="{{from_date}}" name="from">
 | 
			
		||||
	          </div>
 | 
			
		||||
	        <!-- </div> -->
 | 
			
		||||
	        <!-- <div class="row"> -->
 | 
			
		||||
	          <div class="three columns">
 | 
			
		||||
	            <label for="to">To date</label>           
 | 
			
		||||
	            <input class="u-full-width" id="datetimepicker2" type="text" value="{{to_date}}" name="to">
 | 
			
		||||
	          </div>   
 | 
			
		||||
	        <!-- </div>          -->
 | 
			
		||||
	        <!-- <div class="row"> -->
 | 
			
		||||
	          <div class="two columns">    
 | 
			
		||||
	            <input type="hidden" class="timezone" name="timezone" />       
 | 
			
		||||
	            <input class="button-primary" type="submit" value="Submit" style="position:relative; top: 28px" id="submit_button" />
 | 
			
		||||
	          </div>
 | 
			
		||||
	        <!-- </div> -->
 | 
			
		||||
	      </form> 
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="row">
 | 
			
		||||
      <div class="eleven columns">
 | 
			
		||||
      	<div class="one column">
 | 
			
		||||
			    <a href="" id="plotly">Plotly</a>
 | 
			
		||||
          		<a href="/">Live</a>
 | 
			
		||||
       	</div>
 | 
			
		||||
        <form id="range_select" action = "/history" method="GET">  
 | 
			
		||||
          <input type="hidden" class="timezone" name="timezone" />      
 | 
			
		||||
          <div class="one column">
 | 
			
		||||
            <input type="radio" name="range_h" value="3" id="radio_3" /><label for="radio_3">3hrs</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="one column">
 | 
			
		||||
            <input type="radio" name="range_h" value="6" id="radio_6" /><label for="radio_6">6hrs</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="one column">
 | 
			
		||||
            <input type="radio" name="range_h" value="12" id="radio_12" /><label for="radio_12">12hrs</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="one column">
 | 
			
		||||
            <input type="radio" name="range_h" value="24" id="radio_24" /><label for="radio_24">24hrs</label>
 | 
			
		||||
          </div>
 | 
			
		||||
        </form>          
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="row">
 | 
			
		||||
     <a href="" id="plotly_url" target="_blank"></a><span id="plotly_wait"></span>
 | 
			
		||||
	</div>
 | 
			
		||||
      <div class="row">
 | 
			
		||||
        <div class="one-third column" style="margin-top: 5%">
 | 
			
		||||
          <strong>Showing all records</strong>
 | 
			
		||||
          <h2>Temperatures</h2>
 | 
			
		||||
            <table class="u-full-width">
 | 
			
		||||
              <thead style="display:block;">
 | 
			
		||||
                <tr>
 | 
			
		||||
                  <th>Date</th>
 | 
			
		||||
                  <th>                              °F</th>
 | 
			
		||||
                </tr>
 | 
			
		||||
              </thead>
 | 
			
		||||
              <tbody style="height:450px; overflow:scroll; display:block;">
 | 
			
		||||
                {% for row in temp %}
 | 
			
		||||
                <tr>
 | 
			
		||||
                  <td>{{row[0]}}</td>
 | 
			
		||||
                  <td>{{'%0.2f'|format(row[1])}}</td>
 | 
			
		||||
                </tr>
 | 
			
		||||
                {% endfor %}
 | 
			
		||||
              </tbody>
 | 
			
		||||
            </table>
 | 
			
		||||
            <h2>Humidities</h2>
 | 
			
		||||
            <table class="u-full-width">
 | 
			
		||||
              <thead style="display:block;">
 | 
			
		||||
                <tr>
 | 
			
		||||
                  <th>Date</th>
 | 
			
		||||
                  <th>                              %</th>
 | 
			
		||||
                </tr>
 | 
			
		||||
              </thead>
 | 
			
		||||
              <tbody style="height:450px; overflow:scroll; display:block;">
 | 
			
		||||
                {% for row in hum %}
 | 
			
		||||
                <tr>
 | 
			
		||||
                  <td>{{row[0]}}</td>
 | 
			
		||||
                  <td>{{'%0.2f'|format(row[1])}}</td>
 | 
			
		||||
                </tr>
 | 
			
		||||
                {% endfor %}
 | 
			
		||||
              </tbody>
 | 
			
		||||
            </table>
 | 
			
		||||
        </div>
 | 
			
		||||
 
 | 
			
		||||
        <div class="two-thirds column" style="margin-top: 5%">
 | 
			
		||||
        <div class="row">                  
 | 
			
		||||
          <div class="row">
 | 
			
		||||
            <div class="three columns">
 | 
			
		||||
                <div id="chart_temps"></div>
 | 
			
		||||
                <div id="chart_humid"></div>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>     
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </body>
 | 
			
		||||
  <script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
 | 
			
		||||
  <script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="/static/css/jquery.datetimepicker.css"/ >
 | 
			
		||||
  <script src="/static/javascript/jquery.datetimepicker.full.js"></script>
 | 
			
		||||
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.4/jstz.min.js" ></script>
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
  <script>
 | 
			
		||||
    jQuery( "#datetime_range" ).submit(function( event ) {
 | 
			
		||||
        timezone = jstz.determine();
 | 
			
		||||
        jQuery(".timezone").val(timezone.name());      
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    jQuery('#datetimepicker1').datetimepicker(
 | 
			
		||||
      {
 | 
			
		||||
        format:'Y-m-d H:i',
 | 
			
		||||
        defaultDate:'{{from_date}}'
 | 
			
		||||
      });
 | 
			
		||||
    jQuery('#datetimepicker2').datetimepicker({
 | 
			
		||||
        format:'Y-m-d H:i',
 | 
			
		||||
        defaultDate:'{{to_date}}'
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
    jQuery("#range_select input[type=radio]").click(function(){
 | 
			
		||||
        timezone = jstz.determine();
 | 
			
		||||
        jQuery(".timezone").val(timezone.name()); 
 | 
			
		||||
        jQuery("#range_select").submit();
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
    jQuery("#plotly").click(function(){
 | 
			
		||||
      jQuery("#plotly_wait").text("Sending data...");
 | 
			
		||||
      jQuery("#plotly_url").text("");
 | 
			
		||||
      {% autoescape false %}
 | 
			
		||||
      jQuery.get("/to_plotly?{{query_string}}")
 | 
			
		||||
      {% endautoescape %}
 | 
			
		||||
        .done(function( data ) {
 | 
			
		||||
          jQuery("#plotly_url").attr("href",data);
 | 
			
		||||
          jQuery("#plotly_url").text("Click to see your plot");
 | 
			
		||||
          jQuery("#plotly_wait").text("");            
 | 
			
		||||
	  });
 | 
			
		||||
	      return false; //This is so that the click on the link does not cause the page to refresh
 | 
			
		||||
	});
 | 
			
		||||
    </script>
 | 
			
		||||
 
 | 
			
		||||
  <script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['corechart']}]}"></script>
 | 
			
		||||
 
 | 
			
		||||
      <script>
 | 
			
		||||
       google.load('visualization', '1', {packages: ['corechart']});
 | 
			
		||||
    google.setOnLoadCallback(drawChart);
 | 
			
		||||
 | 
			
		||||
    function drawChart() {
 | 
			
		||||
 | 
			
		||||
      var data = new google.visualization.DataTable();
 | 
			
		||||
      data.addColumn('datetime', 'Time');  
 | 
			
		||||
      data.addColumn('number', 'Temperature');      
 | 
			
		||||
      data.addRows([
 | 
			
		||||
          {% for row in temp %}
 | 
			
		||||
            [new Date({{row[0][0:4]}},{{row[0][5:7]}}-1,{{row[0][8:10]}},{{row[0][11:13]}},{{row[0][14:16]}}),{{'%0.2f'|format(row[1])}}],
 | 
			
		||||
          {% endfor %}
 | 
			
		||||
        ]);
 | 
			
		||||
 | 
			
		||||
      var options = {
 | 
			
		||||
        width: 600,
 | 
			
		||||
        height: 563,
 | 
			
		||||
        hAxis: {
 | 
			
		||||
          title: "Date",
 | 
			
		||||
          gridlines: { count: {{temp_items}}, color: '#CCC' },
 | 
			
		||||
          format: 'dd-MMM-yyyy HH:mm' },
 | 
			
		||||
        vAxis: {
 | 
			
		||||
          title: 'Degrees'
 | 
			
		||||
        },
 | 
			
		||||
        title: 'Temperature',
 | 
			
		||||
        curveType: 'function'  //Makes line curved
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      var chart = new google.visualization.LineChart(document.getElementById('chart_temps'));
 | 
			
		||||
 | 
			
		||||
      chart.draw(data, options);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
      </script>
 | 
			
		||||
 
 | 
			
		||||
<script>
 | 
			
		||||
    google.load('visualization', '1', {packages: ['corechart']});
 | 
			
		||||
    google.setOnLoadCallback(drawChart);
 | 
			
		||||
 | 
			
		||||
    function drawChart() {
 | 
			
		||||
 | 
			
		||||
      var data = new google.visualization.DataTable();
 | 
			
		||||
      data.addColumn('datetime', 'Time');  
 | 
			
		||||
      data.addColumn('number', 'Humidity');      
 | 
			
		||||
      data.addRows([
 | 
			
		||||
          {% for row in hum %}
 | 
			
		||||
            [new Date({{row[0][0:4]}},{{row[0][5:7]}}-1,{{row[0][8:10]}},{{row[0][11:13]}},{{row[0][14:16]}}),{{'%0.2f'|format(row[1])}}],
 | 
			
		||||
          {% endfor %}
 | 
			
		||||
        ]);
 | 
			
		||||
 | 
			
		||||
      var options = {
 | 
			
		||||
        width: 600,
 | 
			
		||||
        height: 563,
 | 
			
		||||
        hAxis: {
 | 
			
		||||
          title: "Date",
 | 
			
		||||
          gridlines: { count: {{hum_items}}, color: '#CCC' },
 | 
			
		||||
          format: 'dd-MMM-yyyy HH:mm'        },
 | 
			
		||||
        vAxis: {
 | 
			
		||||
          title: 'Percent'
 | 
			
		||||
        },
 | 
			
		||||
        title: 'Humidity',
 | 
			
		||||
        curveType: 'function'  //Makes line curved
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      var chart = new google.visualization.LineChart(document.getElementById('chart_humid'));
 | 
			
		||||
 | 
			
		||||
      chart.draw(data, options);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
      </script>  
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										55
									
								
								templates/live.html
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										55
									
								
								templates/live.html
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
<html>
 | 
			
		||||
  <meta charset="utf-8">
 | 
			
		||||
  <title>Temp Conditions by RPi</title>
 | 
			
		||||
  <meta http-equiv="refresh" content="10">
 | 
			
		||||
  <meta name="description" content="Temp conditions - RPi">
 | 
			
		||||
  <meta name="author" content="Clayton Walker">
 | 
			
		||||
  <!-- Mobile Specific Metas
 | 
			
		||||
  –––––––––––––––––––––––––––––––––––––––––––––––––– -->
 | 
			
		||||
  <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
			
		||||
  <!-- FONT
 | 
			
		||||
  –––––––––––––––––––––––––––––––––––––––––––––––––– -->
 | 
			
		||||
  <link href="//fonts.googleapis.com/css?family=Raleway:400,300,600" rel="stylesheet" type="text/css">
 | 
			
		||||
  <!-- CSS
 | 
			
		||||
  –––––––––––––––––––––––––––––––––––––––––––––––––– -->
 | 
			
		||||
  <link rel="stylesheet" href="/static/css/normalize.css">
 | 
			
		||||
  <link rel="stylesheet" href="/static/css/skeleton.css">
 | 
			
		||||
  <!-- Favicon
 | 
			
		||||
  –––––––––––––––––––––––––––––––––––––––––––––––––– -->
 | 
			
		||||
  <link rel="icon" type="image/png" href="/static/images/favicon.png">
 | 
			
		||||
</head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div class="container">
 | 
			
		||||
      <div class="row">
 | 
			
		||||
        <div class="two-third column" style="margin-top: 5%">
 | 
			
		||||
            <h2>Real time conditions</h2>
 | 
			
		||||
            <h1>Temperature: {{"{0:0.1f}".format(temp) }}°F</h1>
 | 
			
		||||
            <h1>Humidity: {{"{0:0.1f}".format(hum)}}%</h1>  
 | 
			
		||||
            <p>This page refreshes every 10 seconds</p>
 | 
			
		||||
        </div>   
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="row">
 | 
			
		||||
      <div class="eleven columns">
 | 
			
		||||
        <form id="range_select" action = "/lab_env_db" method="GET">  
 | 
			
		||||
          <input type="hidden" class="timezone" name="timezone" />      
 | 
			
		||||
	<div class="one column">
 | 
			
		||||
          <a href="/history" style="position:relative;top:15px">Historic</a>
 | 
			
		||||
       	</div>
 | 
			
		||||
        </form>          
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>           
 | 
			
		||||
  </body> 
 | 
			
		||||
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
 | 
			
		||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.4/jstz.min.js" ></script>
 | 
			
		||||
<script>
 | 
			
		||||
jQuery( document ).ready(function() {
 | 
			
		||||
    timezone = jstz.determine();
 | 
			
		||||
    jQuery("#timezone").text(timezone.name());     
 | 
			
		||||
});
 | 
			
		||||
  jQuery("#range_select input[type=radio]").click(function(){
 | 
			
		||||
    timezone = jstz.determine();
 | 
			
		||||
    jQuery(".timezone").val(timezone.name()); 
 | 
			
		||||
    jQuery("#range_select").submit();
 | 
			
		||||
  });
 | 
			
		||||
</script> 
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										8
									
								
								templates/no_sensor.html
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								templates/no_sensor.html
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
<html>
 | 
			
		||||
 <head>
 | 
			
		||||
  </head>
 | 
			
		||||
 | 
			
		||||
<div class='test_container'>
 | 
			
		||||
  <h1>Sorry, can't access the sensor!</h1>
 | 
			
		||||
</div>
 | 
			
		||||
</html>
 | 
			
		||||
		Reference in New Issue
	
	Block a user