MediaWiki:CharCount.js: Difference between revisions
Jump to navigation
Jump to search
Richardpruen (talk | contribs) No edit summary |
Richardpruen (talk | contribs) (Forgot the identifier) |
||
(14 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
$(function () { | $( function () { | ||
var myPlace = document.getElementById('CharCount'); | var myPlace = document.getElementById('CharCount'); | ||
function getID(id) { | |||
return document.getElementById(id); | |||
} | |||
function addNumericOptions(id, min, max, defIndex) { | |||
var s = getID(id); | var s = getID(id); | ||
for (ii=min; ii<=max; ii++) { | for (ii=min; ii<=max; ii++) { | ||
Line 9: | Line 13: | ||
s.add(option); | s.add(option); | ||
} | } | ||
s.value = defIndex; | |||
} | |||
} | function getMaxChars() { | ||
var maxChar = getID('chars'); | var maxChar = getID('chars'); | ||
return maxChar.value; | return maxChar.value; | ||
} | } | ||
function getLinkDiscount() { | |||
checkDiscount = getID('linkAbbreviate'); | checkDiscount = getID('linkAbbreviate'); | ||
if (!checkDiscount.checked) return 0; | if (!checkDiscount.checked) return 0; | ||
Line 42: | Line 43: | ||
return discount; | return discount; | ||
} | } | ||
function updateParamValues() { | |||
var c = getParamValue('c'); | var c = getParamValue('c'); | ||
lengthChoice = getID('chars'); | lengthChoice = getID('chars'); | ||
Line 59: | Line 60: | ||
text.rows = c/25; | text.rows = c/25; | ||
} | } | ||
function getParamValue(name) { | |||
var url = window.location.href; | var url = window.location.href; | ||
l1 = url.length; | l1 = url.length; | ||
Line 79: | Line 80: | ||
return null; | return null; | ||
} | } | ||
function updateOutput() { | |||
ld = getLinkDiscount(); | ld = getLinkDiscount(); | ||
cc = getCharacterCount(); | cc = getCharacterCount(); | ||
Line 101: | Line 102: | ||
o.value = v; | o.value = v; | ||
} | } | ||
function getCharacterCount() { | |||
input = getID('text'); | input = getID('text'); | ||
return input.value.length; | return input.value.length; | ||
} | } | ||
function setup() { | |||
addNumericOptions('chars', 40, 1000, 280); | addNumericOptions('chars', 40, 1000, 280); | ||
addNumericOptions('linkChars', 0, 100, 13); | addNumericOptions('linkChars', 0, 100, 13); | ||
Line 113: | Line 114: | ||
updateOutput(); | updateOutput(); | ||
} | } | ||
} | }); |
Latest revision as of 16:27, 8 December 2023
$( function () {
var myPlace = document.getElementById('CharCount');
function getID(id) {
return document.getElementById(id);
}
function addNumericOptions(id, min, max, defIndex) {
var s = getID(id);
for (ii=min; ii<=max; ii++) {
var option = document.createElement("option");
option.text = ii;
option.value = ii;
s.add(option);
}
s.value = defIndex;
}
function getMaxChars() {
var maxChar = getID('chars');
return maxChar.value;
}
function getLinkDiscount() {
checkDiscount = getID('linkAbbreviate');
if (!checkDiscount.checked) return 0;
input = getID('text');
sub = getID('linkChars');
let text = "" + input.value.length;
text = text.replaceAll('\\n', ' ');
text = text.replaceAll('\\t', ' ');
var subLength = sub.value;
var discount = 0;
const parts = input.value.split(" ");
for (ii=0; ii<parts.length; ii++) {
part = parts[ii];
l1 = part.length;
l2 = part.replaceAll('http','').length;
if (l1>l2) {
l1 = part.length;
discount+= l1-subLength;
}
}
return discount;
}
function updateParamValues() {
var c = getParamValue('c');
lengthChoice = getID('chars');
lengthChoice.value = c;
var l = getParamValue('l');
la = getID('linkAbbreviate');
if (l!=null) {
linkChoice = getID('linkChars');
linkChoice.value = l;
la.checked = true;
} else {
la.checked = false;
}
var text = getID('text');
text.rows = c/25;
}
function getParamValue(name) {
var url = window.location.href;
l1 = url.length;
l2 = url.replaceAll('?','').length;
if (l1==l2) {
return null;
}
const params = url.split('?')[1]; // the params, hopefully
const paramValues = params.split('&');
for (ii=0; ii<paramValues.length; ii++) {
paramValue = paramValues[ii];
//alert(paramValue);
paramName = paramValue.split('=')[0];
if (paramName==name) {
return paramValue.split('=')[1];
}
}
return null;
}
function updateOutput() {
ld = getLinkDiscount();
cc = getCharacterCount();
ccd = cc-ld;
max = getMaxChars();
rmn = max-ccd;
var warningLevel = getID('warningLevel');
warningLevel.style.background = "rgb(0,255,0)";
if (rmn<10) {
warningLevel.style.background = "rgb(255,255,0)";
}
if (rmn<0) {
warningLevel.style.background = "rgb(255,0,0)";
}
var v = "This content uses " + ccd + " characters of " +
getMaxChars() + " allowed. " +
rmn + " characters to spare.";
var o = getID('outputCount');
o.value = v;
}
function getCharacterCount() {
input = getID('text');
return input.value.length;
}
function setup() {
addNumericOptions('chars', 40, 1000, 280);
addNumericOptions('linkChars', 0, 100, 13);
updateParamValues();
updateOutput();
}
});