From 607f69c67a5b4dc72d2754192e3cdf67d0ad11d0 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 3 Jun 2014 16:24:10 -0400 Subject: partitioning client and serveR --- client/assets/javascripts/rectangles/util/sort.js | 86 +++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 client/assets/javascripts/rectangles/util/sort.js (limited to 'client/assets/javascripts/rectangles/util/sort.js') diff --git a/client/assets/javascripts/rectangles/util/sort.js b/client/assets/javascripts/rectangles/util/sort.js new file mode 100644 index 0000000..0985b75 --- /dev/null +++ b/client/assets/javascripts/rectangles/util/sort.js @@ -0,0 +1,86 @@ + + +function compare_rect_position(a,b){ + if (a[0].x.a < b[0].x.a) { + return -1 + } + if (a[0].x.a > b[0].x.a) { + return 1 + } + if (a[0].y.a < b[0].y.a) { + return -1 + } + if (a[0].y.a > b[0].y.a) { + return 1 + } + return 0 +} + +function compare_car_reversed (a,b){ + if (a[0] < b[0]) { + return 1 + } + if (a[0] > b[0]) { + return -1 + } + return 0 +} +function compare_car (a,b){ + if (a[0] < b[0]) { + return -1 + } + if (a[0] > b[0]) { + return 1 + } + return 0 +} + +function room_id_tuple (r){ return [r.id, r] } +function room_height_tuple (r){ return [r.height, r] } +function room_area_tuple (r){ return [r.rect.area(), r] } +function rect_area_tuple (r){ return [r.area(), r] } + +function room_rect_tuple (r){ return [r.rect, r] } +function identity_tuple (r){ return [r, r] } +function car (r){ return r[0] } +function cdr (r){ return r[1] } + + +function sort_rooms_by_id(list){ + return list.map(room_id_tuple) + .sort(compare_car) + .map(cdr) +} +function sort_rooms_by_height(list){ + return list.map(room_height_tuple) + .sort(compare_car_reversed) + .map(cdr) +} +function sort_rooms_by_position(list){ + return list.map(room_rect_tuple) + .sort(compare_rect_position) + .map(cdr) +} +function sort_rooms_by_area(list){ + return list.map(room_area_tuple) + .sort(compare_car) + .map(cdr) +} + +function sort_rects_by_position(list){ + return list.map(identity_tuple) + .sort(compare_rect_position) + .map(cdr) +} +function sort_rects_by_area(list){ + return list.map(rect_area_tuple) + .sort(compare_car) + .map(cdr) +} + +function compare_z(a,b){ + return a.rect.y.a < b.rect.y.a ? -1 : a.rect.y.a == b.rect.y.a ? 0 : 1 +} +function compare_x(a,b){ + return a.rect.x.a > b.rect.x.a ? -1 : a.rect.x.a == b.rect.x.a ? 0 : 1 +} -- cgit v1.2.3-70-g09d2