luci-base: cbi.js: string formatting fixes
* Fix left and right justify/padding in formats * Do not emit decimal numbers for small values in %m format Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
This commit is contained in:
parent
5cfad4338f
commit
a860de860a
1 changed files with 15 additions and 3 deletions
|
@ -1309,7 +1309,7 @@ String.prototype.format = function()
|
||||||
var re = /^(([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X|q|h|j|t|m))/;
|
var re = /^(([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X|q|h|j|t|m))/;
|
||||||
var a = b = [], numSubstitutions = 0, numMatches = 0;
|
var a = b = [], numSubstitutions = 0, numMatches = 0;
|
||||||
|
|
||||||
while( a = re.exec(str) )
|
while (a = re.exec(str))
|
||||||
{
|
{
|
||||||
var m = a[1];
|
var m = a[1];
|
||||||
var leftpart = a[2], pPad = a[3], pJustify = a[4], pMinLength = a[5];
|
var leftpart = a[2], pPad = a[3], pJustify = a[4], pMinLength = a[5];
|
||||||
|
@ -1332,6 +1332,8 @@ String.prototype.format = function()
|
||||||
pad = leftpart.substr(1,1);
|
pad = leftpart.substr(1,1);
|
||||||
else if (pPad)
|
else if (pPad)
|
||||||
pad = pPad;
|
pad = pPad;
|
||||||
|
else
|
||||||
|
pad = ' ';
|
||||||
|
|
||||||
var justifyRight = true;
|
var justifyRight = true;
|
||||||
if (pJustify && pJustify === "-")
|
if (pJustify && pJustify === "-")
|
||||||
|
@ -1432,17 +1434,27 @@ String.prototype.format = function()
|
||||||
|
|
||||||
var i = 0;
|
var i = 0;
|
||||||
var val = (+param || 0);
|
var val = (+param || 0);
|
||||||
var units = [ '', 'K', 'M', 'G', 'T', 'P', 'E' ];
|
var units = [ ' ', ' K', ' M', ' G', ' T', ' P', ' E' ];
|
||||||
|
|
||||||
for (i = 0; (i < units.length) && (val > mf); i++)
|
for (i = 0; (i < units.length) && (val > mf); i++)
|
||||||
val /= mf;
|
val /= mf;
|
||||||
|
|
||||||
subst = val.toFixed(pr) + ' ' + units[i];
|
subst = (i ? val.toFixed(pr) : val) + units[i];
|
||||||
|
pMinLength = null;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pMinLength) {
|
||||||
|
subst = subst.toString();
|
||||||
|
for (var i = subst.length; i < pMinLength; i++)
|
||||||
|
if (pJustify == '-')
|
||||||
|
subst = subst + ' ';
|
||||||
|
else
|
||||||
|
subst = pad + subst;
|
||||||
|
}
|
||||||
|
|
||||||
out += leftpart + subst;
|
out += leftpart + subst;
|
||||||
str = str.substr(m.length);
|
str = str.substr(m.length);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue