jpc_helper_common_output.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. let JV = require('../jpc_value_define');
  2. let JpcFieldHelper = require('./jpc_helper_field');
  3. const OFFSET_FLOAT = 0.0000000001;
  4. let JpcCommonOutputHelper = {
  5. createCommonOutputWithoutDecorate: function (node, value, forceCombine) {
  6. let me = this, rst = {};
  7. //1. font/style/control
  8. rst[JV.PROP_FONT] = node[[JV.PROP_FONT]];
  9. rst[JV.PROP_CONTROL] = node[[JV.PROP_CONTROL]];
  10. rst[JV.PROP_STYLE] = node[[JV.PROP_STYLE]];
  11. //2. value
  12. rst[JV.PROP_VALUE] = value;
  13. me.formatCell(node[JV.PROP_FORMAT], rst);
  14. // innerFormat(node[JV.PROP_FORMAT], rst);
  15. if (node[JV.PROP_PREFIX] && rst[JV.PROP_VALUE] !== null) {
  16. rst[JV.PROP_VALUE] = node[JV.PROP_PREFIX] + rst[JV.PROP_VALUE];
  17. } else if (node[JV.PROP_PREFIX] && forceCombine) {
  18. rst[JV.PROP_VALUE] = node[JV.PROP_PREFIX];
  19. }
  20. if (node[JV.PROP_SUFFIX] && rst[JV.PROP_VALUE] !== null) {
  21. rst[JV.PROP_VALUE] = rst[JV.PROP_VALUE] + node[JV.PROP_SUFFIX];
  22. } else if (node[JV.PROP_SUFFIX] && forceCombine) {
  23. rst[JV.PROP_VALUE] = node[JV.PROP_SUFFIX];
  24. }
  25. return rst;
  26. },
  27. createCommonOutput: function (node, value, controls) {
  28. let me = this, rst = {};
  29. //1. font/style/control
  30. rst[JV.PROP_FONT] = node[[JV.PROP_FONT]];
  31. rst[JV.PROP_CONTROL] = node[[JV.PROP_CONTROL]];
  32. rst[JV.PROP_STYLE] = node[[JV.PROP_STYLE]];
  33. if (node.diagonal_down === 'T') {
  34. rst.diagonal_down = true;
  35. } else if (node.diagonal_up === 'T') {
  36. rst.diagonal_up = true;
  37. }
  38. //2. value
  39. rst[JV.PROP_VALUE] = value;
  40. JpcFieldHelper.decorateValue(rst, controls);
  41. me.formatCell(node[JV.PROP_FORMAT], rst);
  42. // innerFormat(node[JV.PROP_FORMAT], rst);
  43. if (node[JV.PROP_PREFIX] && rst[JV.PROP_VALUE] !== null && rst[JV.PROP_VALUE] !== "") {
  44. rst[JV.PROP_VALUE] = node[JV.PROP_PREFIX] + rst[JV.PROP_VALUE];
  45. }
  46. if (node[JV.PROP_SUFFIX] && rst[JV.PROP_VALUE] !== null && rst[JV.PROP_VALUE] !== "") {
  47. rst[JV.PROP_VALUE] = rst[JV.PROP_VALUE] + node[JV.PROP_SUFFIX];
  48. }
  49. return rst;
  50. },
  51. formatCell: function(formatStr, rstCell) {
  52. if (formatStr) {
  53. const rstCellFloatVal = parseFloat(rstCell[JV.PROP_VALUE]);
  54. if (!(isNaN(rstCellFloatVal))) {
  55. const dotIdx = formatStr.indexOf('.');
  56. if (dotIdx >= 0) {
  57. let tmpStr = (rstCellFloatVal + OFFSET_FLOAT).toFixed(formatStr.length - dotIdx - 1);
  58. const digStr = formatStr.substr(dotIdx + 1, formatStr.length - dotIdx);
  59. for (let sIdx = digStr.length - 1; sIdx >= 0; sIdx--) {
  60. if (digStr[sIdx] === '#') {
  61. if (tmpStr.length > 0 && tmpStr[tmpStr.length - 1] === '0') {
  62. tmpStr = tmpStr.substr(0, tmpStr.length - 1);
  63. } else {
  64. break;
  65. }
  66. } else {
  67. break;
  68. }
  69. }
  70. if (tmpStr[tmpStr.length - 1] === '.') tmpStr = tmpStr.substr(0, tmpStr.length - 1);
  71. rstCell[JV.PROP_VALUE] = tmpStr;
  72. } else {
  73. rstCell[JV.PROP_VALUE] = (rstCellFloatVal + OFFSET_FLOAT).toFixed(0);
  74. }
  75. const commaIdx = formatStr.indexOf(',');
  76. if (commaIdx >= 0) {
  77. rstCell[JV.PROP_VALUE] = comdify(rstCell[JV.PROP_VALUE].toString());
  78. }
  79. }
  80. }
  81. }
  82. };
  83. function comdify(numStr){
  84. let re = /\d{1,3}(?=(\d{3})+$)/g;
  85. return numStr.replace(/^(\d+)((\.\d+)?)$/,function(s,s1,s2){return s1.replace(re,"$&,")+s2;});
  86. }
  87. module.exports = JpcCommonOutputHelper;