mirror of
https://github.com/oonyeje/Pearlception_Website_RoR.git
synced 2025-12-25 11:47:41 +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()
|
$('#from_datepicker').datepicker()
|
||||||
$('#to_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(
|
$(document).ready(
|
||||||
$.get("statistics.json", function(gradeData){
|
$.get("statistics.json", function(gradeData){
|
||||||
constructGradesGraph(gradeData);
|
constructGradesGraph(gradeData);
|
||||||
})
|
})
|
||||||
);
|
)
|
||||||
|
|
||||||
function constructGradesGraph(gradeData){
|
function constructGradesGraph(gradeData){
|
||||||
console.log(gradeData)
|
console.log(gradeData)
|
||||||
|
var labels = generateLabels(gradeData);
|
||||||
var colors = generateColors(gradeData);
|
var colors = generateColors(gradeData);
|
||||||
|
var gradeCounts = getGradeCounts(labels, gradeData);
|
||||||
var ctx = document.getElementById("gradesChart");
|
var ctx = document.getElementById("gradesChart");
|
||||||
var myChart = new Chart(ctx, {
|
var myChart = new Chart(ctx, {
|
||||||
type: 'bar',
|
type: 'bar',
|
||||||
data: {
|
data: {
|
||||||
labels: generateLabels(gradeData),
|
labels: labels,
|
||||||
datasets: [{
|
datasets: [{
|
||||||
label: 'Count for each grade',
|
label: 'Count for each grade',
|
||||||
data: getGradeCount(gradeData),
|
data: gradeCounts,
|
||||||
backgroundColor: colors,
|
backgroundColor: colors,
|
||||||
borderColor: colors,
|
borderColor: colors,
|
||||||
borderWidth: 1
|
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){
|
function generateLabels(gradeData){
|
||||||
let grades = gradeData.grades;
|
let grades = gradeData.grades;
|
||||||
labels = [];
|
labels = [];
|
||||||
@ -64,11 +100,3 @@ function generateColors(gradeData){
|
|||||||
}
|
}
|
||||||
return colors;
|
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
|
class StatisticsController < ApplicationController
|
||||||
|
|
||||||
def index
|
def index
|
||||||
puts Grade.all
|
|
||||||
if params[:from_date] != nil && params[:to_date] != nil
|
if params[:from_date] != nil && params[:to_date] != nil
|
||||||
from_date = Date.strptime(params[:from_date], '%m/%d/%Y')
|
from_date = Date.strptime(params[:from_date], '%m/%d/%Y')
|
||||||
to_date = Date.strptime(params[:to_date], '%m/%d/%Y')
|
to_date = Date.strptime(params[:to_date], '%m/%d/%Y')
|
||||||
@ -9,9 +8,18 @@ class StatisticsController < ApplicationController
|
|||||||
else
|
else
|
||||||
runs = Run.all
|
runs = Run.all
|
||||||
end
|
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|
|
respond_to do |f|
|
||||||
f.html
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -48,8 +48,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<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-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<p>From: <input type="text" id="from_datepicker" name="from_date"></p>
|
<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>
|
<p>To: <input type="text" id="to_datepicker" name="to_date"></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-2">
|
<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>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
|
<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