Joshua Rainbolt: SOE Homework
ActionScript 3.0
package { import fl.controls.DataGrid; import fl.controls.dataGridClasses.DataGridColumn; import fl.data.DataProvider; import fl.events.DataGridEvent; import fl.events.*; import flash.display.MovieClip; import flash.events.*; import flash.xml.*; import flash.net.*; import flash.display.*; import flash.display.MovieClip; import flash.utils.Timer; public class DataGridExample extends MovieClip { public var array:Array = new Array(); public var myDP:DataProvider = new DataProvider(); public var checkUse:Boolean = true; public var checkUse2:Boolean = true; public function DataGridExample() { var myXML:XML; function parseXML():void { var xmlData:XML = new XML(); xmlData.ignoreWhite = true; var xmlLoader:URLLoader = new URLLoader(); xmlLoader.addEventListener(Event.COMPLETE, loadXML); xmlLoader.load(new URLRequest("http://eq2players.station.sony.com/guilds/guild_roster_xml.vm?guildId=1188102")); function loadXML(e:Event) { var myXML = new XML(e.target.data); var textNodes = myXML.children().children(); var b:Number=0; for (var a:Number=0; a< textNodes.length(); a++) { var namefuc = myXML.children().children()[a].child("name"); var rankfuc = myXML.children().children()[a].child("guildRank"); var levelfuc:Number = myXML.children().children()[a].child("level"); var classfuc = myXML.children().children()[a].child("class"); var artisanClassfun = myXML.children().children()[a].child("artisanClass"); var artisanLevelfun:Number = myXML.children().children()[a].child("artisanLevel"); if(namefuc != undefined){ array[b] = [namefuc, rankfuc, levelfuc, classfuc, artisanClassfun, artisanLevelfun ]; b++; } else{ trace("empty node"); } } trace(array.length); var arr:Array = new Array(); for (var i:Number=0; i< array.length; i++) { arr.push({Name: array[i][0], Rank: array[i][1], Level: array[i][2], ClassLvl: array[i][3], artisanClass: array[i][4], artisanLevel:array[i][5] }); // myDP.addItem({Name: array[i][0], Rank: array[i][1], Level: array[i][2], ClassLvl: array[i][3], artisanClass: array[i][4], artisanLevel:array[i][5] }); } arr.sortOn (["Level", "Rank"], [Array.NUMERIC, Array.CASEINSENSITIVE]); myDP = new DataProvider(arr); //---------------------------------- var NAMECol:DataGridColumn = new DataGridColumn("Name"); NAMECol.headerText = "Name"; NAMECol.width = 110; NAMECol.sortOptions = Array.CASEINSENSITIVE; var RANKcol:DataGridColumn = new DataGridColumn("Rank"); RANKcol.headerText = "Rank"; RANKcol.width = 80; RANKcol.sortOptions = Array.CASEINSENSITIVE; var LEVELcol:DataGridColumn = new DataGridColumn("Level"); LEVELcol.headerText = "Level"; LEVELcol.width = 80; LEVELcol.sortOptions = Array.NUMERIC; LEVELcol.sortCompareFunction = RankingCheck; var CLASScol:DataGridColumn = new DataGridColumn("ClassLvl"); CLASScol.headerText = "ClassLvl"; CLASScol.width = 100; CLASScol.sortOptions = Array.CASEINSENSITIVE; var ARTCLASScol:DataGridColumn = new DataGridColumn("artisanClass"); ARTCLASScol.headerText = "artisanClass"; ARTCLASScol.width = 80; ARTCLASScol.sortOptions = Array.CASEINSENSITIVE; var ARTLVLcol:DataGridColumn = new DataGridColumn("artisanLevel"); ARTLVLcol.headerText = "artisanLevel"; ARTLVLcol.width = 50; ARTLVLcol.sortOptions = Array.NUMERIC; var myDataGrid:DataGrid = new DataGrid(); myDataGrid.columns = [NAMECol, RANKcol, LEVELcol, CLASScol, ARTCLASScol, ARTLVLcol]; myDataGrid.rowCount = myDataGrid.length; myDataGrid.dataProvider = myDP; myDataGrid.width = 530; myDataGrid.height = 380; myDataGrid.move(10, 203); myDataGrid.resizableColumns = false; addChild(myDataGrid); //---------------------------------- var gridDisplayVAR:MovieClip; var mainbarVAR:Sprite; var textboxVAR:MovieClip; //--------------------------------- function addMe(){ var arr2:Array = new Array(); var bx1:Number=0,bx2:Number=0,bx3:Number=0,bx4:Number=0,bx5:Number=0,bx6:Number=0,bx7:Number=0,bx8:Number=0; for (var i:Number=0; i< arr.length; i++) { if ( array[i][1] == "Guild Leader"){bx1++ } else if ( array[i][1] == "Officer"){bx2++} else if ( array[i][1] == "Officer Alt"){bx3++ } else if ( array[i][1] == "Main Raid Force"){bx4++ } else if ( array[i][1] == "Raid Force"){bx5++ } else if ( array[i][1] == "Twinks"){bx6++ } else if ( array[i][1] == "Recruit"){bx7++ } else if ( array[i][1]== "Inactive"){bx8++ } else {} } arr2.push({Names:"Guild Leader", Numbers: bx1}); arr2.push({Names:"Officer", Numbers: bx2}); arr2.push({Names:"Officer Alt", Numbers: bx3}); arr2.push({Names:"Main Raid Force", Numbers: bx4}); arr2.push({Names:"Raid Force", Numbers: bx5}); arr2.push({Names:"Twinks", Numbers: bx6}); arr2.push({Names:"Recruit", Numbers: bx7}); arr2.push({Names:"Inactive", Numbers: bx8}); gridDisplayVAR = new gridDisplay(); addChild(gridDisplayVAR); gridDisplayVAR.x = 36; gridDisplayVAR.y = 12; gridDisplayVAR.textbox1.text = "# of Players: " + arr.length ; if (checkUse2 == true){ arr2.sortOn("Numbers", Array.NUMERIC); checkUse2 =false;} else{ arr2.sortOn("Numbers", Array.NUMERIC | Array.DESCENDING); checkUse2 = true;} var thesize = 33; for(var z:uint = 0; z < arr2.length; z++) { mainbarVAR = new mainbar; gridDisplayVAR.addChild(mainbarVAR); mainbarVAR.x = thesize; mainbarVAR.y = 166; mainbarVAR.height = arr2[z].Numbers; textboxVAR = new textbox(); gridDisplayVAR.addChild(textboxVAR); textboxVAR.x = thesize; textboxVAR.y = 162; textboxVAR.textdisplay.text = arr2[z].Numbers + ": " + arr2[z].Names; thesize = thesize + 29; } } //----------------------------------- function addMe2(){ var arr2:Array = new Array(); var bx1:Number=0,bx2:Number=0,bx3:Number=0,bx4:Number=0,bx5:Number=0,bx6:Number=0,bx7:Number=0,bx8:Number=0,bx9:Number=0; for (var i:Number=0; i< array.length; i++) { if ( array[i][2] == "80"){bx1++ } else if (( array[i][2] <= "79") &&(array[i][2] >= "70")){bx2++;} else if (( array[i][2] <= "69") &&(array[i][2] >= "60")){bx3++;} else if (( array[i][2] <= "59") &&(array[i][2] >= "50")){bx4++;} else if (( array[i][2] <= "49") &&(array[i][2] >= "40")){bx5++;} else if (( array[i][2] <= "39") &&(array[i][2] >= "30")){bx6++;} else if (( array[i][2] <= "29") &&(array[i][2] >= "20")){bx7++;} else if (( array[i][2] <= "19") &&(array[i][2] >= "10")){bx8++;} else if (( array[i][2] <= "9") &&(array[i][2] >= "0")){bx9++;} else {} } arr2.push({Names:"Level 80: ", Numbers: bx1}); arr2.push({Names:"Level 70-79: ", Numbers: bx2}); arr2.push({Names:"Level 60-69: ", Numbers: bx3}); arr2.push({Names:"Level 50-59: ", Numbers: bx4}); arr2.push({Names:"Level 40-49: ", Numbers: bx5}); arr2.push({Names:"Level 30-39: ", Numbers: bx6}); arr2.push({Names:"Level 20-29: ", Numbers: bx7}); arr2.push({Names:"Level 10-19: ", Numbers: bx8}); arr2.push({Names:"Level 0-9: ", Numbers: bx9}); gridDisplayVAR = new gridDisplay(); addChild(gridDisplayVAR); gridDisplayVAR.x = 36; gridDisplayVAR.y = 12; gridDisplayVAR.textbox1.text = "# of Players: " + arr.length ; if (checkUse2 == true){ arr2.sortOn("Numbers", Array.NUMERIC); checkUse2 =false;} else{ arr2.sortOn("Numbers", Array.NUMERIC | Array.DESCENDING); checkUse2 = true;} var thesize = 33; for(var z:uint = 0; z < arr2.length; z++) { mainbarVAR = new mainbar; gridDisplayVAR.addChild(mainbarVAR); mainbarVAR.x = thesize; mainbarVAR.y = 166; mainbarVAR.height = arr2[z].Numbers; textboxVAR = new textbox(); gridDisplayVAR.addChild(textboxVAR); textboxVAR.x = thesize; textboxVAR.y = 162; textboxVAR.textdisplay.text = arr2[z].Names + arr2[z].Numbers; thesize = thesize + 29; } } //----------------------------------- function removeMe(){ for(var q:uint = 0; q < gridDisplayVAR.numChildren; q++) { gridDisplayVAR.removeChildAt((q--)); trace(gridDisplayVAR.numChildren); } } //--------------------------------- function RankingCheck(itemA:Object, itemB:Object):int { var worth1:Number; var worth2:Number; if ( itemB.Rank == "Guild Leader"){worth1 = 1; } else if ( itemB.Rank == "Officer"){worth1 = 2; } else if ( itemB.Rank == "Officer Alt"){worth1 = 3; } else if ( itemB.Rank == "Main Raid Force"){worth1 = 4; } else if ( itemB.Rank == "Raid Force"){worth1 = 5; } else if ( itemB.Rank == "Twinks"){worth1 = 6; } else if ( itemB.Rank == "Recruit"){worth1 = 7; } else if ( itemB.Rank == "Inactive"){worth1 = 8; } else {} if ( itemA.Rank == "Guild Leader"){worth2 = 1; } else if ( itemA.Rank == "Officer"){worth2 = 2; } else if ( itemA.Rank == "Officer Alt"){worth2 = 3; } else if ( itemA.Rank == "Main Raid Force"){worth2 = 4; } else if ( itemA.Rank == "Raid Force"){worth2 = 5; } else if ( itemA.Rank == "Twinks"){worth2 = 6; } else if ( itemA.Rank == "Recruit"){worth2 = 7; } else if ( itemA.Rank == "Inactive"){worth2 = 8; } else {} if ((itemA.Level) < (itemB.Level)) { return 1; } else if ((itemA.Level) > (itemB.Level)) { return -1; } if ((worth1) < (worth2)) { return 1; }else if ((worth1) > (worth2)) { return -1; } else { return 0; } } myDataGrid.addEventListener(DataGridEvent.HEADER_RELEASE, headerReleaseHandler); function headerReleaseHandler(event:DataGridEvent):void { var dg:DataGrid = event.target as DataGrid; if(event.dataField == "Rank"){ if(checkUse == true){addMe(); checkUse = false;} else if (checkUse == false){removeMe(); addMe(); checkUse = false;} } if(event.dataField == "Level"){ if(checkUse == true){addMe2(); checkUse = false;} else if (checkUse == false){removeMe(); addMe2(); checkUse = false;} } }}} parseXML(); } } }