summaryrefslogtreecommitdiff
path: root/assets/javascripts/rectangles/util/sort.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/javascripts/rectangles/util/sort.js')
-rw-r--r--assets/javascripts/rectangles/util/sort.js60
1 files changed, 40 insertions, 20 deletions
diff --git a/assets/javascripts/rectangles/util/sort.js b/assets/javascripts/rectangles/util/sort.js
index 17231ea..ec0f5e9 100644
--- a/assets/javascripts/rectangles/util/sort.js
+++ b/assets/javascripts/rectangles/util/sort.js
@@ -1,22 +1,22 @@
function compare_rect_position(a,b){
- if (a.x.a < b.x.a) {
+ if (a[0].x.a < b[0].x.a) {
return -1
}
- if (a.x.a > b.x.a) {
+ if (a[0].x.a > b[0].x.a) {
return 1
}
- if (a.y.a < b.y.a) {
+ if (a[0].y.a < b[0].y.a) {
return -1
}
- if (a.y.a > b.y.a) {
+ if (a[0].y.a > b[0].y.a) {
return 1
}
return 0
}
-function compare_rect_area (a,b){
+function compare_car_reversed (a,b){
if (a[0] < b[0]) {
return 1
}
@@ -25,37 +25,57 @@ function compare_rect_area (a,b){
}
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.sort(function(a,b){
- return a.id < b.id ? -1 : a.id == b.id ? 0 : 1
- })
+ return list.map(room_id_tuple)
+ .sort(compare_car)
+ .map(cdr)
}
function sort_rooms_by_height(list){
- return list.sort(function(b,a){
- return a.height < b.height ? -1 : a.height == b.height ? 0 : 1
- })
+ return list.map(room_height_tuple)
+ .sort(compare_car)
+ .map(cdr)
}
function sort_rooms_by_position(list){
- return list.sort(function(a,b){
- return compare_rect_position(a.rect, b.rect)
- })
+ return list.map(room_rect_tuple)
+ .sort(compare_rect_position)
+ .map(cdr)
}
function sort_rooms_by_area(list){
- return list.map(function(r){ return [r.rect.area(), r] })
+ return list.map(room_area_tuple))
.sort(compare_rect_area)
- .map(function(r){ return r[1] })
+ .map(cdr)
}
-
function sort_rects_by_position(list){
- return list.sort(compare_rect_position)
+ return list.map(identity_tuple)
+ .sort(compare_rect_position)
+ .map(cdr)
}
function sort_rects_by_area(list){
- return list.map(function(r){ return [r.area(), r] })
+ return list.map(rect_area_tuple)
.sort(compare_rect_area)
- .map(function(r){ return r[1] })
+ .map(cdr)
}
function compare_z(a,b){