// ==UserScript==
// @name BunPro: JLPT Percentage
// @namespace http://tampermonkey.net/
// @version 0.2.12
// @description Adds percentages to the progress bars.
// @author Kumirei
// @match https://bunpro.jp/*
// @require https://greasyfork.org/scripts/432418-wait-for-selector/code/Wait%20For%20Selector.js?version=974366
// @grant none
// @downloadURL none
// ==/UserScript==
;(function ($, wfs) {
$('head').append(
'',
)
const percentNumberToString = (percentNumber) => {
if (percentNumber === 0) {
return '0%' // instead of "0.00%";
} else if (percentNumber === 100) {
return '100%'
} else {
return (percentNumber.toFixed(1) + '%').replace('.0%', '%')
}
}
wfs.wait('.profile-jlpt-level .progress-bar', function (e) {
var percentNumber = Number($(e).attr('aria-valuenow'))
var percentString = percentNumberToString(percentNumber)
const parentNode = $(e.parentNode)
for (const child of parentNode[0].children) {
if (child.classList.contains('percentage')) {
return
}
}
parentNode.append('' + percentString + '')
})
wfs.wait('.profile-jlpt-level', function (e) {
if (!$('.profile-jlpt-level.total').length) {
var bar = $('.profile-jlpt-level')[0].cloneNode(true)
bar.className += ' total'
$(bar).find('.percentage').remove()
bar.childNodes[1].innerText = 'Tot'
var barelem = $(bar).find('.progress-bar')
var total = 0
var learned = 0
$('[id$="jlpt_level_progress_bars"] .progress-count').each(function (i, e) {
var counts = e.childNodes[0].textContent.split('/')
total += Number(counts[1])
learned += Number(counts[0])
})
var percentage = (learned / total) * 100
barelem.attr('aria-valuenow', percentage)
barelem.attr('style', 'width: ' + percentage + '%;')
barelem.parent().append('' + percentNumberToString(percentage) + '')
$(bar).find('.progress-count')[0].innerText = String(learned) + '/' + String(total)
var lastbar = $('.profile-jlpt-level')
$(lastbar[lastbar.length - 1]).after(bar)
}
})
})(window.jQuery, window.wfs)