diff --git a/Pearlception/app/assets/javascripts/statistics.js b/Pearlception/app/assets/javascripts/statistics.js index 5647c58..1911156 100644 --- a/Pearlception/app/assets/javascripts/statistics.js +++ b/Pearlception/app/assets/javascripts/statistics.js @@ -4,23 +4,40 @@ Set up both the datepicker tabs with this $('#from_datepicker').datepicker() $('#to_datepicker').datepicker() +$('#dateFilterButton').on('click',function(){ + var fromDate = $('#from_datepicker')[0].value; + var toDate = $('#to_datepicker')[0].value; + var queryString = ""; + if(fromDate != "" && toDate != ""){ + queryString = "statistics.json/?from_date="+encodeURI(fromDate)+"&to_date="+encodeURI(toDate); + } + else{ + queryString = "statistics.json" + } + $.get(queryString, function(gradeData){ + constructGradesGraph(gradeData); + }) +}); + $(document).ready( $.get("statistics.json", function(gradeData){ constructGradesGraph(gradeData); }) -); +) function constructGradesGraph(gradeData){ console.log(gradeData) + var labels = generateLabels(gradeData); var colors = generateColors(gradeData); + var gradeCounts = getGradeCounts(labels, gradeData); var ctx = document.getElementById("gradesChart"); var myChart = new Chart(ctx, { type: 'bar', data: { - labels: generateLabels(gradeData), + labels: labels, datasets: [{ label: 'Count for each grade', - data: getGradeCount(gradeData), + data: gradeCounts, backgroundColor: colors, borderColor: colors, borderWidth: 1 @@ -38,6 +55,25 @@ function constructGradesGraph(gradeData){ }); } +function getGradeCounts(labels, gradeData){ + var counts = initCountArray(labels); + var oysters = gradeData.allOysters; + for(var i = 0; i < oysters.length; i++){ + var grade = oysters[i].grade; + counts[labels.indexOf(grade)]++; + } + console.log(counts); + return counts; +} + +function initCountArray(labels){ + counts = []; + for(var i = 0; i < labels.length; i++){ + counts.push(0) + } + return counts; +} + function generateLabels(gradeData){ let grades = gradeData.grades; labels = []; @@ -63,12 +99,4 @@ function generateColors(gradeData){ colors.push(color); } return colors; -} - -function getGradeCount(gradeData){ - counts = []; - for(var i = 0; i < gradeData.grades.length; i++){ - counts.push(Math.random() * 100); - } - return counts; } \ No newline at end of file diff --git a/Pearlception/app/controllers/statistics_controller.rb b/Pearlception/app/controllers/statistics_controller.rb index d03658b..10b2ce4 100644 --- a/Pearlception/app/controllers/statistics_controller.rb +++ b/Pearlception/app/controllers/statistics_controller.rb @@ -1,7 +1,6 @@ class StatisticsController < ApplicationController def index - puts Grade.all if params[:from_date] != nil && params[:to_date] != nil from_date = Date.strptime(params[:from_date], '%m/%d/%Y') to_date = Date.strptime(params[:to_date], '%m/%d/%Y') @@ -9,9 +8,18 @@ class StatisticsController < ApplicationController else runs = Run.all end + puts runs.inspect + oysterData = [] + all_oysters = [] + runs.each do |run| + oysters = Oyster.where(run_id: run.id).to_a + data = {"run": run, "oysters": oysters} + oysterData.push(data) + all_oysters.concat(oysters) + end respond_to do |f| f.html - f.json {render :json => {grades:Grade.all,runData:runs}} + f.json {render :json => {grades:Grade.all,oysterData:oysterData,allOysters:all_oysters}} end end end diff --git a/Pearlception/app/views/statistics/index.html.erb b/Pearlception/app/views/statistics/index.html.erb index d908968..3e4c4ed 100644 --- a/Pearlception/app/views/statistics/index.html.erb +++ b/Pearlception/app/views/statistics/index.html.erb @@ -48,8 +48,6 @@