diff --git a/www/assets/js/app.js b/www/assets/js/app.js index c1aed7dae..6754d0746 100644 --- a/www/assets/js/app.js +++ b/www/assets/js/app.js @@ -46,15 +46,7 @@ App.loadRestaurant = function(id) { App.cache('Restaurant', id,function() { if (!this.open()) { - var hours = ''; - for (var x in this._hours) { - hours += x + ': '; - for (var xx in this._hours[x]) { - hours += this._hours[x][xx][0] + ' - ' + this._hours[x][xx][1] + (xx == 0 ? ', ' : ''); - } - hours += "\n"; - } - alert("This restaurant is currently closed. It will be open during the following hours (" + this._tzabbr + "):\n\n" + hours); + alert("This restaurant is currently closed. It will be open during the following hours (" + this._tzabbr + "):\n\n" + this.closedMessage()); App.busy.unBusy(); } else { diff --git a/www/assets/js/base.js b/www/assets/js/base.js index 4d5896dde..656d4c5ab 100644 --- a/www/assets/js/base.js +++ b/www/assets/js/base.js @@ -31,6 +31,10 @@ if (!typeof(App) == 'undefined') { App = {}; } +App.capitalize = function( word ){ + return word.charAt(0).toUpperCase() + word.slice(1); +} + App.request = function(url, complete) { $.getJSON(url,function(json) { complete(json); diff --git a/www/assets/js/restaurant.js b/www/assets/js/restaurant.js index 8deaf284f..ba834dd3d 100644 --- a/www/assets/js/restaurant.js +++ b/www/assets/js/restaurant.js @@ -202,6 +202,60 @@ var Restaurant = function(id) { return ( miles <= this.delivery_radius ) } + self.closedMessage = function(){ + + var isOpenedAt = {}; + var openTime = this._hours; + var weekdayOrder = [ 'Sun','Mon','Tue','Wed','Thu','Fri','Sat' ]; + for ( var day in openTime ) { + var hours = openTime[ day ]; + var key = ''; + var openedHoursText = ''; + var openedHoursTextDivisor = ''; + for( var hour in hours ){ + var open = hours[ hour ][ 0 ]; + var close = hours[ hour ][ 1 ]; + key += open + close; + openedHoursText += openedHoursTextDivisor + App.formatTime( open ).toLowerCase() + ' - ' + App.formatTime( close ).toLowerCase(); + openedHoursTextDivisor = ', '; + } + // Remove the : to create an object key + key = key.replace( /\:/g, '' ); + if( !isOpenedAt[ key ] ){ + isOpenedAt[ key ] = { days : {}, hours : {} }; + } + isOpenedAt[ key ][ 'days' ][ day ] = true; + isOpenedAt[ key ][ 'hour' ] = openedHoursText; + } + + var _opened = {}; + for( var hour in isOpenedAt ){ + var days = isOpenedAt[ hour ][ 'days' ]; + var commas = ''; + var keys = ''; + for( day in days ){ + keys += commas + App.capitalize( day ); + commas = ', '; + } + keys += ': '; + hours = isOpenedAt[hour][ 'hour' ]; + _opened[ keys ] = hours; + } + + // Sort the hours according to the weekdayOrder sequence + var ordered = []; + for ( var index = 0; index < weekdayOrder.length; ++index) { + var weekday = weekdayOrder[ index ]; + for( var day in _opened ){ + var regexp = new RegExp( '^' + weekday, 'i' ) + if( regexp.test( day ) ){ + ordered.push( day + _opened[ day ] ); + } + } + } + return ordered.join( '\n' ); + } + self.preset = function() { return self['_preset']; }