diff --git a/include/js/geochart.js b/include/js/geochart.js new file mode 100644 index 0000000000000000000000000000000000000000..d985945ec5d29e86c3c2f821eb29f5378eed5729 --- /dev/null +++ b/include/js/geochart.js @@ -0,0 +1,74 @@ +/** + * Fonction pour transformer le nom d'une region + * dans un objet JavaScript que Google Charts comprend. + */ +function formatter_region(region) { + const codes = { + "Ile-de-France": 'FR-IDF', + "Auvergne-Rhône-Alpes": 'FR-ARA', + "Grand Est": 'FR-GES', + "Occitanie": 'FR-OCC', + "Nouvelle-Aquitaine": 'FR-NAQ', + "Hauts-de-France": 'FR-HDF', + "Normandie": 'FR-NOR', + "Provence Alpes Côte d'Azur": 'FR-PAC', + "Bretagne": 'FR-BRE', + "Bourgogne-Franche-Comté": 'FR-BFC', + "Pays de la Loire": 'FR-PDL', + "Centre-Val de Loire": 'FR-CVL', + "La Réunion": 'FR-974', + "Corse": 'FR-20R', + "Guadeloupe": 'FR-971', + "Guyane": 'FR-973', + "Polynésie française": 'FR-PF', + "Martinique": 'FR-972', + } + return {v: codes[region], f: region} +} + + +const httpRequest = new XMLHttpRequest() +httpRequest.onreadystatechange = () => { + if (httpRequest.readyState === XMLHttpRequest.DONE) { + if (httpRequest.status === 200) { + const response = JSON.parse(httpRequest.responseText) + google.charts.load("current", { "packages": ["geochart"], "language": "fr" }) + google.charts.setOnLoadCallback(function() { + drawChart(response) + }) + } else { + console.log("Erreur de connexion au serveur !") + } + } +} +httpRequest.open('POST', 'include/php/data.php', true) +httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') +const query = 'SELECT region_etab_aff, count(*) AS count FROM parcoursup WHERE fili = "BUT" GROUP BY region_etab_aff ORDER BY count DESC' +httpRequest.send(`query=${encodeURIComponent(query)}`) // 4. Envoi de la requête + + +/** + * Fonction qui fait un geochart avec les régions de la France + */ +function drawChart(result) { + let data = new google.visualization.DataTable() + data.addColumn("string", "Région") + data.addColumn("number", "Nombre des BUT") + let dataArray = [] + for (const item of result) { + dataArray.push([formatter_region(item.region_etab_aff), item.count]) + } + data.addRows(dataArray) + + let options = { + width: 600, + height: 500, + displayMode: 'regions', + region: 'FR', + resolution: 'provinces', + geochartVersion: 11, + } + + let chart = new google.visualization.GeoChart(document.getElementById("geochart_div")) + chart.draw(data, options) +} \ No newline at end of file diff --git a/index.php b/index.php index 3177cc2fff2623642cd84429a35a12c848938a29..3c6485cc7a37cfe5dbef273f3ad47b0500408bda 100644 --- a/index.php +++ b/index.php @@ -19,8 +19,13 @@ include 'include/php/functions.php'; Voici quelques exemples d'utilisation de la base de données. </p> <p> - Aussi, vous trouverez <a href="test-charts.html">un exemple</a> qui utilise Google Charts, et <a href="search.php">un autre exemple</a> avec une barre de recherche. + Aussi, vous trouverez </p> + <ul> + <li><a href="test-charts.html">un exemple</a> avec deux graphiques utilisant Google Charts</li> + <li><a href="regions.html">un exemple</a> avec une graphique avec les régions de l'Hexagone</li> + <li><a href="search.php">un exemple</a> avec une barre de recherche</li> + </ul> <section> <h2>Les BUT avec le plus grand nombre de candidats</h2> diff --git a/regions.html b/regions.html new file mode 100644 index 0000000000000000000000000000000000000000..613f8eab23a60fa2b864f34a41136f20fb337e95 --- /dev/null +++ b/regions.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<html lang="fr"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>SAÉ 303</title> +</head> +<body> + <h1>Formations en BUT par région</h1> + <p></p> + <div id="geochart_div"></div> + + <script src="https://www.gstatic.com/charts/loader.js"></script> + <script src="include/js/geochart.js" defer></script> +</body> +</html> \ No newline at end of file