Skip to content

Commit

Permalink
fix: resolve schedule rendering issues on month view (nhn#646) (nhn#647)
Browse files Browse the repository at this point in the history
* fix: when resize schedule, fix reverted schedule on monthly view (nhn#646 issue 1)

* fix : resolve midnight schedule on monthly view(nhn#646 issue2)

* test: resolve broken TC
(for monthly mouse position)

* refactor: apply PR feedbacks

* fix: add datetime import

* fix: resolve midnight schedule issue

* refactor: remove whitespace
  • Loading branch information
jungeun-cho committed Sep 3, 2020
1 parent 3332b11 commit d056190
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 23 deletions.
6 changes: 6 additions & 0 deletions src/js/common/datetime.js
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,12 @@ datetime = {
var withinDay = diffDays === -1 && diffHours < 24 && datetime.isStartOfDay(end);

return !datetime.isSameDate(start, end) && !withinDay;
},

renderEnd: function(start, end) {
return datetime.hasMultiDates(start, end) && datetime.isStartOfDay(end) ?
datetime.convertStartDayToLastDay(end) :
datetime.end(end);
}
};

Expand Down
15 changes: 7 additions & 8 deletions src/js/controller/viewMixin/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ var Core = {
* @param {function} [iteratee] - iteratee function invoke each view models
*/
positionViewModels: function(start, end, matrices, iteratee) {
var ymdListToRender, endTime;
var ymdListToRender;

ymdListToRender = util.map(
datetime.range(start, end, datetime.MILLISECONDS_PER_DAY),
Expand All @@ -168,22 +168,21 @@ var Core = {
forEachArr(matrices, function(matrix) {
forEachArr(matrix, function(column) {
forEachArr(column, function(viewModel, index) {
var ymd, dateLength;
var ymd, dateLength, startDate, endDate;

if (!viewModel) {
return;
}

ymd = datetime.format(viewModel.getStarts(), 'YYYYMMDD');
endTime = viewModel.hasMultiDates ?
datetime.end(viewModel.getEnds()) :
datetime.convertStartDayToLastDay(viewModel.getEnds());
startDate = viewModel.getStarts();
endDate = viewModel.getEnds();
dateLength = datetime.range(
datetime.start(viewModel.getStarts()),
endTime,
datetime.start(startDate),
datetime.renderEnd(startDate, endDate),
datetime.MILLISECONDS_PER_DAY
).length;

ymd = datetime.format(startDate, 'YYYYMMDD');
viewModel.top = index;
viewModel.left = util.inArray(ymd, ymdListToRender);
viewModel.width = dateLength;
Expand Down
2 changes: 1 addition & 1 deletion src/js/controller/viewMixin/month.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ var Month = {

if (!model.isAllDay && viewModel.hasMultiDates) {
viewModel.renderStarts = datetime.start(start);
viewModel.renderEnds = datetime.convertStartDayToLastDay(end);
viewModel.renderEnds = datetime.renderEnd(start, end);
}
});
},
Expand Down
8 changes: 6 additions & 2 deletions src/js/controller/viewMixin/week.js
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ var Week = {
* @returns {function} - filtering function
*/
_makeHourRangeFilter: function(hStart, hEnd) {
// eslint-disable-next-line complexity
return function(schedule) {
var ownHourStart = schedule.model.start;
var ownHourEnd = schedule.model.end;
Expand Down Expand Up @@ -241,9 +242,12 @@ var Week = {
_addMultiDatesInfo: function(vColl) {
vColl.each(function(viewModel) {
var model = viewModel.model;
var start = model.getStarts();
var end = model.getEnds();

viewModel.hasMultiDates = true;
viewModel.renderStarts = datetime.start(model.getStarts());
viewModel.renderEnds = datetime.convertStartDayToLastDay(model.getEnds());
viewModel.renderStarts = datetime.start(start);
viewModel.renderEnds = datetime.renderEnd(start, end);
});
},

Expand Down
6 changes: 4 additions & 2 deletions src/js/handler/month/core.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/* eslint-disable complexity */
/**
* @fileoverview Module for calculate date by month view and mouse event object
* @author NHN FE Development Lab <dl_javascript@nhn.com>
Expand All @@ -7,7 +8,8 @@
var util = require('tui-code-snippet');
var common = require('../../common/common'),
domutil = require('../../common/domutil'),
domevent = require('../../common/domevent');
domevent = require('../../common/domevent'),
datetime = require('../../common/datetime');
var mfloor = Math.floor;

/**
Expand Down Expand Up @@ -91,7 +93,7 @@ function getMousePosDate(monthView) {
y: y,
sizeX: dayCount,
sizeY: weekCount,
date: date,
date: datetime.end(date),
weekdayView: weekdayView,
triggerEvent: mouseEvent.type
};
Expand Down
12 changes: 4 additions & 8 deletions src/js/view/popup/scheduleCreationPopup.js
Original file line number Diff line number Diff line change
Expand Up @@ -676,21 +676,17 @@ ScheduleCreationPopup.prototype._validateForm = function(title, startDate, endDa
* @returns {RangeDate} Returns the start and end time data that is the range date
*/
ScheduleCreationPopup.prototype._getRangeDate = function(startDate, endDate, isAllDay) {
if (isAllDay) {
startDate.setHours(0, 0, 0);
endDate = datetime.isStartOfDay(endDate) ?
datetime.convertStartDayToLastDay(endDate) :
endDate.setHours(23, 59, 59);
}
var start = isAllDay ? datetime.start(startDate) : startDate;
var end = isAllDay ? datetime.renderEnd(startDate, endDate) : endDate;

/**
* @typedef {object} RangeDate
* @property {TZDate} start start time
* @property {TZDate} end end time
*/
return {
start: new TZDate(startDate),
end: new TZDate(endDate)
start: new TZDate(start),
end: new TZDate(end)
};
};

Expand Down
4 changes: 2 additions & 2 deletions test/app/handler/month/core.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ describe('handler:MonthCore', function() {
y: 0,
sizeX: 7,
sizeY: 2,
date: new TZDate('2015-12-27T00:00:00+09:00'),
date: new TZDate('2015-12-27T23:59:59+09:00'),
weekdayView: w1,
triggerEvent: 'click'
});
Expand All @@ -84,7 +84,7 @@ describe('handler:MonthCore', function() {
y: 1,
sizeX: 7,
sizeY: 2,
date: new TZDate('2016-01-08T00:00:00+09:00'),
date: new TZDate('2016-01-08T23:59:59+09:00'),
weekdayView: w2,
triggerEvent: 'click'
});
Expand Down

0 comments on commit d056190

Please sign in to comment.