| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import numbro from 'numbro';
- import { getRenderer } from './index';
- import { isNumeric } from './../helpers/number';
- /**
- * Numeric cell renderer
- *
- * @private
- * @renderer NumericRenderer
- * @param {Object} instance Handsontable instance
- * @param {Element} TD Table cell where to render
- * @param {Number} row
- * @param {Number} col
- * @param {String|Number} prop Row object property name
- * @param value Value to render (remember to escape unsafe HTML before inserting to DOM!)
- * @param {Object} cellProperties Cell properties (shared by cell renderer and editor)
- */
- function numericRenderer(instance, TD, row, col, prop, value, cellProperties) {
- let newValue = value;
- if (isNumeric(newValue)) {
- const numericFormat = cellProperties.numericFormat;
- const cellCulture = numericFormat && numericFormat.culture || '-';
- const cellFormatPattern = numericFormat && numericFormat.pattern;
- const className = cellProperties.className || '';
- const classArr = className.length ? className.split(' ') : [];
- if (numericFormat && numericFormat.zeroFormat !== undefined) {
- numbro.zeroFormat(numericFormat.zeroFormat);
- } else {
- numbro.zeroFormat(null);
- }
- if (typeof cellCulture !== 'undefined' && !numbro.languages()[cellCulture]) {
- const shortTag = cellCulture.replace('-', '');
- const langData = numbro.allLanguages ? numbro.allLanguages[cellCulture] : numbro[shortTag];
- if (langData) {
- numbro.registerLanguage(langData);
- }
- }
- numbro.setLanguage(cellCulture);
- newValue = numbro(newValue).format(cellFormatPattern || '0');
- if (classArr.indexOf('htLeft') < 0 && classArr.indexOf('htCenter') < 0 &&
- classArr.indexOf('htRight') < 0 && classArr.indexOf('htJustify') < 0) {
- classArr.push('htRight');
- }
- if (classArr.indexOf('htNumeric') < 0) {
- classArr.push('htNumeric');
- }
- cellProperties.className = classArr.join(' ');
- }
- getRenderer('text')(instance, TD, row, col, prop, newValue, cellProperties);
- }
- export default numericRenderer;
|