Rumah  >  Artikel  >  hujung hadapan web  >  GitHub seperti Contribution HeatMap dalam JS

GitHub seperti Contribution HeatMap dalam JS

WBOY
WBOYasal
2024-08-09 07:13:52736semak imbas

Pernahkah anda terfikir bagaimana anda boleh meniru carta sumbangan GitHub? Kebanyakan daripada kita ada, jadi berikut ialah cara anda juga boleh melakukannya.

Kami akan menggunakan perpustakaan yang dipanggil cal-heatmap

Anda boleh memasang perpustakaan dengan npm install cal-heatmap dan kemudian mengimport perpustakaan ke dalam aplikasi anda:

import CalHeatmap from 'cal-heatmap';

// Optionally import the CSS
import 'cal-heatmap/cal-heatmap.css';

Masukkan

untuk memaparkan peta haba dan membuat instantiate fungsi cat:

const cal = new CalHeatmap();
cal.paint({
   itemSelector: '#cal-heatmap',
});

Tentukan domain dan sub-domain, di mana domain adalah unit masa utama dan sub-domain ialah unit sub-masa. Dalam kes ini, kita akan mempunyai domain sebagai bulan dan sub-domain sebagai ghDay supaya tiada jurang dalam carta

cal.paint({
   itemSelector: '#cal-heatmap',
   domain: {
      type: 'month',
      gutter: 4,
      label: { text: 'MMM', textAlign: 'start', position: 'top' },
    },
    subDomain: { type: 'ghDay', radius: 2, width: 11, height: 11, gutter: 4 },
});

Longkang mentakrifkan ruang antara setiap domain atau sub-domain iaitu setiap bulan atau hari dalam kes kami.

Pilihan tarikh mentakrifkan tarikh mula kalendar dan pilihan julat mentakrifkan bilangan domain untuk ditunjukkan iaitu 12 dalam kes kami untuk bilangan bulan.

cal.paint({
   itemSelector: '#cal-heatmap',
   domain: {
      type: 'month',
      gutter: 4,
      label: { text: 'MMM', textAlign: 'start', position: 'top' },
    },
    subDomain: { type: 'ghDay', radius: 2, width: 11, height: 11, gutter: 4 },
    date: { start: new Date('2012-01-01') },
    range: 12,
});

Sekarang mari tambah data daripada GitHub menggunakan GraphQL dengan nama pengguna ialah nama pengguna GitHub anda

query($userName:String!) { 
  user(login: $userName){
    contributionsCollection {
      contributionCalendar {
        totalContributions
        weeks {
          contributionDays {
            contributionCount
            date
          }
        }
      }
    }
  }
}

Respons daripada pertanyaan GraphQL akan digunakan sebagai sumber data

cal.paint({
   itemSelector: '#cal-heatmap',
   domain: {
      type: 'month',
      gutter: 4,
      label: { text: 'MMM', textAlign: 'start', position: 'top' },
    },
    subDomain: { type: 'ghDay', radius: 2, width: 11, height: 11, gutter: 4 },
    date: { start: new Date('2012-01-01') },
    range: 12,
    data: {
       source: response,
       x: 'date',
       y: 'contributionCount',
       defaultValue: 0
    },
});

Kami akhirnya akan menentukan rupa peta haba dengan sifat skala dan menambah pemalam alat dan label kalendar.

cal.paint({
   itemSelector: '#cal-heatmap',
   domain: {
      type: 'month',
      gutter: 4,
      label: { text: 'MMM', textAlign: 'start', position: 'top' },
    },
    subDomain: { type: 'ghDay', radius: 2, width: 11, height: 11, gutter: 4 },
    date: { start: new Date('2012-01-01') },
    range: 12,
    data: {
       source: response,
       x: 'date',
       y: 'contributionCount',
       defaultValue: 0
    },
    scale: {
      color: {
        type: 'threshold',
        range: ['#14432a', '#166b34', '#37a446', '#4dd05a'],
        domain: [10, 20, 30],
      },
    },
    [
    [
      Tooltip,
      {
        text: function (date, value, dayjsDate) {
          return (
            (value ? value : 'No') +
            ' contributions on ' +
            dayjsDate.format('dddd, MMMM D, YYYY')
          );
        },
      },
    ],
    [
      CalendarLabel,
      {
        width: 30,
        textAlign: 'start',
        text: () => dayjs.weekdaysShort().map((d, i) => (i % 2 == 0 ? '' : d)),
        padding: [25, 0, 0, 0],
      },
    ],
]
});

Dengan ini sekarang, anda sepatutnya dapat melihat peta haba yang cantik bagi sumbangan GitHub anda.

GitHub like Contribution HeatMap in JS

Ikuti saya di X(dahulunya Twitter) untuk lebih banyak barangan teknologi

Atas ialah kandungan terperinci GitHub seperti Contribution HeatMap dalam JS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn