diff --git a/src/static/js/datetime.js b/src/static/js/datetime.js index 3a1efd7..269e4d5 100644 --- a/src/static/js/datetime.js +++ b/src/static/js/datetime.js @@ -42,7 +42,7 @@ times: [2, times] function ccn_datetime_ResolveLoopRules4UI(strl) { if (strl == '') return undefined; - sp = strl.split('-'); + var sp = strl.split('-'); if (sp.length != 2) return undefined; var loopRules = 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) // and use .getUTC...() functions. function ccn_datetime_ResolveLoopRules4Event(loopRules, loopDateTimeStart, loopDateTimeEnd, eventDateTimeStart, eventDateTimeEnd, timezoneOffset, clampStartDateTime) { - if (strl == '') return [ + if (loopRules == '') return [ [Math.max(eventDateTimeStart, clampStartDateTime), Math.max(loopDateTimeEnd, eventDateTimeEnd)] ]; - sp = strl.split('-'); + var sp = loopRules.split('-'); if (sp.length != 2) return undefined; var loopRules = sp[0]; // we don't need consider stop flag var result = new Array(); @@ -219,11 +219,14 @@ function ccn_datetime_ResolveLoopRules4Event(loopRules, loopDateTimeStart, loopD } else if (ccn_datetime_precompiledLoopRules.day.test(loopRules)) { var loopSpan = parseInt(RegExp.$1); - detectDateTime.setUTCDate( - (ccn_datetime_DaysCount(detectDateTime.getUTCFullYear(), detectDateTime.getUTCMonth() + 1, detectDateTime.getDate()) - - ccn_datetime_DaysCount(originalYear, originalMonth, originalDay)) % loopSpan + - detectDateTime.getUTCDate() - ); + var daysCount = ccn_datetime_DaysCount(detectDateTime.getUTCFullYear(), detectDateTime.getUTCMonth() + 1, detectDateTime.getDate()) - + ccn_datetime_DaysCount(originalYear, originalMonth, originalDay); + var fullSpanCount = Math.floor(daysCount / loopSpan); + 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) { result.push( [Math.floor(detectDateTime.getTime() / 60000) + eventOffset - timezoneOffset, diff --git a/src/static/js/page/calendar.js b/src/static/js/page/calendar.js index 6dde7a0..49fb118 100644 --- a/src/static/js/page/calendar.js +++ b/src/static/js/page/calendar.js @@ -106,8 +106,8 @@ function ccn_calendar_calendar_Analyse() { ccn_calendar_calendar_displayCache.push({ month: gottenDateTime.getMonth() + 1, day: gottenDateTime.getDate(), - dayOfWeek: gottenDateTime.getWeekday(), - subcalendar: " ", + dayOfWeek: gottenDateTime.getWeekday() + 1, + subcalendar: " -", events: new Array() }); gottenDateTime.setTime(gottenDateTime.getTime() + ccn_datetime_DAY1_SPAN * 60000); @@ -132,12 +132,13 @@ function ccn_calendar_calendar_Analyse() { var it = result[i]; // try get event belong to which cell 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; // then split event while(count < 6 * 7) { var eventItem = { uuid: item[0], + belongTo: item[1], title: item[2], description: item[3], isVisible: true, @@ -148,11 +149,11 @@ function ccn_calendar_calendar_Analyse() { end: undefined // filled in follwing code } eventDateTime.setHours(23, 59, 0, 0); - if (Math.floor(eventDateTime.getTime() / 60000) <= it[1]) { + if (Math.floor(eventDateTime.getTime() / 60000) > it[1]) { exitFlag = true; eventDateTime.setTime(it[1] * 60000); } - eventDateTime.end = eventDateTime.toLocaleTimeString(); + eventItem.end = eventDateTime.toLocaleTimeString(); ccn_calendar_calendar_displayCache[count].events.push(eventItem); if (exitFlag) break; count++; @@ -171,9 +172,9 @@ function ccn_calendar_calendar_Render() { for(var i = 0; i < 6; i++) { for(var j = 0; j < 7; j++) { var item = ccn_calendar_calendar_displayCache[counter]; - $('#ccn-calendarItem-title' + i + '-' + j).text(item.day); - $('#ccn-calendarItem-desc' + i + '-' + j).text(item.subcalendar); - $('#ccn-calendarItem-task' + i + '-' + j).text(item.events.length); + $('#ccn-calendarItem-title-' + i + '-' + j).text(item.day); + $('#ccn-calendarItem-desc-' + i + '-' + j).text(item.subcalendar); + $('#ccn-calendarItem-task-' + i + '-' + j).text(item.events.length.toString()); counter++; } } @@ -184,13 +185,13 @@ function ccn_calendar_calendar_Render() { for(var i in ccn_calendar_calendar_displayCache) { for(var j in ccn_calendar_calendar_displayCache[i].events) { 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[ - 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; } @@ -213,6 +214,8 @@ function ccn_calendar_calendar_btnToday() { var nowtime = new Date(); ccn_datetimepicker_Set(1, nowtime, false); ccn_calendar_calendar_Refresh(); + ccn_calendar_calendar_Analyse(); + ccn_calendar_calendar_Render(); } function ccn_calendar_calendar_btnAdd() { diff --git a/src/static/tmpl/calendarItem.tmpl b/src/static/tmpl/calendarItem.tmpl index d03f7af..f19e725 100644 --- a/src/static/tmpl/calendarItem.tmpl +++ b/src/static/tmpl/calendarItem.tmpl @@ -4,7 +4,7 @@
-
+
This is - titleewwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww -
-this is - subtitleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee -
-This is - titleewwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww -
-this is - subtitleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee -
-This is - titleewwwwwwwwwwwwwwwwww -
-this is - subtitleeeeeeeeeewwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwweeeeeeeeeeeeeeeeeeeeee -
-This is - titleeww -
-this is - subtitleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee -
-