mirror of
https://github.com/oonyeje/Pearlception_Website_RoR.git
synced 2025-12-25 03:37:40 +00:00
got date filtering js functionality working
This commit is contained in:
parent
13b4fdb59b
commit
099bd6b8c1
@ -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 = [];
|
||||
@ -64,11 +100,3 @@ function generateColors(gradeData){
|
||||
}
|
||||
return colors;
|
||||
}
|
||||
|
||||
function getGradeCount(gradeData){
|
||||
counts = [];
|
||||
for(var i = 0; i < gradeData.grades.length; i++){
|
||||
counts.push(Math.random() * 100);
|
||||
}
|
||||
return counts;
|
||||
}
|
||||
@ -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
|
||||
|
||||
@ -48,8 +48,6 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<form action="/statistics?name=cole">
|
||||
<%= csrf_meta_tag %>
|
||||
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
|
||||
<div class="col-md-2">
|
||||
<p>From: <input type="text" id="from_datepicker" name="from_date"></p>
|
||||
@ -58,10 +56,9 @@
|
||||
<p>To: <input type="text" id="to_datepicker" name="to_date"></p>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button class="btn btn-primary" type="submit">Filter</button>
|
||||
<button class="btn btn-primary" id="dateFilterButton">Filter</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
|
||||
|
||||
35
migrations/createDummyData.rb
Normal file
35
migrations/createDummyData.rb
Normal file
@ -0,0 +1,35 @@
|
||||
require 'mysql2'
|
||||
require 'active_record'
|
||||
|
||||
ActiveRecord::Base.establish_connection(
|
||||
adapter: 'mysql2',
|
||||
host: 'localhost',
|
||||
database: 'development_HoopersIsland',
|
||||
username: 'bmv',
|
||||
password: '1156244terps!'
|
||||
)
|
||||
|
||||
class Grade < ActiveRecord::Base
|
||||
|
||||
end
|
||||
|
||||
class Oyster < ActiveRecord::Base
|
||||
|
||||
end
|
||||
|
||||
class Run < ActiveRecord::Base
|
||||
|
||||
end
|
||||
|
||||
runs = Run.all
|
||||
grades = Grade.all.to_a
|
||||
runs.each do |run|
|
||||
20.times do
|
||||
len = rand(0..10)
|
||||
width = rand(0..10)
|
||||
height = rand(0..10)
|
||||
vol = len * width * height
|
||||
oyster = Oyster.new(run_id: run.id, grade: grades[rand(0...grades.length)].Full_name,volume:vol, length:len, width:width, height:height)
|
||||
oyster.save
|
||||
end
|
||||
end
|
||||
24
migrations/grade.rb
Normal file
24
migrations/grade.rb
Normal file
@ -0,0 +1,24 @@
|
||||
|
||||
#A class to represent a grade
|
||||
class Grade
|
||||
|
||||
def initialize(params)
|
||||
@id = params["grade_id"]
|
||||
@full_name = params["Full_Name"] || "NULL"
|
||||
@short_name = params["Short_Name"] || "NULL"
|
||||
@volume_max = params["Volume_max"] || 0
|
||||
@volume_min = params["Volume_min"] || 0
|
||||
@length_max = params["Length_max"] || 0
|
||||
@length_min = params["Length_min"] || 0
|
||||
@width_max = params["Width_max"] || 0
|
||||
@width_min = params["Width_min"] || 0
|
||||
@height_max = params["Height_max"] || 0
|
||||
@height_min = params["Height_min"] || 0
|
||||
end
|
||||
|
||||
def to_insert_query
|
||||
"INSERT into grades (id, Full_Name, Short_Name, Volume_max, Volume_min, Length_max, Length_min, Width_max, Width_min, Height_max, Height_min,created_at,updated_at) VALUES
|
||||
(#{@id},\"#{@full_name}\",\"#{@short_name}\",#{@volume_max},#{@volume_min},#{@length_max},#{@length_min},#{@width_max},#{@width_min},#{@height_max},#{@height_min},NOW(),NOW());"
|
||||
end
|
||||
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user