jekyll-zeta 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/_includes/heatmap.js +287 -233
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb48706f987ba8e19910a12134effc421afee6d6a3bf0b1cdf1f6e0c5d153a0b
|
4
|
+
data.tar.gz: c0832d36039ad7c9329e3c5881fd42b30a2268d5ea00553d87969f4bc4e7f726
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b24f8726abafde268178ed833190e2cd2933aaaf3d557d19b9804833d0178da38c792d50e43477a784afa8257c51038c7f960a56007d05eedd607be921e8f1e
|
7
|
+
data.tar.gz: 01e73136eada84c3a79a1fb40bdb140cd06fe40698aa42cc39ba6357e856891e11a8eaaa04bdd79fbdab6b48b48b7cbc0d0467b1270c37ca3c872410bc5affcf
|
data/_includes/heatmap.js
CHANGED
@@ -1,296 +1,350 @@
|
|
1
|
+
;!(function () {
|
1
2
|
|
3
|
+
var GDATA = window._G_DATA;
|
4
|
+
if (!GDATA) {
|
5
|
+
GDATA = {}
|
6
|
+
window._G_DATA = GDATA
|
7
|
+
}
|
2
8
|
|
3
|
-
;!function(){
|
4
9
|
|
5
|
-
function date2ymd(t){
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
}
|
10
|
+
function date2ymd(t) {
|
11
|
+
let m = t.getMonth() + 1;
|
12
|
+
let d = t.getDate();
|
13
|
+
return `${t.getFullYear()}-${m < 10 ? "0" + m : m}-${d < 10 ? "0" + d : d}`;
|
14
|
+
}
|
10
15
|
|
11
|
-
const dateEnd =
|
16
|
+
const dateEnd =
|
17
|
+
endYear && endYear.length == 4 ? new Date(`${endYear}-12-31`) : new Date();
|
12
18
|
|
13
|
-
const
|
14
|
-
const dayEleId = Math.random().toString(16).substring(2);
|
15
|
-
let arr = _allyearurl.split(
|
16
|
-
arr.pop();
|
17
|
-
const jsonUrlBase = arr.join(
|
19
|
+
const endStamp = dateEnd.getTime();
|
20
|
+
const dayEleId = Math.random().toString(16).substring(2);
|
21
|
+
let arr = _allyearurl.split("/");
|
22
|
+
arr.pop();
|
23
|
+
const jsonUrlBase = arr.join("/");
|
18
24
|
|
25
|
+
const ColumnsCount = 53;
|
26
|
+
const RowCount = 7;
|
27
|
+
const DayCount = (ColumnsCount - 1) * RowCount + dateEnd.getDay() + 1;
|
19
28
|
|
20
|
-
|
21
|
-
|
22
|
-
|
29
|
+
let queue = window._y_queue || []
|
30
|
+
window._y_queue = queue;
|
31
|
+
|
23
32
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
.then(d=>{
|
30
|
-
let yearCfg = d ;
|
31
|
-
let arr = []
|
32
|
-
if (yearCfg[year]) {
|
33
|
-
arr.push(getYearData(year ))
|
33
|
+
function getAllYearCfg(){
|
34
|
+
|
35
|
+
|
36
|
+
if (GDATA['_allYear']) {
|
37
|
+
return GDATA['_allYear'];
|
34
38
|
}
|
35
39
|
|
36
|
-
if (
|
37
|
-
|
40
|
+
if (window._isFetchAllYearData == 1) {
|
41
|
+
return new Promise(r=>{
|
42
|
+
queue.push(r);
|
43
|
+
})
|
38
44
|
}
|
39
|
-
Promise.all(arr).then(alldata=>{
|
40
|
-
let combineData = {};
|
41
|
-
let d1 = alldata[0];
|
42
|
-
let d2 = alldata[1];
|
43
|
-
|
44
|
-
for (const key in d1) {
|
45
|
-
if (Object.prototype.hasOwnProperty.call(d1, key)) {
|
46
|
-
const element = d1[key];
|
47
|
-
let keyNew = 'K1-' + key;
|
48
|
-
combineData[keyNew] = element
|
49
|
-
}
|
50
|
-
}
|
51
45
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
46
|
+
|
47
|
+
window._isFetchAllYearData = 1;
|
48
|
+
return fetch(_allyearurl)
|
49
|
+
.then((r) => r.json())
|
50
|
+
.then(d => {
|
51
|
+
window._isFetchAllYearData = 0;
|
52
|
+
if (queue.length) {
|
53
|
+
queue.forEach(calback=>{calback(d)});
|
54
|
+
queue.length = 0;
|
55
|
+
}
|
56
|
+
GDATA['_allYear'] = d ;return d ;})
|
57
|
+
}
|
58
|
+
!(function fillData() {
|
59
|
+
let year = "" + dateEnd.getFullYear();
|
60
|
+
let preYear = "" + (year - 1);
|
61
|
+
getAllYearCfg()
|
62
|
+
.then((d) => {
|
63
|
+
let yearCfg = d;
|
64
|
+
let arr = [];
|
65
|
+
if (yearCfg[year]) {
|
66
|
+
arr.push(getYearData(year));
|
57
67
|
}
|
58
|
-
}
|
59
68
|
|
69
|
+
if (yearCfg[preYear]) {
|
70
|
+
arr.push(getYearData(preYear));
|
71
|
+
}
|
72
|
+
Promise.all(arr).then((alldata) => {
|
73
|
+
let combineData = {};
|
74
|
+
let d1 = alldata[0];
|
75
|
+
let d2 = alldata[1];
|
76
|
+
|
77
|
+
for (const key in d1) {
|
78
|
+
if (Object.prototype.hasOwnProperty.call(d1, key)) {
|
79
|
+
const element = d1[key];
|
80
|
+
let keyNew = "K1-" + key;
|
81
|
+
combineData[keyNew] = element;
|
82
|
+
}
|
83
|
+
}
|
60
84
|
|
61
|
-
|
62
|
-
|
63
|
-
|
85
|
+
for (const key in d2) {
|
86
|
+
if (Object.prototype.hasOwnProperty.call(d2, key)) {
|
87
|
+
const element = d2[key];
|
88
|
+
let keyNew = "K2-" + key;
|
89
|
+
combineData[keyNew] = element;
|
90
|
+
}
|
91
|
+
}
|
64
92
|
|
65
|
-
|
66
|
-
|
67
|
-
|
93
|
+
updateCell(combineData);
|
94
|
+
});
|
95
|
+
});
|
96
|
+
|
97
|
+
function getIndex(ymd) {
|
98
|
+
return (
|
99
|
+
DayCount -
|
100
|
+
Math.floor((endStamp - new Date(ymd).getTime()) / (24 * 3600000)) -
|
101
|
+
1
|
102
|
+
);
|
103
|
+
}
|
68
104
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
105
|
+
function idx2Ymd(idx) {
|
106
|
+
let t = new Date(endStamp - (DayCount - 1 - idx) * 3600000 * 24);
|
107
|
+
let m = t.getMonth() + 1;
|
108
|
+
let d = t.getDate();
|
109
|
+
return `${t.getFullYear()}-${m < 10 ? "0" + m : m}-${
|
110
|
+
d < 10 ? "0" + d : d
|
111
|
+
}`;
|
112
|
+
}
|
75
113
|
|
76
|
-
|
77
|
-
|
114
|
+
function updateCell(data) {
|
115
|
+
if (!data) return;
|
78
116
|
|
79
|
-
console.log(data)
|
80
117
|
|
81
|
-
|
82
|
-
|
118
|
+
let daysEle = document.getElementById(dayEleId);
|
119
|
+
let dayCells = daysEle.childNodes;
|
83
120
|
|
84
|
-
|
121
|
+
let Map = {};
|
85
122
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
123
|
+
for (const key in data) {
|
124
|
+
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
125
|
+
const element = data[key];
|
126
|
+
if (Array.isArray(element)) {
|
127
|
+
element.forEach((e) => {
|
128
|
+
if (e.date && e.title && e.url) {
|
129
|
+
let arr = Map[e.date];
|
130
|
+
if (!arr) {
|
131
|
+
arr = [];
|
132
|
+
Map[e.date] = arr;
|
133
|
+
}
|
134
|
+
arr.push(e);
|
96
135
|
}
|
97
|
-
|
98
|
-
|
99
|
-
})
|
136
|
+
});
|
137
|
+
}
|
100
138
|
}
|
101
139
|
}
|
102
|
-
}
|
103
140
|
|
141
|
+
let ymdArr = [];
|
104
142
|
|
143
|
+
for (const dateKeyYmd in Map) {
|
144
|
+
if (Object.prototype.hasOwnProperty.call(Map, dateKeyYmd)) {
|
145
|
+
ymdArr.push(dateKeyYmd);
|
146
|
+
}
|
147
|
+
}
|
105
148
|
|
106
|
-
|
149
|
+
var G_idxOfDay = DayCount - 1;
|
107
150
|
|
108
|
-
|
109
|
-
|
110
|
-
ymdArr.push(dateKeyYmd)
|
111
|
-
}
|
112
|
-
}
|
151
|
+
function shuffle(array) {
|
152
|
+
let currentIndex = array.length;
|
113
153
|
|
154
|
+
// While there remain elements to shuffle...
|
155
|
+
while (currentIndex != 0) {
|
156
|
+
// Pick a remaining element...
|
157
|
+
let randomIndex = Math.floor(Math.random() * currentIndex);
|
158
|
+
currentIndex--;
|
114
159
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
while (currentIndex != 0) {
|
122
|
-
|
123
|
-
// Pick a remaining element...
|
124
|
-
let randomIndex = Math.floor(Math.random() * currentIndex);
|
125
|
-
currentIndex--;
|
126
|
-
|
127
|
-
// And swap it with the current element.
|
128
|
-
[array[currentIndex], array[randomIndex]] = [
|
129
|
-
array[randomIndex], array[currentIndex]];
|
160
|
+
// And swap it with the current element.
|
161
|
+
[array[currentIndex], array[randomIndex]] = [
|
162
|
+
array[randomIndex],
|
163
|
+
array[currentIndex],
|
164
|
+
];
|
165
|
+
}
|
130
166
|
}
|
131
|
-
}
|
132
167
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
}
|
138
|
-
|
139
|
-
shuffle(SEQ)
|
140
|
-
|
141
|
-
function update1Day(){
|
142
|
-
if (G_idxOfDay < 0) {
|
143
|
-
return
|
168
|
+
const SEQ = new Array(DayCount);
|
169
|
+
let tmp = DayCount;
|
170
|
+
while (tmp-- > 0) {
|
171
|
+
SEQ[tmp] = tmp;
|
144
172
|
}
|
145
|
-
const idxOfDay = SEQ[G_idxOfDay --];
|
146
|
-
let dateKeyYmd = idx2Ymd(idxOfDay )
|
147
|
-
let arrPostInOneDay = Map[dateKeyYmd];
|
148
|
-
const dayCell = dayCells[idxOfDay]
|
149
|
-
const nobg = parseInt(dateKeyYmd.substring(5,7))%2 == 1? 'hm-check-no-b' : 'hm-check-no-a';
|
150
|
-
dayCell.classList = `heatmap-day-cell ${!arrPostInOneDay ? nobg :arrPostInOneDay.length > 1 ? 'hm-check2' : 'hm-check' }`
|
151
|
-
|
152
|
-
if ((arrPostInOneDay && arrPostInOneDay.length > 0 )) {
|
153
|
-
let isDirectly = arrPostInOneDay.length == 1
|
154
|
-
let tip = document.createElement("div");
|
155
|
-
|
156
|
-
if (isDirectly) {
|
157
|
-
let lnk = document.createElement('a');
|
158
|
-
lnk.href = arrPostInOneDay[0].url
|
159
|
-
dayCell.appendChild(lnk)
|
160
|
-
}
|
161
|
-
|
162
|
-
tip.className = "hm-tip";
|
163
|
-
let desc = ''
|
164
|
-
arrPostInOneDay.forEach(element => {
|
165
|
-
|
166
|
-
let lnk = document.createElement('a');
|
167
|
-
lnk.className = 'hm-tiplink'
|
168
|
-
lnk.href = element.url
|
169
|
-
tip.appendChild(lnk)
|
170
173
|
|
171
|
-
|
172
|
-
t.className = 'hm-date'
|
173
|
-
t.innerText = dateKeyYmd.substring(5);
|
174
|
-
lnk.appendChild(t);
|
174
|
+
shuffle(SEQ);
|
175
175
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
dayCell
|
184
|
-
|
176
|
+
function update1Day() {
|
177
|
+
if (G_idxOfDay < 0) {
|
178
|
+
return;
|
179
|
+
}
|
180
|
+
const idxOfDay = SEQ[G_idxOfDay--];
|
181
|
+
let dateKeyYmd = idx2Ymd(idxOfDay);
|
182
|
+
let arrPostInOneDay = Map[dateKeyYmd];
|
183
|
+
const dayCell = dayCells[idxOfDay];
|
184
|
+
const nobg =
|
185
|
+
parseInt(dateKeyYmd.substring(5, 7)) % 2 == 1
|
186
|
+
? "hm-check-no-b"
|
187
|
+
: "hm-check-no-a";
|
188
|
+
dayCell.classList = `heatmap-day-cell ${
|
189
|
+
!arrPostInOneDay
|
190
|
+
? nobg
|
191
|
+
: arrPostInOneDay.length > 1
|
192
|
+
? "hm-check2"
|
193
|
+
: "hm-check"
|
194
|
+
}`;
|
195
|
+
|
196
|
+
if (arrPostInOneDay && arrPostInOneDay.length > 0) {
|
197
|
+
let isDirectly = arrPostInOneDay.length == 1;
|
198
|
+
let tip = document.createElement("div");
|
199
|
+
|
200
|
+
if (isDirectly) {
|
201
|
+
let lnk = document.createElement("a");
|
202
|
+
lnk.href = arrPostInOneDay[0].url;
|
203
|
+
dayCell.appendChild(lnk);
|
204
|
+
}
|
205
|
+
|
206
|
+
tip.className = "hm-tip";
|
207
|
+
let desc = "";
|
208
|
+
arrPostInOneDay.forEach((element) => {
|
209
|
+
let lnk = document.createElement("a");
|
210
|
+
lnk.className = "hm-tiplink";
|
211
|
+
lnk.href = element.url;
|
212
|
+
tip.appendChild(lnk);
|
213
|
+
|
214
|
+
let t = document.createElement("span");
|
215
|
+
t.className = "hm-date";
|
216
|
+
t.innerText = dateKeyYmd.substring(5);
|
217
|
+
lnk.appendChild(t);
|
218
|
+
|
219
|
+
let t2 = document.createElement("span");
|
220
|
+
t2.className = "hm-title";
|
221
|
+
t2.innerText = element.title;
|
222
|
+
lnk.appendChild(t2);
|
223
|
+
});
|
224
|
+
dayCell.appendChild(tip);
|
225
|
+
}
|
185
226
|
}
|
186
|
-
|
187
|
-
}
|
188
|
-
|
189
227
|
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
228
|
+
function updateMultiDays() {
|
229
|
+
let day = heatMapLoadCount;
|
230
|
+
if (!day || day <= 0) {
|
231
|
+
day = 8;
|
232
|
+
}
|
233
|
+
while (day--) {
|
234
|
+
update1Day();
|
235
|
+
}
|
198
236
|
|
199
|
-
|
200
|
-
|
237
|
+
if (G_idxOfDay >= 0) {
|
238
|
+
requestAnimationFrame(updateMultiDays);
|
239
|
+
}
|
201
240
|
}
|
241
|
+
requestAnimationFrame(updateMultiDays);
|
202
242
|
|
243
|
+
return;
|
203
244
|
}
|
204
|
-
requestAnimationFrame(updateMultiDays)
|
205
|
-
|
206
|
-
return
|
207
|
-
|
208
|
-
}
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
function getYearData(year){
|
213
|
-
return fetch(`${jsonUrlBase}/${year}.json`)
|
214
|
-
.then(r => r.json())
|
215
|
-
.catch(e=>{
|
216
|
-
return null
|
217
|
-
})
|
218
|
-
|
219
|
-
}
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
}()
|
225
|
-
|
226
|
-
|
227
245
|
|
228
|
-
|
246
|
+
function getYearData(year) {
|
247
|
+
year = '' + year
|
229
248
|
|
230
|
-
|
231
|
-
|
232
|
-
const Frag = document.createDocumentFragment();
|
233
|
-
|
234
|
-
const monthEle = document.createElement("div");
|
235
|
-
monthEle.className = "heatmap-month";
|
236
|
-
Frag.appendChild(monthEle);
|
237
|
-
const monthStr = _MonthStr.split(" ");
|
238
|
-
|
239
|
-
|
240
|
-
let nowM = dateEnd.getMonth();
|
241
|
-
let nowWeek = dateEnd.getDay();
|
242
|
-
|
243
|
-
|
244
|
-
for (let i = 0; i < monthStr.length ; i++) {
|
245
|
-
let m = document.createElement("span");
|
246
|
-
m.className = "heatmap-month-cell";
|
247
|
-
m.innerHTML = `${monthStr[(i + nowM + 1) % 12]}`;
|
248
|
-
monthEle.appendChild(m);
|
249
|
-
}
|
249
|
+
|
250
|
+
if(GDATA[year]){
|
250
251
|
|
251
|
-
|
252
|
-
|
253
|
-
const WeekStr = _showWeek.split(" ");
|
252
|
+
return GDATA[year]
|
253
|
+
}
|
254
254
|
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
255
|
+
let queueFlgKey = '_singleyearFlg' + year
|
256
|
+
let queueArrKey = '_singleyearQueue' + year
|
257
|
+
if (GDATA[queueFlgKey] == 1) {
|
258
|
+
// console.log('put in queue',year,Math.random())
|
259
|
+
let arrQueue = GDATA[queueArrKey]
|
260
|
+
if (!arrQueue) {
|
261
|
+
arrQueue = []
|
262
|
+
GDATA[queueArrKey] = arrQueue;
|
263
|
+
}
|
264
|
+
|
265
|
+
return new Promise(r=>{
|
266
|
+
arrQueue.push(r);
|
267
|
+
});
|
268
|
+
}
|
261
269
|
|
262
|
-
Frag.appendChild(weekEle);
|
263
270
|
|
264
|
-
|
271
|
+
GDATA[queueFlgKey] = 1;
|
272
|
+
// console.log('RealQuery',year,Math.random())
|
273
|
+
return fetch(`${jsonUrlBase}/${year}.json`)
|
274
|
+
.then((r) => r.json())
|
275
|
+
.then(d=>{
|
276
|
+
GDATA[queueFlgKey] = 0 ;GDATA[year] = d;
|
277
|
+
let queue = GDATA[queueArrKey];
|
278
|
+
// console.log('queryFinish',year)
|
279
|
+
if(queue && queue.length){
|
280
|
+
queue.forEach(cb=>{
|
281
|
+
// console.log('queryFinishQueue',year,queue.length,Math.random());
|
282
|
+
cb(d);})
|
283
|
+
queue.length = 0;
|
284
|
+
GDATA[queueArrKey] = undefined
|
285
|
+
}
|
286
|
+
|
287
|
+
return d})
|
288
|
+
.catch((e) => {
|
289
|
+
return null;
|
290
|
+
});
|
291
|
+
}
|
292
|
+
})();
|
293
|
+
(function initMap() {
|
294
|
+
let Father = document.getElementById(heatmapid);
|
265
295
|
|
266
|
-
|
267
|
-
dayEle.id = dayEleId;
|
296
|
+
const Frag = document.createDocumentFragment();
|
268
297
|
|
298
|
+
const monthEle = document.createElement("div");
|
299
|
+
monthEle.className = "heatmap-month";
|
300
|
+
Frag.appendChild(monthEle);
|
301
|
+
const monthStr = _MonthStr.split(" ");
|
269
302
|
|
270
|
-
let
|
303
|
+
let nowM = dateEnd.getMonth();
|
304
|
+
let nowWeek = dateEnd.getDay();
|
271
305
|
|
306
|
+
for (let i = 0; i < monthStr.length; i++) {
|
307
|
+
let m = document.createElement("span");
|
308
|
+
m.className = "heatmap-month-cell";
|
309
|
+
m.innerHTML = `${monthStr[(i + nowM + 1) % 12]}`;
|
310
|
+
monthEle.appendChild(m);
|
311
|
+
}
|
272
312
|
|
273
|
-
|
313
|
+
const weekEle = document.createElement("div");
|
314
|
+
weekEle.className = "heatmap-week";
|
315
|
+
const WeekStr = _showWeek.split(" ");
|
274
316
|
|
275
|
-
for (let
|
276
|
-
|
277
|
-
|
278
|
-
|
317
|
+
for (let i = 0; i < WeekStr.length; i++) {
|
318
|
+
let m = document.createElement("div");
|
319
|
+
m.className = "heatmap-week-cell";
|
320
|
+
m.innerHTML = `<span>${WeekStr[i]}</span>`;
|
321
|
+
weekEle.appendChild(m);
|
279
322
|
}
|
280
323
|
|
281
|
-
|
282
|
-
m.classList = `heatmap-day-cell hm-check-nodata`
|
283
|
-
dayEle.appendChild(m);
|
284
|
-
}
|
285
|
-
}
|
324
|
+
Frag.appendChild(weekEle);
|
286
325
|
|
326
|
+
const dayEle = document.createElement("div");
|
287
327
|
|
288
|
-
|
289
|
-
|
290
|
-
})()
|
328
|
+
dayEle.className = "heatmap-day";
|
329
|
+
dayEle.id = dayEleId;
|
291
330
|
|
331
|
+
let firstDateDayDiff = (ColumnsCount - 1) * RowCount + nowWeek;
|
292
332
|
|
333
|
+
// console.log(nowWeek, firstDateDayDiff);
|
293
334
|
|
335
|
+
for (let c = 0; c < ColumnsCount; c++) {
|
336
|
+
for (let r = 0; r < RowCount; r++) {
|
337
|
+
if (r > nowWeek && c == ColumnsCount - 1) {
|
338
|
+
break;
|
339
|
+
}
|
294
340
|
|
341
|
+
let m = document.createElement("span");
|
342
|
+
m.classList = `heatmap-day-cell hm-check-nodata`;
|
343
|
+
dayEle.appendChild(m);
|
344
|
+
}
|
345
|
+
}
|
295
346
|
|
296
|
-
|
347
|
+
Frag.appendChild(dayEle);
|
348
|
+
Father.append(Frag);
|
349
|
+
})();
|
350
|
+
})();
|