当前位置: 代码迷 >> JavaScript >> swfobject.js统计曲线图。
  详细解决方案

swfobject.js统计曲线图。

热度:477   发布时间:2012-10-25 10:58:57.0
swfobject.js统计曲线图。。。
[align=center]
swfobject.js

/**
 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
if(typeof deconcept == "undefined") var deconcept = new Object();
if(typeof deconcept.util == "undefined") deconcept.util = new Object();
if(typeof deconcept.SWFObjectUtil == "undefined") deconcept.SWFObjectUtil = new Object();
deconcept.SWFObject = function(swf, id, w, h, ver, c, quality, xiRedirectUrl, redirectUrl, detectKey) {
	if (!document.getElementById) { return; }
	this.DETECT_KEY = detectKey ? detectKey : 'detectflash';
	this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY);
	this.params = new Object();
	this.variables = new Object();
	this.attributes = new Array();
	if(swf) { this.setAttribute('swf', swf); }
	if(id) { this.setAttribute('id', id); }
	if(w) { this.setAttribute('width', w); }
	if(h) { this.setAttribute('height', h); }
	if(ver) { this.setAttribute('version', new deconcept.PlayerVersion(ver.toString().split("."))); }
	this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion();
	if (!window.opera && document.all && this.installedVer.major > 7) {
		// only add the onunload cleanup if the Flash Player version supports External Interface and we are in IE
		deconcept.SWFObject.doPrepUnload = true;
	}
	if(c) { this.addParam('bgcolor', c); }
	var q = quality ? quality : 'high';
	this.addParam('quality', q);
	this.setAttribute('useExpressInstall', false);
	this.setAttribute('doExpressInstall', false);
	var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;
	this.setAttribute('xiRedirectUrl', xir);
	this.setAttribute('redirectUrl', '');
	if(redirectUrl) { this.setAttribute('redirectUrl', redirectUrl); }
}
deconcept.SWFObject.prototype = {
	useExpressInstall: function(path) {
		this.xiSWFPath = !path ? "expressinstall.swf" : path;
		this.setAttribute('useExpressInstall', true);
	},
	setAttribute: function(name, value){
		this.attributes[name] = value;
	},
	getAttribute: function(name){
		return this.attributes[name];
	},
	addParam: function(name, value){
		this.params[name] = value;
	},
	getParams: function(){
		return this.params;
	},
	addVariable: function(name, value){
		this.variables[name] = value;
	},
	getVariable: function(name){
		return this.variables[name];
	},
	getVariables: function(){
		return this.variables;
	},
	delVariable: function(name){
		delete this.variables[name];
	},
	getVariablePairs: function(){
		var variablePairs = new Array();
		var key;
		var variables = this.getVariables();
		for(key in variables){
			variablePairs[variablePairs.length] = key +"="+ variables[key];
		}
		return variablePairs;
	},
	getSWFHTML: function() {
		var swfNode = "";
		if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture
			if (this.getAttribute("doExpressInstall")) {
				this.addVariable("MMplayerType", "PlugIn");
				this.setAttribute('swf', this.xiSWFPath);
			}
			swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" style="'+ this.getAttribute('style') +'"';
			swfNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';
			var params = this.getParams();
			 for(var key in params){ swfNode += [key] +'="'+ params[key] +'" '; }
			var pairs = this.getVariablePairs().join("&");
			 if (pairs.length > 0){ swfNode += 'flashvars="'+ pairs +'"'; }
			swfNode += '/>';
		} else { // PC IE
			if (this.getAttribute("doExpressInstall")) {
				this.addVariable("MMplayerType", "ActiveX");
				this.setAttribute('swf', this.xiSWFPath);
			}
			swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" style="'+ this.getAttribute('style') +'">';
			swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';
			var params = this.getParams();
			for(var key in params) {
			 swfNode += '<param name="'+ key +'" value="'+ params[key] +'" />';
			}
			var pairs = this.getVariablePairs().join("&");
			if(pairs.length > 0) {swfNode += '<param name="flashvars" value="'+ pairs +'" />';}
			swfNode += "</object>";
		}
		return swfNode;
	},
	write: function(elementId){
		if(this.getAttribute('useExpressInstall')) {
			// check to see if we need to do an express install
			var expressInstallReqVer = new deconcept.PlayerVersion([6,0,65]);
			if (this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(this.getAttribute('version'))) {
				this.setAttribute('doExpressInstall', true);
				this.addVariable("MMredirectURL", escape(this.getAttribute('xiRedirectUrl')));
				document.title = document.title.slice(0, 47) + " - Flash Player Installation";
				this.addVariable("MMdoctitle", document.title);
			}
		}
		if(this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){
			var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
			n.innerHTML = this.getSWFHTML();
			return true;
		}else{
			if(this.getAttribute('redirectUrl') != "") {
				document.location.replace(this.getAttribute('redirectUrl'));
			}
		}
		return false;
	}
}

/* ---- detection functions ---- */
deconcept.SWFObjectUtil.getPlayerVersion = function(){
	var PlayerVersion = new deconcept.PlayerVersion([0,0,0]);
	if(navigator.plugins && navigator.mimeTypes.length){
		var x = navigator.plugins["Shockwave Flash"];
		if(x && x.description) {
			PlayerVersion = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
		}
	}else if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0){ // if Windows CE
		var axo = 1;
		var counter = 3;
		while(axo) {
			try {
				counter++;
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+ counter);
//				document.write("player v: "+ counter);
				PlayerVersion = new deconcept.PlayerVersion([counter,0,0]);
			} catch (e) {
				axo = null;
			}
		}
	} else { // Win IE (non mobile)
		// do minor version lookup in IE, but avoid fp6 crashing issues
		// see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
		try{
			var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		}catch(e){
			try {
				var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
				PlayerVersion = new deconcept.PlayerVersion([6,0,21]);
				axo.AllowScriptAccess = "always"; // error if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code)
			} catch(e) {
				if (PlayerVersion.major == 6) {
					return PlayerVersion;
				}
			}
			try {
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			} catch(e) {}
		}
		if (axo != null) {
			PlayerVersion = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
		}
	}
	return PlayerVersion;
}
deconcept.PlayerVersion = function(arrVersion){
	this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0;
	this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0;
	this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0;
}
deconcept.PlayerVersion.prototype.versionIsValid = function(fv){
	if(this.major < fv.major) return false;
	if(this.major > fv.major) return true;
	if(this.minor < fv.minor) return false;
	if(this.minor > fv.minor) return true;
	if(this.rev < fv.rev) return false;
	return true;
}
/* ---- get value of query string param ---- */
deconcept.util = {
	getRequestParameter: function(param) {
		var q = document.location.search || document.location.hash;
		if (param == null) { return q; }
		if(q) {
			var pairs = q.substring(1).split("&");
			for (var i=0; i < pairs.length; i++) {
				if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
					return pairs[i].substring((pairs[i].indexOf("=")+1));
				}
			}
		}
		return "";
	}
}
/* fix for video streaming bug */
deconcept.SWFObjectUtil.cleanupSWFs = function() {
	var objects = document.getElementsByTagName("OBJECT");
	for (var i = objects.length - 1; i >= 0; i--) {
		objects[i].style.display = 'none';
		for (var x in objects[i]) {
			if (typeof objects[i][x] == 'function') {
				objects[i][x] = function(){};
			}
		}
	}
}
// fixes bug in some fp9 versions see http://blog.deconcept.com/2006/07/28/swfobject-143-released/
if (deconcept.SWFObject.doPrepUnload) {
	if (!deconcept.unloadSet) {
		deconcept.SWFObjectUtil.prepUnload = function() {
			__flash_unloadHandler = function(){};
			__flash_savedUnloadHandler = function(){};
			window.attachEvent("onunload", deconcept.SWFObjectUtil.cleanupSWFs);
		}
		window.attachEvent("onbeforeunload", deconcept.SWFObjectUtil.prepUnload);
		deconcept.unloadSet = true;
	}
}
/* add document.getElementById if needed (mobile IE < 5) */
if (!document.getElementById && document.all) { document.getElementById = function(id) { return document.all[id]; }}

/* add some aliases for ease of use/backwards compatibility */
var getQueryParamValue = deconcept.util.getRequestParameter;
var FlashObject = deconcept.SWFObject; // for legacy support
var SWFObject = deconcept.SWFObject;[align=left][/align]




XXX.jsp

<script type="text/javascript" src="${ctx }/js/swfobject.js"></script>



<script type="text/javascript">
function  changeReport(value)
{
	if(value==1)
	{
		so.addVariable("line_dot","4,#7f90b4,展示数,12,5");
		so.addVariable("values",pvAmount);
		so.addVariable("y_max",max1);
	}else if(value==2)
	{
		so.addVariable("line_dot","4,#ff9c34,点击数,12,5");
		so.addVariable("values",clickAmount);
		so.addVariable("y_max",max2);
	}else if(value==3)
	{
		so.addVariable("line_dot","4,#993300,成本,12,5");
		
		so.addVariable("values",costs);
		so.addVariable("y_max",max3);
	}else if(value==4)
	{
		so.addVariable("line_dot","4,#669933,平均点击费用,12,5");
		so.addVariable("values",avgClickCosts);
		so.addVariable("y_max",max4);
	}
	so.write("my_chart");
}

</script>




 <s:if  test="null==adPlanDateReportList||adPlanDateReportList.isEmpty()">
<div  style="margin-top: 10px;">sorry,暂时没有找到您所要查询的数据!</div>
</s:if>
<s:else>
您正在查看 <fmt:formatDate pattern="yyyy-MM-dd" value="${startTime}"/>至<fmt:formatDate pattern="yyyy-MM-dd" value="${endTime}"/> 的数据 </div>

<div id="my_chart" style="text-align: center;height: auto;"></div>
<div style="margin: 10px;">
<label>
<input type="radio" name="radio" id="rad1" onclick="changeReport(1);" checked="checked"/>展示数
</label>
<label>
<input type="radio" name="radio" id="rad1" onclick="changeReport(2);"/>点击数
</label>
<label>
<input type="radio" name="radio" id="rad1" onclick="changeReport(3);"/>成本
</label>
<label>
<input type="radio" name="radio" id="rad1" onclick="changeReport(4);"/>平均点击费用
</label>
</div>
											<script type="text/javascript">												
													var so = new SWFObject("${ctx}/actionscript/open-flash-chart.swf", "ofc", "800", "300", "9", "#FFFFFF");
													so.addParam("wmode","transparent");																				
													so.addVariable("variables","true");
													so.addVariable("bg_colour","0xFFFFFF");//背景颜色
													so.addVariable("x_grid_colour","#E8EDF8");//x轴grid底的颜色
													so.addVariable("y_grid_colour","#E8EDF8");//y轴grid底的颜色
													so.addVariable("x_axis_colour","#D9E4F3");//x坐标的颜色
													so.addVariable("y_axis_colour","#D9E4F3");//y坐标的颜色
													so.addVariable("x_label_style","12,#5B719D");//x轴坐标的文字样式,12-size,#5B719D-颜色指
													so.addVariable("y_label_style","12,#5B719D");//y轴坐标的文字样,12-size,#5B719D-颜色指式
													//so.addVariable("title","PV/点击数――日走势图,{font-size: 20;color:#5284C7}");//顶端字
													//so.addVariable("y_legend","中文1123,12,#736AFF");//左侧字
													//so.addVariable("x_legend","进入流量总体报,12,#736AFF");//底端字
													so.addVariable("y_label_size","24");//没用
													so.addVariable("y_ticks","5,10,4");//5是左侧线的长短,10是左侧线上下线的长短,4是左侧分及格
													//so.addVariable("area_hollow","1.2,3,35,#CC3399,访问次数,10");//area_hollow代表空心圆,3是节点的大小,2是线的粗细,25线型图的背景颜色深浅
													so.addVariable("line_dot","4,#7f90b4,PV数,12,5");//4线的粗细,颜色,文字,字体大小,空心圆节点的大小
													 
													
													 
													 										
													
													
													var pvAmount = "";
													var clickAmount = "";
													var strDate = "";
													var costs="";
													var avgClickCosts=""
													
													var tmp1;
													var tmp2;	
													var tmp3;		
													var tmp4;
													var tmp5;		
																				
													var max1 = 0;
													var max2 = 0;
													var max3 = 0;
													var max4 = 0;
													
													<s:iterator value="adPlanDateReportList">
													tmp1 = <s:property value="pvAmount" />;
													pvAmount = pvAmount + tmp1 + ",";
													tmp2 = <s:property value="clickAmount" />;
													clickAmount = clickAmount + tmp2 + ",";	
													tmp3=<s:property value="costs" />; 
													costs=costs + tmp3 + ",";
													tmp4 = "<s:property value='avgClickCosts' />" 
													avgClickCosts = avgClickCosts + tmp4 + ",";
													tmp5 = "<s:property value='createDate' />" 
													strDate = strDate + tmp5 + ",";
													
												   if(tmp1 > max1)
													{	
													
														
															max1 = Math.ceil(tmp1 + tmp1 * 0.5);
														
													}
													if(tmp2 > max2)
													{	
													
														
															max2 = Math.ceil(tmp2 + tmp2 * 0.5);
														
													}
													if(tmp3 > max3)
													{	
													
														
															max3 = Math.ceil(tmp3 + tmp3 * 0.5);
														
													}
													if(tmp4 > max4)
													{	
													
														
															max4 = Math.ceil(tmp4 + tmp4 * 0.5);
														
													}
													</s:iterator>
													
													pvAmount = pvAmount.substring(0,pvAmount.length-1);
													clickAmount = clickAmount.substring(0,clickAmount.length-1);
													costs=costs.substring(0,costs.length-1);
													strDate = strDate.substring(0,strDate.length-1);
													avgClickCosts=avgClickCosts.substring(0,avgClickCosts.length-1);
													
													
													so.addVariable("values",pvAmount); 													
													//so.addVariable("values","1,2,3,4,5");
													so.addVariable("x_labels",strDate);
													//so.addVariable("x_labels","中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文");												
													so.addVariable("x_axis_steps","1");//背景格的大小
													so.addVariable("y_max",max1);//图形的高度	
													so.addVariable("x_label_style","11,#000000,2");	
													//so.addVariable("tool_tip","日期:#x_label#<br>#key#:#val#");//tooltip鼠标放上去显示内容							
													so.addParam("allowScriptAccess", "always" );//"sameDomain");
													so.write("my_chart");												
											</script>
[/align]