jpc_helper_common_output.js 3.1 KB

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