File "traitement0012.php"
Full Path: /home/analogde/www/DOSSIER/Json/traitement0012.php
File size: 14.11 KB
MIME-type: text/html
Charset: utf-8
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Interrogation DB</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
.chart-title {
text-align: center;
margin-bottom: 20px;
font-size: 1.5em;
font-weight: bold;
}
#chart-container {
position: relative;
width: 100%;
max-width: 600px;
margin: 0 auto;
}
#myChart {
width: 100%;
max-width: 600px;
}
</style>
<script>
function pipo()
{
fetch("load.php")
.then(response => response.json())
.then(data => {
console.log(" Lecture fichier JSON " + data);
/*****/
// Afficher le tableau reçu avec les caractères "++++++++" en HTML
const receivedDataElement = $("#receivedData");
receivedDataElement.html("<pre>++++++++\n" + JSON.stringify(data, null, 2) + "\n++++++++</pre>");
// Afficher le nombre de lignes dans le tableau
const rowCountElement = $("#rowCount");
rowCountElement.text("Nombre de lignes : " + data.length);
// Inverser le tableau JSON
data.reverse();
// Supprimer l'élément d'indice 1 dans chaque sous-tableau
data.forEach(item => {
if (Array.isArray(item) && item.length > 1) {
item.splice(1, 1);
}
});
// affichage type 2
// Afficher à nouveau le contenu du tableau
const displayedDataElement = $("#displayedData");
displayedDataElement.html("<pre>Tableau après modifications :\n" + JSON.stringify(data, null, 2) + "</pre>");
// Initialiser un nouveau tableau pour les résultats cumulés
let cumulativeData = [];
let cumulativeSum = 0;
// Préparer les données pour le graphique
let labels = [];
let values = [];
// Parcourir le tableau JSON et calculer les sommes cumulées
data.forEach(item => {
if (Array.isArray(item) && item.length > 0) {
// Convertir la valeur en entier et ajouter à la somme cumulée
cumulativeSum += parseInt(item[item.length - 1], 10);
// Ajouter les données pour le graphique
labels.push(item[0]); // Supposons que le premier élément est le label
values.push(cumulativeSum);
// Ajouter le sous-tableau modifié au nouveau tableau
cumulativeData.push([item[0], cumulativeSum]);
}
});
//console.log("Tableau cumulé :", cumulativeData);
//$("#sumResult").text("Somme des valeurs : " + cumulativeSum); // Mettre à jour l'élément HTML avec la somme
// Parcourir le tableau JSON et afficher les données
//const dataList = $("#dataList");
//dataList.empty(); // Vider la liste avant d'ajouter de nouveaux éléments
/*cumulativeData.forEach(item => {
console.log(item);
const listItem = $("<li></li>").text(JSON.stringify(item));
dataList.append(listItem);
});*/
// Préparer les données pour le graphique à partir de cumulativeData
//let chartLabels = cumulativeData.map(item => item[1]);
//let chartValues = cumulativeData.map(item => item[0]);
// Insérer un 0 au début de chartLabels
//chartLabels.unshift(0);
// Insérer un 0 à la fin de chartValues
//chartValues.push(0);
/*****/
return data;
})
.catch(error => {
console.error("Erreur :", error);
showMessageModal("Une erreur est survenue lors du chargement des données.");
});
}
function loadFromDB()
{
return fetch("load_mysql.php")
.then(response => response.json())
.then(data => {
console.log(data);
return data;
})
.catch(error => {
console.error("Erreur :", error);
showMessageModal("Une erreur est survenue lors du chargement des données.");
});
}
function countValueOneInCells(cells)
{
let count = 0;
for (let i = 0; i < cells.length; i++)
{
if (cells[i].value === "1")
{
count++;
}
}
return count;
}
async function displayResult()
{
pipo();
let data = await loadFromDB();
const cellsContainer = document.getElementById('cellsContainer');
let cellsHTML = '<table border="1"><tr><th>Ligne</th><th>Nombre de "value": "1"</th></tr>';
let jsonData = [];
data.forEach((row, rowIndex) => {
const cells = row.cells;
const count = countValueOneInCells(cells);
cellsHTML += `<tr><td>${rowIndex + 1}</td><td>${count}</td></tr>`;
// Ajouter les informations au tableau JSON sous forme de tableau imbriqué
jsonData.push([rowIndex + 1, count]);
});
cellsHTML += '</table>';
cellsContainer.innerHTML = cellsHTML;
// Inverser uniquement la colonne des valeurs de count
let countValues = jsonData.map(row => row[1]);
countValues.reverse();
jsonData.forEach((row, index) => {
row[1] = countValues[index];
});
// Créer un tableau contenant uniquement les premières cellules
let firstCells = jsonData.map(row => row[0]);
// Inverser l'ordre des premières cellules
firstCells.reverse();
// Insérer un 0 à la fin de firstCells
firstCells.push(0);
// Créer un tableau contenant uniquement les deuxièmes cellules
let secondCells = jsonData.map(row => row[1]);
// Insérer un 0 en première position de secondCells
secondCells.unshift(0);
// Afficher les tableaux JSON dans la console
console.log("Premières cellules inversées avec 0 ajouté :", JSON.stringify(firstCells, null, 2));
console.log("Deuxièmes cellules avec 0 en première position :", JSON.stringify(secondCells, null, 2));
// Calculer la somme des éléments de secondCells
const maxXValue = secondCells.reduce((sum, value) => sum + value, 0);
console.log("Max " + maxXValue);
// Copier secondCells et appliquer le traitement
let processedSecondCells = [...secondCells];
for (let i = 2; i < processedSecondCells.length; i++) {
processedSecondCells[i] += processedSecondCells[i - 1];
}
console.log(" Sum " + processedSecondCells);
// simple(processedSecondCells, firstCells, maxXValue);
const tab2 = [0, 22, 31, 4, 9, 14, 5];
let x_seconde_courbe = [...tab2];
for (let i = 2; i < x_seconde_courbe.length; i++)
{
x_seconde_courbe[i] += x_seconde_courbe[i - 1];
}
console.log(" ------ " + x_seconde_courbe);
//double(processedSecondCells ,tab2, firstCells, maxXValue);
// double(processedSecondCells , x_seconde_courbe, firstCells);
}
/***************************************************/
function double(x1, x2, y)
{
// Création du graphique
const ctx = document.getElementById('myChart').getContext('2d');
const myChart = new Chart(ctx,
{
type: 'line',
data: {
datasets: [{
label: 'Courbe 1',
data: x1.map((value, index) => ({ x: value, y: y[index] })),
borderColor: 'rgba(75, 192, 192, 1)',
borderWidth: 1,
fill: false,
showLine: true
}, {
label: 'Courbe 2',
data: x2.map((value, index) => ({ x: value, y: y[index] })),
borderColor: 'rgba(153, 102, 255, 1)',
borderWidth: 1,
fill: false,
showLine: true
}]
},
options: {
scales: {
x: {
type: 'linear',
position: 'bottom'
},
y: {
beginAtZero: true
}
}
}
});
}
/***************************************************/
/*
async function xxxxxxblabla()
{
const response = await fetch("load.php");
if (!response.ok) {
throw new Error("Erreur réseau : " + response.status);
}
const data = await response.json();
console.log("Données reçues :", data);
// Inverser le tableau JSON
data.reverse();
// Supprimer l'élément d'indice 1 dans chaque sous-tableau
data.forEach(item => {
if (Array.isArray(item) && item.length > 1) {
item.splice(1, 1);
}
});
// Initialiser un nouveau tableau pour les résultats cumulés
let cumulativeData = [];
let cumulativeSum = 0;
// Préparer les données pour le graphique
let labels = [];
let values = [];
// Parcourir le tableau JSON et calculer les sommes cumulées
data.forEach(item => {
if (Array.isArray(item) && item.length > 0) {
// Convertir la valeur en entier et ajouter à la somme cumulée
cumulativeSum += parseInt(item[item.length - 1], 10);
// Ajouter les données pour le graphique
labels.push(item[0]); // Supposons que le premier élément est le label
values.push(cumulativeSum);
// Ajouter le sous-tableau modifié au nouveau tableau
cumulativeData.push([item[0], cumulativeSum]);
}
});
// Préparer les données pour le graphique à partir de cumulativeData
let chartLabels = cumulativeData.map(item => item[1]);
let chartValues = cumulativeData.map(item => item[0]);
// Insérer un 0 au début de chartLabels
chartLabels.unshift(0);
// Insérer un 0 à la fin de chartValues
chartValues.push(0);
return { chartLabels, chartValues };
}
*/
window.onload = displayResult;
</script>
</head>
<body>
<h1>Chart - dev</h1>
<div id="chart-container">
<div id="receivedData"></div> <!-- Ajout de cet élément pour afficher les données reçues -->
<div id="displayedData"></div> <!-- Ajout de cet élément pour afficher le tableau -->
<div id="dbData"></div> <!-- Ajout de cet élément pour afficher les données de la base de données -->
<p id="dbRowCount">Nombre de lignes dans la base de données : </p> <!-- Ajout de cet élément pour afficher le nombre de lignes -->
<ul id="dataList"></ul>
<p id="firstRowData">Contenu de la première ligne : </p> <!-- Ajout de cet élément pour afficher le contenu de la première ligne -->
<p id="sumResult">Somme des jours : </p> <!-- Ajout de cet élément pour afficher la somme -->
<div id="chartLabelsContainer">
<!--<p>Commentaire au-dessus de chartLabels</p>-->
<div id="chartLabels"></div> <!-- Ajout de cet élément pour afficher chartLabels -->
<!--<p>Commentaire en dessous de chartLabels</p>-->
</div>
<div id="chartValuesContainer">
<!--<p>Commentaire au-dessus de chartValues</p>-->
<div id="chartValues"></div> <!-- Ajout de cet élément pour afficher chartValues -->
<!--<p>Commentaire en dessous de chartValues</p>-->
</div>
<div class="chart-title">Graphique 2 courbes</div>
<canvas id="myChart"></canvas>
</div>
<p id="result"></p>
<p id="countValue"></p>
<div id="tableContainer"></div>
<div id="cellsContainer"></div>
</body>
</html>