index.view 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. @Title{Weight}@
  2. @CSS{
  3. .input{
  4. padding:5px;
  5. }
  6. .input > *{
  7. display: block;
  8. width:100%;
  9. margin-bottom: 5px;
  10. }
  11. }@
  12. @JavaScript{
  13. var chartData;
  14. var chart;
  15. var chartOptions = {
  16. chart: {
  17. title: 'Historical Weight Data',
  18. },
  19. height:400,
  20. legend:{
  21. position: 'top',
  22. alignment: 'start'
  23. },
  24. series: {
  25. 0:{axis:'Weight'},
  26. 2:{axis:'Fat'}
  27. },
  28. axes:{
  29. y:{
  30. Weight:{label:'Weight (KG)'},
  31. Fat:{label:'Fat %'}
  32. }
  33. },
  34. backgroundColor:'transparent'
  35. };
  36. function DrawChart() {
  37. chart.draw(chartData, chartOptions);
  38. }
  39. function InitChart(){
  40. chartData = new google.visualization.DataTable();
  41. chartData.addColumn('date', 'Date');
  42. chartData.addColumn('number', 'Weight (KG)');
  43. chartData.addColumn('number', 'Fat %');
  44. chartData.addColumn('number', 'BMI');
  45. chartData.addRows([
  46. <?php
  47. foreach ($readings as $r){
  48. $dateArray=$r->GetParsedDate();
  49. echo '[new Date(',$dateArray['year'],',',$dateArray['month']-1,',',$dateArray['day'],'),',$r->Weight,',',$r->Fat,',',$r->Bmi,'],',PHP_EOL;
  50. }
  51. ?>
  52. ]);
  53. //chart = new google.charts.Line(document.getElementById('linechart'));
  54. chart = new google.visualization.LineChart(document.getElementById('linechart'));
  55. DrawChart();
  56. }
  57. function AddData(weight, bmi, fat){
  58. chartData.addRow([new Date(),weight,fat,bmi]);
  59. DrawChart();
  60. }
  61. function DisableControls(){
  62. $("input").attr("disabled","disabled");
  63. }
  64. function EnableControls(){
  65. $("input").removeAttr("disabled");
  66. }
  67. function AddWeightReading(data){
  68. EnableControls();
  69. if (data!=""){
  70. var reading=JSON.parse(data);
  71. AddData(reading.Weight, reading.BMI, reading.Fat);
  72. $("form input[type=number]").val("");
  73. }
  74. }
  75. $(function(){
  76. $.getScript("https://www.google.com/jsapi",function(){
  77. //google.load('visualization', '1.1', {packages: ['line'], callback:function(){
  78. google.load('visualization', '1', {packages: ['corechart'], callback:function(){
  79. google.setOnLoadCallback(InitChart);
  80. }});
  81. });
  82. });
  83. }@
  84. @Body{
  85. <form ajaxForm action="/weight/add" method="post" onsuccess="AddWeightReading" onpost="DisableControls" autocomplete="off">
  86. <div class="row col-md-4">
  87. <div class="col input">
  88. <label for="weight">Weight (KG)</label>
  89. <input type="number" id="weight" name="weight" step="any" />
  90. </div>
  91. <div class="col input">
  92. <label for="fat">Fat %</label>
  93. <input type="number" id="fat" name="fat" step="any" />
  94. </div>
  95. <div class="col input">
  96. <label for="save">Action</label>
  97. <input id="save" style="padding:5px" type="submit" value="Save" />
  98. </div>
  99. </div>
  100. </form>
  101. <div class="row col-lg-1">
  102. <div class="col" id="linechart"></div>
  103. </div>
  104. <div class="row col-lg-1">
  105. <div class="col">
  106. <h3>Last 10 readings</h3>
  107. <table class="alternatingRows">
  108. <tr>
  109. <th>Date</th>
  110. <th>Weight</th>
  111. <th>BMI</th>
  112. <th>Fat %</th>
  113. </tr>
  114. <?php
  115. $last10=array_slice($readings, count($readings)-10);
  116. $last10=array_reverse($last10);
  117. foreach ($last10 as $reading){
  118. echo '<tr><td>',date("d/m/y", strtotime($reading->Timestamp)),'</td><td>',$reading->Weight,'</td><td>',round($reading->Bmi,1),'</td><td>',$reading->Fat,'</td></tr>';
  119. }
  120. ?>
  121. </table>
  122. </div>
  123. </div>
  124. }@