ekangularbase
Version:
Authentication service for usermanagement(oidc client)
95 lines (76 loc) • 3.67 kB
text/typescript
import { Formatter, Column } from 'angular-slickgrid';
export const ekThousandSeparatorFormatter: Formatter = (row: number, cell: number, value: any,
columnDef: Column, dataContext: any, grid: any) => {
// const isNumber = (value === null || value === undefined || value === '') ? false : !isNaN(+value);
const params = columnDef.params || {};
const minDecimal = params ? params['minDecimalPlaces'] : undefined;
const maxDecimal = params ? params['maxDecimalPlaces'] : undefined;
// const displayNegativeNumberWithParentheses =
// getValueFromParamsOrGridOptions('displayNegativeNumberWithParentheses', columnDef, grid, false);
// // @deprecated: decimalPlaces, minDecimalPlaces, maxDecimalPlaces
// // add these extra checks to support previous way of passing the decimal count
// if ((params.minDecimalPlaces !== null && params.minDecimalPlaces) || (params.decimalPlaces !== null && params.decimalPlaces)) {
// minDecimal = (params.minDecimalPlaces !== null && params.minDecimalPlaces) ||
// (params.decimalPlaces !== null && params.decimalPlaces);
// }
// if (params.maxDecimalPlaces !== null && params.maxDecimalPlaces) {
// maxDecimal = (params.maxDecimalPlaces !== null && params.maxDecimalPlaces);
// }
// if (isNumber) {
// return formatNumber(value, minDecimal, maxDecimal, displayNegativeNumberWithParentheses);
// }
// return value;
return numberWithCommas(value, minDecimal, maxDecimal);
};
export function numberWithCommas(input: number | string, minDecimal?: number, maxDecimal?: number) {
if (input === undefined || input === null || input === '') { return ''; }
if (isNaN(+input)) {
return 'NaN';
}
let count = 0;
const valStr = String(input);
const parts = valStr.split('.');
let parts1 = parts[0];
let parts2 = '';
if (parts.length === 2) {
parts2 = parts[1];
}
// if (maxDecimal) {
// let x = 1;
// }
// if (maxDecimal === 0) {
// let x = 1;
// }
// if (maxDecimal <= 0) {
// let x = 1;
// }
// if (maxDecimal > 0) {
// let x = 1;
// }
if (minDecimal && minDecimal > parts2.length) {
while (minDecimal > parts2.length) { parts2 += '0'; }
}
if (maxDecimal && maxDecimal > 0 && maxDecimal < parts2.length) {
const lastDigit = parseInt(parts2[maxDecimal]);
let last2ndDigit = parseInt(parts2[maxDecimal - 1]);
if (lastDigit >= 5) { last2ndDigit += 1; }
parts2 = parts2.substr(0, maxDecimal - 1) + last2ndDigit.toString();
}
if (maxDecimal === 0 && parts2.length > 0) {
const lastDigit = parseInt(parts2[0]);
let last2ndDigit = parseInt(parts1[parts1.length - 1]);
if (lastDigit >= 5) { last2ndDigit += 1; }
parts1 = parts1.substr(0, parts1.length - 1) + last2ndDigit.toString();
parts2 = '';
}
let result = parts2 === '' ? '' : '.' + parts2;
for (let i = parts1.length - 1; i >= 0; i--) {
count++;
result = parts1[i] + result;
if (count === 3) {
if (i > 0 && parts1[i - 1] !== '-') { result = ',' + result; }
count = 0;
}
}
return result;
}