Jpc_BillTab.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. var JV = require('./Jpc_ValueDefine');
  2. var JpcFieldHelper = require('./helper/Jpc_Helper_Field');
  3. var JpcBandHelper = require('./helper/Jpc_Helper_Band');
  4. var JpcBand = require('./Jpc_Band');
  5. var JpcFlowTabHelper = require('./helper/Jpc_Helper_FlowTab');
  6. var JpcCommonHelper = require('./helper/Jpc_Helper_Common');
  7. var JpcDiscreteHelper = require('./helper/Jpc_Helper_Discrete');
  8. var JpcTextHelper = require('./helper/Jpc_Helper_Text');
  9. var JpcCommonOutputHelper = require('./helper/Jpc_Helper_CommonOutput');
  10. var JpcAreaHelper = require('./helper/Jpc_Helper_Area');
  11. var JpcBillTabSrv = function(){};
  12. JpcBillTabSrv.prototype.createNew = function(){
  13. var JpcBillTabResult = {};
  14. JpcBillTabResult.initialize = function() {
  15. var me = this;
  16. me.disp_fields_idx = [];
  17. };
  18. JpcBillTabResult.sorting = function(rptTpl) {
  19. var me = this;
  20. JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT][JV.PROP_BILL_FIELDS], null, me.disp_fields_idx);
  21. };
  22. JpcBillTabResult.outputAsSimpleJSONPage = function (rptTpl, dataObj, page, bands, controls, $CURRENT_RPT) {
  23. var me = this, rst = [], tabRstLst = [];
  24. //1 calculate the band position
  25. var pageStatus = [true, false, false, false, false, false, false, false];
  26. JpcBandHelper.setBandArea(bands, rptTpl, pageStatus);
  27. //2. start to output detail-part
  28. var unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
  29. //2.1 output content
  30. tabRstLst.push(me.outputContent(rptTpl, dataObj, page, bands, unitFactor, controls, pageStatus));
  31. //2.2 output discrete
  32. tabRstLst.push(JpcDiscreteHelper.outputDiscreteInfo(rptTpl[JV.NODE_BILL_INFO][JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, pageStatus, page - 1, 1, 0, $CURRENT_RPT));
  33. }
  34. JpcBillTabResult.outputContent = function(rptTpl, dataObj, page, bands, unitFactor, controls, pageStatus) {
  35. var me = this, rst = [];
  36. var tab = rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT];
  37. var band = bands[tab[JV.PROP_BAND_NAME]];
  38. if (band) {
  39. if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
  40. var tab_fields = tab[JV.PROP_BILL_FIELDS];
  41. var data_details = dataObj[JV.DATA_MASTER_DATA];
  42. for (var i = 0; i < tab_fields.length; i++) {
  43. var tab_field = tab_fields[i];
  44. var data_field = null;
  45. if (me.disp_fields_idx[i] != JV.BLANK_FIELD_INDEX) {
  46. data_field = data_details[me.disp_fields_idx[i]];
  47. } else {
  48. data_field = JE.F(tab_field[JV.PROP_FIELD_ID]);
  49. if (data_field) {
  50. data_field = data_field[JV.PROP_AD_HOC_DATA];
  51. }
  52. }
  53. if (!(tab_field[JV.PROP_HIDDEN])) {
  54. var cellItem = JpcCommonOutputHelper.createCommonOutput(tab_field, JpcFieldHelper.getValue(data_field, page - 1), controls);
  55. cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, true, false);
  56. rst.push(cellItem);
  57. }
  58. }
  59. if (tab[JV.PROP_TEXT]) {
  60. rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, 1, 0));
  61. }
  62. if (tab[JV.PROP_TEXTS]) {
  63. for (var j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
  64. rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, 1, 0));
  65. }
  66. }
  67. if (tab[JV.NODE_DISCRETE_INFO]) {
  68. rst = rst.concat(JpcDiscreteHelper.outputDiscreteInfo(tab[JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, pageStatus, page - 1, 1, 0));
  69. }
  70. }
  71. }
  72. return rst;
  73. }
  74. return JpcBillTabResult;
  75. }
  76. module.exports = new JpcBillTabSrv();