index.view 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. };
  35. function DrawChart() {
  36. chart.draw(chartData, chartOptions);
  37. }
  38. function InitChart(){
  39. chartData = new google.visualization.DataTable();
  40. chartData.addColumn('date', 'Date');
  41. chartData.addColumn('number', 'Weight (KG)');
  42. chartData.addColumn('number', 'Fat %');
  43. chartData.addColumn('number', 'BMI');
  44. chartData.addRows([
  45. <?php
  46. foreach ($readings as $r){
  47. $dateArray=$r->GetParsedDate();
  48. echo '[new Date(',$dateArray['year'],',',$dateArray['month']-1,',',$dateArray['day'],'),',$r->Weight,',',$r->Fat,',',$r->Bmi,'],',PHP_EOL;
  49. }
  50. ?>
  51. ]);
  52. chart = new google.charts.Line(document.getElementById('linechart'));
  53. DrawChart();
  54. }
  55. function AddData(weight, bmi, fat){
  56. chartData.addRow([new Date(),weight,fat,bmi]);
  57. DrawChart();
  58. }
  59. function AddWeightReading(data){
  60. var reading=JSON.parse(data);
  61. AddData(reading.Weight, reading.BMI, reading.Fat);
  62. }
  63. $(function(){
  64. $.getScript("https://www.google.com/jsapi",function(){
  65. google.load('visualization', '1.1', {packages: ['line'], callback:function(){
  66. google.setOnLoadCallback(InitChart);
  67. }});
  68. });
  69. });
  70. }@
  71. @Body{
  72. <form ajaxForm action="/weight/add" method="post" onsuccess="AddWeightReading">
  73. <div class="row col-md-4">
  74. <div class="col input">
  75. <label for="weight">Weight (KG)</label>
  76. <input type="text" id="weight" name="weight" />
  77. </div>
  78. <div class="col input">
  79. <label for="bmi">BMI</label>
  80. <input type="text" id="bmi" name="bmi" />
  81. </div>
  82. <div class="col input">
  83. <label for="fat">Fat %</label>
  84. <input type="text" id="fat" name="fat" />
  85. </div>
  86. <div class="col input">
  87. <label for="save">Action</label>
  88. <input id="save" style="padding:5px" type="submit" value="Save" />
  89. </div>
  90. </div>
  91. </form>
  92. <div class="row col-lg-1">
  93. <div class="col" id="linechart"></div>
  94. </div>
  95. }@