FLEX,图标操作,xml, 通信,实例

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
				layout="absolute"
				verticalAlign="middle"
				backgroundColor="white"
				initialize="init()">
	<mx:LineChart id="lineChart"
				  showDataTips="true"
				  width="462"
				  height="342"
				  seriesFilters="[]" x="10" y="141">
		<!--showAllDataTips="true"-->
		<mx:backgroundElements>
			<mx:GridLines horizontalTickAligned="true" verticalTickAligned="true">
				<mx:horizontalFill>
					<mx:SolidColor color="haloBlue" alpha="0.2" />
				</mx:horizontalFill>
				<mx:horizontalAlternateFill>
					<mx:SolidColor color="haloSilver" alpha="0.2" />
				</mx:horizontalAlternateFill>
				<mx:verticalFill>
					<mx:SolidColor color="haloBlue" alpha="0.2" />
				</mx:verticalFill>
				<mx:verticalAlternateFill>
					<mx:SolidColor color="haloSilver" alpha="0.2" />
				</mx:verticalAlternateFill>
			</mx:GridLines>
		</mx:backgroundElements>
		<!-- vertical axis -->
		<mx:verticalAxis>
			<mx:LinearAxis id="chartVerticalAxis" displayName="Count" baseAtZero="false" title="Count" />
		</mx:verticalAxis>
		
		<!-- horizontal axis -->
		<mx:horizontalAxis>
			<mx:CategoryAxis id="chartHorizontalAxis" categoryField="@datePoint" title="Date" />
		</mx:horizontalAxis>
		
		<!-- horizontal axis renderer -->
		<mx:horizontalAxisRenderers>
			<mx:AxisRenderer axis="{chartHorizontalAxis}" canDropLabels="true" />
		</mx:horizontalAxisRenderers>
		
		<!-- series -->
		<mx:series>
		</mx:series>
	</mx:LineChart>
	<!-- this is a http service used for send request and get return result do something-->
	<mx:HTTPService id="httpServiceXMl" url="http://example.com//example params" method="POST" showBusyCursor="true" resultFormat="e4x">
		<mx:request>
			<method>public</method>
			<type>xml</type>
		</mx:request>
	</mx:HTTPService>
	<mx:Script>
		<![CDATA[
			import mx.charts.chartClasses.DataDescription;
			import mx.charts.series.LineSeries;
			import mx.collections.XMLListCollection;
			import mx.controls.Alert;
			import mx.events.CloseEvent;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			import spark.components.CheckBox;
			
			// declare some global variable
			var checkChanged:Boolean = false;			//用于标记事件的来源是否是由check box的改变而触发的, true为是,false为其他触发
			var showModel:String = "Ind";				//用于标记当前选择的是 Individua, MultiInd Individua, 还是 ALL Individua
			var groupBy:String = "byMonth";				//用于标记当前选择的是byHour,byDay,byWeek,byMonth,byYear
			var previousDateFrom:String;				//用于在鼠标事件mousedown中记录dateFrom改变时间前的值
			var previousDateTo:String;					//用于在鼠标事件mousedown中记录dateTo改变时间前的值
			var showType:String = "";					//用于标记当前是哪儿check box触发的,PT或NC或....
			var showTypeArray:Array = new Array;		//用于记录所有check box的selected为true的ID,ON,OE,ST,LJ或....
			var basicUrl:String = "http://tools.localhost:8080";	//接受请求的服务器域名,命名规则为 "http://example.com"
			
			private function init():void
			{
				//init some checkbox' enable
				//这些check box只有当ALL Individua 的selected为true时才能用
				DCO.enabled = false; 
				DE.enabled = false; 
				JIL.enabled = false; 
				CIL.enabled = false; 
				TIL.enabled = false; 
				FIL.enabled = false; 
				CCL.enabled = false; 
				NJL.enabled = false; 
				NEL.enabled = false; 
				LJ.enabled = false;
				ST.enabled = false;		
				//bind http service which used for get xml info and bind to userlist
				httpServiceXMl.addEventListener(ResultEvent.RESULT,onResult);
				httpServiceXMl.addEventListener(FaultEvent.FAULT,onFault);
				httpServiceXMl.url = "http://tools.localhost:8080/emailtrace/flexconphp/init/lsds";
				httpServiceXMl.send();
				//init dateFrom and dateTo date
				var dt:Date = new Date;
				var df:Date = new Date;
				df["date"] -= 7;	
				dateFrom.text = df.fullYear.toString()+"-"+(df.getMonth().toString().length == 1 ? ("0"+(df.getMonth()+1)):(df.getMonth()+1))+"-"+(df.getDate().toString().length == 1?"0"+(df.getDate()):df.getDate());
				dateTo.text = dt.fullYear.toString()+"-"+(dt.getMonth().toString().length == 1 ? ("0"+(dt.getMonth()+1)):(dt.getMonth()+1))+"-"+(dt.getDate().toString().length == 1?"0"+(dt.getDate()):dt.getDate());
				//init checkbox enable to false, cuz it's have no data or don't sure
				NCA.enabled = false;
				SCV.enabled = false;
				APP.enabled = false;
				DCA.enabled = false;
				NCJ.enabled = false;
				DCJ.enabled = false;
				OE.enabled = false;
				HE.enabled = false;
				HC.enabled = false;
				//don't sure so init enable to false
				byHour.enabled = false;			
				/***************************************/
				/************add event listener ********/
				/***************************************/
				userList.addEventListener(Event.CHANGE,userList_changeHandler);
				dateFrom.addEventListener(Event.CHANGE,checkDateRight);
				dateFrom.addEventListener(MouseEvent.MOUSE_DOWN,dateFrom_MouseDownHandler);
				dateTo.addEventListener(Event.CHANGE,checkDateRight);
				dateTo.addEventListener(MouseEvent.MOUSE_DOWN,dateTo_MouseDownHandler);
				testDB.addEventListener(MouseEvent.CLICK,testBindDB);
//				byHour.addEventListener(Event.CHANGE,byHour_changeHandler);
				byDay.addEventListener(Event.CHANGE,byDay_changeHandler);
				byWeek.addEventListener(Event.CHANGE,byWeek_changeHandler);
				byMonth.addEventListener(Event.CHANGE,byMonth_changeHandler);
				byYear.addEventListener(Event.CHANGE,byYear_changeHandler);
				Ind.addEventListener(Event.CHANGE,Ind_changeHandler);
//				MultiInd.addEventListener(Event.CHANGE,MultiInd_changeHandler);
				AllInd.addEventListener(Event.CHANGE,AllInd_changeHandler);
				
				//bind change event to check box
				/****************CANDIDATE********************/
				NCO.addEventListener(Event.CHANGE,NCO_changeHandler);
//				NCA.addEventListener(Event.CHANGE,NCA_changeHandler);
//				APP.addEventListener(Event.CHANGE,APP_changeHandler);
//				SCV.addEventListener(Event.CHANGE,SCV_changeHandler);
//				DCA.addEventListener(Event.CHANGE,DCA_changeHandler);
				DCO.addEventListener(Event.CHANGE,DCO_changeHandler);
				/****************CLIENTS********************/
//				NCJ.addEventListener(Event.CHANGE,NCJ_changeHandler);
				SE.addEventListener(Event.CHANGE,SE_changeHandler);
				TM.addEventListener(Event.CHANGE,TM_changeHandler);
				FM.addEventListener(Event.CHANGE,FM_changeHandler);
				NO.addEventListener(Event.CHANGE,NO_changeHandler);
				NJ.addEventListener(Event.CHANGE,NJ_changeHandler);
				NE.addEventListener(Event.CHANGE,NE_changeHandler);
//				DCJ.addEventListener(Event.CHANGE,DCJ_changeHandler);
				DE.addEventListener(Event.CHANGE,DE_changeHandler);
				/****************SPEED********************/
				JIL.addEventListener(Event.CHANGE,JIL_changeHandler);
				CIL.addEventListener(Event.CHANGE,CIL_changeHandler);
				TIL.addEventListener(Event.CHANGE,TIL_changeHandler);
				FIL.addEventListener(Event.CHANGE,FIL_changeHandler);
				CCL.addEventListener(Event.CHANGE,CCL_changeHandler);
				NJL.addEventListener(Event.CHANGE,NJL_changeHandler);
				NEL.addEventListener(Event.CHANGE,NEL_changeHandler);
				/****************OTHERS********************/
				AT.addEventListener(Event.CHANGE,AT_changeHandler);
				OC.addEventListener(Event.CHANGE,OC_changeHandler);
				PT.addEventListener(Event.CHANGE,PT_changeHandler);
//				OE.addEventListener(Event.CHANGE,OE_changeHandler);
				ON.addEventListener(Event.CHANGE,ON_changeHandler);
				RE.addEventListener(Event.CHANGE,RE_changeHandler);
				uOC.addEventListener(Event.CHANGE,uOC_changeHandler);
				LJ.addEventListener(Event.CHANGE,LJ_changeHandler);
				ST.addEventListener(Event.CHANGE,ST_changeHandler);
//				HE.addEventListener(Event.CHANGE,HE_changeHandler);
//				HC.addEventListener(Event.CHANGE,HC_changeHandler);
				JI.addEventListener(Event.CHANGE,JI_changeHandler);
				FI.addEventListener(Event.CHANGE,FI_changeHandler);
				CC.addEventListener(Event.CHANGE,CC_changeHandler);
				CI.addEventListener(Event.CHANGE,CI_changeHandler);
				TI.addEventListener(Event.CHANGE,TI_changeHandler);

			}
			
			protected function userList_changeHandler(event:Event):void
			{
				//如果check  box 有选中项,则当下拉框值改变后刷新坐标信息
				if(showTypeArray.length > 0)
					sendRequestAndGetXMlDrawLineOnChart();
			}
			
			protected function checkDateRight(event:Event):void
			{
				//当dateFrom或dateTo改变时,检查时间是否合理,不合理则不允许修改,返回改变前的值;合理的就修改并且刷新图标坐标值
				var dateFromArray:Array = dateFrom.text.split("-");
				var dateFromDate:Date = new Date(dateFromArray[0],dateFromArray[1],dateFromArray[2]);
				var dateToArray:Array = dateTo.text.split("-");
				var dateToDate:Date = new Date(dateToArray[0],dateToArray[1],dateToArray[2]);
				if(dateFromDate.time.valueOf() - dateToDate.time.valueOf() >= 0)
				{
					Alert.show("Error Date","ERROR",0);
					if(event.target.id == "dateFrom")
					{
						dateFrom.text = previousDateFrom;
					}
					else
					{
						dateTo.text = previousDateTo;
					}
				}
				if(showTypeArray.length > 0)
					sendRequestAndGetXMlDrawLineOnChart();
			}

			protected function byHour_changeHandler(event:Event):void
			{
				//如果check  box 有选中项,则设定默认值,否则就刷新坐标信息
				groupBy = "byHour";
				if(showTypeArray.length == 0 )
				{
					var dt:Date = new Date;
					var df:Date = new Date;			
					df["hours"] -= 8;	
					dateFrom.text = df.fullYear.toString()+"-"+(df.getMonth().toString().length == 1 ? ("0"+(df.getMonth()+1)):(df.getMonth()+1))+"-"+(df.getDate().toString().length == 1?"0"+(df.getDate()):df.getDate());
					dateTo.text = dt.fullYear.toString()+"-"+(dt.getMonth().toString().length == 1 ? ("0"+(dt.getMonth()+1)):(dt.getMonth()+1))+"-"+(dt.getDate().toString().length == 1?"0"+(dt.getDate()):dt.getDate());
				}
				else
					sendRequestAndGetXMlDrawLineOnChart();
			}
			protected function byDay_changeHandler(event:Event):void
			{
				groupBy = "byDay";
				if(showTypeArray.length == 0)
				{
					var dt:Date = new Date;
					var df:Date = new Date;
					df["date"] -= 7;	
					dateFrom.text = df.fullYear.toString()+"-"+(df.getMonth().toString().length == 1 ? ("0"+(df.getMonth()+1)):(df.getMonth()+1))+"-"+(df.getDate().toString().length == 1?"0"+(df.getDate()):df.getDate());
					dateTo.text = dt.fullYear.toString()+"-"+(dt.getMonth().toString().length == 1 ? ("0"+(dt.getMonth()+1)):(dt.getMonth()+1))+"-"+(dt.getDate().toString().length == 1?"0"+(dt.getDate()):dt.getDate());
				}
				else
					sendRequestAndGetXMlDrawLineOnChart();
			}
			protected function byWeek_changeHandler(event:Event):void
			{
				groupBy = "byWeek";
				if(showTypeArray.length == 0)
				{
					var dt:Date = new Date;
					var df:Date = new Date;
					df["date"] -= 49;	
					dateFrom.text = df.fullYear.toString()+"-"+(df.getMonth().toString().length == 1 ? ("0"+(df.getMonth()+1)):(df.getMonth()+1))+"-"+(df.getDate().toString().length == 1?"0"+(df.getDate()):df.getDate());
					dateTo.text = dt.fullYear.toString()+"-"+(dt.getMonth().toString().length == 1 ? ("0"+(dt.getMonth()+1)):(dt.getMonth()+1))+"-"+(dt.getDate().toString().length == 1?"0"+(dt.getDate()):dt.getDate());
				}
				else
					sendRequestAndGetXMlDrawLineOnChart();
			}
			protected function byMonth_changeHandler(event:Event):void
			{
				groupBy = "byMonth";
				if(showTypeArray.length == 0)
				{
					var dt:Date = new Date;
					var df:Date = new Date;
					df["month"] -= 7;	
					dateFrom.text = df.fullYear.toString()+"-"+(df.getMonth().toString().length == 1 ? ("0"+(df.getMonth()+1)):(df.getMonth()+1))+"-"+(df.getDate().toString().length == 1?"0"+(df.getDate()):df.getDate());
					dateTo.text = dt.fullYear.toString()+"-"+(dt.getMonth().toString().length == 1 ? ("0"+(dt.getMonth()+1)):(dt.getMonth()+1))+"-"+(dt.getDate().toString().length == 1?"0"+(dt.getDate()):dt.getDate());
				}
				else
					sendRequestAndGetXMlDrawLineOnChart();
			}
			protected function byYear_changeHandler(event:Event):void
			{
				groupBy = "byYear";
				if(showTypeArray.length == 0)
				{
					var dt:Date = new Date;
					var df:Date = new Date;
					df["month"] -= 36;	
					dateFrom.text = df.fullYear.toString()+"-"+(df.getMonth().toString().length == 1 ? ("0"+(df.getMonth()+1)):(df.getMonth()+1))+"-"+(df.getDate().toString().length == 1?"0"+(df.getDate()):df.getDate());
					dateTo.text = dt.fullYear.toString()+"-"+(dt.getMonth().toString().length == 1 ? ("0"+(dt.getMonth()+1)):(dt.getMonth()+1))+"-"+(dt.getDate().toString().length == 1?"0"+(dt.getDate()):dt.getDate());
				}
				else
					sendRequestAndGetXMlDrawLineOnChart();
			}
			
			protected function dateFrom_MouseDownHandler(event:MouseEvent):void
			{
				//mouse down时记录dateFrom改变之前的日期
				previousDateFrom = dateFrom.text;
			}
			
			protected function dateTo_MouseDownHandler(event:MouseEvent):void
			{
				previousDateTo = dateTo.text;	
			}
			
			protected function Ind_changeHandler(event:Event):void
			{
				//改变showModel为IND,清空图表的线条对象和dataprovider,屏蔽一些checkbox,设定所有checkbox的enabled为false
				showModel = "Ind";
				setAllCheckBoxSelectedExceptThis(false,"");
				clearAllItemsInCharts();
				DCO.enabled = false; 
				DE.enabled = false; 
				JIL.enabled = false; 
				CIL.enabled = false; 
				TIL.enabled = false; 
				FIL.enabled = false; 
				CCL.enabled = false; 
				NJL.enabled = false; 
				NEL.enabled = false; 
				LJ.enabled = false;
				ST.enabled = false;	
			}

			protected function MultiInd_changeHandler(event:Event):void
			{
				showModel = "MultiInd";
				setAllCheckBoxSelectedExceptThis(false,"");
				clearAllItemsInCharts();
				DCO.enabled = false; 
				DE.enabled = false; 
				JIL.enabled = false; 
				CIL.enabled = false; 
				TIL.enabled = false; 
				FIL.enabled = false; 
				CCL.enabled = false; 
				NJL.enabled = false; 
				NEL.enabled = false; 
				LJ.enabled = false;
				ST.enabled = false;	
			}

			protected function AllInd_changeHandler(event:Event):void
			{
				showModel = "AllInd";
				setAllCheckBoxSelectedExceptThis(false,"");
				clearAllItemsInCharts();
				DCO.enabled = true; 
				DE.enabled = true; 
				JIL.enabled = true; 
				CIL.enabled = true; 
				TIL.enabled = true; 
				FIL.enabled = true; 
				CCL.enabled = true; 
				NJL.enabled = true; 
				NEL.enabled = true; 
				LJ.enabled = true;
				ST.enabled = true;	
			}
			/****************CANDIDATE********************/
			//CANDIDATE Check Box---NCO, 设定全局变量(标记是否有checkbox触发的)checkChanged为true,然后条用drawLine
			protected function NCO_changeHandler(event:Event):void
			{
				showType = "NCO";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			
			protected function NCA_changeHandler(event:Event):void
			{
				showType = "NCA";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function APP_changeHandler(event:Event):void
			{
				showType = "APP";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function SCV_changeHandler(event:Event):void
			{
				showType = "SCV";
				drawLine(event, showType);
			}
			
			protected function DCA_changeHandler(event:Event):void
			{
				showType = "DCA";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function DCO_changeHandler(event:Event):void
			{
				showType = "DCO";
				drawLine(event, showType);
			}
			/****************CLIENTS********************/
			//CLIENTS Check Box---NCJ, 设定全局变量(标记是否有checkbox触发的)checkChanged为true,然后条用drawLine
			protected function NCJ_changeHandler(event:Event):void
			{
				showType = "NCJ";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function SE_changeHandler(event:Event):void
			{
				showType = "SE";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function TM_changeHandler(event:Event):void
			{
				showType = "TM";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function FM_changeHandler(event:Event):void
			{
				showType = "FM";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function NO_changeHandler(event:Event):void
			{
				showType = "NO";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function NJ_changeHandler(event:Event):void
			{
				showType = "NJ";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function NE_changeHandler(event:Event):void
			{
				showType = "NE";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function DCJ_changeHandler(event:Event):void
			{
				showType = "DCJ";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function DE_changeHandler(event:Event):void
			{
				showType = "DE";
				checkChanged = true;
				drawLine(event, showType);
			}
			/****************SPEED********************/
			//SPEED Check Box---JIL, 设定全局变量(标记是否有checkbox触发的)checkChanged为true,然后条用drawLine
			protected function JIL_changeHandler(event:Event):void
			{
				showType = "JIL";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function CIL_changeHandler(event:Event):void
			{
				showType = "CIL";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function TIL_changeHandler(event:Event):void
			{
				showType = "TIL";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function FIL_changeHandler(event:Event):void
			{
				showType = "FIL";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function CCL_changeHandler(event:Event):void
			{
				showType = "CCL";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function NJL_changeHandler(event:Event):void
			{
				showType = "NJL";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function NEL_changeHandler(event:Event):void
			{
				showType = "NEL";
				checkChanged = true;
				drawLine(event, showType);
			}
			/****************OTHERS********************/
			//OTHERS Check Box---AT, 设定全局变量(标记是否有checkbox触发的)checkChanged为true,然后条用drawLine
			protected function AT_changeHandler(event:Event):void
			{
				showType = "AT";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function OC_changeHandler(event:Event):void
			{
				showType = "OC";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function PT_changeHandler(event:Event):void
			{
				showType = "PT";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function OE_changeHandler(event:Event):void
			{
				showType = "OE";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function ON_changeHandler(event:Event):void
			{
				showType = "ON";
				checkChanged = true;
				drawLine(event, showType);
			}	
			
			protected function RE_changeHandler(event:Event):void
			{
				showType = "RE";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function uOC_changeHandler(event:Event):void
			{
				showType = "UOC";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function LJ_changeHandler(event:Event):void
			{
				showType = "LJ";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function ST_changeHandler(event:Event):void
			{
				showType = "ST";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function HE_changeHandler(event:Event):void
			{
				showType = "HE";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function HC_changeHandler(event:Event):void
			{
				showType = "HC";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function JI_changeHandler(event:Event):void
			{
				showType = "JI";
				checkChanged = true;
				drawLine(event, showType);
			}
			
			protected function FI_changeHandler(event:Event):void
			{
				showType = "FI";
				checkChanged = true;
				drawLine(event, showType);
			}	
			
			protected function CC_changeHandler(event:Event):void
			{
				showType = "CC";
				checkChanged = true;
				drawLine(event, showType);
			}	
			
			protected function CI_changeHandler(event:Event):void
			{
				showType = "CI";
				checkChanged = true;
				drawLine(event, showType);
			}	
			
			protected function TI_changeHandler(event:Event):void
			{
				showType = "AT";
				checkChanged = true;
				drawLine(event, showType);
			}
		
			/***********************************************/
			/**************FUNCTIONS FOR EVENTS*************/
			/***********************************************/
			private function drawLine(event:Event, showType:String):void
			{
				//如果check box 选中,并且showModel是individual或者All individual的,则将showType加入选中数组,并在图表中添加一条线,并重新读取坐标信息,这个需要通信
				//否则 从数组中取出当前check box对应的项,并从图表图标中去除对应的line serie对象,从linechart的dataprovider取出对应该项的属性值,此时不需要通信
				if(event.target.selected == true && (showModel == "Ind" || showModel == "AllInd"))
				{
					pushShowTypeInArray(showType);
					sendRequestAndGetXMlDrawLineOnChart();
				}
				else if(event.target.selected == false && (showModel == "Ind" || showModel == "AllInd"))
				{
					deleteXmlShowItem(showType);
					popShowTypeInArray(showType);
				}
			}
			
			//做清理工作的函数
			private function clearAllItemsInCharts():void
			{
				clearLineChartSeries();			
				clearLineChartDataProvider();	
				setAllCheckBoxSelectedExceptThis(false);
			}
			//去除linechart内部的line serie对象
			private function clearLineChartSeries():void
			{
				var seriesArray:Array = new Array;
				lineChart.series = seriesArray;
			}
			//去除linechart的数据绑定
			private function clearLineChartDataProvider():void
			{
				lineChart.dataProvider = null;
			}
			//设定所有的项目为flase;
			protected function setAllCheckBoxSelectedExceptThis(isSelected:Boolean,showOnly:String = ""):void
			{				
				showOnly == 'NCO'?NCO.selected = !isSelected:NCO.selected = isSelected;
				showOnly == 'NCA'?NCA.selected = !isSelected:NCA.selected = isSelected;
				showOnly == 'APP'?APP.selected = !isSelected:APP.selected = isSelected;
				showOnly == 'SCV'?SCV.selected = !isSelected:SCV.selected = isSelected;
				showOnly == 'DCA'?DCA.selected = !isSelected:DCA.selected = isSelected;
				showOnly == 'DCO'?DCO.selected = !isSelected:DCO.selected = isSelected;
				
				showOnly == 'NCJ'?NCJ.selected = !isSelected:NCJ.selected = isSelected;
				showOnly == 'SE'?SE.selected = !isSelected:SE.selected = isSelected;
				showOnly == 'TM'?TM.selected = !isSelected:TM.selected = isSelected;
				showOnly == 'FM'?FM.selected = !isSelected:FM.selected = isSelected;
				showOnly == 'NO'?NO.selected = !isSelected:NO.selected = isSelected;
				showOnly == 'NJ'?NJ.selected = !isSelected:NJ.selected = isSelected;
				showOnly == 'NE'?NE.selected = !isSelected:NE.selected = isSelected;
				showOnly == 'DCJ'?DCJ.selected = !isSelected:DCJ.selected = isSelected;
				showOnly == 'DE'?DE.selected = !isSelected:DE.selected = isSelected;
				
				showOnly == 'JIL'?JIL.selected = !isSelected:JIL.selected = isSelected;
				showOnly == 'CIL'?CIL.selected = !isSelected:CIL.selected = isSelected;
				showOnly == 'TIL'?TIL.selected = !isSelected:TIL.selected = isSelected;
				showOnly == 'FIL'?FIL.selected = !isSelected:FIL.selected = isSelected;
				showOnly == 'CCL'?CCL.selected = !isSelected:CCL.selected = isSelected;
				showOnly == 'NJL'?NJL.selected = !isSelected:NJL.selected = isSelected;
				showOnly == 'NEL'?NEL.selected = !isSelected:NEL.selected = isSelected;
				
				showOnly == 'AT'?AT.selected = !isSelected:AT.selected = isSelected;
				showOnly == 'OC'?OC.selected = !isSelected:OC.selected = isSelected;
				showOnly == 'PT'?PT.selected = !isSelected:PT.selected = isSelected;
				showOnly == 'OE'?OE.selected = !isSelected:OE.selected = isSelected;
				showOnly == 'ON'?ON.selected = !isSelected:ON.selected = isSelected;
				showOnly == 'RE'?RE.selected = !isSelected:RE.selected = isSelected;
				showOnly == 'uOC'?uOC.selected = !isSelected:uOC.selected = isSelected;
				showOnly == 'LJ'?LJ.selected = !isSelected:LJ.selected = isSelected;
				showOnly == 'ST'?ST.selected = !isSelected:ST.selected = isSelected;
				showOnly == 'HE'?HE.selected = !isSelected:HE.selected = isSelected;
				showOnly == 'HC'?HC.selected = !isSelected:HC.selected = isSelected;
				showOnly == 'JI'?JI.selected = !isSelected:JI.selected = isSelected;
				showOnly == 'FI'?FI.selected = !isSelected:FI.selected = isSelected;
				showOnly == 'CC'?CC.selected = !isSelected:CC.selected = isSelected;
				showOnly == 'CI'?CI.selected = !isSelected:CI.selected = isSelected;
				showOnly == 'TI'?TI.selected = !isSelected:TI.selected = isSelected;
			}
			//通过url,用http service发送请求,并用drawChartByResult处理返回的值
			//request样例://http://tools.localhost:8080/emailtrace/flexconphp/from/2011-02-28/to/2011-03-07/groupby/byMonth/module/CC|PT|UOC/showModule/Ind/user/Fliex jin
			private function sendRequestAndGetXMlDrawLineOnChart():void
			{
				httpServiceXMl.addEventListener(ResultEvent.RESULT,drawChartByResult);
				httpServiceXMl.url = basicUrl + "/emailtrace/flexconphp/from/"+dateFrom.text+"/to/"+dateTo.text+"/groupby/"+groupBy+"/module/"+getShowTypeArrayByString()+"/showModule/"+showModel+"/user/"+userList.selectedLabel;
				httpServiceXMl.send();
			}
			//用于记录选中的check box
			private function pushShowTypeInArray(showType:String):void
			{
				var isFound:Boolean = false;
				for(var i:int = 0; i < showTypeArray.length; i++)
					if(showTypeArray[i].toString() == showType)
						isFound = true;
				if(isFound == false)
					showTypeArray.push(showType);
			}
			//删除取消选中的check box
			private function popShowTypeInArray(showType:String):void
			{
				var newArray:Array = new Array;
				for(var i:int = 0; i < showTypeArray.length; i++)
					if(showTypeArray[i].toString() != showType)
						newArray.push(showTypeArray[i].toString());
				showTypeArray = newArray;
			}
			//将选中的check box 通过字符串的方式返回   例如:PT|OC|JI|LJ
			private function getShowTypeArrayByString():String
			{
				var showTypeStr:String = "";
				for(var i:int = 0; i < showTypeArray.length; i++)
					showTypeStr += "|"+showTypeArray[i].toString();
				return showTypeStr.substr(1,showTypeStr.length);
			}
			
			// http service 返回值处理,只有当check box触发的事件时,才有新的线条出现
			private function drawChartByResult(event:ResultEvent):void 
			{
				//将返回的xml重新绑定在chart上
				var userCollection:XMLListCollection = new XMLListCollection();
				var tempXml:XML = event.result as XML;
				var xmlList:XMLList = tempXml.elements("object");
				userCollection.source = xmlList;
				lineChart.dataProvider = userCollection;
				//如果是check box触发的事件,则在图表中添加新的line serie对象
				if(checkChanged == true)
				{
					var ONLineSerie:LineSeries = new LineSeries;;
					var lineArray:Array = new Array();
					ONLineSerie.id = showType + "_LineSerie";
					lineArray = lineChart.series;
					ONLineSerie.yField = "@"+showType+"_staticCount";//折线Y周起伏的依赖项
					ONLineSerie.displayName = showType+" Count";//data tips内的title
					chartVerticalAxis.title = "Count";			//y轴title
					chartHorizontalAxis.title = "Date";		//x轴title
					chartHorizontalAxis.categoryField = "@datePoint"; //x周显示的刻度依赖项
					lineArray.push(ONLineSerie);
					lineChart.series = lineArray;
					checkChanged = false;
				}
			}
			//service for http service, get xml from tools and bind to dropdownlist
			private function onResult(event:ResultEvent):void 
			{
				var tempXml:XML = event.result as XML;
				userList.dataProvider = tempXml.children();
				httpServiceXMl.removeEventListener(ResultEvent.RESULT,onResult);
			}
			//service for http service, show error if can't get xml successfully
			private function onFault(event:FaultEvent):void 
			{
				var resultXML:String = event.fault.toString();
				Alert.show(resultXML);
				
			}
			//从dataprovider中删除对应的属性,从lineChart的line series中删除对应的line serie对象
			private function deleteXmlShowItem(showItem:String):void
			{
				var tempXMLListCollection:XMLListCollection = lineChart.dataProvider as XMLListCollection;
				var tempXmlList:XMLList = tempXMLListCollection.source;
				for(var i:int = 0; i < tempXmlList.length(); i++)
					delete tempXmlList.@[showItem+"_staticCount"];
				tempXMLListCollection.source = tempXmlList;
				
				var lineSeriesArray:Array = new Array;
				for(var i:int = 0; i < lineChart.series.length; i++)
					if(lineChart.series[i].id != showItem+"_LineSerie")
						lineSeriesArray.push(lineChart.series[i]);
				lineChart.series = lineSeriesArray;
			}
			
			private function testBindDB(e:MouseEvent):void
			{
//				trace(lineChart.dataProvider.toString());
//				for(var i:int = 0; i < lineChart.series.length; i++)
//					trace(lineChart.series[i].id);
				trace(showTypeArray.length);	
//				var testXML:XML = <object datePoint="2011-03-08" AT_staticCount="0"/>;
//				var tempXML:XML = <object datePoint="2011-03-08" AO_staticCount="55"/>;
//				var dateFromArray:Array = testXML.attribute("datePoint").toString().split("-");
//				var dateFromDate:Date = new Date(dateFromArray[0],dateFromArray[1],dateFromArray[2]);
//				var dateToArray:Array = tempXML.attribute("datePoint").toString().split("-");
//				var dateToDate:Date = new Date(dateToArray[0],dateToArray[1],dateToArray[2]);
//				if(dateFromDate.time.valueOf() - dateToDate.time.valueOf() > 0)
//				{
//					Alert.show(">");
//					Alert.show("Error Date","ERROR",0);
//					var df:Date = new Date;
//					df["date"] -= 7;	
//					dateFrom.text = df.fullYear.toString()+"-"+(df.getMonth().toString().length == 1 ? ("0"+(df.getMonth()+1)):(df.getMonth()+1))+"-"+(df.getDate().toString().length == 1?"0"+(df.getDate()):df.getDate());
//				}
//				else if(dateFromDate.time.valueOf() - dateToDate.time.valueOf() < 0)
//					Alert.show("<");
//				else
//				{
////					testXML.@["AO_staticCount"] = tempXML.attribute("AO_staticCount");
//					delete testXML.@["AT_staticCount"];
//				}
//				Alert.show(testXML.toXMLString());
				
				
				
//				var tempXMLListCollection:XMLListCollection = lineChart.dataProvider as XMLListCollection;
//				var tempXML:XMLList = tempXMLListCollection.source;
//				var gotID:int = 0 ;
//				for(var i:int =0; i < tempXML.length(); i++)
//				{
//					if(tempXML[i].attribute("datePoint") == "2011-02-24")
//					{
//						gotID = i;
//						break;
//					}
//				}
//				trace(tempXML);
				
				
//				var tempXMl:XML = <object point="55" date="2010-4-6"/>;
//				var tempStr:String = "sdsdsd";
//				tempXMl.@[tempStr] = "sdsdksklfjgdlkfgdf"
//				trace(tempXMl.toXMLString());
				
				
				
//				trace(tempXML[gotID].attribute("staticCount"));
//				for(var i:int = 0; i < lineChart.series.length; i++)
//					trace(lineChart.series[i].id.toString());
				/*var chartSerieArray:Array = lineChart.series;
				var tempChartSerieArray:Array = new Array;
				for(var i:int = 0; i < chartSerieArray.length; i++)
				{
					if(chartSerieArray[i].id == "lineseriesEx")
						tempChartSerieArray[tempChartSerieArray.length] = chartSerieArray[i];
				}
				lineChart.series = tempChartSerieArray;*/
				
				
				
//				trace(lineChart.series);
//				lineChart.removeChild();
				
				//				lineChart.dataProvider = expenses;
				//				lineseriesEx.yField = "Expenses"; //折线Y周起伏的依赖项
				//				lineseriesEx.displayName = "Expenses";  //data tips内的title
				//				chartVerticalAxis.title = "Acount";		//y轴title
				//				chartHorizontalAxis.title = "Month";		//x轴title
				//				chartHorizontalAxis.categoryField = "Month"; //x周显示的刻度依赖项
			}
		]]>
	</mx:Script>
		<mx:Style>         global         {                 dropShadowEnabled:false;         }     </mx:Style> 
		<mx:Button x="235" y="491" label="test" id="testDB"/>
		<mx:Canvas x="11" y="10" width="707" height="89">
				<mx:DateField x="230" y="15" id="dateTo" monthNames='["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"]' formatString="YYYY-MM-DD" dayNames='["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]' yearNavigationEnabled="true" showToday="true"/>
				<mx:DateField x="52" y="14" id="dateFrom" formatString="YYYY-MM-DD"/>
				<mx:Label x="12" y="18" text="From" fontSize="15"/>
				<mx:Label x="201" y="19" text="To" fontSize="15"/>
				<mx:RadioButton x="67" y="49" label="day" id="byDay" groupName="GroupBy" selected="true"/>
				<mx:RadioButton x="125" y="49" label="week" id="byWeek" groupName="GroupBy"/>
				<mx:RadioButton x="189" y="49" label="month" id="byMonth" groupName="GroupBy"/>
				<mx:RadioButton x="260" y="49" label="year" id="byYear" groupName="GroupBy"/>
				<mx:RadioButton x="6" y="49" label="hour" id="byHour" groupName="GroupBy"/>
				<mx:RadioButton x="388" y="10" groupName="showModel" label="Individual" id="Ind" selected="true"/>
				<mx:RadioButton x="388" y="36" label="Multiple Individuals" groupName="showModel" id="MultiInd"/>
				<mx:RadioButton x="388" y="62" label="All Individuals" groupName="showModel" id="AllInd" />
				<mx:CheckBox x="566" y="36" label="Sum" id="isGetSum" />
				<mx:ComboBox x="517" y="11" editable="false" id="userList" labelField="@label"></mx:ComboBox>
		</mx:Canvas>
		<mx:Panel x="480" y="116" width="136" height="122" layout="absolute" title="CANDIDATES">
				<mx:CheckBox x="10" y="37" label="NCO" id="NCO" />
				<mx:CheckBox x="84" y="37" label="NCA" id="NCA" />
				<mx:CheckBox x="84" y="64" label="APP" id="APP" />
				<mx:CheckBox x="10" y="64" label="SCV" id="SCV" />
				<mx:CheckBox x="84" y="91" label="DCA" id="DCA" />
				<mx:CheckBox x="10" y="91" label="DCO" id="DCO" />
		</mx:Panel>
		<mx:Panel x="480" y="248" width="136" height="175" layout="absolute" title="CLIENTS">
				<mx:CheckBox x="10" y="36" label="NCJ" id="NCJ" />
				<mx:CheckBox x="10" y="63" label="SE" id="SE" />
				<mx:CheckBox x="83" y="63" label="TM" id="TM" />
				<mx:CheckBox x="10" y="90" label="FM" id="FM" />
				<mx:CheckBox x="83" y="90" label="NO" id="NO" />
				<mx:CheckBox x="10" y="117" label="NJ" id="NJ" />
				<mx:CheckBox x="83" y="117" label="NE" id="NE" />
				<mx:CheckBox x="83" y="36" label="DCJ" id="DCJ" />
				<mx:CheckBox x="10" y="144" label="DE" id="DE" />
		</mx:Panel>
		<mx:Panel x="480" y="433" width="136" height="146" layout="absolute" title="SPEED">
				<mx:CheckBox x="10" y="36" label="JIL" id="JIL"/>
				<mx:CheckBox x="83" y="36" label="CIL" id="CIL" />
				<mx:CheckBox x="10" y="63" label="TIL" id="TIL" />
				<mx:CheckBox x="83" y="63" label="FIL" id="FIL" />
				<mx:CheckBox x="10" y="90" label="CCL" id="CCL" />
				<mx:CheckBox x="82" y="90" label="NJL" id="NJL" />
				<mx:CheckBox x="10" y="117" label="NEL" id="NEL" />
		</mx:Panel>
		<mx:Panel x="624" y="116" width="87" height="463" layout="absolute" title="OTHERS">
				<mx:CheckBox x="10" y="36" label="AT" id="AT" />
				<mx:CheckBox x="10" y="62" label="OC" id="OC" />
				<mx:CheckBox x="10" y="114" label="PT" id="PT" />
				<mx:CheckBox x="10" y="140" label="OE" id="OE" />
				<mx:CheckBox x="10" y="166" label="ON" id="ON" />
				<mx:CheckBox x="10" y="274" label="RE" id="RE" />
				<mx:CheckBox x="10" y="88" label="uOC" id="uOC"/>
				<mx:CheckBox x="10" y="409" label="LJ" id="LJ" />
				<mx:CheckBox x="10" y="436" label="ST" id="ST" />
				<mx:CheckBox x="10" y="193" label="HE" id="HE" />
				<mx:CheckBox x="10" y="220" label="HC" id="HC" />
				<mx:CheckBox x="10" y="247" label="JI" id="JI" />
				<mx:CheckBox x="10" y="355" label="FI" id="FI" />
				<mx:CheckBox x="10" y="382" label="CC" id="CC" />
				<mx:CheckBox x="10" y="301" label="CI" id="CI" />
				<mx:CheckBox x="10" y="328" label="TI" id="TI" />
		</mx:Panel>
</mx:Application>

posted @ 2011-03-11 14:17  春哥也编程  阅读(479)  评论(0编辑  收藏  举报