Produce charts of component availability at JLCPCB from a BOM
Mirrored from https://github.com/gavanfantom/jlc-chart
				
			
			
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							65 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							65 lines
						
					
					
						
							2.1 KiB
						
					
					
				<!DOCTYPE html> | 
						|
<html lang="en"> | 
						|
<head> | 
						|
  <meta charset="utf-8" /> | 
						|
  <title>JLCPCB stock graphs</title> | 
						|
  <script src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.6.0/chart.min.js'></script> | 
						|
  <script src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js'></script> | 
						|
  <script src='https://cdnjs.cloudflare.com/ajax/libs/chartjs-adapter-moment/1.0.0/chartjs-adapter-moment.min.js'></script> | 
						|
</head> | 
						|
 | 
						|
<body> | 
						|
<!---  <center> --> | 
						|
 | 
						|
   {% for component in components %} | 
						|
    <canvas id="chart_{{component.id}}" width="600" height="400" style="display: inline;"></canvas> | 
						|
   {% endfor %} | 
						|
    <script> | 
						|
     {% for component in components %} | 
						|
      var chart_{{component.id}} = document.getElementById("chart_{{component.id}}").getContext("2d"); | 
						|
      var LineChart_{{component.id}} = new Chart(chart_{{component.id}}, { | 
						|
          type: 'line', | 
						|
          data: { | 
						|
              datasets : [{ | 
						|
                  label: '# in stock', | 
						|
                  data : [ | 
						|
                  {% for item in component.data %} | 
						|
                      { x: '{{ item.timestamp }}', y: '{{item.value}}' }, | 
						|
                  {% endfor %}] | 
						|
              }] | 
						|
          }, | 
						|
          options: { | 
						|
              scales: { | 
						|
                  xAxis: { | 
						|
                      type: 'time', | 
						|
                      time: { | 
						|
                          unit: 'day' | 
						|
                      } | 
						|
                  }, | 
						|
                  y: { | 
						|
                      beginAtZero: true | 
						|
                  } | 
						|
              }, | 
						|
              responsive: false, | 
						|
              backgroundColor: "rgba(57, 204, 96, 0.7)", | 
						|
              borderColor: "rgba(57, 204, 96, 1)", | 
						|
              elements: { | 
						|
                  point: { | 
						|
                      pointBackgroundColor: "rgba(36, 128, 61, 0.7)", | 
						|
                      pointBorderColor: "rgba(36, 128, 61, 1)", | 
						|
                  } | 
						|
              }, | 
						|
              plugins: { | 
						|
                  title: { | 
						|
                      display: true, | 
						|
                      text: ' {{ component.code }} : {{ component.name }} ', | 
						|
                      position: 'bottom' | 
						|
                  } | 
						|
              } | 
						|
          } | 
						|
      }); | 
						|
     {% endfor %} | 
						|
    </script> | 
						|
<!---  </center> --> | 
						|
</body> | 
						|
</html>
 | 
						|
 |