<!DOCTYPE html>
<html>

  <head>
    <script type="text/javascript" src="https://rsg-group.github.io/intersection/scripts/intersection.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.js"></script>
    <script src="script.js"></script>
  </head>

  <body>
    <div style="width: 980px">
          <canvas id="myChart" width="980" height="400"></canvas>
    </div>
  </body>

</html>
// Code goes here


setTimeout(function() {
  const simpleNums = [{
    x1: 0,
    y1: 3,
    x2: 0,
    y2: 5
  }, {
    x1: 3,
    y1: 5,
    x2: 3,
    y2: -4
  }, {
    x1: 4,
    y1: 2,
    x2: 4,
    y2: 6
  }, {
    x1: 6,
    y1: 7,
    x2: 6,
    y2: 3
  }, {
    x1: 8,
    y1: -3,
    x2: 8,
    y2: -1
  }, {
    x1: 9,
    y1: 2,
    x2: 9,
    y2: -2
  }, ];

  const numsWithIntersection = [];
  const maxX = Math.max(...simpleNums.map(a => a.x1));
  simpleNums.forEach((point, i, arr) => {
    if (i > 0) {
      const prev = arr[i - 1];
      const curr = point;
      const intersection = findIntersection([{
          x: curr.x1,
          y: curr.y1
        }, {
          x: prev.x1,
          y: prev.y1
        },

        {
          x: curr.x2,
          y: curr.y2
        }, {
          x: prev.x2,
          y: prev.y2
        },
      ]);

      numsWithIntersection.push({
        xPercentage: intersection.x / (maxX + 1)
      });
    }
  });

  const GREEN = 'green';
  const RED = 'red';
  var ctx = document.getElementById("myChart").getContext("2d");
  const gradientFill1 = ctx.createLinearGradient(0, 0, 980, 0);

  gradientFill1.addColorStop(
    0,
    RED
  );

  numsWithIntersection.forEach((num, i) => {
    if (i % 2 === 0) {
      gradientFill1.addColorStop(
        num.xPercentage,
        RED
      );
      gradientFill1.addColorStop(
        num.xPercentage,
        GREEN
      );
    } else {
      gradientFill1.addColorStop(
        num.xPercentage,
        GREEN
      );
      gradientFill1.addColorStop(
        num.xPercentage,
        RED
      );
    }
  });

  var myChart = new Chart(ctx, {
    type: 'line',
    data: {
      labels: simpleNums.map(a => a.x1),
      datasets: [{
        label: 'data1',
        data: simpleNums.map(item => ({
          x: item.x1,
          y: item.y1
        })),
        borderColor: "black",
        fill: false,
        steppedLine: false,
        backgroundColor: gradientFill1,
        tension: 0,
        borderWidth: 2,
      }, {
        label: 'data2',
        data: simpleNums.map(item => ({
          x: item.x2,
          y: item.y2
        })),
        borderColor: "black",
        backgroundColor: gradientFill1,

        borderDash: [3, 6],
        fill: '-1',
        steppedLine: false,
        tension: 0,
        borderWidth: 2
      }]
    }
  });
}, 2000)
/* Styles go here */