📄 layout.js
字号:
cmp.split.splitbtn = $e($uuid(cmp) + "!splitbtn");
zkLayoutRegionSplit.init(split);
}
var layout = zk.Layout.getOwnerLayout(cmp);
if (layout) layout.addRegion(pos, cmp);
};
zkLayoutRegion.cleanup = function (cmp) {
cmp = $real(cmp);
var layout = zk.Layout.getOwnerLayout(cmp, true); // Bug #1814702
if (cmp.split) {
if (layout) layout.removeRegion(cmp.split.pos);
var dg = zkLayoutRegionSplit._drags[cmp.split.id];
if (dg) {
delete zkLayoutRegionSplit._drags[cmp.split.id];
dg.drag.destroy();
}
cmp.split.splitbtn = null;
cmp.split = null;
} else if (layout) {
layout.removeRegion(getZKAttr(cmp, "pos"));
}
cmp.bodyEl = null;
if (layout) zk.onResize(0, layout.el);
};
zkLayoutRegion.setAttr = function (cmp, nm, val) {
cmp = $real(cmp);
switch (nm) {
case "z.cid" :
setZKAttr(cmp, "cid", val);
return true;
case "z.mars" :
setZKAttr(cmp, "mars", val);
var l = zk.Layout.getOwnerLayout(cmp);
if (l) l.render();
return true;
case "z.maxs" :
setZKAttr(cmp, "maxs", val);
return true;
case "z.mins" :
setZKAttr(cmp, "mins", val);
return true;
case "z.autoscl" :
setZKAttr(cmp, "autoscl", val);
if (val == "true") {
cmp.bodyEl.style.overflow = "auto";
cmp.bodyEl.style.position = "relative";
} else {
cmp.bodyEl.style.overflow = "hidden";
cmp.bodyEl.style.position = "";
}
return true;
case "z.colps" :
setZKAttr(cmp, "colps", val);
zkLayoutRegionSplit._fixbtn(cmp.split);
zkLayoutRegionSplit._fixsplit(cmp.split);
return true;
case "z.splt" :
setZKAttr(cmp, "splt", val);
var vert = cmp.split.pos == "west" || cmp.split.pos == "east" ? false : true;
if (getZKAttr(cmp, "open") != "false" && val == "true") {
cmp.split.style.cursor = vert ? "s-resize": "e-resize";
zk.rmClass(cmp.split, vert ? "layout-split-v-ns" : "layout-split-h-ns");
zk.addClass(cmp.split, vert ? "layout-split-v" : "layout-split-h");
} else {
cmp.split.style.cursor = "default";
zk.addClass(cmp.split, vert ? "layout-split-v-ns" : "layout-split-h-ns");
zk.rmClass(cmp.split, vert ? "layout-split-v" : "layout-split-h");
}
zkLayoutRegionSplit._fixsplit(cmp.split);
return true;
case "style.height" :
cmp.style["height"] = val;
cmp._height = false;
return true;
case "style.width" :
cmp.style["width"] = val;
cmp._width = false;
return true;
case "z.open" :
zkLayoutRegionSplit.open(cmp.split, val == "true", true, true);
return true;
}
return false;
};
////
zkLayoutRegionSplit = {};
zkLayoutRegionSplit._drags = {};
zkLayoutRegionSplit.init = function (split) {
var real = $real(split);
zkLayoutRegionSplit._fixsplit(split);
var snap = function (x, y) {return zkLayoutRegionSplit._snap(split, x, y);};
var vert = split.pos == "west" || split.pos == "east" ? false : true;
var drag = zkLayoutRegionSplit._drags[split.id] = {
vert: vert,
drag: new Draggable(split, {
constraint: vert ? "vertical": "horizontal",
ghosting: zkLayoutRegionSplit._ghostsizing,
snap: snap,
ignoredrag: zkLayoutRegionSplit._ignoresizing,
zindex: 12000,
endeffect: zkLayoutRegionSplit._endDrag})
};
zk.listen(split.splitbtn, "click", function () {
zkLayoutRegionSplit.open(split, getZKAttr(real, "open") == "false");
});
if (zk.ie) {
zk.listen(split.splitbtn, "mouseover", function () {split.splitbtn.style.filter = "alpha(opacity=100);";});
zk.listen(split.splitbtn, "mouseout", function () {split.splitbtn.style.filter = "alpha(opacity=50);";});
}
zkLayoutRegionSplit._fixbtn(split);
if (getZKAttr(real, "open") == "false"){
zkLayoutRegionSplit.open(split, false, true, true);
} else {
if (getZKAttr(real, "splt") == "true") {
split.style.cursor = vert ? "s-resize": "e-resize";
} else {
zk.addClass(split, vert ? "layout-split-v-ns" : "layout-split-h-ns");
zk.rmClass(split, vert ? "layout-split-v" : "layout-split-h");
split.style.cursor = "default";
}
}
split.splitbtn.style.cursor = "pointer";
};
zkLayoutRegionSplit._fixsplit = function (split) {
var real = $real(split);
zk.show(split.id, !(getZKAttr(real, "splt") == "false" && getZKAttr(real, "colps") == "false"));
};
zkLayoutRegionSplit._fixbtn = function (split) {
var real = $real(split);
var colps = getZKAttr(real, "colps");
if (colps == "false") {
split.splitbtn.style.display = "none";
} else {
var vert = split.pos == "west" || split.pos == "east" ? false : true;
var before = colps == "true";
if (split.pos == "east" || split.pos == "south") before = !before;
if (getZKAttr(real, "open") == "false") before = !before;
split.splitbtn.className = zk.renType(split.splitbtn.className,
vert ? before ? 't': 'b': before ? 'l': 'r');
split.splitbtn.style.display = "";
}
};
zkLayoutRegionSplit._ignoresizing = function (split, pointer) {
var dg = zkLayoutRegionSplit._drags[split.id];
if (dg) {
var real = $real(split);
if (real && getZKAttr(real, "open") == "true" && getZKAttr(real, "splt") == "true") {
var maxs = $int(getZKAttr(real, "maxs")) || 2000;
var mins = $int(getZKAttr(real, "mins")) || 0;
var ol = zk.Layout.getOwnerLayout(real);
var mars = ol._paserMargin(getZKAttr(real, "mars") || "0,0,0,0");
var lr = zk.sumStyles(real, "lr", zk.borders) +
zk.sumStyles(real, "lr", zk.paddings) +
(split.pos == "west" ? mars.left : mars.right);
var tb = zk.sumStyles(real, "tb", zk.borders) +
zk.sumStyles(real, "tb", zk.paddings) +
(split.pos == "north" ? mars.top : mars.bottom);
var min = 0;
switch (split.pos) {
case "north":
case "south":
var uuid = $e($uuid(real));
var nbor = split.pos == "north" ? zk.nextSibling(uuid, "DIV") : zk.previousSibling(uuid, "DIV");
if (nbor) {
var rr =$real(nbor);
var pos = getZKAttr(rr, "pos");
if (pos == "center") {
maxs = Math.min(maxs, (real.offsetHeight + rr.offsetHeight)- min);
} else {
maxs = Math.min(maxs, ol.el.offsetHeight - rr.offsetHeight - rr.split.offsetHeight - split.offsetHeight - min);
}
} else {
maxs = ol.el.offsetHeight - split.offsetHeight;
}
break;
case "west":
case "east":
var uuid = $e($uuid(real));
var nbor = split.pos == "west" ? zk.nextSibling(uuid, "DIV") : zk.previousSibling(uuid, "DIV");
if (nbor) {
var rr =$real(nbor);
var pos = getZKAttr(rr, "pos");
if (pos == "center") {
maxs = Math.min(maxs, (real.offsetWidth + rr.offsetWidth)- min);
} else {
maxs = Math.min(maxs, ol.el.offsetWidth - rr.offsetWidth - rr.split.offsetWidth - split.offsetWidth - min);
}
} else {
maxs = ol.el.offsetWidth - split.offsetWidth;
}
break;
}
var ofs = Position.cumulativeOffset(real);
dg.drag.z_rootlyt = {
maxs: maxs,
mins: mins,
top: ofs[1], left : ofs[0], right : real.offsetWidth, bottom:real.offsetHeight
};
return false;
}
}
return true;
};
zkLayoutRegionSplit._endDrag = function (split, event) {
var dg = zkLayoutRegionSplit._drags[split.id];
if (!dg) return;
var real = $real(split);
if (split.pos == "west" || split.pos == "east") {
real.style["width"] = dg.drag.z_point[0] + "px";
} else {
real.style["height"] = dg.drag.z_point[1] + "px";
}
real._width = real._height = false;
var layout = zk.Layout.getOwnerLayout(real);
layout.render();
zk.onResize(0, layout.el);
dg.drag.z_rootlyt = null;
};
/***/
zkLayoutRegionSplit._snap = function (split, x, y) {
var dd = zkLayoutRegionSplit._drags[split.id];
if (dd) {
var b = dd.drag.z_rootlyt;
var w, h;
switch (split.pos) {
case "north":
if (y > b.maxs + b.top) y = b.maxs + b.top;
if (y < b.mins + b.top) y = b.mins + b.top;
w = x;
h = y - b.top;
break;
case "south":
if (b.top + b.bottom - y - split.offsetHeight > b.maxs) {
y = b.top + b.bottom - b.maxs - split.offsetHeight;
h = b.maxs;
} else if (b.top + b.bottom - b.mins - split.offsetHeight <= y) {
y = b.top + b.bottom - b.mins - split.offsetHeight;
h = b.mins;
} else h = b.top - y + b.bottom - split.offsetHeight;
w = x;
break;
case "west":
if (x > b.maxs + b.left) x = b.maxs + b.left;
if (x < b.mins + b.left) x = b.mins + b.left;
w = x - b.left;
h = y;
break;
case "east":
if (b.left + b.right - x - split.offsetWidth > b.maxs) {
x = b.left + b.right - b.maxs - split.offsetWidth;
w = b.maxs;
} else if (b.left + b.right - b.mins - split.offsetWidth <= x) {
x = b.left + b.right - b.mins - split.offsetWidth;
w = b.mins;
} else w = b.left - x + b.right - split.offsetWidth;
h = y;
break;
}
dd.drag.z_point = [w, h];
}
return [x, y];
};
zkLayoutRegionSplit.open = function (split, open, silent, enforce) {
var real = $real(split);
if (!enforce && (getZKAttr(real, "open") != "false") == open)
return; //nothing changed
var colps = getZKAttr(real, "colps")
if (colps == "false") return; //nothing to do
setZKAttr(real, "open", open ? "true": "false");
var vert = split.pos == "west" || split.pos == "east" ? false : true;
if (open && getZKAttr(real, "splt") == "true") {
split.style.cursor = vert ? "s-resize": "e-resize";
zk.rmClass(split, vert ? "layout-split-v-ns" : "layout-split-h-ns");
zk.addClass(split, vert ? "layout-split-v" : "layout-split-h");
} else {
split.style.cursor = "default";
zk.addClass(split, vert ? "layout-split-v-ns" : "layout-split-h-ns");
zk.rmClass(split, vert ? "layout-split-v" : "layout-split-h");
}
zkLayoutRegionSplit._fixbtn(split);
var layout = zk.Layout.getOwnerLayout(split);
zk.show(real.id, open);
layout.render();
if (!silent)
zkau.send({uuid: $uuid(split), cmd: "onOpen", data: [open]},
zkau.asapTimeout(real, "onOpen"));
zk.onResize(0, layout.el);
};
zkLayoutRegionSplit._ghostsizing = function (dg, ghosting, pointer) {
if (ghosting) {
var pointer = zkau.beginGhostToDIV(dg);
var html = '<div id="zk_ddghost" style="background:#AAA;position:absolute;top:'
+pointer[1]+'px;left:'+pointer[0]+'px;width:'
+zk.offsetWidth(dg.element)+'px;height:'+zk.offsetHeight(dg.element)
+'px;"><img src="'+zk.getUpdateURI('/web/img/spacer.gif')
+'"/></div>';
document.body.insertAdjacentHTML("afterbegin", html);
dg.element = $e("zk_ddghost");
} else {
zkau.endGhostToDIV(dg);
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -