Advertisement
noam76

graph.php

May 13th, 2023
889
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.51 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>Graph</title>
  7.     <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
  8. </head>
  9. <body>
  10.     <form id="registerForm">
  11.         <label for="register1">Register 1:</label>
  12.         <input type="checkbox" id="register1" name="registers[]" value="0">
  13.         <label for="register2">Register 2:</label>
  14.         <input type="checkbox" id="register2" name="registers[]" value="1">
  15.         <!-- Add more registers as needed -->
  16.         <button type="submit">Update Graph</button>
  17.     </form>
  18.  
  19.     <canvas id="chartCanvas"></canvas>
  20.  
  21.     <script>
  22.     document.getElementById('registerForm').addEventListener('submit', function(event) {
  23.         event.preventDefault();
  24.  
  25.         const formData = new FormData(event.target);
  26.         const selectedRegisters = formData.getAll('registers[]').map(Number);
  27.  
  28.         fetch('fetch_data.php', {
  29.             method: 'POST',
  30.             body: formData
  31.         })
  32.         .then(response => response.json())
  33.         .then(data => {
  34.             const chartData = data.map(row => {
  35.                 const registerData = JSON.parse(row.register_data);
  36.                 return selectedRegisters.map(registerIndex => registerData[registerIndex]);
  37.             });
  38.  
  39.             const chartLabels = selectedRegisters.map(registerIndex => 'Register ' + (registerIndex + 1));
  40.  
  41.             const datasets = chartLabels.map((label, index) => {
  42.                 return {
  43.                     label: label,
  44.                     data: chartData.map(row => row[index]),
  45.                     borderColor: `hsl(${index * 45}, 100%, 50%)`,
  46.                     backgroundColor: `hsla(${index * 45}, 100%, 50%, 0.1)`,
  47.                     borderWidth: 1
  48.                 };
  49.             });
  50.  
  51.             const ctx = document.getElementById('chartCanvas').getContext('2d');
  52.             new Chart(ctx, {
  53.                 type: 'line',
  54.                 data: {
  55.                     labels: data.map(row => row.created_at),
  56.                     datasets: datasets
  57.                 },
  58.                 options: {
  59.                     scales: {
  60.                         x: {
  61.                             type: 'time',
  62.                             time: {
  63.                                 unit: 'minute'
  64.                             }
  65.                         }
  66.                     }
  67.                 }
  68.             });
  69.         });
  70.     });
  71.     </script>
  72. </body>
  73. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement