summaryrefslogtreecommitdiff
path: root/assets/javascripts/rectangles/util/sort.js
blob: 17231ead649097ba926b1e78466c81bc7fc12b62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function compare_rect_position(a,b){
	if (a.x.a < b.x.a) {
		return -1
	}
	if (a.x.a > b.x.a) {
		return 1
	}
	if (a.y.a < b.y.a) {
		return -1
	}
	if (a.y.a > b.y.a) {
		return 1
	}
	return 0
}

function compare_rect_area (a,b){
	if (a[0] < b[0]) {
		return 1
	}
	if (a[0] > b[0]) {
		return -1
	}
	return 0
}


function sort_rooms_by_id(list){
	return list.sort(function(a,b){
		return a.id < b.id ? -1 : a.id == b.id ? 0 : 1
	})
}
function sort_rooms_by_height(list){
	return list.sort(function(b,a){
		return a.height < b.height ? -1 : a.height == b.height ? 0 : 1
	})
}
function sort_rooms_by_position(list){
	return list.sort(function(a,b){
		return compare_rect_position(a.rect, b.rect)
	})
}
function sort_rooms_by_area(list){
	return list.map(function(r){ return [r.rect.area(), r] })
	           .sort(compare_rect_area)
				     .map(function(r){ return r[1] })
}


function sort_rects_by_position(list){
	return list.sort(compare_rect_position)
}
function sort_rects_by_area(list){
	return list.map(function(r){ return [r.area(), r] })
	           .sort(compare_rect_area)
	           .map(function(r){ return r[1] })
}

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
}