TonyKang 7 år sedan
förälder
incheckning
0149a519d7
1 ändrade filer med 43 tillägg och 14 borttagningar
  1. 43 14
      modules/reports/rpt_component/helper/jpc_helper_area.js

+ 43 - 14
modules/reports/rpt_component/helper/jpc_helper_area.js

@@ -8,29 +8,58 @@ let JpcAreaHelper = {
             let areaWidth = 1.0 * (band[JV.PROP_RIGHT] - band[JV.PROP_LEFT]) / multipleDispCol;
             areaWidth = areaWidth / colAmount;
             let innerLeft = 0.0, innerRight = areaWidth;
-            switch (areaNode[JV.PROP_H_CALCULATION]) {
-                case JV.CAL_TYPE[JV.CAL_TYPE_PERCENTAGE] :
+            //
+            if (typeof areaNode[JV.PROP_H_CALCULATION]  === "string") {
+                switch (areaNode[JV.PROP_H_CALCULATION]) {
+                    case JV.CAL_TYPE[JV.CAL_TYPE_PERCENTAGE] :
+                        innerLeft = (1.0 * areaNode[JV.PROP_LEFT] * areaWidth / JV.HUNDRED_PERCENT);
+                        innerRight = (1.0 * areaNode[JV.PROP_RIGHT] * areaWidth / JV.HUNDRED_PERCENT);
+                        break;
+                    case JV.CAL_TYPE[JV.CAL_TYPE_ABSTRACT] :
+                        innerLeft = 1.0 * areaNode[JV.PROP_LEFT] * unitFactor;
+                        innerRight = 1.0 * areaNode[JV.PROP_RIGHT] * unitFactor;
+                        break;
+                }
+            } else {
+                //颗粒度更加细化的控制,可能左右两边的计算坐标方式都不同
+                if (areaNode[JV.PROP_H_CALCULATION][JV.PROP_LEFT] === JV.CAL_TYPE[JV.CAL_TYPE_PERCENTAGE]) {
                     innerLeft = (1.0 * areaNode[JV.PROP_LEFT] * areaWidth / JV.HUNDRED_PERCENT);
-                    innerRight = (1.0 * areaNode[JV.PROP_RIGHT] * areaWidth / JV.HUNDRED_PERCENT) ;
-                    break;
-                case JV.CAL_TYPE[JV.CAL_TYPE_ABSTRACT] :
+                } else {
                     innerLeft = 1.0 * areaNode[JV.PROP_LEFT] * unitFactor;
-                    innerRight = 1.0 * areaNode[JV.PROP_RIGHT] * unitFactor ;
-                    break;
+                }
+                if (areaNode[JV.PROP_H_CALCULATION][JV.PROP_RIGHT] === JV.CAL_TYPE[JV.CAL_TYPE_PERCENTAGE]) {
+                    innerRight = (1.0 * areaNode[JV.PROP_RIGHT] * areaWidth / JV.HUNDRED_PERCENT);
+                } else {
+                    innerRight = 1.0 * areaNode[JV.PROP_RIGHT] * unitFactor;
+                }
             }
             //2. calculate top/bottom
             let  areaHeight = 1.0 * (band[JV.PROP_BOTTOM] - band[JV.PROP_TOP]);
             areaHeight = areaHeight / rowAmount;
             let innerTop = 0.0, innerBottom = areaHeight;
-            switch (areaNode[JV.PROP_V_CALCULATION]) {
-                case JV.CAL_TYPE[JV.CAL_TYPE_PERCENTAGE] :
+            if (typeof areaNode[JV.PROP_V_CALCULATION]  === "string") {
+                switch (areaNode[JV.PROP_V_CALCULATION]) {
+                    case JV.CAL_TYPE[JV.CAL_TYPE_PERCENTAGE] :
+                        innerTop = (1.0 * areaNode[JV.PROP_TOP] * areaHeight / JV.HUNDRED_PERCENT);
+                        innerBottom = (1.0 * areaNode[JV.PROP_BOTTOM] * areaHeight / JV.HUNDRED_PERCENT);
+                        break;
+                    case JV.CAL_TYPE[JV.CAL_TYPE_ABSTRACT] :
+                        innerTop = 1.0 * areaNode[JV.PROP_TOP] * unitFactor;
+                        innerBottom = 1.0 * areaNode[JV.PROP_BOTTOM] * unitFactor;
+                        break;
+                }
+            } else {
+                //颗粒度更加细化的控制,可能上下两边的计算坐标方式都不同
+                if (areaNode[JV.PROP_H_CALCULATION][JV.PROP_TOP] === JV.CAL_TYPE[JV.CAL_TYPE_PERCENTAGE]) {
                     innerTop = (1.0 * areaNode[JV.PROP_TOP] * areaHeight / JV.HUNDRED_PERCENT);
-                    innerBottom = (1.0 * areaNode[JV.PROP_BOTTOM] * areaHeight / JV.HUNDRED_PERCENT) ;
-                    break;
-                case JV.CAL_TYPE[JV.CAL_TYPE_ABSTRACT] :
+                } else {
                     innerTop = 1.0 * areaNode[JV.PROP_TOP] * unitFactor;
-                    innerBottom = 1.0 * areaNode[JV.PROP_BOTTOM] * unitFactor ;
-                    break;
+                }
+                if (areaNode[JV.PROP_H_CALCULATION][JV.PROP_BOTTOM] === JV.CAL_TYPE[JV.CAL_TYPE_PERCENTAGE]) {
+                    innerBottom = (1.0 * areaNode[JV.PROP_BOTTOM] * areaHeight / JV.HUNDRED_PERCENT);
+                } else {
+                    innerBottom = 1.0 * areaNode[JV.PROP_BOTTOM] * unitFactor;
+                }
             }
             //
             let rstLeft = 0.0, rstRight = 0.0, rstTop = 0.0, rstBottom = 0.0;