<template>
  <div>
    <div id="wrapper">
      <div id="chart-months">
        <apexchart
          type="area"
          height="180"
          :options="chartOptions"
          :series="series"
        ></apexchart>
      </div>

      <h5 class="github-style">
        <div class="userimg">C</div>
        <div class="userdetails">
          <a class="username">coder</a>
          <span class="cmeta"> <span class="commits"></span> commits </span>
        </div>
      </h5>

      <div id="chart-years">
        <apexchart
          type="area"
          height="150"
          :options="chartOptionsYears"
          :series="seriesYears"
        ></apexchart>
      </div>
    </div>
  </div>
</template>

<script>
import VueApexCharts from 'vue-apexcharts'

// This demo also loads: https://apexcharts.com/samples/assets/github-data.js

// The commit history asset ends in 2018; shift every point forward 8 years
// so the demo lands in 2020-2026 without editing the asset.
var SHIFT = 8 * 365.25 * 24 * 60 * 60 * 1000
var commitSeries = githubdata.series.map(function (p) {
  return { x: p.x + SHIFT, y: p.y }
})

export default {
  components: {
    apexchart: VueApexCharts,
  },
  data: function () {
    return {
      series: [
        {
          name: 'commits',
          data: commitSeries,
        },
      ],
      chartOptions: {
        chart: {
          id: 'chartyear',
          type: 'area',
          height: 180,
          background: '#F6F8FA',
          toolbar: {
            show: false,
            autoSelected: 'pan',
          },
          events: {
            mounted: function (chart) {
              var commitsEl = document.querySelector('.cmeta span.commits')
              var commits = chart.getSeriesTotalXRange(
                chart.w.globals.minX,
                chart.w.globals.maxX,
              )

              commitsEl.innerHTML = commits
            },
            updated: function (chart) {
              var commitsEl = document.querySelector('.cmeta span.commits')
              var commits = chart.getSeriesTotalXRange(
                chart.w.globals.minX,
                chart.w.globals.maxX,
              )

              commitsEl.innerHTML = commits
            },
          },
        },
        colors: ['#FF7F00'],
        stroke: {
          width: 0,
          curve: 'monotoneCubic',
        },
        dataLabels: {
          enabled: false,
        },
        fill: {
          opacity: 1,
          type: 'solid',
        },
        yaxis: {
          show: true,
          forceNiceScale: true,
        },
        xaxis: {
          type: 'datetime',
        },
      },
      seriesYears: [
        {
          name: 'commits',
          data: commitSeries,
        },
      ],
      chartOptionsYears: {
        chart: {
          height: 150,
          type: 'area',
          background: '#F6F8FA',
          toolbar: {
            autoSelected: 'selection',
          },
          brush: {
            enabled: true,
            target: 'chartyear',
          },
          selection: {
            enabled: true,
            xaxis: {
              min: new Date('15 Feb 2024').getTime(),
              max: new Date('14 Feb 2025').getTime(),
            },
          },
        },
        colors: ['#7BD39A'],
        dataLabels: {
          enabled: false,
        },
        stroke: {
          width: 0,
          curve: 'monotoneCubic',
        },
        fill: {
          opacity: 1,
          type: 'solid',
        },
        legend: {
          position: 'top',
          horizontalAlign: 'left',
        },
        xaxis: {
          type: 'datetime',
        },
      },
    }
  },
}
</script>

<style>
#wrapper {
  padding-top: 20px;
  padding-left: 10px;
  padding-right: 10px;
  background: #fff;
  border: 1px solid #ddd;
  box-shadow: 0 22px 35px -16px rgba(0, 0, 0, 0.1);
  max-width: 650px;
  margin: 35px auto;
}

.github-style {
  clear: both;
  font-weight: 400;
  height: 40px;
  margin-left: 6px;
}

.github-style a {
  color: #0366d6;
  font-size: 18px;
}

.github-style .cmeta {
  display: block;
  color: #777;
  font-weight: 400;
}

.github-style .userimg {
  float: left;
  display: block;
  border-radius: 3px;
  width: 38px;
  height: 38px;
  background: linear-gradient(135deg, #008ffb, #00e396);
  color: #fff;
  font-size: 20px;
  font-weight: 600;
  line-height: 38px;
  text-align: center;
}

.github-style .userdetails {
  float: left;
  margin-left: 10px;
}
</style>
GitHub Style - Vue Area Charts | ApexCharts.js | ApexCharts.js