⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 layout.js

📁 ZK 基础介绍 功能操作 模块 结合数据库操作
💻 JS
📖 第 1 页 / 共 2 页
字号:
		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 + -