Calendar
This commit is contained in:
parent
86cdc7ae89
commit
6d14719bb6
|
@ -36,7 +36,6 @@ if (Common === undefined)
|
||||||
define([
|
define([
|
||||||
'common/main/lib/component/BaseView',
|
'common/main/lib/component/BaseView',
|
||||||
'common/main/lib/util/utils'
|
'common/main/lib/util/utils'
|
||||||
|
|
||||||
], function () {
|
], function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
@ -60,7 +59,7 @@ define([
|
||||||
|
|
||||||
options: {
|
options: {
|
||||||
date: undefined,
|
date: undefined,
|
||||||
firstday: 0 // 0 or 1
|
firstday: 0 // 0 - sunday, 1 - monday
|
||||||
},
|
},
|
||||||
|
|
||||||
initialize : function(options) {
|
initialize : function(options) {
|
||||||
|
@ -78,7 +77,7 @@ define([
|
||||||
me.options.firstday = options.firstday;
|
me.options.firstday = options.firstday;
|
||||||
}
|
}
|
||||||
|
|
||||||
me._state = undefined;
|
me._state = undefined; // 0 - month, 1 - months, 2 - years
|
||||||
|
|
||||||
me.render();
|
me.render();
|
||||||
},
|
},
|
||||||
|
@ -112,13 +111,19 @@ define([
|
||||||
|
|
||||||
onClickPrev: function () {
|
onClickPrev: function () {
|
||||||
var me = this;
|
var me = this;
|
||||||
if (me._state === 'month') {
|
if (me._state === 0) {
|
||||||
me.currentDate.setMonth(me.currentDate.getMonth() - 1);
|
var d = new Date(me.currentDate);
|
||||||
me.renderMonth(me.currentDate);
|
d.setMonth(d.getMonth() - 1);
|
||||||
} else if (me._state === 'months') {
|
if (d.getFullYear() > 0) {
|
||||||
me.currentDate.setFullYear(me.currentDate.getFullYear() - 1);
|
me.renderMonth(d);
|
||||||
me.renderMonths(me.currentDate);
|
}
|
||||||
} else if (me._state === 'years') {
|
} else if (me._state === 1) {
|
||||||
|
var d = new Date(me.currentDate);
|
||||||
|
d.setFullYear(d.getFullYear() - 1);
|
||||||
|
if (d.getFullYear() > 0) {
|
||||||
|
me.renderMonths(d);
|
||||||
|
}
|
||||||
|
} else if (me._state === 2) {
|
||||||
var year = me.currentDate.getFullYear(),
|
var year = me.currentDate.getFullYear(),
|
||||||
newYear;
|
newYear;
|
||||||
if (year % 10 !== 0) {
|
if (year % 10 !== 0) {
|
||||||
|
@ -127,20 +132,28 @@ define([
|
||||||
} else {
|
} else {
|
||||||
newYear = year - 1;
|
newYear = year - 1;
|
||||||
}
|
}
|
||||||
|
if (newYear > 0) {
|
||||||
me.currentDate.setFullYear(newYear);
|
me.currentDate.setFullYear(newYear);
|
||||||
me.renderYears(newYear);
|
me.renderYears(newYear);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onClickNext: function () {
|
onClickNext: function () {
|
||||||
var me = this;
|
var me = this;
|
||||||
if (me._state === 'month') {
|
if (me._state === 0) {
|
||||||
me.currentDate.setMonth(me.currentDate.getMonth() + 1);
|
var d = new Date(me.currentDate);
|
||||||
me.renderMonth(me.currentDate);
|
d.setMonth(d.getMonth() + 1);
|
||||||
} else if (me._state === 'months') {
|
if (d.getFullYear() > 0) {
|
||||||
me.currentDate.setFullYear(me.currentDate.getFullYear() + 1);
|
me.renderMonth(d);
|
||||||
me.renderMonths(me.currentDate);
|
}
|
||||||
} else if (me._state === 'years') {
|
} else if (me._state === 1) {
|
||||||
|
var d = new Date(me.currentDate);
|
||||||
|
d.setFullYear(d.getFullYear() + 1);
|
||||||
|
if (d.getFullYear() > 0) {
|
||||||
|
me.renderMonths(d);
|
||||||
|
}
|
||||||
|
} else if (me._state === 2) {
|
||||||
var year = me.currentDate.getFullYear(),
|
var year = me.currentDate.getFullYear(),
|
||||||
newYear;
|
newYear;
|
||||||
if (year % 10 !== 9) {
|
if (year % 10 !== 9) {
|
||||||
|
@ -149,16 +162,18 @@ define([
|
||||||
} else {
|
} else {
|
||||||
newYear = year + 1;
|
newYear = year + 1;
|
||||||
}
|
}
|
||||||
|
if (newYear > 0) {
|
||||||
me.currentDate.setFullYear(newYear);
|
me.currentDate.setFullYear(newYear);
|
||||||
me.renderYears(newYear);
|
me.renderYears(newYear);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
renderYears: function (year) {
|
renderYears: function (year) {
|
||||||
var me = this,
|
var me = this,
|
||||||
year = _.isNumber(year) ? year : (me.currentDate ? me.currentDate.getFullYear() : new Date().getFullYear());
|
year = _.isNumber(year) ? year : (me.currentDate ? me.currentDate.getFullYear() : new Date().getFullYear());
|
||||||
|
|
||||||
me._state = 'years';
|
me._state = 2;
|
||||||
|
|
||||||
var firstYear = year,
|
var firstYear = year,
|
||||||
lastYear = year;
|
lastYear = year;
|
||||||
|
@ -211,13 +226,15 @@ define([
|
||||||
curDate = (_.isDate(date)) ? date : (me.currentDate ? me.currentDate : new Date()),
|
curDate = (_.isDate(date)) ? date : (me.currentDate ? me.currentDate : new Date()),
|
||||||
year = curDate.getFullYear();
|
year = curDate.getFullYear();
|
||||||
|
|
||||||
me._state = 'months';
|
me._state = 1;
|
||||||
|
me.currentDate = curDate;
|
||||||
|
|
||||||
// Number of year
|
// Number of year
|
||||||
me.topTitle = _.template([
|
me.topTitle = _.template([
|
||||||
'<label>' + year + '</label>'
|
'<div class="button"><label>' + year + '</label></div>'
|
||||||
].join(''));
|
].join(''));
|
||||||
me.cmpEl.find('.calendar-header .title').html(me.topTitle);
|
me.cmpEl.find('.calendar-header .title').html(me.topTitle);
|
||||||
|
me.cmpEl.find('.calendar-header .title').off();
|
||||||
me.cmpEl.find('.calendar-header .title').on('click', _.bind(me.renderYears, me));
|
me.cmpEl.find('.calendar-header .title').on('click', _.bind(me.renderYears, me));
|
||||||
|
|
||||||
me.bottomTitle = _.template([
|
me.bottomTitle = _.template([
|
||||||
|
@ -260,7 +277,7 @@ define([
|
||||||
|
|
||||||
renderMonth: function (date) {
|
renderMonth: function (date) {
|
||||||
var me = this;
|
var me = this;
|
||||||
me._state = 'month';
|
me._state = 0;
|
||||||
var firstDay = me.options.firstday;
|
var firstDay = me.options.firstday;
|
||||||
|
|
||||||
// Current date
|
// Current date
|
||||||
|
@ -270,12 +287,16 @@ define([
|
||||||
curNumberDayInMonth = curDate.getDate(),
|
curNumberDayInMonth = curDate.getDate(),
|
||||||
curYear = curDate.getFullYear();
|
curYear = curDate.getFullYear();
|
||||||
|
|
||||||
|
me.currentDate = curDate;
|
||||||
|
|
||||||
// Name month
|
// Name month
|
||||||
me.topTitle = _.template([
|
me.topTitle = _.template([
|
||||||
'<label>' + me.monthNames[curMonth] + '</label>',
|
'<div class="button">',
|
||||||
'<label>' + curYear + '</label>'
|
'<label>' + me.monthNames[curMonth] + ' ' + curYear + '</label>',
|
||||||
|
'</div>'
|
||||||
].join(''));
|
].join(''));
|
||||||
me.cmpEl.find('.calendar-header .title').html(me.topTitle);
|
me.cmpEl.find('.calendar-header .title').html(me.topTitle);
|
||||||
|
me.cmpEl.find('.calendar-header .title').off();
|
||||||
me.cmpEl.find('.calendar-header .title').on('click', _.bind(me.renderMonths, me));
|
me.cmpEl.find('.calendar-header .title').on('click', _.bind(me.renderMonths, me));
|
||||||
|
|
||||||
// Name days of week
|
// Name days of week
|
||||||
|
|
|
@ -37,14 +37,18 @@
|
||||||
.title {
|
.title {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
margin-bottom: 3px;
|
margin-bottom: 3px;
|
||||||
padding: 2px 10px 0;
|
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
label {
|
label {
|
||||||
|
padding: 2px 10px 0;
|
||||||
|
display: block;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
&:not(:last-of-type) {
|
&:not(:last-of-type) {
|
||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.button {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: rgba(255,255,255,0.2);
|
background-color: rgba(255,255,255,0.2);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
@ -52,6 +56,7 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue