jpc_helper_common_output.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. rst[JV.PROP_VALUE] = parseFloat(rst[JV.PROP_VALUE]).toFixed(formatStr.length - dotIdx - 1);
  46. } else {
  47. rst[JV.PROP_VALUE] = parseFloat(rst[JV.PROP_VALUE]).toFixed(0);
  48. }
  49. let commaIdx = formatStr.indexOf(",");
  50. if (commaIdx >= 0) {
  51. rst[JV.PROP_VALUE] = comdify(rst[JV.PROP_VALUE].toString());
  52. }
  53. }
  54. }
  55. }
  56. function comdify(numStr){
  57. let re = /\d{1,3}(?=(\d{3})+$)/g;
  58. return numStr.replace(/^(\d+)((\.\d+)?)$/,function(s,s1,s2){return s1.replace(re,"$&,")+s2;});
  59. }
  60. module.exports = JpcCommonOutputHelper;