index.view 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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. $("form input[type=text]").val("");
  63. }
  64. $(function(){
  65. $.getScript("https://www.google.com/jsapi",function(){
  66. google.load('visualization', '1.1', {packages: ['line'], callback:function(){
  67. google.setOnLoadCallback(InitChart);
  68. }});
  69. });
  70. });
  71. }@
  72. @Body{
  73. <form ajaxForm action="/weight/add" method="post" onsuccess="AddWeightReading">
  74. <div class="row col-md-4">
  75. <div class="col input">
  76. <label for="weight">Weight (KG)</label>
  77. <input type="text" id="weight" name="weight" />
  78. </div>
  79. <div class="col input">
  80. <label for="bmi">BMI</label>
  81. <input type="text" id="bmi" name="bmi" />
  82. </div>
  83. <div class="col input">
  84. <label for="fat">Fat %</label>
  85. <input type="text" id="fat" name="fat" />
  86. </div>
  87. <div class="col input">
  88. <label for="save">Action</label>
  89. <input id="save" style="padding:5px" type="submit" value="Save" />
  90. </div>
  91. </div>
  92. </form>
  93. <div class="row col-lg-1">
  94. <div class="col" id="linechart"></div>
  95. </div>
  96. }@