crunchbutton/www/assets/js/community.js

85 lines
1.9 KiB
JavaScript

/**
* Bubble sort mechanism
*
* if both restaurants are open or both are closed, use sort value.
*
* if a < b, returns negative
* if a = b, returns zero
* if a > b returns positive
*
* @return int
*/
function restaurantSort(a, b) {
var bubble;
if ((a.open() && b.open()) || (!a.open() && !b.open())) {
bubble = parseInt(a.sort) - parseInt(b.sort);
} else if (a.open() && !b.open()) {
bubble = -1;
} else if (!a.open() && b.open()) {
bubble = 1;
} else {
console.log('Should not be here', a, b);
}
return bubble;
}
var Community = function(id) {
this.type = 'Community';
this.id_var = 'id_community';
this.resource = 'community';
var self = this;
$.extend(self,Orm);
var complete = arguments[1] || null;
self.loadError = arguments[2] || null;
self.restaurants = function() {
if (!self.__restaurants) {
var openRestaurants = [];
var closedRestaurants = [];
for (x in self._restaurants) {
// self.__restaurants[self.__restaurants.length] = App.cache('Restaurant', self._restaurants[x]);
var restaurant = App.cache('Restaurant', self._restaurants[x]);
if (restaurant.open()) {
openRestaurants[openRestaurants.length] = restaurant;
} else {
closedRestaurants[closedRestaurants.length] = restaurant;
}
// self.__restaurants[self.__restaurants.length] = restaurant;
}
openRestaurants.sort(restaurantSort);
closedRestaurants.sort(restaurantSort);
self.__restaurants = [];
self._restaurants = null;
for (x in openRestaurants) {
self.__restaurants[self.__restaurants.length] = openRestaurants[x];
}
for (x in closedRestaurants) {
self.__restaurants[self.__restaurants.length] = closedRestaurants[x];
}
}
return self.__restaurants;
}
self.finished = function(data) {
for (x in data) {
self[x] = data[x];
}
self.restaurants();
if (typeof complete == 'function') {
complete.call(self);
}
}
self.load(id);
}
App.cached.Community = {};