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

📄 fisheyelist.js

📁 dojo与json创建无限级树的时候,当在父结点下添加了一个新结点,我怎么让父亲结点重新调用json加载一下子结点内容.
💻 JS
📖 第 1 页 / 共 2 页
字号:
		//		// set the sizes		//		for(var i=0; i<this.itemCount; i++){			var weight = this.weightAt(cen, i);			if (weight < 0){weight = 0;}			this.setitemsize(i, weight * off_weight);		}		//		// set the positions		//		var main_p = Math.round(cen);		var offset = 0;		if (cen < 0){			main_p = 0;		}else if (cen > this.itemCount - 1){			main_p = this.itemCount -1;		}else{			offset = (cen - main_p) * ((this.isHorizontal ? this.itemWidth : this.itemHeight) - this.children[main_p].sizeMain);		}		this.positionElementsFrom(main_p, offset);	},	weightAt: function(cen, i){		var dist = Math.abs(cen - i);		var limit = ((cen - i) > 0) ? this.children[i].effectRangeRght : this.children[i].effectRangeLeft;		return (dist > limit) ? 0 : (1 - dist / limit);	},	positionFromNode: function(p, w){		//		// we need to grow all the nodes growing out from node 'i'		//		this.setitemsize(p, w);		var wx = w;		for(var i=p; i<this.itemCount; i++){			wx = 0.8 * wx;			this.setitemsize(i, wx);		}		var wx = w;		for(var i=p; i>=0; i--){			wx = 0.8 * wx;			this.setitemsize(i, wx);		}	},	setitemsize: function(p, scale){		scale *= this.timerScale;		var w = Math.round(this.itemWidth  + ((this.itemMaxWidth  - this.itemWidth ) * scale));		var h = Math.round(this.itemHeight + ((this.itemMaxHeight - this.itemHeight) * scale));		if (this.isHorizontal){			this.children[p].sizeW = w;			this.children[p].sizeH = h;			this.children[p].sizeMain = w;			this.children[p].sizeOff  = h;			var y = 0;			if (this.anchorEdge == this.EDGE.TOP){				y = (this.children[p].cenY - (this.itemHeight / 2));			}else if (this.anchorEdge == this.EDGE.BOTTOM){				y = (this.children[p].cenY - (h - (this.itemHeight / 2)));			}else{				y = (this.children[p].cenY - (h / 2));			}			this.children[p].usualX = Math.round(this.children[p].cenX - (w / 2));						this.children[p].domNode.style.top  = y + 'px';			this.children[p].domNode.style.left  = this.children[p].usualX + 'px';		}else{			this.children[p].sizeW = w;			this.children[p].sizeH = h;			this.children[p].sizeOff  = w;			this.children[p].sizeMain = h;			var x = 0;			if (this.anchorEdge == this.EDGE.LEFT){				x = this.children[p].cenX - (this.itemWidth / 2);			}else if (this.anchorEdge == this.EDGE.RIGHT){				x = this.children[p].cenX - (w - (this.itemWidth / 2));			}else{				x = this.children[p].cenX - (w / 2);			}			this.children[p].domNode.style.left = x + 'px';			this.children[p].usualY = Math.round(this.children[p].cenY - (h / 2));			this.children[p].domNode.style.top  = this.children[p].usualY + 'px';		}		this.children[p].domNode.style.width  = w + 'px';		this.children[p].domNode.style.height = h + 'px';		if (this.children[p].svgNode){			this.children[p].svgNode.setSize(w, h);		}	},	positionElementsFrom: function(p, offset){		var pos = 0;		if (this.isHorizontal){			pos = Math.round(this.children[p].usualX + offset);			this.children[p].domNode.style.left = pos + 'px';		}else{			pos = Math.round(this.children[p].usualY + offset);			this.children[p].domNode.style.top = pos + 'px';		}		this.positionLabel(this.children[p]);		//		// position before		//		var bpos = pos;		for(var i=p-1; i>=0; i--){			bpos -= this.children[i].sizeMain;			if (this.isHorizontal){				this.children[i].domNode.style.left = bpos + 'px';			}else{				this.children[i].domNode.style.top = bpos + 'px';			}			this.positionLabel(this.children[i]);		}		//		// position after		//		var apos = pos;		for(var i=p+1; i<this.itemCount; i++){			apos += this.children[i-1].sizeMain;			if (this.isHorizontal){				this.children[i].domNode.style.left = apos + 'px';			}else{				this.children[i].domNode.style.top = apos + 'px';			}			this.positionLabel(this.children[i]);		}	},	positionLabel: function(itm){		var x = 0;		var y = 0;				var labelW = dojo.style.getOuterWidth(itm.lblNode);		var labelH = dojo.style.getOuterHeight(itm.lblNode);		if (this.labelEdge == this.EDGE.TOP){			x = Math.round((itm.sizeW / 2) - (labelW / 2));			y = -labelH;		}		if (this.labelEdge == this.EDGE.BOTTOM){			x = Math.round((itm.sizeW / 2) - (labelW / 2));			y = itm.sizeH;		}		if (this.labelEdge == this.EDGE.LEFT){			x = -labelW;			y = Math.round((itm.sizeH / 2) - (labelH / 2));		}		if (this.labelEdge == this.EDGE.RIGHT){			x = itm.sizeW;			y = Math.round((itm.sizeH / 2) - (labelH / 2));		}		itm.lblNode.style.left = x + 'px';		itm.lblNode.style.top  = y + 'px';	},	calcHitGrid: function(){		var pos = dojo.style.getAbsolutePosition(this.domNode, true);		this.hitX1 = pos.x - this.proximityLeft;		this.hitY1 = pos.y - this.proximityTop;		this.hitX2 = this.hitX1 + this.totalWidth;		this.hitY2 = this.hitY1 + this.totalHeight;		//dojo.debug(this.hitX1+','+this.hitY1+' // '+this.hitX2+','+this.hitY2);	},	toEdge: function(inp, def){		return this.EDGE[inp.toUpperCase()] || def;	},		// slowly expand the image to user specified max size	expandSlowly: function(){		if( !this.isOver ){ return; }		this.timerScale += 0.2;		this.paint();		if ( this.timerScale<1.0 ) {			dojo.lang.setTimeout(this, "expandSlowly", 10);		}	},	destroy: function(){		// need to disconnect when we destroy		dojo.event.disconnect(document.documentElement, "onmouseout", this, "onBodyOut");		dojo.event.disconnect(document.documentElement, "onmousemove", this, "mouseHandler");		dojo.widget.html.FisheyeList.superclass.destroy.call(this);	}});dojo.widget.html.FisheyeListItem = function(){	dojo.widget.HtmlWidget.call(this);}dojo.inherits(dojo.widget.html.FisheyeListItem, dojo.widget.HtmlWidget);dojo.lang.extend(dojo.widget.html.FisheyeListItem, {	widgetType: "FisheyeListItem",		// Constructor arguments	iconSrc: "",	svgSrc: "",	caption: "",	blankImgPath: dojo.uri.dojoUri("src/widget/templates/images/blank.gif"),	templateString:		'<div class="dojoHtmlFisheyeListItem">' +		'  <img class="dojoHtmlFisheyeListItemImage" dojoAttachPoint="imgNode" dojoAttachEvent="onMouseOver;onMouseOut;onClick">' +		'  <div class="dojoHtmlFisheyeListItemLabel" dojoAttachPoint="lblNode"></div>' +		'</div>',		imgNode: null,	fillInTemplate: function() {		//		// set image		// TODO: turn on/off SVG support based on browser version.		// this.parent.enableCrappySvgSupport is not available to this function		//		if (this.svgSrc != ""){			this.svgNode = this.createSvgNode(this.svgSrc);			this.domNode.appendChild(this.svgNode);			this.imgNode.style.display = 'none';		} else if((this.iconSrc.toLowerCase().substring(this.iconSrc.length-4)==".png")&&(dojo.render.html.ie)){			this.imgNode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.iconSrc+"', sizingMethod='scale')";			this.imgNode.src = this.blankImgPath.toString();		} else {			this.imgNode.src = this.iconSrc;		}		//		// Label		//		if ( this.lblNode ) {			this.lblNode.appendChild(document.createTextNode(this.caption));		}		dojo.html.disableSelection(this.domNode);	},		createSvgNode: function(src){		var elm = document.createElement('embed');		elm.src = src;		elm.type = 'image/svg+xml';		//elm.style.border = '1px solid black';		elm.style.width = '1px';		elm.style.height = '1px';		elm.loaded = 0;		elm.setSizeOnLoad = false;		elm.onload = function(){			this.svgRoot = this.getSVGDocument().rootElement;			this.svgDoc = this.getSVGDocument().documentElement;			this.zeroWidth = this.svgRoot.width.baseVal.value;			this.zeroHeight = this.svgRoot.height.baseVal.value;			this.loaded = true;			if (this.setSizeOnLoad){				this.setSize(this.setWidth, this.setHeight);			}		}		elm.setSize = function(w, h){			if (!this.loaded){				this.setWidth = w;				this.setHeight = h;				this.setSizeOnLoad = true;				return;			}			this.style.width = w+'px';			this.style.height = h+'px';			this.svgRoot.width.baseVal.value = w;			this.svgRoot.height.baseVal.value = h;			var scale_x = w / this.zeroWidth;			var scale_y = h / this.zeroHeight;			for(var i=0; i<this.svgDoc.childNodes.length; i++){				if (this.svgDoc.childNodes[i].setAttribute){					this.svgDoc.childNodes[i].setAttribute( "transform", "scale("+scale_x+","+scale_y+")" );				}			}		}		return elm;	},	onMouseOver: function(e) {		// in conservative mode, don't activate the menu until user mouses over an icon		if( !this.parent.isOver ){			this.parent.setActive(e);		}		if ( this.caption != "" ) {			dojo.html.addClass(this.lblNode, "selected");			this.parent.positionLabel(this);		}	},		onMouseOut: function() {		dojo.html.removeClass(this.lblNode, "selected");	},	onClick: function() {	}});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -