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>


你可能感兴趣的:(Flex)