diff --git a/src/agenda.js b/src/agenda.js index f8cfe16..9224167 100755 --- a/src/agenda.js +++ b/src/agenda.js @@ -71,6 +71,7 @@ function Agenda(element, options, methods) { tm, firstDay, nwe, // no weekends (int) rtl, dis, dit, // day index sign / translate + minMinute, maxMinute, // ... view = $.extend(this, viewMethods, methods, { @@ -129,6 +130,8 @@ function Agenda(element, options, methods) { dis = 1; dit = 0; } + minMinute = parseTime(options.minTime || 0); + maxMinute = parseTime(options.maxTime || 24); var d0 = rtl ? addDays(cloneDate(view.visEnd), -1) : cloneDate(view.visStart), d = cloneDate(d0), @@ -172,8 +175,10 @@ function Agenda(element, options, methods) { // body d = zeroDate(); + var maxd = addMinutes(cloneDate(d), maxMinute); + addMinutes(d, minMinute); s = ""; - for (i=0; d.getDate() != 2; i++) { + for (i=0; d < maxd; i++) { minutes = d.getMinutes(); s += " day && time.getDay() != day.getDay()) { + function timePosition(day, time) { // both date object. day holds 00:00 of current day + day = cloneDate(day, true); + if (time < addMinutes(cloneDate(day), minMinute)) { + return 0; + } + if (time >= addMinutes(cloneDate(day), maxMinute)) { return bodyContent.height(); } var slotMinutes = options.slotMinutes, - minutes = time.getHours()*60 + time.getMinutes(), + minutes = time.getHours()*60 + time.getMinutes() - minMinute, slotI = Math.floor(minutes / slotMinutes), tr = body.find('tr:eq(' + slotI + ')'), td = tr.find('td'), diff --git a/src/util.js b/src/util.js index 948791c..73519a0 100755 --- a/src/util.js +++ b/src/util.js @@ -128,6 +128,26 @@ var parseISO8601 = fc.parseISO8601 = function(s, ignoreTimezone) { return new Date(Number(date) + (offset * 60 * 1000)); } +var parseTime = fc.parseTime = function(s) { // returns minutes since start of day + if (typeof s == 'number') { // an hour + return s * 60; + } + if (typeof s == 'object') { // a Date object + return s.getHours() * 60 + s.getMinutes(); + } + var m = s.match(/(\d+)(?::(\d+))?\s*(\w+)?/); + if (m) { + var h = parseInt(m[1]); + if (m[3]) { + h %= 12; + if (m[3].toLowerCase().charAt(0) == 'p') { + h += 12; + } + } + return h * 60 + (m[2] ? parseInt(m[2]) : 0); + } +}; + /* Date Formatting diff --git a/tests/options.html b/tests/options.html index a968008..e52c373 100644 --- a/tests/options.html +++ b/tests/options.html @@ -69,6 +69,13 @@ timeFormat: "h(:mm)[T]{ - h(:mm)T}", //timeFormat: { agendaWeek: "'YO'" }, + minTime: 5, + maxTime: '10:45pm', + //dayClick: function(date) { + // console.log(date); + //}, + //isRTL: true, + events: [ { title: 'All Day Event',