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();
}
}
}