Robert Marshall 9 vuotta sitten
vanhempi
commit
91a7bba463

+ 19 - 0
Controller/Navigation/WeightNav.php

@@ -0,0 +1,19 @@
+<?php
+class WeightNav implements INavigationController{
+	private $_uri;
+	
+	public function __construct() {
+		if (Session::IsUserLoggedIn() && Session::GetLoggedInUser()->HasAccess("weight/index"))
+			$this->_uri=new URI("Weight","/weight","/images/weight.svg");
+		else
+			$this->_uri=null;
+	}
+	
+	public function GetItems() {
+		
+	}
+
+	public function GetURI() {
+		return $this->_uri;
+	}
+}

+ 23 - 0
Controller/Weight.php

@@ -0,0 +1,23 @@
+<?php
+class Weight {
+	public function Index($params) {
+		return new View("Weight/index.view",array("readings"=>WeightReading::GetAll(Session::GetLoggedInUser()->UserId)));
+	}
+	
+	public function Add($params){
+		$reading=new WeightReading();
+		
+		foreach ($params as $param)
+			if ($param=="" || $param<=0)
+				return;
+		
+		$reading->Weight=$params['weight'];
+		$reading->Fat=$params['fat'];
+		$reading->Bmi=$params['bmi'];
+		$reading->UserId=Session::GetLoggedInUser()->UserId;
+		
+		$reading->Save();
+		
+		return '{"Weight":'.$reading->Weight.',"BMI":'.$reading->Bmi.',"Fat":'.$reading->Fat.'}';
+	}
+}

+ 1 - 1
DB Scripts/4/insert_permissions_data.sql

@@ -1 +1 @@
-INSERT INTO permissions (permission_value,permission_default_grant) VALUES ('desktop/index',1);
+INSERT INTO permissions (permission_value,permission_default_grant) VALUES ('desktop/index',0);

+ 1 - 1
DB Scripts/5/insert_permissions_data.sql

@@ -1,2 +1,2 @@
 INSERT INTO permissions (permission_value,permission_default_grant) VALUES ('member/logout',1);
-INSERT INTO permissions (permission_value, permission_default_grant) VALUES ('desktop/wake', 1);
+INSERT INTO permissions (permission_value, permission_default_grant) VALUES ('desktop/wake', 0);

+ 9 - 0
DB Scripts/6/create_weight_readings_table.sql

@@ -0,0 +1,9 @@
+CREATE TABLE weight_readings (
+  reading_id int(11) NOT NULL AUTO_INCREMENT,
+  user_id int(11) NOT NULL,
+  weight float NOT NULL,
+  bmi float NOT NULL,
+  fat float NOT NULL,
+  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (reading_id)
+) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

+ 5 - 1
DB Scripts/6/insert_permissions_data.sql

@@ -1 +1,5 @@
-INSERT INTO permissions (permission_value, permission_default_grant) VALUES ('desktop/GetDesktopMonitor', 1);
+INSERT INTO permissions (permission_value, permission_default_grant) VALUES ('desktop/GetDesktopMonitor', 0);
+INSERT INTO permissions (permission_value, permission_default_grant) VALUES ('weight/index', 0);
+INSERT INTO permissions (permission_value, permission_default_grant) VALUES ('weight/add', 0);
+
+UPDATE permissions SET permission_default_grant=0 WHERE permission_value='desktop/index' OR permission_value='desktop/wake';

+ 19 - 0
Model/WeightReading.php

@@ -0,0 +1,19 @@
+<?php
+class WeightReading extends DBObject {
+	public static function GetAll($userId){
+		$readings=array();
+		self::SetupPDO();
+		$ids=self::$PDO->query("SELECT reading_id FROM weight_readings WHERE user_id=".(int)$userId)->fetchAll(PDO::FETCH_COLUMN);
+		foreach ($ids as $id)
+			$readings[]=new WeightReading($id);
+		return $readings;
+	}
+	
+	public function __construct($id=0) {
+		parent::__construct("weight_readings", "reading_id", $id);
+	}
+	
+	public function GetParsedDate(){
+		return date_parse($this->Timestamp);
+	}
+}

+ 105 - 0
View/Weight/index.view

@@ -0,0 +1,105 @@
+@Title{Weight}@
+@CSS{
+	.input{
+		padding:5px;
+	}
+	
+	.input > *{
+		display: block;
+		width:100%;
+		margin-bottom: 5px;
+	}
+}@
+@JavaScript{
+	var chartData;
+	var chart;
+	
+	var chartOptions = {
+		chart: {
+			title: 'Historical Weight Data',
+		},
+		height:400,
+		legend:{
+			position: 'top',
+			alignment: 'start'
+		},
+		series: {
+			0:{axis:'Weight'},
+			2:{axis:'Fat'}
+		},
+		axes:{
+			y:{
+				Weight:{label:'Weight (KG)'},
+				Fat:{label:'Fat %'}
+			}
+		}
+	};
+
+	function DrawChart() {
+		chart.draw(chartData, chartOptions);
+	}
+		
+	function InitChart(){
+		chartData = new google.visualization.DataTable();
+		chartData.addColumn('date', 'Date');
+		chartData.addColumn('number', 'Weight (KG)');
+		chartData.addColumn('number', 'Fat %');
+		chartData.addColumn('number', 'BMI');
+
+		chartData.addRows([
+			<?php
+				foreach ($readings as $r){
+					$dateArray=$r->GetParsedDate();
+					echo '[new Date(',$dateArray['year'],',',$dateArray['month']-1,',',$dateArray['day'],'),',$r->Weight,',',$r->Fat,',',$r->Bmi,'],',PHP_EOL;
+				}
+			?>
+		]);
+
+		chart = new google.charts.Line(document.getElementById('linechart'));
+		
+		DrawChart();
+	}
+	
+	function AddData(weight, bmi, fat){
+		chartData.addRow([new Date(),weight,fat,bmi]);
+		DrawChart();
+	}
+	
+	function AddWeightReading(data){
+		var reading=JSON.parse(data);
+		AddData(reading.Weight, reading.BMI, reading.Fat);
+	}
+	
+	$(function(){
+		$.getScript("https://www.google.com/jsapi",function(){
+			google.load('visualization', '1.1', {packages: ['line'], callback:function(){
+				google.setOnLoadCallback(InitChart);
+			}});
+		});
+	});
+}@
+@Body{
+<form ajaxForm action="/weight/add" method="post" onsuccess="AddWeightReading">
+	<div class="row col-md-4">
+		<div class="col input">
+			<label for="weight">Weight (KG)</label>
+			<input type="text" id="weight" name="weight" />
+		</div>
+		<div class="col input">
+			<label for="bmi">BMI</label>
+			<input type="text" id="bmi" name="bmi" />
+		</div>
+		<div class="col input">
+			<label for="fat">Fat %</label>
+			<input type="text" id="fat" name="fat" />
+		</div>
+		<div class="col input">
+			<label for="save">Action</label>
+			<input id="save" style="padding:5px" type="submit" value="Save" />
+		</div>
+	</div>
+</form>
+<div class="row col-lg-1">
+	<div class="col" id="linechart"></div>
+</div>
+}@

+ 0 - 16
css/style-med.css

@@ -29,20 +29,4 @@
 
 .row.col-lg-1>.col, .row.col-lg-2>.col, .row.col-lg-3>.col, .row.col-lg-4>.col{
 	width: 100%;
-}
-
-.row.col-md-1>.col{
-	width:100%;
-}
-
-.row.col-md-2>.col{
-	width:50%;
-}
-
-.row.col-md-3>.col{
-	width:33.3333%;
-}
-
-.row.col-md-4>.col{
-	width:25%;
 }

+ 0 - 16
css/style-small.css

@@ -39,20 +39,4 @@ dl{
 
 .row.col-md-1>.col, .row.col-md-2>.col, .row.col-md-3>.col, .row.col-md-4>.col{
 	width: 100%;
-}
-
-.row.col-sm-1>.col{
-	width:100%;
-}
-
-.row.col-sm-2>.col{
-	width:50%;
-}
-
-.row.col-sm-3>.col{
-	width:33.3333%;
-}
-
-.row.col-sm-4>.col{
-	width:25%;
 }

+ 32 - 0
css/style.css

@@ -334,4 +334,36 @@ td, th{
 
 .row.col-lg-4>.col{
 	width:25%;
+}
+
+.row.col-md-1>.col{
+	width:100%;
+}
+
+.row.col-md-2>.col{
+	width:50%;
+}
+
+.row.col-md-3>.col{
+	width:33.3333%;
+}
+
+.row.col-md-4>.col{
+	width:25%;
+}
+
+.row.col-sm-1>.col{
+	width:100%;
+}
+
+.row.col-sm-2>.col{
+	width:50%;
+}
+
+.row.col-sm-3>.col{
+	width:33.3333%;
+}
+
+.row.col-sm-4>.col{
+	width:25%;
 }

+ 2 - 0
javascript.js

@@ -72,6 +72,8 @@ $(function(){
 		form=$(this);
 		$.ajax({
 			url:form.attr("action"),
+			method:form.attr("method"),
+			data:form.serialize(),
 			success:function(data){
 				var successFunction=form.attr("onsuccess");
 				if (successFunction!==undefined && window[successFunction]!==undefined)

+ 1 - 1
settings.ini

@@ -11,7 +11,7 @@ database=robware-test
 
 [navigation]
 mode=include
-pages=HomeNav,BlogNav,ProjectsNav,GalleryNav,DesktopNav,MemberNav
+pages=HomeNav,BlogNav,ProjectsNav,GalleryNav,DesktopNav,WeightNav,MemberNav
 
 [blog]
 posts_per_page=10

+ 1 - 1
template.php

@@ -123,7 +123,7 @@ function FormatURI(URI $uri, $base=""){
 		<?php }?>
 		<div class="backdrop"></div>
 		<!-- Piwik -->
-		<script type="text/javascript">
+		<!--script type="text/javascript">
 			var _paq = _paq || [];
 			_paq.push(['trackPageView']);
 			_paq.push(['enableLinkTracking']);