提交 f68b17c8 编写于 作者: P pah100

tweak layoutmode when 'ignore size'

上级 0b10a15a
......@@ -352,24 +352,28 @@ define(function(require) {
* @param {Object} targetOption
* @param {Object} newOption
* @param {Object|string} [opt]
* @param {boolean} [opt.ignoreSize=false] Some component must has width and height.
* @param {boolean|Array.<boolean>} [opt.ignoreSize=false] Some component must has width and height.
*/
layout.mergeLayoutParam = function (targetOption, newOption, opt) {
!zrUtil.isObject(opt) && (opt = {});
var hNames = ['width', 'left', 'right']; // Order by priority.
var vNames = ['height', 'top', 'bottom']; // Order by priority.
var hResult = merge(hNames);
var vResult = merge(vNames);
var hNames = ['width', 'left', 'right'];
var vNames = ['height', 'top', 'bottom'];
var ignoreSize = opt.ignoreSize;
!zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);
var hResult = merge(hNames, 0);
var vResult = merge(vNames, 1);
copy(hNames, targetOption, hResult);
copy(vNames, targetOption, vResult);
function merge(names) {
function merge(names, hvIdx) {
var newParams = {};
var newValueCount = 0;
var merged = {};
var mergedValueCount = 0;
var enoughParamNumber = opt.ignoreSize ? 1 : 2;
var enoughParamNumber = 2;
each(names, function (name) {
merged[name] = targetOption[name];
......@@ -382,6 +386,13 @@ define(function(require) {
hasValue(merged, name) && mergedValueCount++;
});
if (ignoreSize[hvIdx]) {
// Only one of left/height is premitted to exist.
hasValue(newOption, names[2]) && (merged[names[1]] = null);
hasValue(newOption, names[1]) && (merged[names[2]] = null);
return merged;
}
// Case: newOption: {width: ..., right: ...},
// or targetOption: {right: ...} and newOption: {width: ...},
// There is no conflict when merged only has params count
......@@ -397,7 +408,6 @@ define(function(require) {
}
else {
// Chose another param from targetOption by priority.
// When 'ignoreSize', enoughParamNumber is 1 and those will not happen.
for (var i = 0; i < names.length; i++) {
var name = names[i];
if (!hasProp(newParams, name) && hasProp(targetOption, name)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册