fix stupid loop event generator (1/inf)
This commit is contained in:
@@ -203,7 +203,7 @@ class CalendarDatabase(object):
|
|||||||
username = self.tokenOper_get_username(token)
|
username = self.tokenOper_get_username(token)
|
||||||
self.cursor.execute('SELECT calendar.* FROM calendar INNER JOIN collection \
|
self.cursor.execute('SELECT calendar.* FROM calendar INNER JOIN collection \
|
||||||
ON collection.ccn_uuid = calendar.ccn_belongTo \
|
ON collection.ccn_uuid = calendar.ccn_belongTo \
|
||||||
WHERE (collection.ccn_user = ? AND calendar.ccn_loopDateTimeEnd >= ? AND calendar.ccn_loopDateTimeStart <= ?);',
|
WHERE (collection.ccn_user = ? AND calendar.ccn_loopDateTimeEnd >= ? AND calendar.ccn_loopDateTimeStart - (calendar.ccn_eventDateTimeEnd - calendar.ccn_eventDateTimeStart) <= ?);',
|
||||||
(username, startDateTime, endDateTime))
|
(username, startDateTime, endDateTime))
|
||||||
return self.cursor.fetchall()
|
return self.cursor.fetchall()
|
||||||
|
|
||||||
@@ -212,7 +212,7 @@ class CalendarDatabase(object):
|
|||||||
username = self.tokenOper_get_username(token)
|
username = self.tokenOper_get_username(token)
|
||||||
self.cursor.execute('SELECT calendar.ccn_uuid FROM calendar INNER JOIN collection \
|
self.cursor.execute('SELECT calendar.ccn_uuid FROM calendar INNER JOIN collection \
|
||||||
ON collection.ccn_uuid = calendar.ccn_belongTo \
|
ON collection.ccn_uuid = calendar.ccn_belongTo \
|
||||||
WHERE (collection.ccn_user = ? AND calendar.ccn_loopDateTimeEnd >= ? AND calendar.ccn_loopDateTimeStart <= ?);',
|
WHERE (collection.ccn_user = ? AND calendar.ccn_loopDateTimeEnd >= ? AND calendar.ccn_loopDateTimeStart - (calendar.ccn_eventDateTimeEnd - calendar.ccn_eventDateTimeStart) <= ?);',
|
||||||
(username, startDateTime, endDateTime))
|
(username, startDateTime, endDateTime))
|
||||||
return tuple(map(lambda x: x[0], self.cursor.fetchall()))
|
return tuple(map(lambda x: x[0], self.cursor.fetchall()))
|
||||||
|
|
||||||
|
|||||||
@@ -112,9 +112,9 @@ function ccn_datetime_ResolveLoopRules4Event(loopRules, loopDateTimeStart, loopD
|
|||||||
var isSpecial = (originalMonth == 2 && originalDay == 29);
|
var isSpecial = (originalMonth == 2 && originalDay == 29);
|
||||||
var realLoopSpan = isSpecial ? LCM(4, loopSpan) : loopSpan;
|
var realLoopSpan = isSpecial ? LCM(4, loopSpan) : loopSpan;
|
||||||
|
|
||||||
var fullSpanCount = Math.floor(yearCount / realLoopSpan);
|
//var fullSpanCount = Math.floor(yearCount / realLoopSpan);
|
||||||
var remainYear = year % realLoopSpan;
|
var remainYear = year % realLoopSpan;
|
||||||
detectDateTime.setUTCFullYear(fullSpanCount + detectDateTime.getUTCFullYear(), 1, 1);
|
//detectDateTime.setUTCFullYear(fullSpanCount + detectDateTime.getUTCFullYear(), 1, 1);
|
||||||
if (remainYear != 0)
|
if (remainYear != 0)
|
||||||
detectDateTime.setUTCFullYear(realLoopSpan - remainYear + detectDateTime.getUTCFullYear(), 1, 1);
|
detectDateTime.setUTCFullYear(realLoopSpan - remainYear + detectDateTime.getUTCFullYear(), 1, 1);
|
||||||
|
|
||||||
@@ -138,9 +138,9 @@ function ccn_datetime_ResolveLoopRules4Event(loopRules, loopDateTimeStart, loopD
|
|||||||
var monthsCount = ccn_datetime_MonthsCount(detectDateTime.getUTCFullYear(). detectDateTime.getUTCMonth() + 1) -
|
var monthsCount = ccn_datetime_MonthsCount(detectDateTime.getUTCFullYear(). detectDateTime.getUTCMonth() + 1) -
|
||||||
ccn_datetime_MonthsCount(originalYear, originalMonth);
|
ccn_datetime_MonthsCount(originalYear, originalMonth);
|
||||||
|
|
||||||
var fullSpanCount = Math.floor(monthsCount / loopSpan);
|
//var fullSpanCount = Math.floor(monthsCount / loopSpan);
|
||||||
var remainMonth = monthsCount % loopSpan;
|
var remainMonth = monthsCount % loopSpan;
|
||||||
detectDateTime.setUTCMonth(fullSpanCount * loopSpan + detectDateTime.getUTCMonth(), 1);
|
//detectDateTime.setUTCMonth(fullSpanCount * loopSpan + detectDateTime.getUTCMonth(), 1);
|
||||||
if (remainMonth != 0)
|
if (remainMonth != 0)
|
||||||
detectDateTime.setUTCMonth(loopSpan - remainMonth + detectDateTime.getUTCMonth(), 1);
|
detectDateTime.setUTCMonth(loopSpan - remainMonth + detectDateTime.getUTCMonth(), 1);
|
||||||
|
|
||||||
@@ -193,11 +193,11 @@ function ccn_datetime_ResolveLoopRules4Event(loopRules, loopDateTimeStart, loopD
|
|||||||
|
|
||||||
var daysCount = ccn_datetime_DaysCount(detectDateTime.getUTCFullYear(), detectDateTime.getUTCMonth() + 1, detectDateTime.getDate()) -
|
var daysCount = ccn_datetime_DaysCount(detectDateTime.getUTCFullYear(), detectDateTime.getUTCMonth() + 1, detectDateTime.getDate()) -
|
||||||
ccn_datetime_DaysCount(originalYear, originalMonth, originalDay);
|
ccn_datetime_DaysCount(originalYear, originalMonth, originalDay);
|
||||||
var fullSpanCount = Math.floor(daysCount / (7 * loopSpan));
|
//var fullSpanCount = Math.floor(daysCount / (7 * loopSpan));
|
||||||
var remainFullSpanCount = Math.floor((daysCount % (7 * loopSpan)) / 7);
|
var remainFullSpanCount = Math.floor((daysCount % (7 * loopSpan)) / 7);
|
||||||
var remainDays = (daysCount % (7 * loopSpan)) % 7;
|
var remainDays = (daysCount % (7 * loopSpan)) % 7;
|
||||||
|
|
||||||
detectDateTime.setUTCDate((7 * loopSpan * fullSpanCount) + detectDateTime.getUTCDate());
|
//detectDateTime.setUTCDate((7 * loopSpan * fullSpanCount) + detectDateTime.getUTCDate());
|
||||||
if (remainFullSpanCount != 0) {
|
if (remainFullSpanCount != 0) {
|
||||||
detectDateTime.setUTCDate((loopSpan - remainFullSpanCount) * 7 + detectDateTime.getUTCDate());
|
detectDateTime.setUTCDate((loopSpan - remainFullSpanCount) * 7 + detectDateTime.getUTCDate());
|
||||||
}
|
}
|
||||||
@@ -219,11 +219,11 @@ 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);
|
||||||
|
|
||||||
var daysCount = ccn_datetime_DaysCount(detectDateTime.getUTCFullYear(), detectDateTime.getUTCMonth() + 1, detectDateTime.getDate()) -
|
var daysCount = ccn_datetime_DaysCount(detectDateTime.getUTCFullYear(), detectDateTime.getUTCMonth() + 1, detectDateTime.getUTCDate()) -
|
||||||
ccn_datetime_DaysCount(originalYear, originalMonth, originalDay);
|
ccn_datetime_DaysCount(originalYear, originalMonth, originalDay);
|
||||||
var fullSpanCount = Math.floor(daysCount / loopSpan);
|
//var fullSpanCount = Math.floor(daysCount / loopSpan);
|
||||||
var remainDays = daysCount % loopSpan;
|
var remainDays = daysCount % loopSpan;
|
||||||
detectDateTime.setUTCDate(fullSpanCount * loopSpan + detectDateTime.getUTCDate());
|
//detectDateTime.setUTCDate(fullSpanCount * loopSpan + detectDateTime.getUTCDate());
|
||||||
if (remainDays != 0)
|
if (remainDays != 0)
|
||||||
detectDateTime.setUTCDate(loopSpan - remainDays + detectDateTime.getUTCDate());
|
detectDateTime.setUTCDate(loopSpan - remainDays + detectDateTime.getUTCDate());
|
||||||
|
|
||||||
|
|||||||
@@ -118,9 +118,10 @@ function ccn_calendar_calendar_Analyse() {
|
|||||||
for(var index in ccn_calendar_calendar_listCache) {
|
for(var index in ccn_calendar_calendar_listCache) {
|
||||||
var item = ccn_calendar_calendar_listCache[index];
|
var item = ccn_calendar_calendar_listCache[index];
|
||||||
|
|
||||||
|
var minStartTimestamp = startTimestamp - (item[6] - item[5]);
|
||||||
var result = ccn_datetime_ResolveLoopRules4Event(
|
var result = ccn_datetime_ResolveLoopRules4Event(
|
||||||
item[8],
|
item[8],
|
||||||
Math.max(item[6] - item[5] + startTimestamp, item[9]),
|
item[9] < minStartTimestamp ? minStartTimestamp : item[9],
|
||||||
Math.min(item[10], endTimestamp),
|
Math.min(item[10], endTimestamp),
|
||||||
item[5],
|
item[5],
|
||||||
item[6],
|
item[6],
|
||||||
|
|||||||
Reference in New Issue
Block a user