if (typeof util == 'undefined') var util = {};
util.fm_utils = {};
-util.fm_utils.EXPORT_OK = [ 'flatten_ou_branch', 'find_ou', 'compare_aou_a_is_b_or_ancestor' ];
+util.fm_utils.EXPORT_OK = [ 'flatten_ou_branch', 'find_ou', 'compare_aou_a_is_b_or_ancestor', 'sort_func_aou_by_depth_and_then_string' ];
util.fm_utils.EXPORT_TAGS = { ':all' : util.fm_utils.EXPORT_OK };
util.fm_utils.flatten_ou_branch = function(branch) {
}
return false;
}
+
+util.fm_utils.sort_func_aou_by_depth_and_then_string = function(a,b) {
+ try {
+ JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.stash_retrieve();
+ var a_aou = a[0]; var b_aou = b[0];
+ var a_string = a[1]; var b_string = b[1];
+ if (typeof a_aou != 'object') a_aou = data.hash.aou[ a_aou ];
+ if (typeof b_aou != 'object') b_aou = data.hash.aou[ b_aou ];
+ var A = data.hash.aout[ a_aou.ou_type() ].depth();
+ var B = data.hash.aout[ b_aou.ou_type() ].depth();
+ if (A < B) return 1;
+ if (A > B) return -1;
+ if (a_string < b_string ) return -1;
+ if (a_string > b_string ) return 1;
+ return 0;
+ } catch(E) {
+ alert('error in util.fm_utils.sort_func_aou_by_depth_and_string: ' + E);
+ return 0;
+ }
+}
function(o) {
return util.fm_utils.compare_aou_a_is_b_or_ancestor(o.owning_lib(), obj.data.list.au[0].ws_ou());
}
+ ).sort(
+
+ function(a,b) {
+ try {
+ return util.fm_utils.sort_func_aou_by_depth_and_then_string(
+ [ a.owning_lib(), a.name() ],
+ [ b.owning_lib(), b.name() ]
+ );
+ } catch(E) {
+ alert('error in noncat sorting: ' + E);
+ return 0;
+ }
+ }
+
),
function(o) {
- return [ o.name(), o.id() ];
+ return [ obj.data.hash.aou[ o.owning_lib() ].shortname() + ' : ' + o.name(), o.id() ];
}
)
);