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

📄 rounded.js

📁 dojo与json创建无限级树的时候,当在父结点下添加了一个新结点,我怎么让父亲结点重新调用json加载一下子结点内容.
💻 JS
📖 第 1 页 / 共 2 页
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.widget.Rounded");dojo.widget.tags.addParseTreeHandler("dojo:rounded");dojo.require("dojo.widget.*");dojo.require("dojo.widget.html.ContentPane");dojo.require("dojo.html");dojo.require("dojo.style");/* *	The following script is derived (with permission) from curvyCorners, *	written by Cameron Cooke (CLA on file) and was adapted to Dojo by Brian *	Lucas (CLA on file) */dojo.widget.Rounded = function() {	dojo.widget.html.ContentPane.call(this);}dojo.inherits(dojo.widget.Rounded, dojo.widget.html.ContentPane);dojo.lang.extend(dojo.widget.Rounded, {	isSafari: dojo.render.html.safari,	widgetType: "Rounded",	boxMargin: "50px", // margin outside rounded corner box	radius: 14, // radius of corners	domNode: "",	corners: "TR,TL,BR,BL", // corner string to render	antiAlias: true, // false to disable anti-aliasing	fillInTemplate: function(args, frag) {		dojo.widget.Rounded.superclass.fillInTemplate.call(this, args, frag);		dojo.style.insertCssFile(this.templateCssPath);		// Magic to automatically calculate the box height/width if not supplied		if (this.domNode.style.height<=0) {			var minHeight = (this.radius*1)+this.domNode.clientHeight;			this.domNode.style.height = minHeight+"px";		}		if (this.domNode.style.width<=0) {			var minWidth = (this.radius*1)+this.domNode.clientWidth;			this.domNode.style.width = minWidth+"px";		}		var cornersAvailable = ["TR", "TL", "BR", "BL"];		var cornersPassed = this.corners.split(",");		this.settings = {			antiAlias: this.antiAlias		};		var setCorner = function(currentCorner) {			var val = currentCorner.toLowerCase();			if(dojo.lang.inArray(cornersPassed, currentCorner)) {				this.settings[val] = { radius: this.radius, enabled: true };			} else {				this.settings[val] = { radius: 0 }			}		}		dojo.lang.forEach(cornersAvailable, setCorner, this);		this.domNode.style.margin = this.boxMargin;		this.curvyCorners(this.settings);		this.applyCorners();	},	// ------------- curvyCorners OBJECT	curvyCorners: function(settings){			// Setup Globals		this.box             = this.domNode;		this.topContainer    = null;		this.bottomContainer = null;		this.masterCorners   = [];		// Get box formatting details		var boxHeight       = dojo.style.getStyle(this.box, "height");		if(boxHeight=="") boxHeight="0px";		var boxWidth        = dojo.style.getStyle(this.box, "width");		var borderWidth     = dojo.style.getStyle(this.box, "borderTopWidth");		if(borderWidth=="") borderWidth="0px";		//alert(borderWidth);		var borderColour    = dojo.style.getStyle(this.box, "borderTopColor");		// Set to true if we have a border		if(borderWidth>0) this.antiAlias=true;		var boxColour       = dojo.style.getStyle(this.box, "backgroundColor");		var backgroundImage = dojo.style.getStyle(this.box, "backgroundImage");		var boxPosition     = dojo.style.getStyle(this.box, "position");		// Set formatting propertes		this.boxHeight       = parseInt(((boxHeight != "" && boxHeight != "auto" && boxHeight.indexOf("%") == -1)? boxHeight.substring(0, boxHeight.indexOf("px")) : this.box.scrollHeight));		this.boxWidth        = parseInt(((boxWidth != "" && boxWidth != "auto" && boxWidth.indexOf("%") == -1)? boxWidth.substring(0, boxWidth.indexOf("px")) : this.box.scrollWidth));		this.borderWidth     = parseInt(((borderWidth != "" && borderWidth.indexOf("px") !== -1)? borderWidth.slice(0, borderWidth.indexOf("px")) : 0));		// DEBUG ME?		//dojo.debug(this.rgb2Hex(boxColour));		var test  = new dojo.graphics.color.Color(boxColour);		//dojo.debug(test.toHex()); 		this.boxColour       = ((boxColour != "" && boxColour != "transparent")? ((boxColour.substr(0, 3) == "rgb")? this.rgb2Hex(boxColour) : boxColour) : "#ffffff");		this.borderColour    = ((borderColour != "" && borderColour != "transparent" && this.borderWidth > 0)? ((borderColour.substr(0, 3) == "rgb")? this.rgb2Hex(borderColour)  : borderColour) : this.boxColour);		this.borderString    = this.borderWidth + "px" + " solid " + this.borderColour;		this.backgroundImage = ((backgroundImage != "none")? backgroundImage : "");		// Make box relative if not already absolute		if(boxPosition != "absolute") this.box.style.position = "relative";		//This method creates the corners and		//applies them to the div element.		this.applyCorners = function() {			// Create top and bottom containers.			// These will be used as a parent for the corners and bars.			for(var t = 0; t < 2; t++) {			    switch(t) {			        // Top			        case 0:						// Only build top bar if a top corner is to be draw						if(this.settings.tl.enabled || this.settings.tr.enabled ) {							var newMainContainer = document.createElement("DIV");										with(newMainContainer.style){								width    = "100%";								fontSize = "1px";								overflow = "hidden";								position = "absolute";								//backgroundColor = "#FFFFC4";								paddingLeft  = this.borderWidth + "px";								paddingRight = this.borderWidth + "px";								var topMaxRadius = Math.max(this.settings.tl ? this.settings.tl.radius : 0, this.settings.tr ? this.settings.tr.radius : 0);								height = topMaxRadius + "px";								top    = 0 - topMaxRadius + "px";								left   = 0 - this.borderWidth + "px";							}														this.topContainer = this.box.appendChild(newMainContainer);						}			            break;				        // Bottom			        case 1:      			            // Only build bottom bar if a top corner is to be draw			            if(this.settings.bl.enabled || this.settings.br.enabled) {							var newMainContainer = document.createElement("DIV");							with(newMainContainer.style){								width    = "100%";								fontSize = "1px";								overflow = "hidden";								position = "absolute";								//backgroundColor = "#FFFFC4";								paddingLeft  = this.borderWidth + "px";								paddingRight = this.borderWidth + "px";								var botMaxRadius = Math.max(this.settings.bl ? this.settings.bl.radius : 0, this.settings.br ? this.settings.br.radius : 0);								height  = botMaxRadius + "px";								bottom  =  0 - botMaxRadius + "px";								left    =  0 - this.borderWidth + "px";							}						this.bottomContainer = this.box.appendChild(newMainContainer);			            }		            break;			    }			}				// Turn off current borders			if(this.topContainer) this.box.style.borderTopWidth = "0px";			if(this.bottomContainer) this.box.style.borderBottomWidth = "0px";				// Create array of available corners			var corners = ["tr", "tl", "br", "bl"];					//Loop for each corner				for(var i in corners) {			    // Get current corner type from array			    var cc = corners[i];			    // Has the user requested the currentCorner be round?			    if(!this.settings[cc]) {			        // No			        if(((cc == "tr" || cc == "tl") && this.topContainer != null) || ((cc == "br" || cc == "bl") && this.bottomContainer != null)) {						// We need to create a filler div to fill the space upto the next horzontal corner.						var newCorner = document.createElement("DIV");								// Setup corners properties						newCorner.style.position = "relative";						newCorner.style.fontSize = "1px";						newCorner.style.overflow = "hidden";								// Add background image?						if(this.backgroundImage == "") {							newCorner.style.backgroundColor = this.boxColour;						} else {							newCorner.style.backgroundImage = this.backgroundImage;						}			            switch(cc) {							case "tl":								with(newCorner.style){									height      = topMaxRadius - this.borderWidth + "px";									marginRight = this.settings.tr.radius - (this.borderWidth*2) + "px";									borderLeft  = this.borderString;									borderTop   = this.borderString;									left         = -this.borderWidth + "px";								}							break;										case "tr":								with(newCorner.style){									height      = topMaxRadius - this.borderWidth + "px";									marginLeft  = this.settings.tl.radius - (this.borderWidth*2) + "px";									borderRight = this.borderString;									borderTop   = this.borderString;									backgroundPosition  = "-" + this.boxWidth + "px 0px";									left         = this.borderWidth + "px";								}							break;								case "bl":								with(newCorner.style){									height       = botMaxRadius - this.borderWidth + "px";									marginRight  = this.settings.br.radius - (this.borderWidth*2) + "px";									borderLeft   = this.borderString;									borderBottom = this.borderString;									left         = -this.borderWidth + "px";								}							break;										case "br":								with(newCorner.style){									height       = botMaxRadius - this.borderWidth + "px";									marginLeft   = this.settings.bl.radius - (this.borderWidth*2) + "px";									borderRight  = this.borderString;									borderBottom = this.borderString;									left         = this.borderWidth + "px"								}							break;			            }			        }			    } else {			        /*			        PERFORMANCE NOTE:			        If more than one corner is requested and a corner has been already			        created for the same radius then that corner will be used as a master and cloned.			        The pixel bars will then be repositioned to form the new corner type.			        All new corners start as a bottom right corner.			        */			        if(this.masterCorners[this.settings[cc].radius]) {			            // Create clone of the master corner			            var newCorner = this.masterCorners[this.settings[cc].radius].cloneNode(true);			        } else {			            // Yes, we need to create a new corner			            var newCorner = document.createElement("DIV");						with(newCorner.style){							height = this.settings[cc].radius + "px";							width  = this.settings[cc].radius + "px";							position = "absolute";							fontSize = "1px";							overflow = "hidden";						}						// THE FOLLOWING BLOCK OF CODE CREATES A ROUNDED CORNER						// ---------------------------------------------------- TOP									// Get border radius						var borderRadius = parseInt(this.settings[cc].radius - this.borderWidth);									// Cycle the x-axis						for(var intx = 0, j = this.settings[cc].radius; intx < j; intx++) {							// Calculate the value of y1 which identifies the pixels inside the border							if((intx +1) >= borderRadius) {								var y1 = -1;							} else {								var y1 = (Math.floor(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow((intx+1), 2))) - 1);							}										// Only calculate y2 and y3 if there is a border defined							if(borderRadius != j) {								if((intx) >= borderRadius) {									var y2 = -1;								} else {									var y2 = Math.ceil(Math.sqrt(Math.pow(borderRadius,2) - Math.pow(intx, 2)));								}											if((intx+1) >= j) {									var y3 = -1;								} else {									var y3 = (Math.floor(Math.sqrt(Math.pow(j ,2) - Math.pow((intx+1), 2))) - 1);								}							}							// Calculate y4							if((intx) >= j) {								var y4 = -1;							} else {								var y4 = Math.ceil(Math.sqrt(Math.pow(j ,2) - Math.pow(intx, 2)));							}							// Draw bar on inside of the border with foreground colour							if(y1 > -1) this.drawPixel(intx, 0, this.boxColour, 100, (y1+1), newCorner, -1, this.settings[cc].radius);								// Only draw border/foreground antialiased pixels and border if there is a border defined							if(borderRadius != j) {								// Draw aa pixels?								if(this.antiAlias) {									// Cycle the y-axis									for(var inty = (y1 + 1); inty < y2; inty++) {										// For each of the pixels that need anti aliasing between the foreground and border colour draw single pixel divs										if(this.backgroundImage != "") {																var borderFract = (this.pixelFraction(intx, inty, borderRadius) * 100);																if (borderFract < 30) {												this.drawPixel(intx, inty, this.borderColour, 100, 1, newCorner, 0, this.settings[cc].radius);											} else {												this.drawPixel(intx, inty, this.borderColour, 100, 1, newCorner, -1, this.settings[cc].radius);											}										} else {											var pixelcolour = dojo.graphics.color.blend(this.boxColour, this.borderColour, this.pixelFraction(intx, inty, borderRadius));											this.drawPixel(intx, inty, pixelcolour, 100, 1, newCorner, 0, this.settings[cc].radius);										}									}								}								// Draw bar for the border								if(y3 >= y2) {									if (y1 == -1) {										y1 = 0;									}									this.drawPixel(intx, y2, this.borderColour, 100, (y3 - y2 + 1), newCorner, 0, this.settings[cc].radius);								}									// Set the colour for the outside curve								var outsideColour = this.borderColour;							} else {								// Set the coour for the outside curve								var outsideColour = this.boxColour;								var y3 = y1;							}										// Draw aa pixels?							if(this.antiAlias) {										// Cycle the y-axis and draw the anti aliased pixels on the								// outside of the curve								for(var inty = (y3 + 1); inty < y4; inty++) {

⌨️ 快捷键说明

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