1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| <div class="container archive-calendar"> <div class="card"> <div id="post-calendar" class="card-content"></div> </div> </div> <style type="text/css"> #post-calendar { width: 100%; height: 225px; margin-top: 20px; border-radius: 12px; background-color: rgb(255, 255, 255, 0.5); } </style> <script type="text/javascript" src="https://cdn.jsdelivr.net/gh/cungudafa/cdn/js/echarts.min.js"></script> <script type="text/javascript"> let myChart = echarts.init(document.getElementById('post-calendar'));
<% var startDate = moment().subtract(1, 'years'); var endDate = moment(); var rangeArr = '["' + startDate.format('YYYY-MM-DD') + '", "' + endDate.format('YYYY-MM-DD') + '"]';
var dateMap = new Map(); site.posts.forEach(function (post) { var date = post.date.format('YYYY-MM-DD'); var count = dateMap.get(date); dateMap.set(date, count == null || count == undefined ? 1 : count + 1); });
var i = 0; var datePosts = '['; var dayTime = 3600 * 24 * 1000; for (var time = startDate; time <= endDate; time += dayTime) { var date = moment(time).format('YYYY-MM-DD'); datePosts = (i === 0 ? datePosts + '["' : datePosts + ', ["') + date + '", ' + (dateMap.has(date) ? dateMap.get(date) : 0) + ']'; i++; } datePosts += ']';%> let option = { title: { top: 0, text: '文章熱力圖', left: 'center', textStyle: { color: '#3C4858' } }, tooltip: { padding: 10, backgroundColor: '#555', borderColor: '#777', borderWidth: 1, formatter: function(obj) { var value = obj.value; return '<div style="font-size: 14px;">' + value[0] + ': ' + value[1] + '</div>'; } }, visualMap: { show: true, showLabel: true, categories: [0, 1, 2, 3, 4], calculable: true, inRange: { symbol: 'rect', color: ['#ebedf0', '#c6e48b', '#7bc96f', '#239a3b', '#196127'] }, itemWidth: 12, itemHeight: 12, orient: 'horizontal', left: 'center', bottom: 0 }, calendar: [{ left: 'center', range: <%- rangeArr %>, cellSize: [13, 13], splitLine: { show: false }, itemStyle: { width: '1.88679%', height: '15px', color: '#EEEEEE', borderColor: '#FFF', borderWidth: 2 }, yearLabel: { show: false }, monthLabel: { nameMap: 'cn', fontWeight: 'lighter', fontSize: 12 }, dayLabel: { show: true, formatter: '{start} 1st', fontWeight: 'lighter', nameMap: ['日', '一', '二', '三', '四', '五', '六'], fontSize: 12 } }], series: [{ type: 'heatmap', coordinateSystem: 'calendar', calendarIndex: 0, data: <%- datePosts %> }] };
myChart.setOption(option); </script>
|