1
0

fix day cycle error

This commit is contained in:
2021-02-10 20:50:53 +08:00
parent 288df0c4b7
commit ba87ff481c
5 changed files with 29 additions and 111 deletions

View File

@@ -42,7 +42,7 @@ times: [2, times]
function ccn_datetime_ResolveLoopRules4UI(strl) { function ccn_datetime_ResolveLoopRules4UI(strl) {
if (strl == '') return undefined; if (strl == '') return undefined;
sp = strl.split('-'); var sp = strl.split('-');
if (sp.length != 2) return undefined; if (sp.length != 2) return undefined;
var loopRules = undefined; var loopRules = undefined;
var loopStopRules = undefined; var loopStopRules = undefined;
@@ -81,12 +81,12 @@ function ccn_datetime_ResolveLoopRules4UI(strl) {
// in this section, all time should be analysed with Date((time + timezoneOffset) * 60000) // in this section, all time should be analysed with Date((time + timezoneOffset) * 60000)
// and use .getUTC...() functions. // and use .getUTC...() functions.
function ccn_datetime_ResolveLoopRules4Event(loopRules, loopDateTimeStart, loopDateTimeEnd, eventDateTimeStart, eventDateTimeEnd, timezoneOffset, clampStartDateTime) { function ccn_datetime_ResolveLoopRules4Event(loopRules, loopDateTimeStart, loopDateTimeEnd, eventDateTimeStart, eventDateTimeEnd, timezoneOffset, clampStartDateTime) {
if (strl == '') return [ if (loopRules == '') return [
[Math.max(eventDateTimeStart, clampStartDateTime), [Math.max(eventDateTimeStart, clampStartDateTime),
Math.max(loopDateTimeEnd, eventDateTimeEnd)] Math.max(loopDateTimeEnd, eventDateTimeEnd)]
]; ];
sp = strl.split('-'); var sp = loopRules.split('-');
if (sp.length != 2) return undefined; if (sp.length != 2) return undefined;
var loopRules = sp[0]; // we don't need consider stop flag var loopRules = sp[0]; // we don't need consider stop flag
var result = new Array(); var result = new Array();
@@ -219,11 +219,14 @@ function ccn_datetime_ResolveLoopRules4Event(loopRules, loopDateTimeStart, loopD
} else if (ccn_datetime_precompiledLoopRules.day.test(loopRules)) { } else if (ccn_datetime_precompiledLoopRules.day.test(loopRules)) {
var loopSpan = parseInt(RegExp.$1); var loopSpan = parseInt(RegExp.$1);
detectDateTime.setUTCDate( var daysCount = ccn_datetime_DaysCount(detectDateTime.getUTCFullYear(), detectDateTime.getUTCMonth() + 1, detectDateTime.getDate()) -
(ccn_datetime_DaysCount(detectDateTime.getUTCFullYear(), detectDateTime.getUTCMonth() + 1, detectDateTime.getDate()) - ccn_datetime_DaysCount(originalYear, originalMonth, originalDay);
ccn_datetime_DaysCount(originalYear, originalMonth, originalDay)) % loopSpan + var fullSpanCount = Math.floor(daysCount / loopSpan);
detectDateTime.getUTCDate() var remainDays = daysCount % loopSpan;
); detectDateTime.setUTCDate(fullSpanCount * loopSpan + detectDateTime.getUTCDate());
if (remainDays != 0)
detectDateTime.setUTCDate(loopSpan - remainDays + detectDateTime.getUTCDate());
while(Math.floor(detectDateTime.getTime() / 60000) + eventOffset - timezoneOffset <= loopDateTimeEnd) { while(Math.floor(detectDateTime.getTime() / 60000) + eventOffset - timezoneOffset <= loopDateTimeEnd) {
result.push( result.push(
[Math.floor(detectDateTime.getTime() / 60000) + eventOffset - timezoneOffset, [Math.floor(detectDateTime.getTime() / 60000) + eventOffset - timezoneOffset,

View File

@@ -106,8 +106,8 @@ function ccn_calendar_calendar_Analyse() {
ccn_calendar_calendar_displayCache.push({ ccn_calendar_calendar_displayCache.push({
month: gottenDateTime.getMonth() + 1, month: gottenDateTime.getMonth() + 1,
day: gottenDateTime.getDate(), day: gottenDateTime.getDate(),
dayOfWeek: gottenDateTime.getWeekday(), dayOfWeek: gottenDateTime.getWeekday() + 1,
subcalendar: " ", subcalendar: " -",
events: new Array() events: new Array()
}); });
gottenDateTime.setTime(gottenDateTime.getTime() + ccn_datetime_DAY1_SPAN * 60000); gottenDateTime.setTime(gottenDateTime.getTime() + ccn_datetime_DAY1_SPAN * 60000);
@@ -132,12 +132,13 @@ function ccn_calendar_calendar_Analyse() {
var it = result[i]; var it = result[i];
// try get event belong to which cell // try get event belong to which cell
var eventDateTime = new Date(it[0] * 60000); var eventDateTime = new Date(it[0] * 60000);
var count = Math.floor((eventDateTime - startTimestamp) / ccn_datetime_DAY1_SPAN); var count = Math.floor((it[0] - startTimestamp) / ccn_datetime_DAY1_SPAN);
var exitFlag = false; var exitFlag = false;
// then split event // then split event
while(count < 6 * 7) { while(count < 6 * 7) {
var eventItem = { var eventItem = {
uuid: item[0], uuid: item[0],
belongTo: item[1],
title: item[2], title: item[2],
description: item[3], description: item[3],
isVisible: true, isVisible: true,
@@ -148,11 +149,11 @@ function ccn_calendar_calendar_Analyse() {
end: undefined // filled in follwing code end: undefined // filled in follwing code
} }
eventDateTime.setHours(23, 59, 0, 0); eventDateTime.setHours(23, 59, 0, 0);
if (Math.floor(eventDateTime.getTime() / 60000) <= it[1]) { if (Math.floor(eventDateTime.getTime() / 60000) > it[1]) {
exitFlag = true; exitFlag = true;
eventDateTime.setTime(it[1] * 60000); eventDateTime.setTime(it[1] * 60000);
} }
eventDateTime.end = eventDateTime.toLocaleTimeString(); eventItem.end = eventDateTime.toLocaleTimeString();
ccn_calendar_calendar_displayCache[count].events.push(eventItem); ccn_calendar_calendar_displayCache[count].events.push(eventItem);
if (exitFlag) break; if (exitFlag) break;
count++; count++;
@@ -171,9 +172,9 @@ function ccn_calendar_calendar_Render() {
for(var i = 0; i < 6; i++) { for(var i = 0; i < 6; i++) {
for(var j = 0; j < 7; j++) { for(var j = 0; j < 7; j++) {
var item = ccn_calendar_calendar_displayCache[counter]; var item = ccn_calendar_calendar_displayCache[counter];
$('#ccn-calendarItem-title' + i + '-' + j).text(item.day); $('#ccn-calendarItem-title-' + i + '-' + j).text(item.day);
$('#ccn-calendarItem-desc' + i + '-' + j).text(item.subcalendar); $('#ccn-calendarItem-desc-' + i + '-' + j).text(item.subcalendar);
$('#ccn-calendarItem-task' + i + '-' + j).text(item.events.length); $('#ccn-calendarItem-task-' + i + '-' + j).text(item.events.length.toString());
counter++; counter++;
} }
} }
@@ -184,13 +185,13 @@ function ccn_calendar_calendar_Render() {
for(var i in ccn_calendar_calendar_displayCache) { for(var i in ccn_calendar_calendar_displayCache) {
for(var j in ccn_calendar_calendar_displayCache[i].events) { for(var j in ccn_calendar_calendar_displayCache[i].events) {
var gottenOwnedVisible = ccn_calendar_owned_displayCache[ var gottenOwnedVisible = ccn_calendar_owned_displayCache[
ccn_calendar_calendar_displayCache[i].events[j].uuid ccn_calendar_calendar_displayCache[i].events[j].belongTo
]; ];
if (typeof(gottenOwnedVisible) != 'undefined') gottenOwnedVisible = false; if (typeof(gottenOwnedVisible) == 'undefined') gottenOwnedVisible = false;
var gottenSharedVisible = ccn_calendar_shared_displayCache[ var gottenSharedVisible = ccn_calendar_shared_displayCache[
ccn_calendar_calendar_displayCache[i].events[j].uuid ccn_calendar_calendar_displayCache[i].events[j].belongTo
]; ];
if (typeof(gottenSharedVisible) != 'undefined') gottenSharedVisible = false; if (typeof(gottenSharedVisible) == 'undefined') gottenSharedVisible = false;
ccn_calendar_calendar_displayCache[i].events[j].isVisible = gottenOwnedVisible || gottenSharedVisible; ccn_calendar_calendar_displayCache[i].events[j].isVisible = gottenOwnedVisible || gottenSharedVisible;
} }
@@ -213,6 +214,8 @@ function ccn_calendar_calendar_btnToday() {
var nowtime = new Date(); var nowtime = new Date();
ccn_datetimepicker_Set(1, nowtime, false); ccn_datetimepicker_Set(1, nowtime, false);
ccn_calendar_calendar_Refresh(); ccn_calendar_calendar_Refresh();
ccn_calendar_calendar_Analyse();
ccn_calendar_calendar_Render();
} }
function ccn_calendar_calendar_btnAdd() { function ccn_calendar_calendar_btnAdd() {

View File

@@ -4,7 +4,7 @@
<div id="ccn-calendarItem-{{:~row}}-{{:~column}}"> <div id="ccn-calendarItem-{{:~row}}-{{:~column}}">
<p><b id="ccn-calendarItem-title-{{:~row}}-{{:~column}}">&nbsp;</b></p> <p><b id="ccn-calendarItem-title-{{:~row}}-{{:~column}}">&nbsp;</b></p>
<p><small id="ccn-calendarItem-desc-{{:~row}}-{{:~column}}">&nbsp;</small></p> <p><small id="ccn-calendarItem-desc-{{:~row}}-{{:~column}}">&nbsp;</small></p>
<p><span class="icon is-small"><i class="fas fa-tasks"></i></span id="ccn-calendarItem-task-{{:~row}}-{{:~column}}">&nbsp;</p> <p><span class="icon is-small"><i class="fas fa-tasks"></i></span><span id="ccn-calendarItem-task-{{:~row}}-{{:~column}}">&nbsp;</span></p>
</div> </div>
{{/for}} {{/for}}
</div> </div>

View File

@@ -1,12 +1,12 @@
{{for renderdata}} {{for renderdata}}
<div class="schedule-day container"> <div class="schedule-day container">
<div class="schedule-day-words"> <div class="schedule-day-words">
<b>{{>month}}</b> <b i18n-name="ccn-i18n-universal-month-{{:month}}"></b>
<b>{{>day}}</b> <b>{{>day}}</b>
<b i18n-name="ccn-i18n-universal-week-{{:dayOfWeek}}"></b> <b i18n-name="ccn-i18n-universal-week-{{:dayOfWeek}}"></b>
</div> </div>
<div class="schedule-event-list"> <div class="schedule-event-list">
{{for event}} {{for events}}
{{if isVisible}} {{if isVisible}}
<div class="schedule-event card"> <div class="schedule-event card">
<div class="schedule-event-words"> <div class="schedule-event-words">

View File

@@ -89,94 +89,6 @@
<h1 i18n-name="ccn-i18n-calendar-calendar-scheduleList" class="title"></h1> <h1 i18n-name="ccn-i18n-calendar-calendar-scheduleList" class="title"></h1>
<div id="ccn-calendar-scheduleList"> <div id="ccn-calendar-scheduleList">
<div class="schedule-day container">
<div class="schedule-day-words">
<b>13</b>
<b>Friday</b>
</div>
<div class="schedule-event-list">
<div class="schedule-event card">
<div class="schedule-event-words">
<p class="level-item"><b>This is
titleewwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww</b>
</p>
<p class="level-item">this is
subtitleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
</p>
</div>
<div class="schedule-event-icon">
<span class="icon is-small"><i class="fas fa-lock"></i></span>
</div>
</div>
<div class="schedule-event card">
<div class="schedule-event-words">
<p class="level-item"><b>This is
titleewwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww</b>
</p>
<p class="level-item">this is
subtitleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
</p>
</div>
<div class="schedule-event-icon">
<span class="icon is-small"><i class="fas fa-lock"></i></span>
</div>
</div>
</div>
</div>
<div class="schedule-day container">
<div class="schedule-day-words">
<b>13</b>
<b>Friday</b>
</div>
<div class="schedule-event-list">
</div>
</div>
<div class="schedule-day container">
<div class="schedule-day-words">
<b>13</b>
<b>Friday</b>
</div>
<div class="schedule-event-list">
<div class="schedule-event card">
<div class="schedule-event-words">
<p class="level-item"><b>This is
titleewwwwwwwwwwwwwwwwww</b>
</p>
<p class="level-item">this is
subtitleeeeeeeeeewwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwweeeeeeeeeeeeeeeeeeeeee
</p>
</div>
<div class="schedule-event-icon">
<span class="icon is-small"><i class="fas fa-lock"></i></span>
</div>
</div>
<div class="schedule-event card">
<div class="schedule-event-words">
<p class="level-item"><b>This is
titleeww</b>
</p>
<p class="level-item">this is
subtitleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
</p>
</div>
<div class="schedule-event-icon">
<span class="icon is-small"><i class="fas fa-lock"></i></span>
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>