From d4c74c148d2c71953f096d2e9e82cce556cbfc64 Mon Sep 17 00:00:00 2001 From: guy Date: Fri, 18 Jun 2021 17:42:46 +0800 Subject: [PATCH] bugfix --- src/core/wrapper/layout/layout.tape.js | 87 ++++++++++++++++++++------ 1 file changed, 67 insertions(+), 20 deletions(-) diff --git a/src/core/wrapper/layout/layout.tape.js b/src/core/wrapper/layout/layout.tape.js index dde50fbeb..9464ff018 100644 --- a/src/core/wrapper/layout/layout.tape.js +++ b/src/core/wrapper/layout/layout.tape.js @@ -14,6 +14,7 @@ BI.HTapeLayout = BI.inherit(BI.Layout, { rgap: 0, tgap: 0, bgap: 0, + columnSize: [], items: [] }); }, @@ -64,34 +65,58 @@ BI.HTapeLayout = BI.inherit(BI.Layout, { BI.any(items, function (i, item) { var w = self.getWidgetByName(self._getChildName(i)); if (BI.isNull(left[i])) { - left[i] = left[i - 1] + items[i - 1].width + (items[i - 1].lgap || 0) + 2 * (items[i - 1].hgap || 0) + o.hgap + o.lgap + o.rgap; + left[i] = left[i - 1] + (o.columnSize[i - 1] || items[i - 1].width) + (items[i - 1].lgap || 0) + 2 * (items[i - 1].hgap || 0) + o.hgap + o.lgap + o.rgap; } - if (item.width < 1 && item.width >= 0) { - w.element.css({left: (left[i] * 100).toFixed(1) + "%", width: (item.width * 100).toFixed(1) + "%"}); + if (o.columnSize[i] < 1 && o.columnSize[i] >= 0) { + w.element.css({ + left: (left[i] * 100).toFixed(1) + "%", + width: (o.columnSize[i] * 100).toFixed(1) + "%" + }); + } else if (item.width < 1 && item.width >= 0) { + w.element.css({ + left: (left[i] * 100).toFixed(1) + "%", + width: (item.width * 100).toFixed(1) + "%" + }); } else { w.element.css({ left: (left[i] + (item.lgap || 0) + (item.hgap || 0) + o.hgap + o.lgap) / BI.pixRatio + BI.pixUnit, - width: BI.isNumber(item.width) ? item.width / BI.pixRatio + BI.pixUnit : "" + width: o.columnSize[i] > 0 ? o.columnSize[i] / BI.pixRatio + BI.pixUnit : + BI.isNumber(item.width) ? item.width / BI.pixRatio + BI.pixUnit : "" }); } - if (!BI.isNumber(item.width)) { + if (o.columnSize[i] === "" || o.columnSize[i] === "fill") { + return true; + } + if (o.columnSize.length > 0 && !BI.isNumber(item.width)) { return true; } }); BI.backAny(items, function (i, item) { var w = self.getWidgetByName(self._getChildName(i)); if (BI.isNull(right[i])) { - right[i] = right[i + 1] + items[i + 1].width + (items[i + 1].rgap || 0) + 2 * (items[i + 1].hgap || 0) + o.hgap + o.lgap + o.rgap; + right[i] = right[i + 1] + (o.columnSize[i + 1] || items[i + 1].width) + (items[i + 1].rgap || 0) + 2 * (items[i + 1].hgap || 0) + o.hgap + o.lgap + o.rgap; } - if (item.width < 1 && item.width >= 0) { - w.element.css({right: (right[i] * 100).toFixed(1) + "%", width: (item.width * 100).toFixed(1) + "%"}); + if (o.columnSize[i] < 1 && o.columnSize[i] >= 0) { + w.element.css({ + right: (left[i] * 100).toFixed(1) + "%", + width: (o.columnSize[i] * 100).toFixed(1) + "%" + }); + } else if (item.width < 1 && item.width >= 0) { + w.element.css({ + right: (right[i] * 100).toFixed(1) + "%", + width: (item.width * 100).toFixed(1) + "%" + }); } else { w.element.css({ right: (right[i] + (item.rgap || 0) + (item.hgap || 0) + o.hgap + o.rgap) / BI.pixRatio + BI.pixUnit, - width: BI.isNumber(item.width) ? item.width / BI.pixRatio + BI.pixUnit : "" + width: o.columnSize[i] > 0 ? o.columnSize[i] / BI.pixRatio + BI.pixUnit : + BI.isNumber(item.width) ? item.width / BI.pixRatio + BI.pixUnit : "" }); } - if (!BI.isNumber(item.width)) { + if (o.columnSize[i] === "" || o.columnSize[i] === "fill") { + return true; + } + if (o.columnSize.length > 0 && !BI.isNumber(item.width)) { return true; } }); @@ -128,6 +153,7 @@ BI.VTapeLayout = BI.inherit(BI.Layout, { rgap: 0, tgap: 0, bgap: 0, + rowSize: [], items: [] }); }, @@ -158,7 +184,7 @@ BI.VTapeLayout = BI.inherit(BI.Layout, { w.element.css({ position: "absolute", left: ((item.lgap || 0) + (item.hgap || 0) + o.hgap + o.lgap) / BI.pixRatio + BI.pixUnit, - right: +((item.hgap || 0) + (item.rgap || 0) + o.hgap + o.rgap) / BI.pixRatio + BI.pixUnit + right: ((item.hgap || 0) + (item.rgap || 0) + o.hgap + o.rgap) / BI.pixRatio + BI.pixUnit }); if (o.horizontalAlign === BI.HorizontalAlign.Center) { w.element.css({ @@ -179,26 +205,43 @@ BI.VTapeLayout = BI.inherit(BI.Layout, { BI.any(items, function (i, item) { var w = self.getWidgetByName(self._getChildName(i)); if (BI.isNull(top[i])) { - top[i] = top[i - 1] + items[i - 1].height + (items[i - 1].tgap || 0) + 2 * (items[i - 1].vgap || 0) + o.vgap + o.tgap + o.bgap; + top[i] = top[i - 1] + (o.rowSize[i - 1] || items[i - 1].height) + (items[i - 1].tgap || 0) + 2 * (items[i - 1].vgap || 0) + o.vgap + o.tgap + o.bgap; } - if (item.height < 1 && item.height >= 0) { - w.element.css({top: (top[i] * 100).toFixed(1) + "%", height: (item.height * 100).toFixed(1) + "%"}); + if (o.rowSize[i] < 1 && o.rowSize[i] >= 0) { + w.element.css({ + top: (top[i] * 100).toFixed(1) + "%", + height: (o.rowSize[i] * 100).toFixed(1) + "%" + }); + } else if (item.height < 1 && item.height >= 0) { + w.element.css({ + top: (top[i] * 100).toFixed(1) + "%", + height: (item.height * 100).toFixed(1) + "%" + }); } else { w.element.css({ top: (top[i] + (item.vgap || 0) + (item.tgap || 0) + o.vgap + o.tgap) / BI.pixRatio + BI.pixUnit, - height: BI.isNumber(item.height) ? item.height / BI.pixRatio + BI.pixUnit : "" + height: o.rowSize[i] > 0 ? o.rowSize[i] / BI.pixRatio + BI.pixUnit : + BI.isNumber(item.height) ? item.height / BI.pixRatio + BI.pixUnit : "" }); } - if (!BI.isNumber(item.height)) { + if (o.rowSize[i] === "" || o.rowSize[i] === "fill") { + return true; + } + if (o.rowSize.length > 0 && !BI.isNumber(item.height)) { return true; } }); BI.backAny(items, function (i, item) { var w = self.getWidgetByName(self._getChildName(i)); if (BI.isNull(bottom[i])) { - bottom[i] = bottom[i + 1] + items[i + 1].height + (items[i + 1].bgap || 0) + 2 * (items[i + 1].vgap || 0) + o.vgap + o.tgap + o.bgap; + bottom[i] = bottom[i + 1] + (o.rowSize[i + 1] || items[i + 1].height) + (items[i + 1].bgap || 0) + 2 * (items[i + 1].vgap || 0) + o.vgap + o.tgap + o.bgap; } - if (item.height < 1 && item.height >= 0) { + if (o.rowSize[i] < 1 && o.rowSize[i] >= 0) { + w.element.css({ + bottom: (bottom[i] * 100).toFixed(1) + "%", + height: (o.rowSize[i] * 100).toFixed(1) + "%" + }); + } else if (item.height < 1 && item.height >= 0) { w.element.css({ bottom: (bottom[i] * 100).toFixed(1) + "%", height: (item.height * 100).toFixed(1) + "%" @@ -206,10 +249,14 @@ BI.VTapeLayout = BI.inherit(BI.Layout, { } else { w.element.css({ bottom: (bottom[i] + (item.vgap || 0) + (item.bgap || 0) + o.vgap + o.bgap) / BI.pixRatio + BI.pixUnit, - height: BI.isNumber(item.height) ? item.height / BI.pixRatio + BI.pixUnit : "" + height: o.rowSize[i] > 0 ? o.rowSize[i] / BI.pixRatio + BI.pixUnit : + BI.isNumber(item.height) ? item.height / BI.pixRatio + BI.pixUnit : "" }); } - if (!BI.isNumber(item.height)) { + if (o.rowSize[i] === "" || o.rowSize[i] === "fill") { + return true; + } + if (o.rowSize.length > 0 && !BI.isNumber(item.height)) { return true; } });