numericRenderer.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import numbro from 'numbro';
  2. import { getRenderer } from './index';
  3. import { isNumeric } from './../helpers/number';
  4. /**
  5. * Numeric cell renderer
  6. *
  7. * @private
  8. * @renderer NumericRenderer
  9. * @dependencies numbro
  10. * @param {Object} instance Handsontable instance
  11. * @param {Element} TD Table cell where to render
  12. * @param {Number} row
  13. * @param {Number} col
  14. * @param {String|Number} prop Row object property name
  15. * @param value Value to render (remember to escape unsafe HTML before inserting to DOM!)
  16. * @param {Object} cellProperties Cell properties (shared by cell renderer and editor)
  17. */
  18. function numericRenderer(instance, TD, row, col, prop, value, cellProperties) {
  19. if (isNumeric(value)) {
  20. if (typeof cellProperties.language !== 'undefined') {
  21. numbro.culture(cellProperties.language);
  22. }
  23. value = numbro(value).format(cellProperties.format || '0');
  24. var className = cellProperties.className || '';
  25. var classArr = className.length ? className.split(' ') : [];
  26. if (classArr.indexOf('htLeft') < 0 && classArr.indexOf('htCenter') < 0 && classArr.indexOf('htRight') < 0 && classArr.indexOf('htJustify') < 0) {
  27. classArr.push('htRight');
  28. }
  29. if (classArr.indexOf('htNumeric') < 0) {
  30. classArr.push('htNumeric');
  31. }
  32. cellProperties.className = classArr.join(' ');
  33. }
  34. getRenderer('text')(instance, TD, row, col, prop, value, cellProperties);
  35. }
  36. export default numericRenderer;