Sorting problem with date and size
I use it to list and display files and folder (using php script), but I have a problem in two column date modified and size
I have following values in size column
1 KB
70 KB
65 KB
101 KB
105 KB
so when i do sort, i get following result
1 KB
101 KB
105 KB
65 KB
70 KB
instead of
1 KB
65 KB
70 KB
101 KB
105 KB.
Also same is happening with date, I have got following value in date modified column
May
June
July
April
Feb
So when I sort it gives following result
April
Feb
July
June
May
instead of
Feb
April
May
June
July
Is there any way to achive this type of sorting?
M Sharma
June 2,
Alex (ActiveWidgets)
June 3,
Hi Alex,
Thanks, I have fixed the problem of date sorting. But can you please give an example how to fix the size column sorting problem having values
1 KB
101 KB
105 KB
65 KB
70 KB
M Sharma
June 4,
You need to create your custom type and stick it into the /formats/ folder and then reference it in the grid.js file. When using this type don't forget the value is the size in bytes which is then formatted by the format display function.
Cheers
Tali
Active.Formats.NumberK = Active.System.Format.subclass();
Active.Formats.NumberK.create = function(){
/****************************************************************
Number formatting class.
*****************************************************************/
var obj = this.prototype;
/****************************************************************
Transforms the wire data into the numeric value.
@param data (String) Wire data.
@return Numeric value.
*****************************************************************/
obj.dataToValue = function(data){
return Number(data);
};
/****************************************************************
Transforms the wire data into the readable text.
@param data (String) Wire data.
@return Readable text.
*****************************************************************/
function round_decimals(original_number, decimals) {
var result1 = original_number * Math.pow(10, decimals)
var result2 = Math.round(result1)
var result3 = result2 / Math.pow(10, decimals)
return result3
}
obj.dataToText = function(size)
{
if (size < 0)
{
return ' ';
}
else if(size < 1024)
{
return size + ' B';
}
else if(size / 1024 < 1024)
{
size = round_decimals(size / 1024,2);
return size + ' KB';
}
else if(size / 1024 / 1024 < 1024)
{
size = round_decimals(size / 1024 / 1024,2);
return size + ' MB';
}
else if(size / 1024 / 1024 / 1024 < 1024)
{
size = round_decimals(size / 1024 / 1024 / 1024,2);
return size + ' GB';
}
else
{
size = round_decimals(size / 1024 / 1024 / 1024 / 1024,2);
return size + ' TB';
}
};
};
Active.Formats.NumberK.create();
June 9,