Hello all
Iam trying to get some .xml data to sort in my website but i am havinga problem, I followed the tutorial : http://www.kirupa.com/web/xml/examples/sortedgradeslist.htm which worked fine for the data.
I edited the code and have made my own version, but i cannot figure out how to get the sorting right, can somone point me in the right direction.
PopulateLists = function(xml_array){
name_txt.text = teamscore_txt.text = kills_txt.text = deaths_txt.text = score_tx.text = "";
for (var i=0; i<xml_array.length; i++){
var student = xml_array*.attributes;
name_txt.text += student.first + "
";
teamscore_txt.text += student.teamscore + "
";
kills_txt.text += student.kills + "
";
death_txt.text += student.deaths + "
";
score_txt.text += student.score + "
";
}
}
var students_array;
var grades_xml = new XML();
grades_xml.ignoreWhite = true;
grades_xml.onLoad = function(success){
if (success){
var grades = this.firstChild;
students_array = grades.childNodes;
PopulateLists(students_array);
}else trace("Error loading XML file.");
}
grades_xml.load("olan31307.xml");
FIRST_SORT = function(a,b){
return a.attributes.first > b.attributes.first;
}
TSCORE_SORT = function(a,b){
// since attributes are defined as strings, parseFloat is used
// to convert them to numeric values for the GPA compare function
return parseFloat(a.attributes.tscore) < parseFloat(b.attributes.tscore);
}
KILL_SORT = function(a,b){
// since attributes are defined as strings, parseFloat is used
// to convert them to numeric values for the GPA compare function
return parseFloat(a.attributes.kills) < parseFloat(b.attributes.kills);
}
OSCORE_SORT = function(a,b){
// since attributes are defined as strings, parseFloat is used
// to convert them to numeric values for the GPA compare function
return parseFloat(a.attributes.oscore) < parseFloat(b.attributes.oscore);
}
DEATH_SORT = function(a,b){
// since attributes are defined as strings, parseFloat is used
// to convert them to numeric values for the GPA compare function
return parseFloat(a.attributes.deaths) < parseFloat(b.attributes.deaths);
}
var current_sort;
SortListBy = function(sortType){
if (current_sort == sortType){
students_array.reverse();
}else{
// sort does not effect XML
students_array.sort(sortType);
}
current_sort = sortType;
PopulateLists(students_array);
}
name_btn.onRelease = function(){
SortListBy(FIRST_SORT);
}
tscore_btn.onRelease = function(){
SortListBy(TSCORE_SORT);
}
kill_btn.onRelease = function(){
SortListBy(KILL_SORT);
}
death_btn.onRelease = function(){
SortListBy(DEATH_SORT);
}
oscore_btn.onRelease = function(){
SortListBy(OSCORE_SORT);
}
restore_btn.onRelease = function(){
var grades = grades_xml.firstChild;
students_array = grades.childNodes;
PopulateLists(students_array);
}
It sorts out the mane corectly A - Z but i cant get the rest to sort properly
My file can be viewed here: http://www.theoaps.co.uk/Support%20Files/OLAN31307swf.swf
As you will see the last 2 colums do not sort but they duplicate the data :upset: