index.view 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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=text]").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" />
  90. </div>
  91. <div class="col input">
  92. <label for="fat">Fat %</label>
  93. <input type="number" id="fat" name="fat" />
  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. <table>
  107. <tr>
  108. <th>Weight</th>
  109. <th>BMI</th>
  110. <th>Fat %</th>
  111. </tr>
  112. <?php
  113. $last10=array_slice($readings, count($readings)-10);
  114. foreach ($last10 as $reading){
  115. echo '<tr><td>',$reading->Weight,'</td><td>',$reading->Bmi,'</td><td>',$reading->Fat,'</td></tr>';
  116. }
  117. ?>
  118. </table>
  119. </div>
  120. </div>
  121. }@