Created
February 25, 2020 16:14
-
-
Save danieluhm2004/9f71b447bcc9964d66b6dc221cbc851c to your computer and use it in GitHub Desktop.
github-contributions-ranking
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
console.time(); | |
// data is example source. | |
const data = { | |
data: { | |
'2019': { | |
'2': { '24': 0, '25': 1, '26': 0, '27': 0, '28': 0 }, | |
'3': { | |
'1': 0, | |
'2': 0, | |
'3': 1, | |
'4': 0, | |
'5': 0, | |
'6': 0, | |
'7': 0, | |
'8': 0, | |
'9': 5, | |
'10': 6, | |
'11': 0, | |
'12': 7, | |
'13': 0, | |
'14': 0, | |
'15': 0, | |
'16': 0, | |
'17': 2, | |
'18': 0, | |
'19': 0, | |
'20': 0, | |
'21': 0, | |
'22': 0, | |
'23': 0, | |
'24': 0, | |
'25': 0, | |
'26': 0, | |
'27': 1, | |
'28': 5, | |
'29': 4, | |
'30': 10, | |
'31': 1, | |
}, | |
'4': { | |
'1': 4, | |
'2': 0, | |
'3': 6, | |
'4': 7, | |
'5': 0, | |
'6': 0, | |
'7': 0, | |
'8': 0, | |
'9': 0, | |
'10': 1, | |
'11': 1, | |
'12': 0, | |
'13': 0, | |
'14': 3, | |
'15': 0, | |
'16': 1, | |
'17': 4, | |
'18': 0, | |
'19': 2, | |
'20': 0, | |
'21': 0, | |
'22': 0, | |
'23': 0, | |
'24': 0, | |
'25': 0, | |
'26': 0, | |
'27': 0, | |
'28': 0, | |
'29': 0, | |
'30': 0, | |
}, | |
'5': { | |
'1': 0, | |
'2': 0, | |
'3': 1, | |
'4': 2, | |
'5': 1, | |
'6': 0, | |
'7': 0, | |
'8': 5, | |
'9': 3, | |
'10': 3, | |
'11': 3, | |
'12': 0, | |
'13': 0, | |
'14': 0, | |
'15': 0, | |
'16': 0, | |
'17': 0, | |
'18': 9, | |
'19': 39, | |
'20': 13, | |
'21': 0, | |
'22': 0, | |
'23': 0, | |
'24': 0, | |
'25': 4, | |
'26': 3, | |
'27': 6, | |
'28': 2, | |
'29': 0, | |
'30': 0, | |
'31': 0, | |
}, | |
'6': { | |
'1': 0, | |
'2': 0, | |
'3': 0, | |
'4': 1, | |
'5': 0, | |
'6': 1, | |
'7': 0, | |
'8': 5, | |
'9': 6, | |
'10': 0, | |
'11': 0, | |
'12': 0, | |
'13': 0, | |
'14': 1, | |
'15': 2, | |
'16': 7, | |
'17': 0, | |
'18': 0, | |
'19': 0, | |
'20': 0, | |
'21': 0, | |
'22': 0, | |
'23': 0, | |
'24': 1, | |
'25': 0, | |
'26': 1, | |
'27': 2, | |
'28': 1, | |
'29': 3, | |
'30': 12, | |
}, | |
'7': { | |
'1': 0, | |
'2': 0, | |
'3': 3, | |
'4': 0, | |
'5': 3, | |
'6': 2, | |
'7': 0, | |
'8': 0, | |
'9': 2, | |
'10': 0, | |
'11': 0, | |
'12': 0, | |
'13': 0, | |
'14': 2, | |
'15': 2, | |
'16': 2, | |
'17': 5, | |
'18': 0, | |
'19': 0, | |
'20': 0, | |
'21': 0, | |
'22': 1, | |
'23': 0, | |
'24': 0, | |
'25': 3, | |
'26': 3, | |
'27': 0, | |
'28': 0, | |
'29': 6, | |
'30': 0, | |
'31': 14, | |
}, | |
'8': { | |
'1': 0, | |
'2': 0, | |
'3': 0, | |
'4': 6, | |
'5': 1, | |
'6': 4, | |
'7': 2, | |
'8': 2, | |
'9': 9, | |
'10': 10, | |
'11': 1, | |
'12': 1, | |
'13': 0, | |
'14': 0, | |
'15': 0, | |
'16': 2, | |
'17': 0, | |
'18': 0, | |
'19': 0, | |
'20': 7, | |
'21': 4, | |
'22': 0, | |
'23': 0, | |
'24': 0, | |
'25': 0, | |
'26': 0, | |
'27': 0, | |
'28': 5, | |
'29': 12, | |
'30': 6, | |
'31': 0, | |
}, | |
'9': { | |
'1': 0, | |
'2': 1, | |
'3': 0, | |
'4': 0, | |
'5': 5, | |
'6': 0, | |
'7': 1, | |
'8': 3, | |
'9': 0, | |
'10': 0, | |
'11': 0, | |
'12': 1, | |
'13': 5, | |
'14': 1, | |
'15': 1, | |
'16': 1, | |
'17': 0, | |
'18': 2, | |
'19': 0, | |
'20': 1, | |
'21': 0, | |
'22': 1, | |
'23': 0, | |
'24': 2, | |
'25': 13, | |
'26': 20, | |
'27': 0, | |
'28': 5, | |
'29': 0, | |
'30': 0, | |
}, | |
'10': { | |
'1': 0, | |
'2': 3, | |
'3': 0, | |
'4': 0, | |
'5': 1, | |
'6': 0, | |
'7': 0, | |
'8': 0, | |
'9': 0, | |
'10': 0, | |
'11': 0, | |
'12': 0, | |
'13': 0, | |
'14': 0, | |
'15': 0, | |
'16': 0, | |
'17': 0, | |
'18': 0, | |
'19': 0, | |
'20': 0, | |
'21': 0, | |
'22': 0, | |
'23': 0, | |
'24': 0, | |
'25': 0, | |
'26': 0, | |
'27': 0, | |
'28': 4, | |
'29': 0, | |
'30': 0, | |
'31': 0, | |
}, | |
'11': { | |
'1': 0, | |
'2': 0, | |
'3': 0, | |
'4': 0, | |
'5': 0, | |
'6': 0, | |
'7': 0, | |
'8': 0, | |
'9': 0, | |
'10': 3, | |
'11': 4, | |
'12': 2, | |
'13': 0, | |
'14': 0, | |
'15': 10, | |
'16': 0, | |
'17': 0, | |
'18': 0, | |
'19': 0, | |
'20': 3, | |
'21': 0, | |
'22': 7, | |
'23': 1, | |
'24': 0, | |
'25': 0, | |
'26': 0, | |
'27': 1, | |
'28': 2, | |
'29': 0, | |
'30': 0, | |
}, | |
'12': { | |
'1': 1, | |
'2': 0, | |
'3': 0, | |
'4': 0, | |
'5': 1, | |
'6': 3, | |
'7': 11, | |
'8': 1, | |
'9': 0, | |
'10': 1, | |
'11': 12, | |
'12': 1, | |
'13': 0, | |
'14': 0, | |
'15': 1, | |
'16': 0, | |
'17': 0, | |
'18': 3, | |
'19': 0, | |
'20': 1, | |
'21': 2, | |
'22': 1, | |
'23': 0, | |
'24': 0, | |
'25': 0, | |
'26': 0, | |
'27': 2, | |
'28': 0, | |
'29': 0, | |
'30': 0, | |
'31': 1, | |
}, | |
}, | |
'2020': { | |
'1': { | |
'1': 3, | |
'2': 5, | |
'3': 1, | |
'4': 2, | |
'5': 4, | |
'6': 5, | |
'7': 1, | |
'8': 2, | |
'9': 7, | |
'10': 2, | |
'11': 0, | |
'12': 1, | |
'13': 1, | |
'14': 9, | |
'15': 3, | |
'16': 2, | |
'17': 1, | |
'18': 4, | |
'19': 2, | |
'20': 2, | |
'21': 1, | |
'22': 1, | |
'23': 1, | |
'24': 8, | |
'25': 18, | |
'26': 2, | |
'27': 2, | |
'28': 4, | |
'29': 1, | |
'30': 1, | |
'31': 3, | |
}, | |
'2': { | |
'1': 3, | |
'2': 1, | |
'3': 1, | |
'4': 3, | |
'5': 1, | |
'6': 2, | |
'7': 1, | |
'8': 1, | |
'9': 2, | |
'10': 2, | |
'11': 1, | |
'12': 1, | |
'13': 2, | |
'14': 1, | |
'15': 2, | |
'16': 4, | |
'17': 0, | |
'18': 0, | |
'19': 2, | |
'20': 1, | |
'21': 1, | |
'22': 0, | |
'23': 0, | |
'24': 1, | |
'25': 0, | |
}, | |
}, | |
}, | |
}; | |
const ranking = []; | |
let tmpCount = 0; | |
let tmpStart = null; | |
for (const y of Object.keys(data.data)) { | |
const year = data.data[y]; | |
for (const m of Object.keys(year)) { | |
const month = year[m]; | |
for (const d of Object.keys(month)) { | |
const day = month[d]; | |
const display = `${y}/${m}/${d}`; | |
if (day > 0) { | |
if (tmpCount++ === 0) { | |
tmpStart = display; | |
} | |
} else { | |
if (tmpCount > 0) { | |
ranking.push({ | |
count: tmpCount, | |
start: tmpStart, | |
end: display, | |
}); | |
tmpCount = 0; | |
tmpStart = null; | |
} | |
} | |
} | |
} | |
} | |
ranking.sort((a, b) => b.count - a.count); | |
console.timeEnd(); | |
console.log(ranking); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Example Result: