mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-09 07:28:41 -07:00
feat: switch analyze page to use hotwire. Fix n_size count for teacher
This commit is contained in:
parent
62c508f7ae
commit
ccb04511bf
51 changed files with 529 additions and 648 deletions
|
|
@ -1,152 +1,25 @@
|
|||
import { Controller } from "@hotwired/stimulus";
|
||||
import debounce from "debounce";
|
||||
|
||||
// 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)
|
||||
static targets = ["category", "subcategory"]
|
||||
|
||||
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_items("race").join(",") +
|
||||
"&genders=" +
|
||||
this.selected_items("gender").join(",") +
|
||||
"&incomes=" +
|
||||
this.selected_items("income").join(",") +
|
||||
"&grades=" +
|
||||
this.selected_items("grade").join(",") +
|
||||
"&ells=" +
|
||||
this.selected_items("ell").join(",") +
|
||||
"&speds=" +
|
||||
this.selected_items("sped").join(",");
|
||||
|
||||
this.go_to(url);
|
||||
initialize() {
|
||||
this.submit = debounce(this.submit.bind(this), 300)
|
||||
}
|
||||
|
||||
go_to(location) {
|
||||
window.location = location;
|
||||
connect() {
|
||||
const collection = document.getElementsByClassName("popover");
|
||||
|
||||
for (let i = 0; i < collection.length; i++) {
|
||||
collection[i].parentNode.removeChild(collection[i]);
|
||||
}
|
||||
}
|
||||
|
||||
selected_years() {
|
||||
let year_checkboxes = [...document.getElementsByName("year-checkbox")];
|
||||
let years = year_checkboxes
|
||||
.filter((item) => {
|
||||
return item.checked;
|
||||
})
|
||||
.map((item) => {
|
||||
return item.id;
|
||||
});
|
||||
submit() {
|
||||
console.log("Submitting form");
|
||||
|
||||
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';
|
||||
}
|
||||
return `students-by-${this.selected_group()}`;
|
||||
}
|
||||
|
||||
return window.graph;
|
||||
|
||||
}
|
||||
|
||||
selected_items(type) {
|
||||
let checkboxes = [...document.getElementsByName(`${type}-checkbox`)]
|
||||
let items = checkboxes
|
||||
.filter((item) => {
|
||||
return item.checked;
|
||||
})
|
||||
.map((item) => {
|
||||
return item.id.replace(`${type}-`, '');
|
||||
});
|
||||
|
||||
return items;
|
||||
this.element.requestSubmit();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue