3 Month View


I want to create 3 Month View. Is it possible?

Like Jan Feb March… When I click next, I get Feb March April. Then March April May. And so on.


As far as I can see there is no way to create such view, without complex modifications in source code.

I c. I am willing to buy this calendar and one of our clients have this requirement of 3 month view. Either it shows up in a single page (like the existing month view) by horizontally showing three months or there can be a possibility of a scroll bar which would be showing three months vertically.

You can contact sales@dhtmlx.com about product customization.

My requirement is as follows:

  1. I want a month view (existing) as well as a (3 month view) which works correctly as attached in threemonth.png

I tried creating a 3 Month view (One my clients requirement (PFA threemonth.png)). In dhtmlxscheduler.js file, I made the following change (Just tried around changing the existing month view):

add: function (a, b, c) {
var d = new Date(a.valueOf());
switch (c) {
case “day”:
d.setDate(d.getDate() + b);
if (a.getDate() == d.getDate() && b) {
do d.setTime(d.getTime() + 36E5);
while (a.getDate() == d.getDate())
case “week”:
d.setDate(d.getDate() + 7 * b);
case “month”:
d.setMonth(d.getMonth() + 3);//Notice the 3 here instead of b
case “year”:
d.setYear(d.getFullYear() + b);
case “hour”:
d.setHours(d.getHours() + b);
case “minute”:
d.setMinutes(d.getMinutes() + b);
return scheduler.date[“add_” + c](a, b, c)
return d

This do generates a 3 month view (PFA threemonth.png). However, the problem is when I drag event from one slot to some other slot (considerably far away). The error is as follows:

scheduler._pre_render_events_table = function (a, b) {
for (var c = [], d = [
], e = this._colsS.heights, f, g = this._cols.length, h = 0; h < a.length; h++) {
var i = a[h],
k = f || i.start_date,
j = i.end_date;
if (k < this._min_date) k = this._min_date;
if (j > this._max_date) j = this._max_date;
var l = this.locate_holder_day(k, !1, i);
i._sday = l % g;
var o = this.locate_holder_day(j, !0, i) || g;
i._eday = o % g || g;
i._length = o - l;
i._sweek = Math.floor((this._correct_shift(k.valueOf(), 1) - this._min_date.valueOf()) / (864E5 * g));
var m = d[i._sweek],
for (n = 0; n < m.length; n++) if (m[n]._eday <= i._sday) break;//m.length is null
if (!i._sorder || !b) i._sorder = n;
if (i._sday + i._length <= g) f = null, c.push(i), m[n] = i, e[i._sweek] = m.length - 1;
else {
var p = this._copy_event(i);
p._length = g - i._sday;
p._eday = g;
p._sday = i._sday;
p._sweek = i._sweek;
p._sorder = i._sorder;
p.end_date = this.date.add(k, p._length, “day”);
m[n] = p;
f = p.end_date;
e[i._sweek] = m.length - 1;
return c

I mailed the sales team and they replied that I should post this question on forum. Please help me with the 3 Month view.

I emailed support and sales both. Support team replied to place this question on forum. No replies from sales team yet.


Month view customization is possible.

see at

github.com/tejastank/dhtmlxsche … -start-day

tejas tank.