analytics ━━━━━━━━━ I've been posting on this site since 2016, when layoffs were rolling through the company I worked for at the time. Starting a personal blog and a pile of... Date: January 22, 2025 I’ve been posting on this site since 2016, when layoffs were rolling through the company I worked for at the time. Starting a personal blog and a pile of side projects felt like one of the best things I could do for my resume, so off I went. This site is built on markata </markata/>, more about that in the /colophon. Image: screenshot-2025-01-31T21-23-13-643Z.png The old version of this page embedded static SVGs from my Python Markata build. Those files are gone in the markata-go site, so this page now renders the yearly posting history directly from the current content set. Post Contributions All Time Monthly ─────────────────────────────────── Contribution Graph Error: Invalid JSON configuration [code] invalid character '%' looking for beginning of object key string Post Contributions in 2026 ────────────────────────── Post Contributions in 2025 ────────────────────────── Post Contributions in 2024 ────────────────────────── Post Contributions in 2023 ────────────────────────── 2023 was a very busy year for me and I started slowing down. About mid year I felt like I had a lot that I wanted to get out, but felt like I couldn’t, because I did not have the time to blog, so I added Thoughts </thoughts/> on 7/22/2023 with this first thought <https://waylonwalker.com/thoughts-2/>. │ Notice the huge uptick that started immediately as shots was released Post Contributions in 2022 ────────────────────────── Post Contributions in 2021 ────────────────────────── At the End of 2021 I started posting [[ til ]]s daily for a few months. This is the point when I really started lowering the barrier to entry to make a blog post. A blog post did not need to be a super long essay, but could be the size of a tweet. Post Contributions in 2020 ────────────────────────── Post Contributions in 2019 ────────────────────────── 2019 was a huge learning year for me. I was very busy leading a migration to the cloud, containerized data pipeline orchestration, and setting up new projects and templates using Kedro </kedro/> Post Contributions in 2018 ────────────────────────── This was the year I really started reaching for the terminal kicking off the year with Vim Notes </vim-notes/> and rounding out with 📝 Bash Notes </bash/>. I had been watching luke smith for a awhile, and started managing my first linux server at work. I was stuck with windows at the time, but wsl was a new thing that let me run linux in the terminal. Post Contributions in 2017 ────────────────────────── 2017 was the year of getting started, I was coming up on 5 years into my career, and layoffs were happening hard at the time. I remember fist landing 5 years before and being told in the companies long history they have never laid off engineers, it was a very safe place to be. This was a wake up call that it might all turn around and I would take nothing with me. Blogging became my way to document things I was learning, it was making be better at communicating, and giving me a reason to take a deeper dive into interesting topics. Post Contributions in 2016 ────────────────────────── 2016 was the year that I created my github account, and really got serious about career switching from Mechanical Engineering to Software Engineering. All of my 2016 posts are back-dated github stars. .contribution-graph-container { width: 100%; overflow: hidden; margin: 1rem 0; display: flex; justify-content: center; } .contribution-graph-container > div { flex-shrink: 0; transform-origin: top center; } #ch-tooltip { background: var(--color-surface, #333); color: var(--color-text, #fff); padding: 0.5rem 0.75rem; border-radius: 4px; font-size: 0.875rem; box-shadow: 0 2px 8px rgba(0,0,0,0.2); z-index: 10000 !important; } document.addEventListener('DOMContentLoaded', function() { // Initialize graphs (function() { const graphId = 'contribution-graph-1'; const data = [{"date":"2026-01-01","value":5},{"date":"2026-01-02","value":3},{"date":"2026-01-03","value":4},{"date":"2026-01-04","value":5},{"date":"2026-01-05","value":3},{"date":"2026-01-06","value":1},{"date":"2026-01-07","value":1},{"date":"2026-01-08","value":7},{"date":"2026-01-09","value":3},{"date":"2026-01-10","value":2},{"date":"2026-01-11","value":6},{"date":"2026-01-12","value":4},{"date":"2026-01-13","value":6},{"date":"2026-01-14","value":6},{"date":"2026-01-15","value":6},{"date":"2026-01-17","value":1},{"date":"2026-01-18","value":1},{"date":"2026-01-19","value":3},{"date":"2026-01-21","value":3},{"date":"2026-01-22","value":2},{"date":"2026-01-23","value":2},{"date":"2026-01-24","value":2},{"date":"2026-01-25","value":1},{"date":"2026-01-26","value":5},{"date":"2026-01-27","value":1},{"date":"2026-01-28","value":1},{"date":"2026-01-29","value":1},{"date":"2026-01-30","value":1},{"date":"2026-02-02","value":2},{"date":"2026-02-03","value":6},{"date":"2026-02-04","value":1},{"date":"2026-02-05","value":2},{"date":"2026-02-06","value":3},{"date":"2026-02-07","value":3},{"date":"2026-02-09","value":2},{"date":"2026-02-10","value":2},{"date":"2026-02-11","value":6},{"date":"2026-02-12","value":1},{"date":"2026-02-13","value":1},{"date":"2026-02-14","value":3},{"date":"2026-02-16","value":4},{"date":"2026-02-17","value":3},{"date":"2026-02-18","value":1},{"date":"2026-02-19","value":4},{"date":"2026-02-20","value":1},{"date":"2026-02-21","value":1},{"date":"2026-02-22","value":1},{"date":"2026-02-23","value":6},{"date":"2026-02-24","value":4},{"date":"2026-02-25","value":5},{"date":"2026-02-26","value":2},{"date":"2026-02-27","value":3},{"date":"2026-02-28","value":3},{"date":"2026-03-01","value":1},{"date":"2026-03-02","value":4},{"date":"2026-03-03","value":2},{"date":"2026-03-04","value":5},{"date":"2026-03-05","value":2},{"date":"2026-03-06","value":3},{"date":"2026-03-07","value":2},{"date":"2026-03-09","value":4},{"date":"2026-03-10","value":1},{"date":"2026-03-12","value":1},{"date":"2026-03-13","value":1},{"date":"2026-03-15","value":3},{"date":"2026-03-16","value":3},{"date":"2026-03-17","value":12},{"date":"2026-03-18","value":3},{"date":"2026-03-19","value":4},{"date":"2026-03-20","value":1},{"date":"2026-03-21","value":1},{"date":"2026-03-22","value":2},{"date":"2026-03-23","value":5},{"date":"2026-03-24","value":1},{"date":"2026-03-25","value":3},{"date":"2026-03-26","value":4},{"date":"2026-03-27","value":2},{"date":"2026-03-28","value":2},{"date":"2026-03-29","value":4},{"date":"2026-03-30","value":2},{"date":"2026-03-31","value":9},{"date":"2026-04-01","value":2},{"date":"2026-04-02","value":7},{"date":"2026-04-03","value":4},{"date":"2026-04-04","value":1},{"date":"2026-04-05","value":2},{"date":"2026-04-08","value":4},{"date":"2026-04-09","value":2},{"date":"2026-04-12","value":2},{"date":"2026-04-13","value":4},{"date":"2026-04-14","value":4},{"date":"2026-04-15","value":4},{"date":"2026-04-16","value":1},{"date":"2026-04-17","value":1},{"date":"2026-04-18","value":2},{"date":"2026-04-19","value":1},{"date":"2026-04-21","value":1},{"date":"2026-04-26","value":2},{"date":"2026-04-27","value":1},{"date":"2026-04-28","value":1},{"date":"2026-04-29","value":1},{"date":"2026-05-01","value":1},{"date":"2026-05-02","value":3},{"date":"2026-05-05","value":2}]; const options = {date: { start: new Date('2026-01-01') }, domain: { type: 'year' }, subDomain: { type: 'day' }, range: 1}; const maxValue = 12; const displayData = data.map(function(point) { const value = point.value || 0; if (options.maxValue && value > options.maxValue) { return Object.assign({}, point, { value: options.maxValue }); } return point; }); function fitGraph() { const inner = document.getElementById(graphId); if (!inner) return; const outer = inner.parentElement; if (!outer) return; if (!inner.dataset.baseWidth) { inner.dataset.baseWidth = String(inner.scrollWidth || inner.getBoundingClientRect().width || 0); } const baseWidth = Number(inner.dataset.baseWidth) || inner.scrollWidth || inner.getBoundingClientRect().width || 0; const scale = baseWidth > 0 ? Math.min(1, outer.clientWidth / baseWidth) : 1; inner.style.zoom = String(scale); } function paintGraph() { // Clear existing graph const container = document.getElementById(graphId); if (!container) return; container.innerHTML = ''; delete container.dataset.baseWidth; // Get theme colors from CSS variables const styles = getComputedStyle(document.documentElement); const bgColor = styles.getPropertyValue('--color-background').trim(); const surfaceColor = styles.getPropertyValue('--color-surface').trim(); const primaryColor = styles.getPropertyValue('--color-primary').trim(); // Use surface color as base, primary as accent const baseColor = surfaceColor || bgColor || '#ebedf0'; const accentColor = primaryColor || '#216e39'; const cal = new CalHeatmap(); cal.paint( { itemSelector: '#' + graphId, data: { source: displayData, x: 'date', y: 'value' }, date: options.date, domain: options.domain || { type: 'year' }, subDomain: options.subDomain || { type: 'day' }, range: options.range, scale: { color: { type: 'linear', range: [baseColor, accentColor], domain: [0, maxValue] } } }, [ [ Tooltip, { text: function (date, value, dayjsDate) { const original = data.find(function(point) { return point.date === dayjsDate.format('YYYY-MM-DD'); }); const originalValue = original ? (original.value || 0) : (value || 0); return (originalValue ? originalValue : 'No') + ' posts on ' + dayjsDate.format('MMM D, YYYY'); }, }, ], ] ); fitGraph(); } // Initial paint paintGraph(); // Register for theme changes if (!window._contributionGraphPainters) { window._contributionGraphPainters = []; } window._contributionGraphPainters.push(paintGraph); if (!window._contributionGraphFitters) { window._contributionGraphFitters = []; } window._contributionGraphFitters.push(fitGraph); })(); (function() { const graphId = 'contribution-graph-2'; const data = [{"date":"2025-01-02","value":6},{"date":"2025-01-03","value":6},{"date":"2025-01-04","value":5},{"date":"2025-01-06","value":3},{"date":"2025-01-07","value":1},{"date":"2025-01-08","value":3},{"date":"2025-01-09","value":12},{"date":"2025-01-10","value":3},{"date":"2025-01-11","value":3},{"date":"2025-01-12","value":3},{"date":"2025-01-13","value":5},{"date":"2025-01-16","value":1},{"date":"2025-01-17","value":2},{"date":"2025-01-18","value":2},{"date":"2025-01-19","value":5},{"date":"2025-01-20","value":3},{"date":"2025-01-21","value":11},{"date":"2025-01-22","value":2},{"date":"2025-01-23","value":2},{"date":"2025-01-24","value":2},{"date":"2025-01-25","value":1},{"date":"2025-01-27","value":1},{"date":"2025-01-28","value":2},{"date":"2025-01-29","value":2},{"date":"2025-01-30","value":2},{"date":"2025-01-31","value":7},{"date":"2025-02-01","value":4},{"date":"2025-02-02","value":5},{"date":"2025-02-03","value":2},{"date":"2025-02-05","value":2},{"date":"2025-02-07","value":3},{"date":"2025-02-08","value":2},{"date":"2025-02-09","value":3},{"date":"2025-02-10","value":2},{"date":"2025-02-11","value":2},{"date":"2025-02-12","value":6},{"date":"2025-02-13","value":6},{"date":"2025-02-14","value":7},{"date":"2025-02-15","value":6},{"date":"2025-02-16","value":1},{"date":"2025-02-17","value":11},{"date":"2025-02-18","value":3},{"date":"2025-02-20","value":1},{"date":"2025-02-21","value":3},{"date":"2025-02-22","value":1},{"date":"2025-02-23","value":2},{"date":"2025-02-25","value":1},{"date":"2025-02-26","value":1},{"date":"2025-02-28","value":2},{"date":"2025-03-01","value":3},{"date":"2025-03-02","value":1},{"date":"2025-03-03","value":1},{"date":"2025-03-04","value":1},{"date":"2025-03-06","value":2},{"date":"2025-03-08","value":1},{"date":"2025-03-11","value":1},{"date":"2025-03-12","value":1},{"date":"2025-03-13","value":1},{"date":"2025-03-14","value":2},{"date":"2025-03-15","value":2},{"date":"2025-03-17","value":2},{"date":"2025-03-20","value":2},{"date":"2025-03-24","value":1},{"date":"2025-03-25","value":1},{"date":"2025-03-26","value":1},{"date":"2025-03-29","value":1},{"date":"2025-04-04","value":1},{"date":"2025-04-07","value":2},{"date":"2025-04-09","value":3},{"date":"2025-04-12","value":2},{"date":"2025-04-13","value":1},{"date":"2025-04-15","value":3},{"date":"2025-04-17","value":1},{"date":"2025-04-19","value":1},{"date":"2025-04-20","value":1},{"date":"2025-04-22","value":2},{"date":"2025-04-24","value":1},{"date":"2025-04-25","value":1},{"date":"2025-04-27","value":1},{"date":"2025-04-28","value":6},{"date":"2025-04-30","value":1},{"date":"2025-05-01","value":9},{"date":"2025-05-02","value":2},{"date":"2025-05-04","value":4},{"date":"2025-05-05","value":3},{"date":"2025-05-06","value":2},{"date":"2025-05-07","value":4},{"date":"2025-05-09","value":4},{"date":"2025-05-10","value":4},{"date":"2025-05-11","value":3},{"date":"2025-05-12","value":1},{"date":"2025-05-16","value":1},{"date":"2025-05-18","value":1},{"date":"2025-05-19","value":1},{"date":"2025-05-21","value":1},{"date":"2025-05-22","value":3},{"date":"2025-05-23","value":1},{"date":"2025-05-24","value":4},{"date":"2025-05-25","value":1},{"date":"2025-05-26","value":1},{"date":"2025-05-27","value":5},{"date":"2025-05-28","value":5},{"date":"2025-05-29","value":3},{"date":"2025-05-31","value":10},{"date":"2025-06-01","value":1},{"date":"2025-06-02","value":2},{"date":"2025-06-03","value":3},{"date":"2025-06-04","value":2},{"date":"2025-06-05","value":3},{"date":"2025-06-06","value":8},{"date":"2025-06-07","value":7},{"date":"2025-06-08","value":2},{"date":"2025-06-09","value":1},{"date":"2025-06-10","value":4},{"date":"2025-06-11","value":2},{"date":"2025-06-13","value":1},{"date":"2025-06-14","value":2},{"date":"2025-06-15","value":1},{"date":"2025-06-16","value":1},{"date":"2025-06-17","value":2},{"date":"2025-06-18","value":2},{"date":"2025-06-19","value":2},{"date":"2025-06-21","value":1},{"date":"2025-06-22","value":1},{"date":"2025-06-23","value":4},{"date":"2025-06-24","value":3},{"date":"2025-06-25","value":1},{"date":"2025-06-26","value":2},{"date":"2025-06-27","value":2},{"date":"2025-06-29","value":3},{"date":"2025-06-30","value":2},{"date":"2025-07-01","value":2},{"date":"2025-07-02","value":2},{"date":"2025-07-04","value":3},{"date":"2025-07-05","value":2},{"date":"2025-07-06","value":7},{"date":"2025-07-07","value":2},{"date":"2025-07-08","value":3},{"date":"2025-07-09","value":3},{"date":"2025-07-10","value":1},{"date":"2025-07-11","value":1},{"date":"2025-07-12","value":2},{"date":"2025-07-15","value":2},{"date":"2025-07-16","value":2},{"date":"2025-07-17","value":3},{"date":"2025-07-18","value":4},{"date":"2025-07-19","value":1},{"date":"2025-07-21","value":2},{"date":"2025-07-22","value":2},{"date":"2025-07-23","value":1},{"date":"2025-07-24","value":1},{"date":"2025-07-25","value":4},{"date":"2025-07-26","value":2},{"date":"2025-07-27","value":2},{"date":"2025-07-28","value":4},{"date":"2025-07-29","value":6},{"date":"2025-07-30","value":5},{"date":"2025-07-31","value":2},{"date":"2025-08-01","value":2},{"date":"2025-08-02","value":7},{"date":"2025-08-03","value":2},{"date":"2025-08-04","value":4},{"date":"2025-08-05","value":6},{"date":"2025-08-06","value":4},{"date":"2025-08-07","value":3},{"date":"2025-08-08","value":3},{"date":"2025-08-09","value":3},{"date":"2025-08-10","value":4},{"date":"2025-08-11","value":2},{"date":"2025-08-12","value":4},{"date":"2025-08-13","value":1},{"date":"2025-08-14","value":3},{"date":"2025-08-15","value":2},{"date":"2025-08-16","value":2},{"date":"2025-08-17","value":4},{"date":"2025-08-18","value":4},{"date":"2025-08-21","value":5},{"date":"2025-08-22","value":1},{"date":"2025-08-23","value":11},{"date":"2025-08-24","value":1},{"date":"2025-08-25","value":7},{"date":"2025-08-26","value":5},{"date":"2025-08-27","value":5},{"date":"2025-08-28","value":2},{"date":"2025-08-29","value":6},{"date":"2025-08-30","value":7},{"date":"2025-08-31","value":7},{"date":"2025-09-02","value":5},{"date":"2025-09-03","value":2},{"date":"2025-09-04","value":3},{"date":"2025-09-05","value":3},{"date":"2025-09-07","value":1},{"date":"2025-09-08","value":1},{"date":"2025-09-10","value":2},{"date":"2025-09-11","value":1},{"date":"2025-09-13","value":1},{"date":"2025-09-16","value":8},{"date":"2025-09-17","value":3},{"date":"2025-09-18","value":2},{"date":"2025-09-19","value":4},{"date":"2025-09-20","value":6},{"date":"2025-09-21","value":5},{"date":"2025-09-23","value":3},{"date":"2025-09-25","value":1},{"date":"2025-09-26","value":3},{"date":"2025-09-27","value":7},{"date":"2025-09-28","value":1},{"date":"2025-09-29","value":4},{"date":"2025-10-01","value":1},{"date":"2025-10-02","value":1},{"date":"2025-10-03","value":5},{"date":"2025-10-05","value":1},{"date":"2025-10-08","value":1},{"date":"2025-10-09","value":1},{"date":"2025-10-10","value":2},{"date":"2025-10-11","value":1},{"date":"2025-10-12","value":3},{"date":"2025-10-15","value":1},{"date":"2025-10-16","value":1},{"date":"2025-10-18","value":2},{"date":"2025-10-19","value":1},{"date":"2025-10-20","value":1},{"date":"2025-10-21","value":1},{"date":"2025-10-22","value":3},{"date":"2025-10-23","value":2},{"date":"2025-10-24","value":5},{"date":"2025-10-26","value":1},{"date":"2025-10-27","value":1},{"date":"2025-10-28","value":2},{"date":"2025-10-29","value":3},{"date":"2025-10-30","value":1},{"date":"2025-10-31","value":1},{"date":"2025-11-01","value":3},{"date":"2025-11-02","value":6},{"date":"2025-11-04","value":3},{"date":"2025-11-05","value":2},{"date":"2025-11-06","value":1},{"date":"2025-11-09","value":2},{"date":"2025-11-11","value":4},{"date":"2025-11-12","value":3},{"date":"2025-11-15","value":2},{"date":"2025-11-17","value":1},{"date":"2025-11-18","value":1},{"date":"2025-11-19","value":2},{"date":"2025-11-20","value":1},{"date":"2025-11-21","value":2},{"date":"2025-11-23","value":4},{"date":"2025-11-24","value":1},{"date":"2025-11-26","value":1},{"date":"2025-11-27","value":1},{"date":"2025-11-28","value":4},{"date":"2025-11-29","value":1},{"date":"2025-11-30","value":1},{"date":"2025-12-01","value":7},{"date":"2025-12-02","value":2},{"date":"2025-12-03","value":2},{"date":"2025-12-04","value":3},{"date":"2025-12-05","value":3},{"date":"2025-12-06","value":15},{"date":"2025-12-07","value":8},{"date":"2025-12-08","value":6},{"date":"2025-12-09","value":9},{"date":"2025-12-10","value":4},{"date":"2025-12-11","value":1},{"date":"2025-12-12","value":3},{"date":"2025-12-13","value":2},{"date":"2025-12-14","value":4},{"date":"2025-12-15","value":1},{"date":"2025-12-16","value":3},{"date":"2025-12-17","value":3},{"date":"2025-12-18","value":2},{"date":"2025-12-19","value":3},{"date":"2025-12-20","value":3},{"date":"2025-12-21","value":6},{"date":"2025-12-22","value":7},{"date":"2025-12-23","value":2},{"date":"2025-12-24","value":2},{"date":"2025-12-25","value":1},{"date":"2025-12-28","value":1},{"date":"2025-12-29","value":3},{"date":"2025-12-31","value":1}]; const options = {date: { start: new Date('2025-01-01') }, domain: { type: 'year' }, subDomain: { type: 'day' }, range: 1}; const maxValue = 15; const displayData = data.map(function(point) { const value = point.value || 0; if (options.maxValue && value > options.maxValue) { return Object.assign({}, point, { value: options.maxValue }); } return point; }); function fitGraph() { const inner = document.getElementById(graphId); if (!inner) return; const outer = inner.parentElement; if (!outer) return; if (!inner.dataset.baseWidth) { inner.dataset.baseWidth = String(inner.scrollWidth || inner.getBoundingClientRect().width || 0); } const baseWidth = Number(inner.dataset.baseWidth) || inner.scrollWidth || inner.getBoundingClientRect().width || 0; const scale = baseWidth > 0 ? Math.min(1, outer.clientWidth / baseWidth) : 1; inner.style.zoom = String(scale); } function paintGraph() { // Clear existing graph const container = document.getElementById(graphId); if (!container) return; container.innerHTML = ''; delete container.dataset.baseWidth; // Get theme colors from CSS variables const styles = getComputedStyle(document.documentElement); const bgColor = styles.getPropertyValue('--color-background').trim(); const surfaceColor = styles.getPropertyValue('--color-surface').trim(); const primaryColor = styles.getPropertyValue('--color-primary').trim(); // Use surface color as base, primary as accent const baseColor = surfaceColor || bgColor || '#ebedf0'; const accentColor = primaryColor || '#216e39'; const cal = new CalHeatmap(); cal.paint( { itemSelector: '#' + graphId, data: { source: displayData, x: 'date', y: 'value' }, date: options.date, domain: options.domain || { type: 'year' }, subDomain: options.subDomain || { type: 'day' }, range: options.range, scale: { color: { type: 'linear', range: [baseColor, accentColor], domain: [0, maxValue] } } }, [ [ Tooltip, { text: function (date, value, dayjsDate) { const original = data.find(function(point) { return point.date === dayjsDate.format('YYYY-MM-DD'); }); const originalValue = original ? (original.value || 0) : (value || 0); return (originalValue ? originalValue : 'No') + ' posts on ' + dayjsDate.format('MMM D, YYYY'); }, }, ], ] ); fitGraph(); } // Initial paint paintGraph(); // Register for theme changes if (!window._contributionGraphPainters) { window._contributionGraphPainters = []; } window._contributionGraphPainters.push(paintGraph); if (!window._contributionGraphFitters) { window._contributionGraphFitters = []; } window._contributionGraphFitters.push(fitGraph); })(); (function() { const graphId = 'contribution-graph-3'; const data = [{"date":"2024-01-12","value":1},{"date":"2024-01-14","value":1},{"date":"2024-01-25","value":1},{"date":"2024-01-26","value":4},{"date":"2024-01-28","value":1},{"date":"2024-01-30","value":3},{"date":"2024-02-03","value":1},{"date":"2024-02-09","value":1},{"date":"2024-02-11","value":1},{"date":"2024-02-16","value":1},{"date":"2024-02-27","value":2},{"date":"2024-03-01","value":3},{"date":"2024-03-04","value":3},{"date":"2024-03-06","value":3},{"date":"2024-03-07","value":5},{"date":"2024-03-09","value":2},{"date":"2024-03-14","value":1},{"date":"2024-03-15","value":4},{"date":"2024-03-16","value":2},{"date":"2024-03-18","value":1},{"date":"2024-03-19","value":3},{"date":"2024-03-20","value":2},{"date":"2024-03-21","value":1},{"date":"2024-03-24","value":1},{"date":"2024-03-25","value":1},{"date":"2024-03-26","value":3},{"date":"2024-03-27","value":2},{"date":"2024-03-28","value":1},{"date":"2024-03-29","value":1},{"date":"2024-03-30","value":1},{"date":"2024-04-01","value":5},{"date":"2024-04-02","value":1},{"date":"2024-04-03","value":2},{"date":"2024-04-04","value":1},{"date":"2024-04-05","value":1},{"date":"2024-04-06","value":1},{"date":"2024-04-07","value":4},{"date":"2024-04-08","value":3},{"date":"2024-04-09","value":3},{"date":"2024-04-10","value":2},{"date":"2024-04-11","value":2},{"date":"2024-04-12","value":1},{"date":"2024-04-13","value":2},{"date":"2024-04-14","value":1},{"date":"2024-04-15","value":1},{"date":"2024-04-16","value":3},{"date":"2024-04-17","value":5},{"date":"2024-04-18","value":3},{"date":"2024-04-19","value":3},{"date":"2024-04-20","value":5},{"date":"2024-04-21","value":1},{"date":"2024-04-22","value":1},{"date":"2024-04-23","value":1},{"date":"2024-04-24","value":1},{"date":"2024-04-25","value":2},{"date":"2024-04-30","value":7},{"date":"2024-05-01","value":3},{"date":"2024-05-02","value":3},{"date":"2024-05-08","value":1},{"date":"2024-05-09","value":1},{"date":"2024-05-10","value":1},{"date":"2024-05-11","value":1},{"date":"2024-05-12","value":3},{"date":"2024-05-14","value":3},{"date":"2024-05-16","value":2},{"date":"2024-05-21","value":2},{"date":"2024-05-22","value":4},{"date":"2024-05-25","value":2},{"date":"2024-05-26","value":2},{"date":"2024-05-30","value":8},{"date":"2024-05-31","value":3},{"date":"2024-06-01","value":4},{"date":"2024-06-03","value":4},{"date":"2024-06-04","value":2},{"date":"2024-06-06","value":4},{"date":"2024-06-07","value":3},{"date":"2024-06-08","value":1},{"date":"2024-06-09","value":3},{"date":"2024-06-10","value":3},{"date":"2024-06-11","value":1},{"date":"2024-06-12","value":4},{"date":"2024-06-14","value":1},{"date":"2024-06-16","value":2},{"date":"2024-06-18","value":1},{"date":"2024-06-23","value":1},{"date":"2024-06-24","value":5},{"date":"2024-06-25","value":2},{"date":"2024-06-26","value":3},{"date":"2024-06-28","value":5},{"date":"2024-06-30","value":1},{"date":"2024-07-01","value":4},{"date":"2024-07-02","value":5},{"date":"2024-07-03","value":5},{"date":"2024-07-04","value":3},{"date":"2024-07-05","value":1},{"date":"2024-07-06","value":7},{"date":"2024-07-07","value":1},{"date":"2024-07-09","value":2},{"date":"2024-07-10","value":4},{"date":"2024-07-11","value":5},{"date":"2024-07-12","value":1},{"date":"2024-07-13","value":2},{"date":"2024-07-15","value":3},{"date":"2024-07-17","value":2},{"date":"2024-07-18","value":1},{"date":"2024-07-19","value":1},{"date":"2024-07-20","value":1},{"date":"2024-07-21","value":1},{"date":"2024-07-22","value":1},{"date":"2024-07-23","value":1},{"date":"2024-07-24","value":6},{"date":"2024-07-25","value":4},{"date":"2024-07-26","value":2},{"date":"2024-07-27","value":1},{"date":"2024-07-30","value":1},{"date":"2024-07-31","value":2},{"date":"2024-08-01","value":4},{"date":"2024-08-02","value":2},{"date":"2024-08-04","value":1},{"date":"2024-08-05","value":7},{"date":"2024-08-07","value":1},{"date":"2024-08-12","value":2},{"date":"2024-08-15","value":1},{"date":"2024-08-21","value":2},{"date":"2024-08-23","value":1},{"date":"2024-08-27","value":1},{"date":"2024-08-29","value":2},{"date":"2024-09-03","value":1},{"date":"2024-09-07","value":2},{"date":"2024-09-13","value":2},{"date":"2024-09-15","value":1},{"date":"2024-09-16","value":1},{"date":"2024-09-18","value":2},{"date":"2024-09-23","value":1},{"date":"2024-09-24","value":1},{"date":"2024-09-27","value":1},{"date":"2024-09-28","value":1},{"date":"2024-09-29","value":1},{"date":"2024-09-30","value":2},{"date":"2024-10-02","value":1},{"date":"2024-10-03","value":1},{"date":"2024-10-04","value":4},{"date":"2024-10-05","value":1},{"date":"2024-10-08","value":8},{"date":"2024-10-09","value":1},{"date":"2024-10-11","value":3},{"date":"2024-10-15","value":2},{"date":"2024-10-16","value":1},{"date":"2024-10-20","value":2},{"date":"2024-10-25","value":1},{"date":"2024-10-27","value":3},{"date":"2024-10-29","value":9},{"date":"2024-10-30","value":1},{"date":"2024-10-31","value":1},{"date":"2024-11-01","value":1},{"date":"2024-11-04","value":1},{"date":"2024-11-05","value":3},{"date":"2024-11-06","value":2},{"date":"2024-11-08","value":1},{"date":"2024-11-12","value":1},{"date":"2024-11-15","value":1},{"date":"2024-11-16","value":1},{"date":"2024-11-17","value":2},{"date":"2024-11-18","value":1},{"date":"2024-11-19","value":2},{"date":"2024-11-21","value":2},{"date":"2024-11-22","value":1},{"date":"2024-11-24","value":2},{"date":"2024-11-25","value":3},{"date":"2024-11-27","value":1},{"date":"2024-12-02","value":1},{"date":"2024-12-03","value":2},{"date":"2024-12-04","value":2},{"date":"2024-12-05","value":1},{"date":"2024-12-06","value":1},{"date":"2024-12-11","value":2},{"date":"2024-12-13","value":1},{"date":"2024-12-14","value":4},{"date":"2024-12-16","value":2},{"date":"2024-12-17","value":1},{"date":"2024-12-18","value":11},{"date":"2024-12-19","value":1},{"date":"2024-12-22","value":3},{"date":"2024-12-23","value":1},{"date":"2024-12-24","value":6},{"date":"2024-12-25","value":4},{"date":"2024-12-26","value":3},{"date":"2024-12-27","value":4},{"date":"2024-12-28","value":3},{"date":"2024-12-30","value":6},{"date":"2024-12-31","value":2}]; const options = {date: { start: new Date('2024-01-01') }, domain: { type: 'year' }, subDomain: { type: 'day' }, range: 1}; const maxValue = 6; const displayData = data.map(function(point) { const value = point.value || 0; if (options.maxValue && value > options.maxValue) { return Object.assign({}, point, { value: options.maxValue }); } return point; }); function fitGraph() { const inner = document.getElementById(graphId); if (!inner) return; const outer = inner.parentElement; if (!outer) return; if (!inner.dataset.baseWidth) { inner.dataset.baseWidth = String(inner.scrollWidth || inner.getBoundingClientRect().width || 0); } const baseWidth = Number(inner.dataset.baseWidth) || inner.scrollWidth || inner.getBoundingClientRect().width || 0; const scale = baseWidth > 0 ? Math.min(1, outer.clientWidth / baseWidth) : 1; inner.style.zoom = String(scale); } function paintGraph() { // Clear existing graph const container = document.getElementById(graphId); if (!container) return; container.innerHTML = ''; delete container.dataset.baseWidth; // Get theme colors from CSS variables const styles = getComputedStyle(document.documentElement); const bgColor = styles.getPropertyValue('--color-background').trim(); const surfaceColor = styles.getPropertyValue('--color-surface').trim(); const primaryColor = styles.getPropertyValue('--color-primary').trim(); // Use surface color as base, primary as accent const baseColor = surfaceColor || bgColor || '#ebedf0'; const accentColor = primaryColor || '#216e39'; const cal = new CalHeatmap(); cal.paint( { itemSelector: '#' + graphId, data: { source: displayData, x: 'date', y: 'value' }, date: options.date, domain: options.domain || { type: 'year' }, subDomain: options.subDomain || { type: 'day' }, range: options.range, scale: { color: { type: 'linear', range: [baseColor, accentColor], domain: [0, maxValue] } } }, [ [ Tooltip, { text: function (date, value, dayjsDate) { const original = data.find(function(point) { return point.date === dayjsDate.format('YYYY-MM-DD'); }); const originalValue = original ? (original.value || 0) : (value || 0); return (originalValue ? originalValue : 'No') + ' posts on ' + dayjsDate.format('MMM D, YYYY'); }, }, ], ] ); fitGraph(); } // Initial paint paintGraph(); // Register for theme changes if (!window._contributionGraphPainters) { window._contributionGraphPainters = []; } window._contributionGraphPainters.push(paintGraph); if (!window._contributionGraphFitters) { window._contributionGraphFitters = []; } window._contributionGraphFitters.push(fitGraph); })(); (function() { const graphId = 'contribution-graph-4'; const data = [{"date":"2023-01-15","value":1},{"date":"2023-01-16","value":4},{"date":"2023-01-18","value":1},{"date":"2023-01-19","value":2},{"date":"2023-01-23","value":2},{"date":"2023-01-27","value":2},{"date":"2023-01-28","value":4},{"date":"2023-01-30","value":1},{"date":"2023-02-01","value":1},{"date":"2023-02-02","value":1},{"date":"2023-02-05","value":2},{"date":"2023-02-06","value":1},{"date":"2023-02-07","value":2},{"date":"2023-02-09","value":1},{"date":"2023-02-11","value":2},{"date":"2023-02-12","value":2},{"date":"2023-02-13","value":1},{"date":"2023-02-15","value":1},{"date":"2023-02-20","value":1},{"date":"2023-02-21","value":4},{"date":"2023-02-28","value":1},{"date":"2023-03-03","value":1},{"date":"2023-03-07","value":4},{"date":"2023-03-08","value":1},{"date":"2023-03-13","value":2},{"date":"2023-03-21","value":3},{"date":"2023-04-04","value":1},{"date":"2023-04-09","value":2},{"date":"2023-04-10","value":1},{"date":"2023-04-11","value":1},{"date":"2023-04-12","value":1},{"date":"2023-04-18","value":1},{"date":"2023-04-27","value":1},{"date":"2023-04-30","value":1},{"date":"2023-05-01","value":1},{"date":"2023-05-03","value":1},{"date":"2023-05-10","value":1},{"date":"2023-05-15","value":2},{"date":"2023-05-21","value":1},{"date":"2023-05-23","value":1},{"date":"2023-05-27","value":2},{"date":"2023-05-28","value":1},{"date":"2023-05-30","value":3},{"date":"2023-06-15","value":1},{"date":"2023-06-16","value":1},{"date":"2023-06-17","value":1},{"date":"2023-06-24","value":1},{"date":"2023-06-27","value":1},{"date":"2023-07-03","value":1},{"date":"2023-07-09","value":1},{"date":"2023-07-11","value":1},{"date":"2023-07-20","value":1},{"date":"2023-07-25","value":2},{"date":"2023-07-28","value":42},{"date":"2023-07-29","value":8},{"date":"2023-07-30","value":2},{"date":"2023-07-31","value":1},{"date":"2023-08-01","value":2},{"date":"2023-08-02","value":1},{"date":"2023-08-04","value":3},{"date":"2023-08-05","value":3},{"date":"2023-08-06","value":1},{"date":"2023-08-08","value":2},{"date":"2023-08-09","value":3},{"date":"2023-08-10","value":3},{"date":"2023-08-11","value":2},{"date":"2023-08-15","value":1},{"date":"2023-08-16","value":2},{"date":"2023-08-19","value":1},{"date":"2023-08-20","value":1},{"date":"2023-08-21","value":6},{"date":"2023-08-22","value":1},{"date":"2023-08-23","value":2},{"date":"2023-08-24","value":1},{"date":"2023-08-26","value":1},{"date":"2023-09-01","value":1},{"date":"2023-09-02","value":3},{"date":"2023-09-06","value":1},{"date":"2023-09-07","value":2},{"date":"2023-09-08","value":2},{"date":"2023-09-10","value":2},{"date":"2023-09-13","value":1},{"date":"2023-09-17","value":1},{"date":"2023-09-19","value":1},{"date":"2023-09-20","value":3},{"date":"2023-09-22","value":1},{"date":"2023-09-23","value":2},{"date":"2023-09-25","value":1},{"date":"2023-09-29","value":1},{"date":"2023-09-30","value":4},{"date":"2023-10-01","value":2},{"date":"2023-10-03","value":2},{"date":"2023-10-04","value":2},{"date":"2023-10-05","value":3},{"date":"2023-10-08","value":2},{"date":"2023-10-10","value":2},{"date":"2023-10-11","value":2},{"date":"2023-10-12","value":1},{"date":"2023-10-13","value":2},{"date":"2023-10-14","value":3},{"date":"2023-10-17","value":4},{"date":"2023-10-18","value":1},{"date":"2023-10-19","value":1},{"date":"2023-10-20","value":3},{"date":"2023-10-21","value":4},{"date":"2023-10-22","value":4},{"date":"2023-10-23","value":1},{"date":"2023-10-25","value":2},{"date":"2023-10-28","value":4},{"date":"2023-10-30","value":2},{"date":"2023-10-31","value":5},{"date":"2023-11-01","value":3},{"date":"2023-11-03","value":1},{"date":"2023-11-04","value":1},{"date":"2023-11-05","value":1},{"date":"2023-11-11","value":2},{"date":"2023-11-14","value":2},{"date":"2023-11-18","value":1},{"date":"2023-11-22","value":1},{"date":"2023-11-27","value":3},{"date":"2023-11-28","value":1},{"date":"2023-11-29","value":1},{"date":"2023-11-30","value":4},{"date":"2023-12-04","value":1},{"date":"2023-12-06","value":2},{"date":"2023-12-07","value":1},{"date":"2023-12-09","value":1},{"date":"2023-12-10","value":1},{"date":"2023-12-11","value":1},{"date":"2023-12-12","value":2},{"date":"2023-12-13","value":7},{"date":"2023-12-14","value":3},{"date":"2023-12-15","value":3},{"date":"2023-12-17","value":4},{"date":"2023-12-20","value":4},{"date":"2023-12-21","value":1},{"date":"2023-12-22","value":2},{"date":"2023-12-25","value":1},{"date":"2023-12-26","value":1},{"date":"2023-12-28","value":1}]; const options = {date: { start: new Date('2023-01-01') }, domain: { type: 'year' }, subDomain: { type: 'day' }, range: 1}; const maxValue = 8; const displayData = data.map(function(point) { const value = point.value || 0; if (options.maxValue && value > options.maxValue) { return Object.assign({}, point, { value: options.maxValue }); } return point; }); function fitGraph() { const inner = document.getElementById(graphId); if (!inner) return; const outer = inner.parentElement; if (!outer) return; if (!inner.dataset.baseWidth) { inner.dataset.baseWidth = String(inner.scrollWidth || inner.getBoundingClientRect().width || 0); } const baseWidth = Number(inner.dataset.baseWidth) || inner.scrollWidth || inner.getBoundingClientRect().width || 0; const scale = baseWidth > 0 ? Math.min(1, outer.clientWidth / baseWidth) : 1; inner.style.zoom = String(scale); } function paintGraph() { // Clear existing graph const container = document.getElementById(graphId); if (!container) return; container.innerHTML = ''; delete container.dataset.baseWidth; // Get theme colors from CSS variables const styles = getComputedStyle(document.documentElement); const bgColor = styles.getPropertyValue('--color-background').trim(); const surfaceColor = styles.getPropertyValue('--color-surface').trim(); const primaryColor = styles.getPropertyValue('--color-primary').trim(); // Use surface color as base, primary as accent const baseColor = surfaceColor || bgColor || '#ebedf0'; const accentColor = primaryColor || '#216e39'; const cal = new CalHeatmap(); cal.paint( { itemSelector: '#' + graphId, data: { source: displayData, x: 'date', y: 'value' }, date: options.date, domain: options.domain || { type: 'year' }, subDomain: options.subDomain || { type: 'day' }, range: options.range, scale: { color: { type: 'linear', range: [baseColor, accentColor], domain: [0, maxValue] } } }, [ [ Tooltip, { text: function (date, value, dayjsDate) { const original = data.find(function(point) { return point.date === dayjsDate.format('YYYY-MM-DD'); }); const originalValue = original ? (original.value || 0) : (value || 0); return (originalValue ? originalValue : 'No') + ' posts on ' + dayjsDate.format('MMM D, YYYY'); }, }, ], ] ); fitGraph(); } // Initial paint paintGraph(); // Register for theme changes if (!window._contributionGraphPainters) { window._contributionGraphPainters = []; } window._contributionGraphPainters.push(paintGraph); if (!window._contributionGraphFitters) { window._contributionGraphFitters = []; } window._contributionGraphFitters.push(fitGraph); })(); (function() { const graphId = 'contribution-graph-5'; const data = [{"date":"2022-01-08","value":2},{"date":"2022-01-14","value":2},{"date":"2022-01-15","value":1},{"date":"2022-01-22","value":1},{"date":"2022-01-26","value":1},{"date":"2022-01-27","value":2},{"date":"2022-01-30","value":1},{"date":"2022-02-01","value":2},{"date":"2022-02-03","value":3},{"date":"2022-02-05","value":3},{"date":"2022-02-06","value":1},{"date":"2022-02-07","value":2},{"date":"2022-02-08","value":2},{"date":"2022-02-11","value":1},{"date":"2022-02-12","value":2},{"date":"2022-02-19","value":1},{"date":"2022-02-21","value":1},{"date":"2022-02-26","value":1},{"date":"2022-03-04","value":2},{"date":"2022-03-08","value":1},{"date":"2022-03-09","value":1},{"date":"2022-03-11","value":1},{"date":"2022-03-19","value":1},{"date":"2022-03-20","value":1},{"date":"2022-03-22","value":1},{"date":"2022-04-01","value":1},{"date":"2022-04-02","value":2},{"date":"2022-04-12","value":2},{"date":"2022-04-14","value":1},{"date":"2022-04-15","value":1},{"date":"2022-04-19","value":1},{"date":"2022-04-29","value":1},{"date":"2022-04-30","value":2},{"date":"2022-05-01","value":1},{"date":"2022-05-02","value":1},{"date":"2022-05-03","value":2},{"date":"2022-05-07","value":3},{"date":"2022-05-11","value":1},{"date":"2022-05-12","value":1},{"date":"2022-05-16","value":1},{"date":"2022-05-17","value":1},{"date":"2022-05-28","value":1},{"date":"2022-06-04","value":1},{"date":"2022-06-07","value":1},{"date":"2022-06-09","value":1},{"date":"2022-06-10","value":2},{"date":"2022-06-11","value":1},{"date":"2022-06-13","value":1},{"date":"2022-06-17","value":1},{"date":"2022-06-28","value":1},{"date":"2022-07-05","value":2},{"date":"2022-07-12","value":1},{"date":"2022-07-20","value":2},{"date":"2022-07-23","value":2},{"date":"2022-07-28","value":1},{"date":"2022-07-29","value":1},{"date":"2022-07-30","value":1},{"date":"2022-08-04","value":1},{"date":"2022-08-20","value":1},{"date":"2022-08-21","value":1},{"date":"2022-08-22","value":1},{"date":"2022-08-24","value":1},{"date":"2022-08-25","value":2},{"date":"2022-08-27","value":1},{"date":"2022-08-28","value":1},{"date":"2022-08-29","value":2},{"date":"2022-08-30","value":2},{"date":"2022-08-31","value":2},{"date":"2022-09-01","value":1},{"date":"2022-09-02","value":1},{"date":"2022-09-03","value":1},{"date":"2022-09-06","value":5},{"date":"2022-09-07","value":2},{"date":"2022-09-09","value":1},{"date":"2022-09-11","value":1},{"date":"2022-09-13","value":1},{"date":"2022-09-17","value":2},{"date":"2022-09-18","value":2},{"date":"2022-09-19","value":2},{"date":"2022-09-20","value":3},{"date":"2022-09-24","value":1},{"date":"2022-09-25","value":1},{"date":"2022-09-26","value":2},{"date":"2022-09-27","value":1},{"date":"2022-10-01","value":1},{"date":"2022-10-08","value":2},{"date":"2022-10-09","value":1},{"date":"2022-10-11","value":1},{"date":"2022-10-17","value":1},{"date":"2022-10-18","value":2},{"date":"2022-10-19","value":1},{"date":"2022-10-20","value":1},{"date":"2022-10-24","value":2},{"date":"2022-10-25","value":1},{"date":"2022-10-26","value":4},{"date":"2022-10-27","value":1},{"date":"2022-10-29","value":1},{"date":"2022-10-30","value":1},{"date":"2022-11-01","value":1},{"date":"2022-11-22","value":1},{"date":"2022-11-24","value":1},{"date":"2022-11-29","value":2},{"date":"2022-11-30","value":1},{"date":"2022-12-03","value":3},{"date":"2022-12-04","value":2},{"date":"2022-12-05","value":1},{"date":"2022-12-06","value":2},{"date":"2022-12-07","value":2},{"date":"2022-12-08","value":1},{"date":"2022-12-09","value":1},{"date":"2022-12-10","value":2},{"date":"2022-12-11","value":1},{"date":"2022-12-12","value":1},{"date":"2022-12-13","value":1},{"date":"2022-12-14","value":1},{"date":"2022-12-15","value":1},{"date":"2022-12-16","value":2},{"date":"2022-12-17","value":1},{"date":"2022-12-18","value":1},{"date":"2022-12-19","value":1},{"date":"2022-12-20","value":1},{"date":"2022-12-21","value":7},{"date":"2022-12-22","value":1},{"date":"2022-12-23","value":1},{"date":"2022-12-27","value":1}]; const options = {date: { start: new Date('2022-01-01') }, domain: { type: 'year' }, subDomain: { type: 'day' }, range: 1}; const maxValue = 7; const displayData = data.map(function(point) { const value = point.value || 0; if (options.maxValue && value > options.maxValue) { return Object.assign({}, point, { value: options.maxValue }); } return point; }); function fitGraph() { const inner = document.getElementById(graphId); if (!inner) return; const outer = inner.parentElement; if (!outer) return; if (!inner.dataset.baseWidth) { inner.dataset.baseWidth = String(inner.scrollWidth || inner.getBoundingClientRect().width || 0); } const baseWidth = Number(inner.dataset.baseWidth) || inner.scrollWidth || inner.getBoundingClientRect().width || 0; const scale = baseWidth > 0 ? Math.min(1, outer.clientWidth / baseWidth) : 1; inner.style.zoom = String(scale); } function paintGraph() { // Clear existing graph const container = document.getElementById(graphId); if (!container) return; container.innerHTML = ''; delete container.dataset.baseWidth; // Get theme colors from CSS variables const styles = getComputedStyle(document.documentElement); const bgColor = styles.getPropertyValue('--color-background').trim(); const surfaceColor = styles.getPropertyValue('--color-surface').trim(); const primaryColor = styles.getPropertyValue('--color-primary').trim(); // Use surface color as base, primary as accent const baseColor = surfaceColor || bgColor || '#ebedf0'; const accentColor = primaryColor || '#216e39'; const cal = new CalHeatmap(); cal.paint( { itemSelector: '#' + graphId, data: { source: displayData, x: 'date', y: 'value' }, date: options.date, domain: options.domain || { type: 'year' }, subDomain: options.subDomain || { type: 'day' }, range: options.range, scale: { color: { type: 'linear', range: [baseColor, accentColor], domain: [0, maxValue] } } }, [ [ Tooltip, { text: function (date, value, dayjsDate) { const original = data.find(function(point) { return point.date === dayjsDate.format('YYYY-MM-DD'); }); const originalValue = original ? (original.value || 0) : (value || 0); return (originalValue ? originalValue : 'No') + ' posts on ' + dayjsDate.format('MMM D, YYYY'); }, }, ], ] ); fitGraph(); } // Initial paint paintGraph(); // Register for theme changes if (!window._contributionGraphPainters) { window._contributionGraphPainters = []; } window._contributionGraphPainters.push(paintGraph); if (!window._contributionGraphFitters) { window._contributionGraphFitters = []; } window._contributionGraphFitters.push(fitGraph); })(); (function() { const graphId = 'contribution-graph-6'; const data = [{"date":"2021-01-02","value":1},{"date":"2021-01-03","value":1},{"date":"2021-01-04","value":2},{"date":"2021-01-06","value":1},{"date":"2021-01-08","value":3},{"date":"2021-01-09","value":2},{"date":"2021-01-10","value":2},{"date":"2021-01-11","value":2},{"date":"2021-01-14","value":1},{"date":"2021-01-17","value":2},{"date":"2021-01-18","value":1},{"date":"2021-01-19","value":1},{"date":"2021-01-20","value":5},{"date":"2021-01-21","value":1},{"date":"2021-01-22","value":2},{"date":"2021-01-25","value":1},{"date":"2021-01-27","value":1},{"date":"2021-01-28","value":1},{"date":"2021-02-01","value":1},{"date":"2021-02-17","value":1},{"date":"2021-02-25","value":1},{"date":"2021-03-03","value":1},{"date":"2021-03-06","value":2},{"date":"2021-03-08","value":1},{"date":"2021-03-14","value":1},{"date":"2021-03-20","value":1},{"date":"2021-03-22","value":1},{"date":"2021-03-24","value":1},{"date":"2021-03-25","value":1},{"date":"2021-03-26","value":3},{"date":"2021-03-27","value":1},{"date":"2021-03-29","value":1},{"date":"2021-04-01","value":1},{"date":"2021-04-02","value":2},{"date":"2021-04-05","value":2},{"date":"2021-04-07","value":4},{"date":"2021-04-08","value":1},{"date":"2021-04-10","value":1},{"date":"2021-04-12","value":1},{"date":"2021-04-14","value":1},{"date":"2021-04-15","value":2},{"date":"2021-04-16","value":2},{"date":"2021-04-17","value":1},{"date":"2021-04-18","value":1},{"date":"2021-04-19","value":1},{"date":"2021-04-20","value":2},{"date":"2021-04-21","value":1},{"date":"2021-04-23","value":1},{"date":"2021-04-26","value":3},{"date":"2021-04-29","value":1},{"date":"2021-05-02","value":2},{"date":"2021-05-05","value":1},{"date":"2021-05-07","value":2},{"date":"2021-05-10","value":1},{"date":"2021-05-11","value":2},{"date":"2021-05-13","value":1},{"date":"2021-05-14","value":2},{"date":"2021-05-17","value":1},{"date":"2021-05-20","value":1},{"date":"2021-05-21","value":2},{"date":"2021-05-23","value":3},{"date":"2021-05-29","value":1},{"date":"2021-05-31","value":1},{"date":"2021-06-02","value":1},{"date":"2021-06-04","value":4},{"date":"2021-06-05","value":1},{"date":"2021-06-06","value":1},{"date":"2021-06-07","value":1},{"date":"2021-06-08","value":1},{"date":"2021-06-10","value":2},{"date":"2021-06-11","value":2},{"date":"2021-06-12","value":1},{"date":"2021-06-19","value":1},{"date":"2021-06-22","value":1},{"date":"2021-07-01","value":2},{"date":"2021-07-08","value":1},{"date":"2021-07-09","value":1},{"date":"2021-07-14","value":2},{"date":"2021-07-15","value":1},{"date":"2021-07-16","value":1},{"date":"2021-07-17","value":3},{"date":"2021-07-18","value":1},{"date":"2021-07-19","value":1},{"date":"2021-07-20","value":2},{"date":"2021-07-21","value":1},{"date":"2021-07-22","value":1},{"date":"2021-07-23","value":1},{"date":"2021-07-24","value":2},{"date":"2021-07-25","value":1},{"date":"2021-07-26","value":1},{"date":"2021-07-27","value":1},{"date":"2021-07-28","value":1},{"date":"2021-07-29","value":1},{"date":"2021-07-30","value":1},{"date":"2021-07-31","value":2},{"date":"2021-08-01","value":2},{"date":"2021-08-02","value":3},{"date":"2021-08-03","value":2},{"date":"2021-08-04","value":1},{"date":"2021-08-05","value":1},{"date":"2021-08-06","value":1},{"date":"2021-08-07","value":1},{"date":"2021-08-08","value":2},{"date":"2021-08-09","value":1},{"date":"2021-08-11","value":2},{"date":"2021-08-12","value":1},{"date":"2021-08-13","value":1},{"date":"2021-08-14","value":1},{"date":"2021-08-16","value":1},{"date":"2021-08-17","value":1},{"date":"2021-08-18","value":2},{"date":"2021-08-20","value":1},{"date":"2021-08-21","value":1},{"date":"2021-08-22","value":1},{"date":"2021-08-23","value":1},{"date":"2021-08-24","value":1},{"date":"2021-08-28","value":1},{"date":"2021-08-30","value":4},{"date":"2021-09-03","value":2},{"date":"2021-09-05","value":1},{"date":"2021-09-09","value":1},{"date":"2021-09-13","value":2},{"date":"2021-09-19","value":1},{"date":"2021-10-01","value":1},{"date":"2021-10-05","value":1},{"date":"2021-10-10","value":2},{"date":"2021-10-11","value":3},{"date":"2021-10-12","value":1},{"date":"2021-10-15","value":1},{"date":"2021-10-17","value":1},{"date":"2021-10-19","value":2},{"date":"2021-10-20","value":2},{"date":"2021-10-28","value":1},{"date":"2021-10-29","value":2},{"date":"2021-10-30","value":2},{"date":"2021-11-04","value":1},{"date":"2021-11-06","value":1},{"date":"2021-11-08","value":1},{"date":"2021-11-15","value":1},{"date":"2021-11-17","value":1},{"date":"2021-11-20","value":2},{"date":"2021-11-29","value":1},{"date":"2021-11-30","value":3},{"date":"2021-12-02","value":2},{"date":"2021-12-03","value":2},{"date":"2021-12-04","value":1},{"date":"2021-12-08","value":1},{"date":"2021-12-11","value":1},{"date":"2021-12-17","value":1},{"date":"2021-12-20","value":1},{"date":"2021-12-21","value":1},{"date":"2021-12-24","value":1},{"date":"2021-12-28","value":1},{"date":"2021-12-29","value":2},{"date":"2021-12-30","value":1}]; const options = {date: { start: new Date('2021-01-01') }, domain: { type: 'year' }, subDomain: { type: 'day' }, range: 1}; const maxValue = 5; const displayData = data.map(function(point) { const value = point.value || 0; if (options.maxValue && value > options.maxValue) { return Object.assign({}, point, { value: options.maxValue }); } return point; }); function fitGraph() { const inner = document.getElementById(graphId); if (!inner) return; const outer = inner.parentElement; if (!outer) return; if (!inner.dataset.baseWidth) { inner.dataset.baseWidth = String(inner.scrollWidth || inner.getBoundingClientRect().width || 0); } const baseWidth = Number(inner.dataset.baseWidth) || inner.scrollWidth || inner.getBoundingClientRect().width || 0; const scale = baseWidth > 0 ? Math.min(1, outer.clientWidth / baseWidth) : 1; inner.style.zoom = String(scale); } function paintGraph() { // Clear existing graph const container = document.getElementById(graphId); if (!container) return; container.innerHTML = ''; delete container.dataset.baseWidth; // Get theme colors from CSS variables const styles = getComputedStyle(document.documentElement); const bgColor = styles.getPropertyValue('--color-background').trim(); const surfaceColor = styles.getPropertyValue('--color-surface').trim(); const primaryColor = styles.getPropertyValue('--color-primary').trim(); // Use surface color as base, primary as accent const baseColor = surfaceColor || bgColor || '#ebedf0'; const accentColor = primaryColor || '#216e39'; const cal = new CalHeatmap(); cal.paint( { itemSelector: '#' + graphId, data: { source: displayData, x: 'date', y: 'value' }, date: options.date, domain: options.domain || { type: 'year' }, subDomain: options.subDomain || { type: 'day' }, range: options.range, scale: { color: { type: 'linear', range: [baseColor, accentColor], domain: [0, maxValue] } } }, [ [ Tooltip, { text: function (date, value, dayjsDate) { const original = data.find(function(point) { return point.date === dayjsDate.format('YYYY-MM-DD'); }); const originalValue = original ? (original.value || 0) : (value || 0); return (originalValue ? originalValue : 'No') + ' posts on ' + dayjsDate.format('MMM D, YYYY'); }, }, ], ] ); fitGraph(); } // Initial paint paintGraph(); // Register for theme changes if (!window._contributionGraphPainters) { window._contributionGraphPainters = []; } window._contributionGraphPainters.push(paintGraph); if (!window._contributionGraphFitters) { window._contributionGraphFitters = []; } window._contributionGraphFitters.push(fitGraph); })(); (function() { const graphId = 'contribution-graph-7'; const data = [{"date":"2020-01-01","value":1},{"date":"2020-01-03","value":1},{"date":"2020-01-10","value":1},{"date":"2020-01-12","value":1},{"date":"2020-01-13","value":1},{"date":"2020-01-19","value":1},{"date":"2020-01-22","value":1},{"date":"2020-01-23","value":1},{"date":"2020-01-28","value":1},{"date":"2020-01-29","value":2},{"date":"2020-02-01","value":1},{"date":"2020-02-04","value":1},{"date":"2020-02-06","value":1},{"date":"2020-02-07","value":2},{"date":"2020-02-08","value":1},{"date":"2020-02-10","value":1},{"date":"2020-02-11","value":1},{"date":"2020-02-17","value":2},{"date":"2020-02-18","value":1},{"date":"2020-02-19","value":3},{"date":"2020-02-21","value":1},{"date":"2020-02-22","value":2},{"date":"2020-02-24","value":2},{"date":"2020-02-25","value":1},{"date":"2020-02-26","value":2},{"date":"2020-03-01","value":1},{"date":"2020-03-02","value":1},{"date":"2020-03-03","value":1},{"date":"2020-03-06","value":1},{"date":"2020-03-07","value":1},{"date":"2020-03-14","value":1},{"date":"2020-03-16","value":2},{"date":"2020-03-18","value":1},{"date":"2020-03-22","value":1},{"date":"2020-03-29","value":1},{"date":"2020-03-31","value":1},{"date":"2020-04-01","value":1},{"date":"2020-04-03","value":1},{"date":"2020-04-04","value":1},{"date":"2020-04-05","value":2},{"date":"2020-04-07","value":1},{"date":"2020-04-08","value":2},{"date":"2020-04-09","value":1},{"date":"2020-04-13","value":1},{"date":"2020-04-15","value":1},{"date":"2020-04-16","value":1},{"date":"2020-04-27","value":2},{"date":"2020-04-29","value":2},{"date":"2020-04-30","value":1},{"date":"2020-05-01","value":1},{"date":"2020-05-03","value":1},{"date":"2020-05-04","value":1},{"date":"2020-05-07","value":1},{"date":"2020-05-08","value":2},{"date":"2020-05-09","value":1},{"date":"2020-05-10","value":2},{"date":"2020-05-12","value":1},{"date":"2020-05-15","value":4},{"date":"2020-05-17","value":1},{"date":"2020-05-18","value":1},{"date":"2020-05-20","value":1},{"date":"2020-05-22","value":1},{"date":"2020-05-23","value":1},{"date":"2020-05-24","value":2},{"date":"2020-05-28","value":1},{"date":"2020-05-29","value":1},{"date":"2020-05-31","value":1},{"date":"2020-06-03","value":1},{"date":"2020-06-04","value":1},{"date":"2020-06-05","value":2},{"date":"2020-06-08","value":2},{"date":"2020-06-10","value":1},{"date":"2020-06-11","value":2},{"date":"2020-06-15","value":3},{"date":"2020-06-16","value":1},{"date":"2020-06-19","value":3},{"date":"2020-06-22","value":2},{"date":"2020-06-25","value":1},{"date":"2020-06-29","value":1},{"date":"2020-07-02","value":1},{"date":"2020-07-04","value":1},{"date":"2020-07-05","value":1},{"date":"2020-07-06","value":1},{"date":"2020-07-08","value":3},{"date":"2020-07-09","value":1},{"date":"2020-07-10","value":1},{"date":"2020-07-11","value":3},{"date":"2020-07-12","value":3},{"date":"2020-07-13","value":4},{"date":"2020-07-14","value":1},{"date":"2020-07-16","value":1},{"date":"2020-07-18","value":1},{"date":"2020-07-21","value":3},{"date":"2020-07-22","value":1},{"date":"2020-07-23","value":1},{"date":"2020-07-24","value":1},{"date":"2020-07-25","value":3},{"date":"2020-07-27","value":2},{"date":"2020-07-28","value":1},{"date":"2020-07-29","value":1},{"date":"2020-07-31","value":1},{"date":"2020-08-01","value":1},{"date":"2020-08-03","value":4},{"date":"2020-08-06","value":1},{"date":"2020-08-07","value":1},{"date":"2020-08-10","value":1},{"date":"2020-08-11","value":1},{"date":"2020-08-13","value":1},{"date":"2020-09-01","value":1},{"date":"2020-09-04","value":2},{"date":"2020-09-13","value":1},{"date":"2020-09-15","value":3},{"date":"2020-09-27","value":1},{"date":"2020-09-29","value":4},{"date":"2020-09-30","value":1},{"date":"2020-10-01","value":2},{"date":"2020-10-02","value":1},{"date":"2020-10-08","value":1},{"date":"2020-10-11","value":1},{"date":"2020-10-17","value":3},{"date":"2020-10-18","value":1},{"date":"2020-10-20","value":1},{"date":"2020-10-21","value":3},{"date":"2020-10-23","value":1},{"date":"2020-10-25","value":1},{"date":"2020-10-27","value":1},{"date":"2020-10-28","value":2},{"date":"2020-10-31","value":1},{"date":"2020-11-01","value":1},{"date":"2020-11-02","value":2},{"date":"2020-11-06","value":2},{"date":"2020-11-07","value":1},{"date":"2020-11-12","value":2},{"date":"2020-11-16","value":1},{"date":"2020-11-18","value":2},{"date":"2020-11-21","value":1},{"date":"2020-11-23","value":1},{"date":"2020-11-25","value":1},{"date":"2020-11-27","value":1},{"date":"2020-12-01","value":3},{"date":"2020-12-02","value":1},{"date":"2020-12-04","value":1},{"date":"2020-12-07","value":1},{"date":"2020-12-10","value":1},{"date":"2020-12-11","value":2},{"date":"2020-12-13","value":4},{"date":"2020-12-20","value":2},{"date":"2020-12-30","value":1}]; const options = {date: { start: new Date('2020-01-01') }, domain: { type: 'year' }, subDomain: { type: 'day' }, range: 1}; const maxValue = 4; const displayData = data.map(function(point) { const value = point.value || 0; if (options.maxValue && value > options.maxValue) { return Object.assign({}, point, { value: options.maxValue }); } return point; }); function fitGraph() { const inner = document.getElementById(graphId); if (!inner) return; const outer = inner.parentElement; if (!outer) return; if (!inner.dataset.baseWidth) { inner.dataset.baseWidth = String(inner.scrollWidth || inner.getBoundingClientRect().width || 0); } const baseWidth = Number(inner.dataset.baseWidth) || inner.scrollWidth || inner.getBoundingClientRect().width || 0; const scale = baseWidth > 0 ? Math.min(1, outer.clientWidth / baseWidth) : 1; inner.style.zoom = String(scale); } function paintGraph() { // Clear existing graph const container = document.getElementById(graphId); if (!container) return; container.innerHTML = ''; delete container.dataset.baseWidth; // Get theme colors from CSS variables const styles = getComputedStyle(document.documentElement); const bgColor = styles.getPropertyValue('--color-background').trim(); const surfaceColor = styles.getPropertyValue('--color-surface').trim(); const primaryColor = styles.getPropertyValue('--color-primary').trim(); // Use surface color as base, primary as accent const baseColor = surfaceColor || bgColor || '#ebedf0'; const accentColor = primaryColor || '#216e39'; const cal = new CalHeatmap(); cal.paint( { itemSelector: '#' + graphId, data: { source: displayData, x: 'date', y: 'value' }, date: options.date, domain: options.domain || { type: 'year' }, subDomain: options.subDomain || { type: 'day' }, range: options.range, scale: { color: { type: 'linear', range: [baseColor, accentColor], domain: [0, maxValue] } } }, [ [ Tooltip, { text: function (date, value, dayjsDate) { const original = data.find(function(point) { return point.date === dayjsDate.format('YYYY-MM-DD'); }); const originalValue = original ? (original.value || 0) : (value || 0); return (originalValue ? originalValue : 'No') + ' posts on ' + dayjsDate.format('MMM D, YYYY'); }, }, ], ] ); fitGraph(); } // Initial paint paintGraph(); // Register for theme changes if (!window._contributionGraphPainters) { window._contributionGraphPainters = []; } window._contributionGraphPainters.push(paintGraph); if (!window._contributionGraphFitters) { window._contributionGraphFitters = []; } window._contributionGraphFitters.push(fitGraph); })(); (function() { const graphId = 'contribution-graph-8'; const data = [{"date":"2019-01-01","value":1},{"date":"2019-01-05","value":1},{"date":"2019-01-06","value":1},{"date":"2019-01-12","value":1},{"date":"2019-01-21","value":1},{"date":"2019-01-26","value":2},{"date":"2019-01-30","value":1},{"date":"2019-02-01","value":1},{"date":"2019-02-02","value":1},{"date":"2019-02-05","value":1},{"date":"2019-02-09","value":1},{"date":"2019-03-04","value":3},{"date":"2019-03-11","value":2},{"date":"2019-03-13","value":1},{"date":"2019-04-23","value":1},{"date":"2019-05-10","value":1},{"date":"2019-05-18","value":1},{"date":"2019-05-20","value":1},{"date":"2019-05-27","value":1},{"date":"2019-05-30","value":2},{"date":"2019-06-19","value":1},{"date":"2019-06-20","value":1},{"date":"2019-06-28","value":1},{"date":"2019-07-07","value":1},{"date":"2019-08-10","value":1},{"date":"2019-08-31","value":1},{"date":"2019-09-05","value":1},{"date":"2019-09-06","value":1},{"date":"2019-09-07","value":1},{"date":"2019-09-08","value":4},{"date":"2019-09-10","value":1},{"date":"2019-09-11","value":1},{"date":"2019-09-13","value":1},{"date":"2019-09-15","value":1},{"date":"2019-09-18","value":2},{"date":"2019-09-22","value":1},{"date":"2019-09-24","value":1},{"date":"2019-09-25","value":1},{"date":"2019-09-26","value":1},{"date":"2019-10-01","value":1},{"date":"2019-10-03","value":1},{"date":"2019-10-06","value":1},{"date":"2019-10-14","value":1},{"date":"2019-10-15","value":1},{"date":"2019-10-18","value":1},{"date":"2019-10-19","value":1},{"date":"2019-10-28","value":1},{"date":"2019-10-29","value":1},{"date":"2019-11-02","value":1},{"date":"2019-11-07","value":1},{"date":"2019-11-10","value":1},{"date":"2019-11-11","value":1},{"date":"2019-11-12","value":1},{"date":"2019-11-13","value":1},{"date":"2019-11-14","value":1},{"date":"2019-11-17","value":1},{"date":"2019-11-21","value":1},{"date":"2019-11-27","value":1},{"date":"2019-11-28","value":1},{"date":"2019-12-02","value":1},{"date":"2019-12-04","value":1},{"date":"2019-12-21","value":1}]; const options = {date: { start: new Date('2019-01-01') }, domain: { type: 'year' }, subDomain: { type: 'day' }, range: 1}; const maxValue = 4; const displayData = data.map(function(point) { const value = point.value || 0; if (options.maxValue && value > options.maxValue) { return Object.assign({}, point, { value: options.maxValue }); } return point; }); function fitGraph() { const inner = document.getElementById(graphId); if (!inner) return; const outer = inner.parentElement; if (!outer) return; if (!inner.dataset.baseWidth) { inner.dataset.baseWidth = String(inner.scrollWidth || inner.getBoundingClientRect().width || 0); } const baseWidth = Number(inner.dataset.baseWidth) || inner.scrollWidth || inner.getBoundingClientRect().width || 0; const scale = baseWidth > 0 ? Math.min(1, outer.clientWidth / baseWidth) : 1; inner.style.zoom = String(scale); } function paintGraph() { // Clear existing graph const container = document.getElementById(graphId); if (!container) return; container.innerHTML = ''; delete container.dataset.baseWidth; // Get theme colors from CSS variables const styles = getComputedStyle(document.documentElement); const bgColor = styles.getPropertyValue('--color-background').trim(); const surfaceColor = styles.getPropertyValue('--color-surface').trim(); const primaryColor = styles.getPropertyValue('--color-primary').trim(); // Use surface color as base, primary as accent const baseColor = surfaceColor || bgColor || '#ebedf0'; const accentColor = primaryColor || '#216e39'; const cal = new CalHeatmap(); cal.paint( { itemSelector: '#' + graphId, data: { source: displayData, x: 'date', y: 'value' }, date: options.date, domain: options.domain || { type: 'year' }, subDomain: options.subDomain || { type: 'day' }, range: options.range, scale: { color: { type: 'linear', range: [baseColor, accentColor], domain: [0, maxValue] } } }, [ [ Tooltip, { text: function (date, value, dayjsDate) { const original = data.find(function(point) { return point.date === dayjsDate.format('YYYY-MM-DD'); }); const originalValue = original ? (original.value || 0) : (value || 0); return (originalValue ? originalValue : 'No') + ' posts on ' + dayjsDate.format('MMM D, YYYY'); }, }, ], ] ); fitGraph(); } // Initial paint paintGraph(); // Register for theme changes if (!window._contributionGraphPainters) { window._contributionGraphPainters = []; } window._contributionGraphPainters.push(paintGraph); if (!window._contributionGraphFitters) { window._contributionGraphFitters = []; } window._contributionGraphFitters.push(fitGraph); })(); (function() { const graphId = 'contribution-graph-9'; const data = [{"date":"2018-01-01","value":1},{"date":"2018-01-07","value":1},{"date":"2018-01-24","value":1},{"date":"2018-02-01","value":1},{"date":"2018-02-06","value":1},{"date":"2018-02-19","value":1},{"date":"2018-02-25","value":1},{"date":"2018-03-13","value":1},{"date":"2018-03-16","value":2},{"date":"2018-04-22","value":1},{"date":"2018-04-28","value":1},{"date":"2018-05-02","value":2},{"date":"2018-05-05","value":1},{"date":"2018-05-06","value":1},{"date":"2018-05-08","value":1},{"date":"2018-05-22","value":1},{"date":"2018-06-09","value":2},{"date":"2018-07-05","value":1},{"date":"2018-07-09","value":1},{"date":"2018-07-12","value":1},{"date":"2018-07-20","value":1},{"date":"2018-08-06","value":1},{"date":"2018-08-08","value":1},{"date":"2018-08-13","value":1},{"date":"2018-09-10","value":1},{"date":"2018-09-22","value":1},{"date":"2018-09-23","value":1},{"date":"2018-09-24","value":1},{"date":"2018-09-25","value":1},{"date":"2018-09-27","value":1},{"date":"2018-10-04","value":1},{"date":"2018-10-09","value":1},{"date":"2018-10-10","value":2},{"date":"2018-11-28","value":1},{"date":"2018-11-29","value":1}]; const options = {date: { start: new Date('2018-01-01') }, domain: { type: 'year' }, subDomain: { type: 'day' }, range: 1}; const maxValue = 2; const displayData = data.map(function(point) { const value = point.value || 0; if (options.maxValue && value > options.maxValue) { return Object.assign({}, point, { value: options.maxValue }); } return point; }); function fitGraph() { const inner = document.getElementById(graphId); if (!inner) return; const outer = inner.parentElement; if (!outer) return; if (!inner.dataset.baseWidth) { inner.dataset.baseWidth = String(inner.scrollWidth || inner.getBoundingClientRect().width || 0); } const baseWidth = Number(inner.dataset.baseWidth) || inner.scrollWidth || inner.getBoundingClientRect().width || 0; const scale = baseWidth > 0 ? Math.min(1, outer.clientWidth / baseWidth) : 1; inner.style.zoom = String(scale); } function paintGraph() { // Clear existing graph const container = document.getElementById(graphId); if (!container) return; container.innerHTML = ''; delete container.dataset.baseWidth; // Get theme colors from CSS variables const styles = getComputedStyle(document.documentElement); const bgColor = styles.getPropertyValue('--color-background').trim(); const surfaceColor = styles.getPropertyValue('--color-surface').trim(); const primaryColor = styles.getPropertyValue('--color-primary').trim(); // Use surface color as base, primary as accent const baseColor = surfaceColor || bgColor || '#ebedf0'; const accentColor = primaryColor || '#216e39'; const cal = new CalHeatmap(); cal.paint( { itemSelector: '#' + graphId, data: { source: displayData, x: 'date', y: 'value' }, date: options.date, domain: options.domain || { type: 'year' }, subDomain: options.subDomain || { type: 'day' }, range: options.range, scale: { color: { type: 'linear', range: [baseColor, accentColor], domain: [0, maxValue] } } }, [ [ Tooltip, { text: function (date, value, dayjsDate) { const original = data.find(function(point) { return point.date === dayjsDate.format('YYYY-MM-DD'); }); const originalValue = original ? (original.value || 0) : (value || 0); return (originalValue ? originalValue : 'No') + ' posts on ' + dayjsDate.format('MMM D, YYYY'); }, }, ], ] ); fitGraph(); } // Initial paint paintGraph(); // Register for theme changes if (!window._contributionGraphPainters) { window._contributionGraphPainters = []; } window._contributionGraphPainters.push(paintGraph); if (!window._contributionGraphFitters) { window._contributionGraphFitters = []; } window._contributionGraphFitters.push(fitGraph); })(); (function() { const graphId = 'contribution-graph-10'; const data = [{"date":"2017-01-21","value":1},{"date":"2017-04-20","value":1},{"date":"2017-04-28","value":1},{"date":"2017-05-10","value":1},{"date":"2017-05-16","value":1},{"date":"2017-06-10","value":1},{"date":"2017-06-14","value":1},{"date":"2017-07-04","value":1},{"date":"2017-08-31","value":1},{"date":"2017-09-16","value":2},{"date":"2017-09-21","value":1},{"date":"2017-09-24","value":1},{"date":"2017-12-01","value":1},{"date":"2017-12-02","value":1},{"date":"2017-12-13","value":1}]; const options = {date: { start: new Date('2017-01-01') }, domain: { type: 'year' }, subDomain: { type: 'day' }, range: 1}; const maxValue = 2; const displayData = data.map(function(point) { const value = point.value || 0; if (options.maxValue && value > options.maxValue) { return Object.assign({}, point, { value: options.maxValue }); } return point; }); function fitGraph() { const inner = document.getElementById(graphId); if (!inner) return; const outer = inner.parentElement; if (!outer) return; if (!inner.dataset.baseWidth) { inner.dataset.baseWidth = String(inner.scrollWidth || inner.getBoundingClientRect().width || 0); } const baseWidth = Number(inner.dataset.baseWidth) || inner.scrollWidth || inner.getBoundingClientRect().width || 0; const scale = baseWidth > 0 ? Math.min(1, outer.clientWidth / baseWidth) : 1; inner.style.zoom = String(scale); } function paintGraph() { // Clear existing graph const container = document.getElementById(graphId); if (!container) return; container.innerHTML = ''; delete container.dataset.baseWidth; // Get theme colors from CSS variables const styles = getComputedStyle(document.documentElement); const bgColor = styles.getPropertyValue('--color-background').trim(); const surfaceColor = styles.getPropertyValue('--color-surface').trim(); const primaryColor = styles.getPropertyValue('--color-primary').trim(); // Use surface color as base, primary as accent const baseColor = surfaceColor || bgColor || '#ebedf0'; const accentColor = primaryColor || '#216e39'; const cal = new CalHeatmap(); cal.paint( { itemSelector: '#' + graphId, data: { source: displayData, x: 'date', y: 'value' }, date: options.date, domain: options.domain || { type: 'year' }, subDomain: options.subDomain || { type: 'day' }, range: options.range, scale: { color: { type: 'linear', range: [baseColor, accentColor], domain: [0, maxValue] } } }, [ [ Tooltip, { text: function (date, value, dayjsDate) { const original = data.find(function(point) { return point.date === dayjsDate.format('YYYY-MM-DD'); }); const originalValue = original ? (original.value || 0) : (value || 0); return (originalValue ? originalValue : 'No') + ' posts on ' + dayjsDate.format('MMM D, YYYY'); }, }, ], ] ); fitGraph(); } // Initial paint paintGraph(); // Register for theme changes if (!window._contributionGraphPainters) { window._contributionGraphPainters = []; } window._contributionGraphPainters.push(paintGraph); if (!window._contributionGraphFitters) { window._contributionGraphFitters = []; } window._contributionGraphFitters.push(fitGraph); })(); (function() { const graphId = 'contribution-graph-11'; const data = [{"date":"2016-01-01","value":1},{"date":"2016-10-05","value":1},{"date":"2016-11-18","value":1},{"date":"2016-11-22","value":2},{"date":"2016-12-09","value":1},{"date":"2016-12-13","value":1}]; const options = {date: { start: new Date('2016-01-01') }, domain: { type: 'year' }, subDomain: { type: 'day' }, range: 1}; const maxValue = 2; const displayData = data.map(function(point) { const value = point.value || 0; if (options.maxValue && value > options.maxValue) { return Object.assign({}, point, { value: options.maxValue }); } return point; }); function fitGraph() { const inner = document.getElementById(graphId); if (!inner) return; const outer = inner.parentElement; if (!outer) return; if (!inner.dataset.baseWidth) { inner.dataset.baseWidth = String(inner.scrollWidth || inner.getBoundingClientRect().width || 0); } const baseWidth = Number(inner.dataset.baseWidth) || inner.scrollWidth || inner.getBoundingClientRect().width || 0; const scale = baseWidth > 0 ? Math.min(1, outer.clientWidth / baseWidth) : 1; inner.style.zoom = String(scale); } function paintGraph() { // Clear existing graph const container = document.getElementById(graphId); if (!container) return; container.innerHTML = ''; delete container.dataset.baseWidth; // Get theme colors from CSS variables const styles = getComputedStyle(document.documentElement); const bgColor = styles.getPropertyValue('--color-background').trim(); const surfaceColor = styles.getPropertyValue('--color-surface').trim(); const primaryColor = styles.getPropertyValue('--color-primary').trim(); // Use surface color as base, primary as accent const baseColor = surfaceColor || bgColor || '#ebedf0'; const accentColor = primaryColor || '#216e39'; const cal = new CalHeatmap(); cal.paint( { itemSelector: '#' + graphId, data: { source: displayData, x: 'date', y: 'value' }, date: options.date, domain: options.domain || { type: 'year' }, subDomain: options.subDomain || { type: 'day' }, range: options.range, scale: { color: { type: 'linear', range: [baseColor, accentColor], domain: [0, maxValue] } } }, [ [ Tooltip, { text: function (date, value, dayjsDate) { const original = data.find(function(point) { return point.date === dayjsDate.format('YYYY-MM-DD'); }); const originalValue = original ? (original.value || 0) : (value || 0); return (originalValue ? originalValue : 'No') + ' posts on ' + dayjsDate.format('MMM D, YYYY'); }, }, ], ] ); fitGraph(); } // Initial paint paintGraph(); // Register for theme changes if (!window._contributionGraphPainters) { window._contributionGraphPainters = []; } window._contributionGraphPainters.push(paintGraph); if (!window._contributionGraphFitters) { window._contributionGraphFitters = []; } window._contributionGraphFitters.push(fitGraph); })(); // Watch for theme/palette changes and re-paint graphs const observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.attributeName === 'data-palette' || mutation.attributeName === 'class') { // Small delay to let CSS variables update setTimeout(function() { if (window._contributionGraphPainters) { window._contributionGraphPainters.forEach(function(paint) { paint(); }); } }, 50); } }); }); observer.observe(document.documentElement, { attributes: true }); observer.observe(document.body, { attributes: true }); window.addEventListener('resize', function() { if (window._contributionGraphFitters) { window._contributionGraphFitters.forEach(function(fit) { fit(); }); } }); });