<?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>