notehub-std/main.js
2024-11-10 23:29:16 +00:00

309 lines
8.5 KiB
JavaScript
Executable File

function colormode(mode) {
const profiles = {
0:["#0D1117", "#0D1117", "#161B22", "#171D24", "#ECF6FF", "#E1EAF3", "#BEC6CD", "#BEC6CD", "dark"],
1:["#EFF3F4", "#F7F9F9", "#FFFFFF", "#EFF1F1", "#0F1419", "#454A4F", "#0F1419", "#ACB3B3", "light"],
2:["#FF0000", "#FF8800", "#FFFF00", "#88FF00", "#00FF00", "#00FFFF", "#0000FF", "#8800FF", "dark"]
}
var r = document.querySelector('body');
r.style.setProperty('--nav-bg', profiles[mode][0]);
r.style.setProperty('--table-bg', profiles[mode][1]);
r.style.setProperty('--background', profiles[mode][2]);
r.style.setProperty('--link-hover-bg', profiles[mode][3]);
r.style.setProperty('--text-color', profiles[mode][4]);
r.style.setProperty('--link-color', profiles[mode][5]);
r.style.setProperty('--title-color', profiles[mode][6]);
r.style.setProperty('--table-corder', profiles[mode][7]);
r.style.setProperty('--graphtheme', profiles[mode][8]);
}
function ressourceChart(ue, name) {
const moyennes = [];
const labels = [];
const colors = [];
const palette = ["#ca1414", "#ca1414", "#ca1414", "#ca1414", "#ea1818", "#ea1818", "#ea1818", "#ea1818", "#eb6b17", "#ebb117", "#ebe117", "#e5eb17", "#d8eb17", "#cbeb17","#bfeb17", "#9feb17", "#6ceb17", "#2dde15", "#28c513", "#13be7f", "#7013bf"];
// Récupération des moyennes et des labels pour chaque ressource
ue = data.relevé.ues[ue]
for (const ressource in ue.ressources) {
var moyenne = ue.ressources[ressource].moyenne
if (moyenne == "~") {
moyenne = "0";
}
moyennes.push(moyenne);
labels.push([`${data.relevé.ressources[ressource].titre} (${ue.ressources[ressource].coef})`]);
colors.push(palette[Math.round(parseInt(moyenne))]);
}
for (const sae in ue.saes) {
var moyenne = ue.saes[sae].moyenne
if (moyenne == "~") {
moyenne = "0";
}
moyennes.push(moyenne);
labels.push([`${data.relevé.saes[sae].titre} (${ue.saes[sae].coef})`]);
colors.push(palette[Math.round(parseInt(moyenne))]);
}
// Options pour le graphe
const options = {
series: [{
name: "Moyenne",
data: moyennes
},],
chart: {
type: 'bar',
height: 400,
width: 800,
background: getComputedStyle(document.body).getPropertyValue('--background'),
foreColor: getComputedStyle(document.body).getPropertyValue('--text-color')
},
plotOptions: {
bar: {
horizontal: false,
distributed: true,
borderRadius: 2,
}
},
legend: {
show: false
},
colors: colors,
annotations: {
yaxis: [{
y: 0,
y2: 8,
borderColor: '#b62828',
fillColor: '#b62828',
opacity: 0.2,
},{
y: 8,
y2: 10,
borderColor: '#deb62f',
fillColor: '#deb62f',
opacity: 0.2,
}]
},
xaxis: {
categories: labels
},
yaxis: {
max: 20
},
title: {
text: name,
align: 'center',
margin: 10,
offsetX: 0,
offsetY: 0,
floating: false,
style: {
fontSize: '20px',
fontWeight: 'bold',
fontFamily: undefined,
color: getComputedStyle(document.body).getPropertyValue('--title-color')
},
},
theme: {
mode: 'dark'
}
};
options.theme.mode = getComputedStyle(document.body).getPropertyValue('--graphtheme');
console.log(getComputedStyle(document.body).getPropertyValue('--graphtheme'));
return options;
}
function uesChart(data, name) {
const moyennes = [];
const labels = [];
const colors = [];
const palette = ["#ca1414", "#ca1414", "#ca1414", "#ca1414", "#ea1818", "#ea1818", "#ea1818", "#ea1818", "#eb6b17", "#ebb117", "#ebe117", "#e5eb17", "#d8eb17", "#cbeb17","#bfeb17", "#9feb17", "#6ceb17", "#2dde15", "#28c513", "#13be7f", "#7013bf"];
// Récupération des moyennes et des labels pour chaque ressource
for (const ue in data.relevé.ues) {
moyenne = data.relevé.ues[ue].moyenne.value
if (moyenne == "~") {
moyenne = "0"
}
moyennes.push(data.relevé.ues[ue].moyenne.value);
labels.push([`${ue}`]);
colors.push(palette[parseInt(moyenne, 10)])
}
// Options pour le graphe
const options = {
series: [{
name: "Moyenne",
data: moyennes
}],
chart: {
type: "bar",
height: 400,
width: 800,
background: getComputedStyle(document.body).getPropertyValue('--background'),
foreColor: getComputedStyle(document.body).getPropertyValue('--text-color')
},
plotOptions: {
bar: {
horizontal: false,
distributed: true,
endingShape: 'rounded',
}
},
legend: {
show: false
},
colors: colors,
annotations: {
yaxis: [{
y: 0,
y2: 8,
borderColor: '#b62828',
fillColor: '#b62828',
opacity: 0.2,
},{
y: 8,
y2: 10,
borderColor: '#deb62f',
fillColor: '#deb62f',
opacity: 0.2,
}]
},
xaxis: {
categories: labels
},
yaxis: {
max: 20
},
title: {
text: name,
align: 'center',
margin: 10,
offsetX: 0,
offsetY: 0,
floating: false,
style: {
fontSize: '20px',
fontWeight: 'bold',
fontFamily: undefined,
color: getComputedStyle(document.body).getPropertyValue('--title-color')
},
},
theme: {
mode: 'dark',
palette: 'palette1',
}
};
options.theme.mode = getComputedStyle(document.body).getPropertyValue('--graphtheme');
return options;
}
function absencesChart(data) {
const absences = data.relevé.semestre.absences.total;
const absences_injustifie = data.relevé.semestre.absences.injustifie;
const abs_percent = (absences_injustifie/5)*100;
var color;
if (absences <= 1) {
color = "#23A100"
} else if (absences == 2) {
color = "#00FF00"
} else if (absences == 3) {
color = "#FFFF00"
} else if (absences == 4) {
color = "#FF7500"
} else if (absences >= 5) {
color = "#FF0000"
};
const options = {
chart: {
height: 400,
type: "radialBar",
},
series: [abs_percent],
colors: [color],
plotOptions: {
radialBar: {
startAngle: -135,
endAngle: 135,
track: {
background: getComputedStyle(document.body).getPropertyValue('--table-bg'),
startAngle: -135,
endAngle: 135,
},
dataLabels: {
name: {
offsetY: 10,
fontSize: "30px",
show: true,
label: "Absences"
},
value: {
fontSize: "10px",
show: false,
color: getComputedStyle(document.body).getPropertyValue('--title-color'),
}
}
}
},
labels: [[`${absences_injustifie}/${absences}`]],
stroke: {
lineCap: "round"
}
};
// Options pour le graphe
return options;
}
function rangChart(data) {
const rang = parseInt(data.relevé.semestre.rang.value, 10);
const total = data.relevé.semestre.rang.total;
const rang_percent = 100-((rang/total)*100);
const colors = ["#ca1414", "#ca1414", "#ca1414", "#ca1414", "#ea1818", "#ea1818", "#ea1818", "#ea1818", "#eb6b17", "#ebb117", "#ebe117", "#e5eb17", "#d8eb17", "#cbeb17","#bfeb17", "#9feb17", "#6ceb17", "#2dde15", "#28c513", "#13be7f", "#7013bf"];
var color_pos = Math.round(rang_percent/5);
var color = colors[color_pos];
const options = {
chart: {
height: 400,
type: "radialBar",
},
series: [rang_percent],
colors: [color],
plotOptions: {
radialBar: {
startAngle: -135,
endAngle: 135,
track: {
background: getComputedStyle(document.body).getPropertyValue('--table-bg'),
startAngle: -135,
endAngle: 135,
},
dataLabels: {
name: {
offsetY: 10,
fontSize: "30px",
show: true,
label: "Rang"
},
value: {
fontSize: "10px",
show: false,
color: getComputedStyle(document.body).getPropertyValue('--title-color'),
}
}
}
},
labels: [`${rang}/${total}`],
stroke: {
lineCap: "round"
}
};
// Options pour le graphe
return options;
}