You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
179 lines
4.1 KiB
179 lines
4.1 KiB
import { Controller } from "@hotwired/stimulus";
|
|
|
|
// Connects to data-controller="analyze"
|
|
export default class extends Controller {
|
|
connect() { }
|
|
refresh(event) {
|
|
let base_url = event.target.value;
|
|
let target = event.target;
|
|
console.log(this.selected_slice(target))
|
|
console.log(target.name)
|
|
|
|
let url =
|
|
base_url +
|
|
"&academic_years=" +
|
|
this.selected_years().join(",") +
|
|
"&source=" +
|
|
this.selected_source(target) +
|
|
"&slice=" +
|
|
this.selected_slice(target) +
|
|
"&group=" +
|
|
this.selected_group() +
|
|
"&graph=" +
|
|
this.selected_graph(target) +
|
|
"&races=" +
|
|
this.selected_races().join(",") +
|
|
"&genders=" +
|
|
this.selected_genders().join(",") +
|
|
"&grades=" +
|
|
this.selected_grades().join(",");
|
|
|
|
this.go_to(url);
|
|
}
|
|
|
|
|
|
go_to(location) {
|
|
window.location = location;
|
|
}
|
|
|
|
selected_years() {
|
|
let year_checkboxes = [...document.getElementsByName("year-checkbox")];
|
|
let years = year_checkboxes
|
|
.filter((item) => {
|
|
return item.checked;
|
|
})
|
|
.map((item) => {
|
|
return item.id;
|
|
});
|
|
|
|
return years;
|
|
}
|
|
|
|
selected_group() {
|
|
let groups = [...document.getElementsByName("group-option")];
|
|
let selected_group = groups
|
|
.filter((item) => {
|
|
return item.selected;
|
|
})
|
|
.map((item) => {
|
|
return item.id;
|
|
});
|
|
|
|
return selected_group[0];
|
|
}
|
|
|
|
selected_source(target) {
|
|
if (target.name === 'source') {
|
|
return target.id;
|
|
}
|
|
if (target.name === 'slice' || target.name === 'group') {
|
|
return 'survey-data-only';
|
|
}
|
|
|
|
return window.source;
|
|
}
|
|
|
|
selected_slice(target) {
|
|
if (target.name === 'source' && target.id === 'all-data') {
|
|
return 'all-data';
|
|
}
|
|
if (target.name === 'source' && target.id === 'survey-data-only') {
|
|
return 'students-and-teachers';
|
|
}
|
|
|
|
if (target.name === 'group') {
|
|
return 'students-by-group';
|
|
}
|
|
|
|
if (target.name === 'source' || target.name === 'slice') {
|
|
let slices = [...document.getElementsByName("slice")];
|
|
let selected_slice = slices
|
|
.filter((item) => {
|
|
return item.id != "all-data";
|
|
})
|
|
.filter((item) => {
|
|
return item.checked;
|
|
})
|
|
.map((item) => {
|
|
return item.id;
|
|
});
|
|
|
|
return selected_slice[0];
|
|
}
|
|
|
|
return window.slice;
|
|
}
|
|
|
|
selected_graph(target) {
|
|
if (target.name === 'source' && target.id === 'all-data') {
|
|
return 'all-data'
|
|
}
|
|
if (target.name === 'source' && target.id === 'survey-data-only') {
|
|
return 'students-and-teachers'
|
|
}
|
|
|
|
let graphs = [...document.getElementsByName("slice")];
|
|
let selected_slice = graphs
|
|
.filter((item) => {
|
|
return item.checked;
|
|
})
|
|
.map((item) => {
|
|
return item.id;
|
|
})[0];
|
|
|
|
if (target.name === 'slice' || target.name === 'group') {
|
|
if (selected_slice === 'students-and-teachers') {
|
|
return 'students-and-teachers';
|
|
} else if (this.selected_group() === 'race') {
|
|
return 'students-by-race';
|
|
} else if (this.selected_group() === 'gender') {
|
|
return 'students-by-gender';
|
|
} else if (this.selected_group() === 'grade') {
|
|
return 'students-by-grade';
|
|
}
|
|
}
|
|
|
|
return window.graph;
|
|
|
|
}
|
|
|
|
selected_races() {
|
|
let race_checkboxes = [...document.getElementsByName("race-checkbox")]
|
|
let races = race_checkboxes
|
|
.filter((item) => {
|
|
return item.checked;
|
|
})
|
|
.map((item) => {
|
|
return item.id;
|
|
});
|
|
|
|
return races;
|
|
}
|
|
|
|
selected_grades() {
|
|
let grade_checkboxes = [...document.getElementsByName("grade-checkbox")]
|
|
let grades = grade_checkboxes
|
|
.filter((item) => {
|
|
return item.checked;
|
|
})
|
|
.map((item) => {
|
|
return item.id.replace('grade-', '');
|
|
});
|
|
|
|
return grades;
|
|
}
|
|
|
|
selected_genders() {
|
|
let gender_checkboxes = [...document.getElementsByName("gender-checkbox")]
|
|
let genders = gender_checkboxes
|
|
.filter((item) => {
|
|
return item.checked;
|
|
})
|
|
.map((item) => {
|
|
return item.id.replace('gender-', '');
|
|
});
|
|
|
|
return genders;
|
|
}
|
|
}
|