Jpc_Helper_Band.js 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. var JV = require('../Jpc_ValueDefine');
  2. var JpcCommonHelper = require('./Jpc_Helper_Common');
  3. var JpcBandHelper = {
  4. getBandTypeValByString: function(bandType) {
  5. var rst = JV.PAGE_STATUS.indexOf(bandType);
  6. if (rst < 0) rst = JV.STATUS_NORMAL;
  7. return rst;
  8. },
  9. setBandArea: function(bands, rptTpl, pageStatus) {
  10. var me = this;
  11. if (rptTpl[JV.NODE_BAND_COLLECTION]) {
  12. var unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
  13. var orgArea = JpcCommonHelper.getReportArea(rptTpl, unitFactor);
  14. for (var i = 0; i < rptTpl[JV.NODE_BAND_COLLECTION].length; i++) {
  15. me.setBandPos(bands, rptTpl[JV.NODE_BAND_COLLECTION][i], orgArea, unitFactor, pageStatus);
  16. }
  17. }
  18. },
  19. setBandPos: function(bands, bandNode, orgArea, unitFactor, pageStatus) {
  20. var me = this, band = bands[bandNode[JV.BAND_PROP_NAME]];
  21. //1. initialize
  22. band[JV.PROP_LEFT] = orgArea[JV.IDX_LEFT];
  23. band[JV.PROP_TOP] = orgArea[JV.IDX_TOP];
  24. band[JV.PROP_RIGHT] = orgArea[JV.IDX_RIGHT];
  25. band[JV.PROP_BOTTOM] = orgArea[JV.IDX_BOTTOM];
  26. //2. set this band
  27. if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
  28. switch (band[JV.BAND_PROP_ALIGNMENT]) {
  29. case JV.LAYOUT_TOP:
  30. if (band[JV.PROP_CALCULATION] == JV.CAL_TYPE_ABSTRACT) {
  31. band.Bottom = band.Top + unitFactor * band[JV.BAND_PROP_HEIGHT];
  32. } else {
  33. band.Bottom = band.Top + (band.Bottom - band.Top) * band[JV.BAND_PROP_HEIGHT] / 100;
  34. }
  35. orgArea[JV.IDX_TOP] = band.Bottom;
  36. break;
  37. case JV.LAYOUT_BOTTOM:
  38. if (band[JV.PROP_CALCULATION] == JV.CAL_TYPE_ABSTRACT) {
  39. band.Top = band.Bottom - unitFactor * band[JV.BAND_PROP_HEIGHT];
  40. } else {
  41. band.Top = band.Bottom - (band.Bottom - band.Top) * band[JV.BAND_PROP_HEIGHT] / 100;
  42. }
  43. orgArea[JV.IDX_BOTTOM] = band.Top;
  44. break;
  45. case JV.LAYOUT_LEFT:
  46. if (band[JV.PROP_CALCULATION] == JV.CAL_TYPE_ABSTRACT) {
  47. band.Right = band.Left + unitFactor * band[JV.BAND_PROP_WIDTH];
  48. } else {
  49. band.Right = band.Left + (band.Right - band.Left) * band[JV.BAND_PROP_WIDTH] / 100;
  50. }
  51. orgArea[JV.IDX_LEFT] = band.Right;
  52. break;
  53. case JV.LAYOUT_RIGHT:
  54. if (band[JV.PROP_CALCULATION] == JV.CAL_TYPE_ABSTRACT) {
  55. band.Left = band.Right - unitFactor * band[JV.BAND_PROP_WIDTH];
  56. } else {
  57. band.Left = band.Right - (band.Right - band.Left) * band[JV.BAND_PROP_WIDTH] / 100;
  58. }
  59. orgArea[JV.IDX_RIGHT] = band.Left;
  60. break;
  61. }
  62. //3. set sub-bands
  63. if (bandNode[JV.BAND_PROP_SUB_BANDS]) {
  64. var bandArea = [band.Left, band.Top, band.Right, band.Bottom];
  65. for (var i = 0; i < bandNode[JV.BAND_PROP_SUB_BANDS].length; i++) {
  66. me.setBandPos(bands, bandNode[JV.BAND_PROP_SUB_BANDS][i], bandArea, unitFactor, pageStatus);
  67. }
  68. }
  69. }
  70. }
  71. };
  72. module.exports = JpcBandHelper;