jpc_bill_tab.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. let JV = require('./jpc_value_define');
  2. let JpcFieldHelper = require('./helper/jpc_helper_field');
  3. let JpcBandHelper = require('./helper/jpc_helper_band');
  4. let JpcCommonHelper = require('./helper/jpc_helper_common');
  5. let JpcDiscreteHelper = require('./helper/jpc_helper_discrete');
  6. let JpcTextHelper = require('./helper/jpc_helper_text');
  7. let JpcCommonOutputHelper = require('./helper/jpc_helper_common_output');
  8. let JpcAreaHelper = require('./helper/jpc_helper_area');
  9. let JpcBillTabSrv = function(){};
  10. JpcBillTabSrv.prototype.createNew = function(){
  11. let JpcBillTabResult = {};
  12. JpcBillTabResult.initialize = function() {
  13. let me = this;
  14. me.disp_fields_idx = [];
  15. };
  16. JpcBillTabResult.sorting = function(rptTpl) {
  17. let me = this;
  18. JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT][JV.PROP_BILL_FIELDS], null, me.disp_fields_idx);
  19. };
  20. JpcBillTabResult.paging = function(rptTpl, dataObj) {
  21. let rst = 0;
  22. function getDataLength(fields_str) {
  23. let dataFields = dataObj[fields_str];
  24. if (dataFields && dataFields.length > 0) {
  25. rst = dataFields[0].length;
  26. }
  27. }
  28. if (rptTpl[JV.NODE_FIELD_MAP]) {
  29. if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS]) {
  30. getDataLength(JV.DATA_DETAIL_DATA);
  31. } else if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS]) {
  32. getDataLength(JV.DATA_MASTER_DATA);
  33. } else if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS]) {
  34. getDataLength(JV.DATA_DISCRETE_DATA);
  35. } else if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_PARAMS]) {
  36. rst = 1;
  37. }
  38. }
  39. return rst;
  40. };
  41. JpcBillTabResult.outputAsSimpleJSONPage = function (rptTpl, dataObj, page, bands, controls, $CURRENT_RPT) {
  42. let me = this, rst = [], tabRstLst = [];
  43. //1 calculate the band position
  44. let pageStatus = [true, false, false, false, false, false, false, false];
  45. JpcBandHelper.setBandArea(bands, rptTpl, pageStatus);
  46. //2. start to output detail-part
  47. let unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
  48. //2.1 output content
  49. tabRstLst.push(me.outputContent(rptTpl, dataObj, page, bands, unitFactor, controls, pageStatus, $CURRENT_RPT));
  50. //2.2 output discrete
  51. tabRstLst.push(JpcDiscreteHelper.outputDiscreteInfo(rptTpl[JV.NODE_BILL_INFO][JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, pageStatus, page - 1, 1, 0, $CURRENT_RPT));
  52. for (let i = 0; i < tabRstLst.length; i++) {
  53. rst = rst.concat(tabRstLst[i]);
  54. tabRstLst[i] = null;
  55. }
  56. return rst;
  57. };
  58. JpcBillTabResult.outputContent = function(rptTpl, dataObj, page, bands, unitFactor, controls, pageStatus, $CURRENT_RPT) {
  59. let me = this, rst = [];
  60. let tab = rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT];
  61. let band = bands[tab[JV.PROP_BAND_NAME]];
  62. if (band) {
  63. if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]]) {
  64. let tab_fields = tab[JV.PROP_BILL_FIELDS];
  65. let data_details = null;
  66. if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS]) {
  67. data_details = dataObj[JV.DATA_DETAIL_DATA];
  68. } else if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS]) {
  69. data_details = dataObj[JV.DATA_MASTER_DATA];
  70. }
  71. for (let i = 0; i < tab_fields.length; i++) {
  72. let tab_field = tab_fields[i];
  73. let data_field = null;
  74. if (me.disp_fields_idx.length > i && me.disp_fields_idx[i] !== JV.BLANK_FIELD_INDEX) {
  75. data_field = data_details[me.disp_fields_idx[i]];
  76. } else {
  77. data_field = JE.F(tab_field[JV.PROP_FIELD_ID], $CURRENT_RPT);
  78. if (data_field) {
  79. data_field = data_field[JV.PROP_AD_HOC_DATA];
  80. }
  81. }
  82. if (!(tab_field[JV.PROP_HIDDEN])) {
  83. let val = JpcFieldHelper.getValue(data_field, page - 1);
  84. let cellItem = JpcCommonOutputHelper.createCommonOutput(tab_field, val, controls);
  85. cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, true, false);
  86. rst.push(cellItem);
  87. }
  88. }
  89. if (tab[JV.PROP_TEXT]) {
  90. rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, 1, 0));
  91. }
  92. if (tab[JV.PROP_TEXTS]) {
  93. for (let j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
  94. rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, 1, 0));
  95. }
  96. }
  97. if (tab[JV.NODE_DISCRETE_INFO]) {
  98. rst = rst.concat(JpcDiscreteHelper.outputDiscreteInfo(tab[JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, pageStatus, page - 1, 1, 0));
  99. }
  100. }
  101. }
  102. return rst;
  103. };
  104. return JpcBillTabResult;
  105. };
  106. module.exports = new JpcBillTabSrv();