123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- let JV = require('../jpc_value_define');
- let JpcCommonHelper = require('./jpc_helper_common');
- let JpcBandHelper = {
- getBandTypeValByString: function(bandType) {
- let rst = JV.PAGE_STATUS.indexOf(bandType);
- if (rst < 0) rst = JV.STATUS_NORMAL;
- return rst;
- },
- setBandArea: function(bands, rptTpl, pageStatus, isOnlyNormalStatus, isOnlyExStatus) {
- let me = this;
- if (rptTpl[JV.NODE_BAND_COLLECTION]) {
- isOnlyNormalStatus = isOnlyNormalStatus||false;
- isOnlyExStatus = isOnlyExStatus||false;
- let unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
- let orgArea = JpcCommonHelper.getReportArea(rptTpl, unitFactor);
- for (let i = 0; i < rptTpl[JV.NODE_BAND_COLLECTION].length; i++) {
- me.setBandPos(bands, rptTpl[JV.NODE_BAND_COLLECTION][i], orgArea, unitFactor, pageStatus, isOnlyNormalStatus, isOnlyExStatus);
- }
- }
- },
- setBandPos: function(bands, bandNode, orgArea, unitFactor, pageStatus, isOnlyNormalStatus, isOnlyExStatus) {
- let me = this, band = bands[bandNode[JV.BAND_PROP_NAME]];
- //0. for multi flow purpose
- if (isOnlyNormalStatus) {
- if (bandNode.hasOwnProperty(JV.PROP_BAND_EX_ONLY) && JpcCommonHelper.getBoolean(bandNode[JV.PROP_BAND_EX_ONLY])) {
- return;
- }
- }
- if (isOnlyExStatus) {
- if (bandNode.hasOwnProperty(JV.PROP_BAND_NORMAL_ONLY) && !(JpcCommonHelper.getBoolean(bandNode[JV.PROP_BAND_NORMAL_ONLY]))) {
- return;
- }
- }
- //1. initialize
- band[JV.PROP_LEFT] = orgArea[JV.IDX_LEFT];
- band[JV.PROP_TOP] = orgArea[JV.IDX_TOP];
- band[JV.PROP_RIGHT] = orgArea[JV.IDX_RIGHT];
- band[JV.PROP_BOTTOM] = orgArea[JV.IDX_BOTTOM];
- //2. set this band
- if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) {
- switch (band[JV.BAND_PROP_ALIGNMENT]) {
- case JV.LAYOUT_TOP:
- if (band[JV.PROP_CALCULATION] == JV.CAL_TYPE_ABSTRACT) {
- band.Bottom = band.Top + unitFactor * band[JV.BAND_PROP_HEIGHT];
- } else {
- band.Bottom = band.Top + (band.Bottom - band.Top) * band[JV.BAND_PROP_HEIGHT] / 100;
- }
- orgArea[JV.IDX_TOP] = band.Bottom;
- break;
- case JV.LAYOUT_BOTTOM:
- if (band[JV.PROP_CALCULATION] == JV.CAL_TYPE_ABSTRACT) {
- band.Top = band.Bottom - unitFactor * band[JV.BAND_PROP_HEIGHT];
- } else {
- band.Top = band.Bottom - (band.Bottom - band.Top) * band[JV.BAND_PROP_HEIGHT] / 100;
- }
- orgArea[JV.IDX_BOTTOM] = band.Top;
- break;
- case JV.LAYOUT_LEFT:
- if (band[JV.PROP_CALCULATION] == JV.CAL_TYPE_ABSTRACT) {
- band.Right = band.Left + unitFactor * band[JV.BAND_PROP_WIDTH];
- } else {
- band.Right = band.Left + (band.Right - band.Left) * band[JV.BAND_PROP_WIDTH] / 100;
- }
- orgArea[JV.IDX_LEFT] = band.Right;
- break;
- case JV.LAYOUT_RIGHT:
- if (band[JV.PROP_CALCULATION] == JV.CAL_TYPE_ABSTRACT) {
- band.Left = band.Right - unitFactor * band[JV.BAND_PROP_WIDTH];
- } else {
- band.Left = band.Right - (band.Right - band.Left) * band[JV.BAND_PROP_WIDTH] / 100;
- }
- orgArea[JV.IDX_RIGHT] = band.Left;
- break;
- }
- //3. set sub-bands
- if (bandNode[JV.BAND_PROP_SUB_BANDS]) {
- let bandArea = [band.Left, band.Top, band.Right, band.Bottom];
- for (let i = 0; i < bandNode[JV.BAND_PROP_SUB_BANDS].length; i++) {
- me.setBandPos(bands, bandNode[JV.BAND_PROP_SUB_BANDS][i], bandArea, unitFactor, pageStatus, isOnlyNormalStatus, isOnlyExStatus);
- }
- }
- }
- },
- resetBandPos: function (bandCollection, bands, contentBand, offsetY) {
- let orgY = contentBand.Bottom;
- function chkAndResetPos(targetBand) {
- let band = bands[targetBand.Name];
- if (band) {
- if (band === contentBand) {
- band.Bottom += offsetY;
- } else {
- if (band.Top >= orgY) {
- band.Top += offsetY;
- band.Bottom += offsetY;
- }
- }
- if (targetBand[JV.BAND_PROP_SUB_BANDS]) {
- for (let i = 0; i < targetBand[JV.BAND_PROP_SUB_BANDS].length; i++) {
- chkAndResetPos(targetBand[JV.BAND_PROP_SUB_BANDS][i]);
- }
- }
- }
- }
- for (let i = 0; i < bandCollection.length; i++) {
- chkAndResetPos(bandCollection[i]);
- }
- }
- };
- module.exports = JpcBandHelper;
|