diff --git a/exec/load/sbbslist_lib.js b/exec/load/sbbslist_lib.js index eec791019fdd15f8af4b3de8d2ae90571435e693..d0c2f10f7251b8d8f2ce54c2aa4b631c50136cea 100644 --- a/exec/load/sbbslist_lib.js +++ b/exec/load/sbbslist_lib.js @@ -179,41 +179,41 @@ function property_value(bbs, property) value = bbs.first_online.substring(0,4); break; case "nodes": - if(bbs.terminal && bbs.terminal.nodes) + if(bbs.terminal && bbs.terminal.nodes !== undefined) value = bbs.terminal.nodes; break; case "users": - if(bbs.total && bbs.total.users) + if(bbs.total && bbs.total.users !== undefined) value = bbs.total.users; break; case "subs": - if(bbs.total && bbs.total.subs) + if(bbs.total && bbs.total.subs !== undefined) value = bbs.total.subs; break; case "dirs": - if(bbs.total && bbs.total.dirs) + if(bbs.total && bbs.total.dirs !== undefined) value = bbs.total.dirs; break; case "doors": - if(bbs.total && bbs.total.doors) + if(bbs.total && bbs.total.doors !== undefined) value = bbs.total.doors; break; case "msgs": - if(bbs.total && bbs.total.msgs) { + if(bbs.total && bbs.total.msgs !== undefined) { value = bbs.total.msgs; if(value >= 1000000) value = Math.ceil(value / 1000000) + "M"; } break; case "files": - if(bbs.total && bbs.total.files) { + if(bbs.total && bbs.total.files !== undefined) { value = bbs.total.files; if(value >= 1000000) value = Math.ceil(value / 1000000) + "M"; } break; case "storage": - if(bbs.total && bbs.total.storage) { + if(bbs.total && bbs.total.storage && !isNaN(bbs.total.storage)) { if(bbs.total.storage > 1024*1024*1024*1024) value = Math.ceil(bbs.total.storage / (1024*1024*1024*1024)) + "TB"; else if(bbs.total.storage > 1024*1024*1024) @@ -284,6 +284,14 @@ function property_value(bbs, property) return value; } +function numeric_sort_value(value) +{ + value = parseInt(value, 10); + if(isNaN(value)) + return -1; + return value; +} + /* Some properties are nested within arrays of objects, lets simplify those properties here */ function property_sort_value(bbs, property) { @@ -296,15 +304,35 @@ function property_sort_value(bbs, property) return bbs.name; case "storage": if(bbs.total) - return bbs.total.storage; + return numeric_sort_value(bbs.total.storage); break; case "files": if(bbs.total) - return bbs.total.files; + return numeric_sort_value(bbs.total.files); brak; case "msgs": if(bbs.total) - return bbs.total.msgs; + return numeric_sort_value(bbs.total.msgs); + break; + case "dirs": + if(bbs.total) + return numeric_sort_value(bbs.total.dirs); + break; + case "subs": + if(bbs.total) + return numeric_sort_value(bbs.total.subs); + break; + case "users": + if(bbs.total) + return numeric_sort_value(bbs.total.users); + break; + case "doors": + if(bbs.total) + return numeric_sort_value(bbs.total.doors); + break; + case "nodes": + if(bbs.terminal) + return numeric_sort_value(bbs.terminal.nodes); break; case "created_on": return new Date(bbs.entry.created.on).valueOf();