-
Notifications
You must be signed in to change notification settings - Fork 0
/
open-grapher.js
101 lines (88 loc) · 2.44 KB
/
open-grapher.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import { projeccions } from './modules/projeccions.js';
import { empleneu, setAng } from './modules/empleneu.js';
// document.querySelector('p').addEventListener('click', function() {
// window.location.assign(window.location.href + "&thingeeCJH=-1,-2,-3,-4,-5,-6,-7")
// });
let consulta = new URLSearchParams(window.location.search);
// For the first key passed in that has a non-empty value, return the value.
// Delete the keys from the query.
function consultaSearchParams(...keys) {
let value = null;
keys.forEach(function(key) {
if(!value) {
const resultat = consulta.get(key);
if(resultat) {
value = resultat;
};
};
consulta.delete(key);
});
return value;
};
const metadades = {
títol: consultaSearchParams('títol', 'title'),
subtítol: consultaSearchParams('subtítol', 'subtitle'),
x: consultaSearchParams('x'),
y: consultaSearchParams('y'),
inici: consultaSearchParams('inici', 'start'),
llengua: consultaSearchParams('llengua', 'language'),
aprox: consultaSearchParams('aproximada', 'approximate'),
};
if((metadades.llengua && metadades.llengua.toLowerCase() == 'eng') || document.querySelector('.english')) {
setAng('english');
} else {
setAng('català');
};
empleneu();
function gatherGraphDades() {
let graphDades = [];
consulta.forEach(function(value, key) {
if(value) {
const dades = value.
split(',').
map(function(entry) {
entry = parseFloat(entry);
if(isNaN(entry)) { entry = null };
return entry;
});
graphDades.push({
name: key,
data: dades
});
};
});
return graphDades;
};
const ajustAproximat = (() => Boolean(metadades.aprox));
function númerosPerGraph() {
let resultats = gatherGraphDades();
if(ajustAproximat()) {
resultats = resultats.flatMap((entry) => [entry].concat(projeccions(entry)));
}
return resultats
};
const startPoint = (() => parseFloat(metadades['inici']) || 0);
const chartStructure = {
title: { text: metadades.títol },
subtitle: { text: metadades.subtítol },
xAxis: {
title: { text: metadades.x }
},
yAxis: {
title: { text: metadades.y }
},
legend: {
layout: 'horizontal',
align: 'center',
verticalAlign: 'top',
y: 50
},
plotOptions: {
series: {
pointStart: startPoint(),
connectNulls: true
}
},
series: númerosPerGraph()
}
var chart = Highcharts.chart('contenidor', chartStructure);