Support maths for DartCounter score entry.
当前为
// ==UserScript==
// @name DartCounter Calculator
// @namespace http://dartcounter.net/
// @author mrdarts180
// @version 2.0
// @license MIT
// @description Support maths for DartCounter score entry.
// @match http*://app.dartcounter.net/*
// @icon https://dartcounter.net/favicon-32x32.png
// @require https://unpkg.com/mathjs/lib/browser/math.js
// @grant GM_addStyle
// ==/UserScript==
(function() {
'use strict';
var observer = new MutationObserver(function(mutations) {
var score = document.getElementsByClassName("in-game-score-field")[0];
if (score) {
score.type = 'text';
score.disabled = false;
score.setAttribute('autocomplete', 'off');
}
});
observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});
document.addEventListener('keydown', (event) => {
var score = document.getElementsByClassName("in-game-score-field")[0];
if (score && event.target == score) {
if (event.keyCode == 13) {
let evalScore = (str) => {
return math.evaluate(str);
};
if (score.value && score.value.length > 0) {
score.value = evalScore(score.value);
score.dispatchEvent(
new Event("input", { bubbles: true, cancelable: true })
);
event.stopPropagation();
score.dispatchEvent(new KeyboardEvent('keydown', {'key': 'Enter'}));
return false;
}
}
// Remaping +/- keys
else if (event.keyCode == 187 || event.keyCode == 189) {
score.value += event.keyCode == 187 ? "+" : "*";
score.dispatchEvent(
new Event("input", { bubbles: true, cancelable: true })
);
event.cancelBubble = true;
event.preventDefault();
event.stopPropagation();
return false;
}
}
}, true);
})();