diff --git a/app/assets/javascripts/property_hire_calendar_frontend.js b/app/assets/javascripts/property_hire_calendar_frontend.js index 7230cbb..7e81b29 100644 --- a/app/assets/javascripts/property_hire_calendar_frontend.js +++ b/app/assets/javascripts/property_hire_calendar_frontend.js @@ -44,21 +44,21 @@ FullCalendar.Calendar.prototype.isAnOverlapEvent = function(eventStartDay, event eventEndDay = new Date(eventEndDay); var events = this.get_all_events(); for (var i = 0; i < events.length; i++) { - var eventA = events[i]; - // start-time in between any of the events - if (eventStartDay >= eventA.start && eventStartDay <= eventA.end) { - return true; - } - //end-time in between any of the events - if (eventEndDay >= eventA.start && eventEndDay <= eventA.end) { - return true; - } - //any of the events in between/on the start-time and end-time - if (eventStartDay <= eventA.start && eventEndDay >= eventA.end) { - return true; - } - } - return false; + var eventA = events[i]; + // start-time in between any of the events + if (eventStartDay >= eventA.start && eventStartDay <= eventA.end) { + return true; + } + //end-time in between any of the events + if (eventEndDay >= eventA.start && eventEndDay <= eventA.end) { + return true; + } + //any of the events in between/on the start-time and end-time + if (eventStartDay <= eventA.start && eventEndDay >= eventA.end) { + return true; + } + } + return false; } window.is_chinese = ( I18n && I18n.locale.indexOf('zh') != -1 ); window.datetime_format = is_chinese ? 'y M d h:m b' : 'd M, y h:m b'; @@ -70,39 +70,39 @@ window.short_day = (is_chinese ? "d (w)" : "w d"); window.short_date = (is_chinese ? "M d (w)" : "w d, M"); window.short_date_time = (is_chinese ? "M d (w) h:m b" : "w d, M h:m b"); window.getDateString = function(date, format,is_chinese) { - var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; - var week_days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; - if(is_chinese){ - months = []; - for(var i=0;i<12;i++){ - months.push((i+1)+"月"); - } - week_days = ["週日","週一","週二","週三","週四","週五","週六"] - } - var getPaddedComp = function(comp) { - return ((parseInt(comp) < 10) ? ('0' + comp) : comp) - }, - formattedDate = format, - o = { - "y+": date.getFullYear() + (is_chinese ? "年" : ""), // year - "MM+": getPaddedComp(date.getMonth() + 1), //raw month - "M+": months[date.getMonth()], //month - "d+": (is_chinese ? (date.getDate() + "日") : getPaddedComp(date.getDate())), //day - "w+": week_days[date.getDay()], //weekday - "h+": getPaddedComp((date.getHours() > 12) ? date.getHours() % 12 : date.getHours()), //hour - "H+": getPaddedComp(date.getHours()), //hour - "m+": getPaddedComp(date.getMinutes()), //minute - "s+": getPaddedComp(date.getSeconds()), //second - "S+": getPaddedComp(date.getMilliseconds()), //millisecond, - "b+": (date.getHours() >= 12) ? 'PM' : 'AM' - }; + var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + var week_days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; + if(is_chinese){ + months = []; + for(var i=0;i<12;i++){ + months.push((i+1)+"月"); + } + week_days = ["週日","週一","週二","週三","週四","週五","週六"] + } + var getPaddedComp = function(comp) { + return ((parseInt(comp) < 10) ? ('0' + comp) : comp) + }, + formattedDate = format, + o = { + "y+": date.getFullYear() + (is_chinese ? "年" : ""), // year + "MM+": getPaddedComp(date.getMonth() + 1), //raw month + "M+": months[date.getMonth()], //month + "d+": (is_chinese ? (date.getDate() + "日") : getPaddedComp(date.getDate())), //day + "w+": week_days[date.getDay()], //weekday + "h+": getPaddedComp((date.getHours() > 12) ? date.getHours() % 12 : date.getHours()), //hour + "H+": getPaddedComp(date.getHours()), //hour + "m+": getPaddedComp(date.getMinutes()), //minute + "s+": getPaddedComp(date.getSeconds()), //second + "S+": getPaddedComp(date.getMilliseconds()), //millisecond, + "b+": (date.getHours() >= 12) ? 'PM' : 'AM' + }; - for (var k in o) { - if (new RegExp("(" + k + ")").test(format)) { - formattedDate = formattedDate.replace(RegExp.$1, o[k]); - } - } - return formattedDate; + for (var k in o) { + if (new RegExp("(" + k + ")").test(format)) { + formattedDate = formattedDate.replace(RegExp.$1, o[k]); + } + } + return formattedDate; }; var Calendar = function(dom,property_id,currentView,display_hire_event){ @@ -160,7 +160,7 @@ var Calendar = function(dom,property_id,currentView,display_hire_event){ }); }, // events: 'https://fullcalendar.io/demo-events.json', - headerToolbar: false, + headerToolbar: false, fixedWeekCount: false, initialView: dview, loading: function(bool) { @@ -173,42 +173,42 @@ var Calendar = function(dom,property_id,currentView,display_hire_event){ c.calendar_dom.calendar.refetchEvents(); }, eventTimeFormat: { hour12: true, hour: '2-digit', minute: '2-digit', omitZeroMinute: true, meridiem: 'narrow' }, - eventClick: function(eventClickInfo) { - var calEvent = {"event": eventClickInfo.event}, - originalEvent = eventClickInfo.jsEvent, - view = eventClickInfo.view, - el = eventClickInfo.el; - if(el.hasClass("reserve_btn")){ - window.calEvent = calEvent; - var start_time = calEvent.event.start; - var date_str = window.getDateString(start_time,std_date_format); - c.dialog.hide(); - var allow_times = calEvent.event._def.extendedProps.allow_times; - window.pick_hire_date(date_str,allow_times); - }else{ - c.dialog.dismiss(); - c.dialog.inflate(calEvent); - c.dialog.show({"x":e.originalEvent.clientX,"y":e.originalEvent.clientY}); - } - }, - dateClick: function(ev) { - var calendar = this; - var calendar_dom = $(this.el); - if(c.calendar_dom.hasClass("active_picker")){ - var date = ev.date, - date_str = getDateString(date,date_time_str_format), - day_element = ev.dayEl, - jsEvent = ev.jsEvent; - var time_str = date_str.split(" ")[1]; - var date_str = date_str.split(" ")[0]; - calendar_dom.trigger("init_time",[time_str]); - calendar_dom.trigger("select_time",[date_str]); - } + eventClick: function(eventClickInfo) { + var calEvent = {"event": eventClickInfo.event}, + originalEvent = eventClickInfo.jsEvent, + view = eventClickInfo.view, + el = eventClickInfo.el; + if(el.hasClass("reserve_btn")){ + window.calEvent = calEvent; + var start_time = calEvent.event.start; + var date_str = window.getDateString(start_time,std_date_format); + c.dialog.hide(); + var allow_times = calEvent.event._def.extendedProps.allow_times; + window.pick_hire_date(date_str,allow_times); + }else{ + c.dialog.dismiss(); + c.dialog.inflate(calEvent); + c.dialog.show({"x":e.originalEvent.clientX,"y":e.originalEvent.clientY}); + } + }, + dateClick: function(ev) { + var calendar = this; + var calendar_dom = $(this.el); + if(c.calendar_dom.hasClass("active_picker")){ + var date = ev.date, + date_str = getDateString(date,date_time_str_format), + day_element = ev.dayEl, + jsEvent = ev.jsEvent; + var time_str = date_str.split(" ")[1]; + var date_str = date_str.split(" ")[0]; + calendar_dom.trigger("init_time",[time_str]); + calendar_dom.trigger("select_time",[date_str]); + } }, views: { - dayGridMonth: { - dayMaxEvents: true - } + dayGridMonth: { + dayMaxEvents: true + } } }); @@ -342,7 +342,7 @@ var EventDialog = function(calendar,event){ '' + '' + ''; @@ -426,7 +426,7 @@ var UserException = function(message) { this.message = message; this.name = "UserException"; this.toString = function(){ - return this.message; + return this.message; } } @@ -611,13 +611,13 @@ var AgendaView = function(calendar){ $.datepicker._updateDatepicker(inst); }) $("#agenda_start,#agenda_end").focus(function () { - $(".ui-datepicker-calendar").hide(); - $("#ui-datepicker-div").position({ - my: "center top", - at: "center bottom", - of: $(this) - }); - }); + $(".ui-datepicker-calendar").hide(); + $("#ui-datepicker-div").position({ + my: "center top", + at: "center bottom", + of: $(this) + }); + }); $.each(data,function(i,e){ var ed = eventDom(e), s = new Date(e.start), @@ -764,21 +764,21 @@ var AgendaView = function(calendar){ } function getNumberOfRows(year, month) { - var day = 1, - sat_counter = 0, - sunday_counter = 0, - date = new Date(year, month, day); + var day = 1, + sat_counter = 0, + sunday_counter = 0, + date = new Date(year, month, day); - while(date.getMonth() === month) { - if(date.getDay() === 0) { - sunday_counter++; - }else if(date.getDay() === 6) { - sat_counter++; - } - day++; - date = new Date(year, month, day); - } - return (sunday_counter == 5 && sat_counter == 5 ? 6 : 5); + while(date.getMonth() === month) { + if(date.getDay() === 0) { + sunday_counter++; + }else if(date.getDay() === 6) { + sat_counter++; + } + day++; + date = new Date(year, month, day); + } + return (sunday_counter == 5 && sat_counter == 5 ? 6 : 5); } var makeRow = function(position){