2021-02-08 22:30:01 +08:00
|
|
|
// if it is undefined, current mode is add
|
|
|
|
|
// or it is the detail data gotten from api
|
|
|
|
|
var ccn_event_editingEvent = undefined;
|
|
|
|
|
var ccn_event_collectionCache = [];
|
|
|
|
|
|
2021-02-08 16:22:04 +08:00
|
|
|
$(document).ready(function() {
|
|
|
|
|
ccn_pages_currentPage = ccn_pages_enumPages.event;
|
|
|
|
|
|
|
|
|
|
// template process
|
|
|
|
|
ccn_template_Load();
|
|
|
|
|
|
|
|
|
|
// nav process
|
|
|
|
|
ccn_headerNav_Insert();
|
|
|
|
|
ccn_headerNav_BindEvents();
|
|
|
|
|
ccn_headerNav_LoggedRefresh();
|
|
|
|
|
|
|
|
|
|
// messagebox process
|
|
|
|
|
ccn_messagebox_Insert();
|
|
|
|
|
ccn_messagebox_BindEvent();
|
|
|
|
|
|
2021-03-10 16:47:44 +08:00
|
|
|
// init datetimepicker
|
|
|
|
|
ccn_datetimepicker_Insert();
|
|
|
|
|
|
2021-02-08 16:22:04 +08:00
|
|
|
// apply i18n
|
|
|
|
|
ccn_i18n_LoadLanguage();
|
|
|
|
|
ccn_i18n_ApplyLanguage();
|
|
|
|
|
|
2021-02-08 22:30:01 +08:00
|
|
|
// bind event
|
|
|
|
|
$('input[type=radio][name=loop-method]').click(ccn_event_RefreshRadioDiaplay);
|
|
|
|
|
$('input[type=radio][name=loop-end]').click(ccn_event_RefreshRadioDiaplay);
|
2021-02-09 17:10:05 +08:00
|
|
|
|
|
|
|
|
$('#ccn-event-btnSubmit').click(ccn_event_btnSubmit);
|
|
|
|
|
$('#ccn-event-btnCancel').click(ccn_event_btnCancel);
|
|
|
|
|
$('#ccn-event-btnSpot').click(ccn_event_btnSpot);
|
|
|
|
|
$('#ccn-event-btnFullDay').click(ccn_event_btnFullDay);
|
2021-04-07 15:22:53 +08:00
|
|
|
$('#ccn-event-btnStartDateTime')
|
2021-04-10 09:15:44 +08:00
|
|
|
.prop('funcs', {callback: function() {
|
|
|
|
|
ccn_event_UpdateDateTimePickerButton(1);
|
|
|
|
|
ccn_event_RefreshLoopMonthType();
|
|
|
|
|
}})
|
2021-04-07 15:22:53 +08:00
|
|
|
.click(ccn_event_btnDateTimePicker);
|
|
|
|
|
$('#ccn-event-btnEndDateTime')
|
|
|
|
|
.prop('funcs', {callback: function() {ccn_event_UpdateDateTimePickerButton(2);}})
|
|
|
|
|
.click(ccn_event_btnDateTimePicker);
|
|
|
|
|
$('#ccn-event-btnLoopStopDateTime')
|
|
|
|
|
.prop('funcs', {callback: function() {ccn_event_UpdateDateTimePickerButton(3);}})
|
|
|
|
|
.click(ccn_event_btnDateTimePicker);
|
2021-02-08 22:30:01 +08:00
|
|
|
|
|
|
|
|
// init form
|
|
|
|
|
ccn_event_Init();
|
|
|
|
|
|
|
|
|
|
// refresh once
|
|
|
|
|
ccn_event_RefreshRadioDiaplay();
|
|
|
|
|
ccn_event_RefreshLoopMonthType();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function ccn_event_Init() {
|
|
|
|
|
// we need init some elements first
|
|
|
|
|
|
|
|
|
|
// we need all radio and checkbox's checked is false, not undefined.
|
|
|
|
|
$('input[type=radio]').prop("checked", false);
|
|
|
|
|
$('input[type=checkbox]').prop("checked", false);
|
2021-02-08 16:22:04 +08:00
|
|
|
|
|
|
|
|
// init span picker
|
|
|
|
|
$('.spanpicker').attr('max', 100)
|
|
|
|
|
.attr('min', 1)
|
|
|
|
|
.attr('step', 1)
|
|
|
|
|
.val(1);
|
|
|
|
|
|
2021-02-08 22:30:01 +08:00
|
|
|
// in there, we need get uuid from meta
|
|
|
|
|
var uuid = $('meta[name=uuid]').attr('content');
|
|
|
|
|
if (uuid != "")
|
|
|
|
|
ccn_event_editingEvent = ccn_api_calendar_getDetail(uuid);
|
|
|
|
|
// if ccn_event_editingEvent is undefined, init following content with add mode
|
|
|
|
|
// otherwise, init as update mode
|
|
|
|
|
var isAdd = typeof(ccn_event_editingEvent) == 'undefined';
|
2021-03-07 21:01:51 +08:00
|
|
|
var deserializeDescription = isAdd ? undefined : ccn_api_deserializeDescription(ccn_event_editingEvent[3]);
|
2021-02-08 16:22:04 +08:00
|
|
|
|
2021-02-08 22:30:01 +08:00
|
|
|
// init title and description
|
2021-02-08 16:22:04 +08:00
|
|
|
$('#ccn-event-inputTitle').val(
|
2021-02-08 22:30:01 +08:00
|
|
|
isAdd ? '' : ccn_event_editingEvent[2]
|
2021-02-08 16:22:04 +08:00
|
|
|
);
|
|
|
|
|
$('#ccn-event-inputDescription').val(
|
2021-03-07 21:01:51 +08:00
|
|
|
isAdd ? '' : deserializeDescription.description
|
|
|
|
|
);
|
|
|
|
|
$('#ccn-event-inputColor').val(
|
|
|
|
|
isAdd ? DefaultColor : deserializeDescription.color
|
2021-02-08 16:22:04 +08:00
|
|
|
);
|
|
|
|
|
|
2021-02-08 22:30:01 +08:00
|
|
|
// init collection picker, first we need query data
|
|
|
|
|
// and render it
|
2021-02-08 16:22:04 +08:00
|
|
|
var collectionDOM = $('#ccn-event-inputCollection');
|
2021-02-08 22:30:01 +08:00
|
|
|
collectionDOM.empty();
|
|
|
|
|
ccn_event_collectionCache = new Array();
|
|
|
|
|
var result = ccn_api_collection_getFullOwn();
|
|
|
|
|
if (typeof(result) != 'undefined') {
|
|
|
|
|
var renderdata = {
|
|
|
|
|
val: undefined,
|
|
|
|
|
name: undefined
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (var index in result) {
|
|
|
|
|
var item = result[index];
|
|
|
|
|
ccn_event_collectionCache.push(item[0])
|
|
|
|
|
renderdata.val = item[0];
|
|
|
|
|
renderdata.name = item[1];
|
|
|
|
|
collectionDOM.append(
|
|
|
|
|
ccn_template_optionItem.render(renderdata)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// in add mode, set as -1, otherwise try to match original data
|
|
|
|
|
// indexOf will return -1 if no matched item
|
2021-02-09 17:10:05 +08:00
|
|
|
collectionDOM.val(isAdd ? '' : ccn_event_editingEvent[1]);
|
2021-02-08 22:30:01 +08:00
|
|
|
|
|
|
|
|
// init start and end datetime
|
|
|
|
|
if (isAdd) {
|
|
|
|
|
// in add mode, init 2 datetime picker as close hours based time.
|
|
|
|
|
var currentDateTime = new Date();
|
|
|
|
|
currentDateTime.setMilliseconds(0);
|
|
|
|
|
currentDateTime.setSeconds(0);
|
|
|
|
|
currentDateTime.setMinutes(0);
|
2021-02-09 17:10:05 +08:00
|
|
|
ccn_datetimepicker_Set(1, currentDateTime, false);
|
2021-02-08 22:30:01 +08:00
|
|
|
|
|
|
|
|
// time span is 2 hours
|
|
|
|
|
currentDateTime.setHours(currentDateTime.getHours() + 2);
|
2021-02-09 17:10:05 +08:00
|
|
|
ccn_datetimepicker_Set(2, currentDateTime, false);
|
2021-02-08 22:30:01 +08:00
|
|
|
} else {
|
|
|
|
|
// in update mode, match it with original data
|
2021-02-09 17:10:05 +08:00
|
|
|
var originalDateTime = new Date((ccn_event_editingEvent[5] + ccn_event_editingEvent[7]) * 60000);
|
|
|
|
|
ccn_datetimepicker_Set(1, originalDateTime, true);
|
2021-02-08 22:30:01 +08:00
|
|
|
|
2021-02-09 17:10:05 +08:00
|
|
|
originalDateTime = new Date((ccn_event_editingEvent[6] + ccn_event_editingEvent[7]) * 60000);
|
|
|
|
|
ccn_datetimepicker_Set(2, originalDateTime, true);
|
2021-02-08 22:30:01 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// setup timezone here
|
|
|
|
|
// to prevent some error
|
|
|
|
|
// because following isAdd will change its meaning
|
|
|
|
|
$('#ccn-event-timezone-radioKeep').prop('checked', true); // give a default value
|
|
|
|
|
var nowtime = new Date();
|
|
|
|
|
SmarterShowHide(
|
2021-02-09 17:10:05 +08:00
|
|
|
(!isAdd) && (-nowtime.getTimezoneOffset()) != ccn_event_editingEvent[7],
|
2021-02-08 22:30:01 +08:00
|
|
|
$('#ccn-event-boxTimezone')
|
|
|
|
|
);
|
2021-02-08 16:22:04 +08:00
|
|
|
|
2021-02-08 22:30:01 +08:00
|
|
|
// ========================
|
|
|
|
|
// now we need resolve loop rules and set related data
|
|
|
|
|
if (!isAdd) {
|
|
|
|
|
data = ccn_datetime_ResolveLoopRules4UI(ccn_event_editingEvent[8]);
|
|
|
|
|
if (typeof(data) == 'undefined') isAdd = true; // init as add
|
2021-02-08 16:22:04 +08:00
|
|
|
}
|
|
|
|
|
|
2021-02-08 22:30:01 +08:00
|
|
|
// give some value with a default value
|
|
|
|
|
$('#ccn-event-loopMonth-radioA').prop('checked', true);
|
2021-02-09 17:10:05 +08:00
|
|
|
$('#ccn-event-loopWeek-check' + (nowtime.getWeekday() + 1)).prop('checked', true);
|
|
|
|
|
$('#ccn-event-strictMode-radioStrict').prop('checked', true);
|
2021-02-08 22:30:01 +08:00
|
|
|
|
|
|
|
|
// real process
|
2021-02-09 17:10:05 +08:00
|
|
|
if (isAdd) {
|
|
|
|
|
$('#ccn-event-radioLoopNever').prop('checked', true);
|
|
|
|
|
} else {
|
2021-02-08 22:30:01 +08:00
|
|
|
switch(data[0][0]) {
|
|
|
|
|
case 0:
|
|
|
|
|
$('#ccn-event-radioLoopYear').prop('checked', true);
|
|
|
|
|
$('#ccn-event-loopYear-inputSpan').val(data[0][2]);
|
2021-02-09 17:10:05 +08:00
|
|
|
if (data[0][1]) $('#ccn-event-strictMode-radioStrict').prop('checked', true);
|
|
|
|
|
else $('#ccn-event-strictMode-radioRough').prop('checked', true);
|
2021-02-08 22:30:01 +08:00
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
$('#ccn-event-radioLoopMonth').prop('checked', true);
|
|
|
|
|
$('#ccn-event-loopMonth-inputSpan').val(data[0][3]);
|
|
|
|
|
$('#ccn-event-loopMonth-radio' + data[0][2]).prop('checked', true);
|
2021-02-09 17:10:05 +08:00
|
|
|
if (data[0][1]) $('#ccn-event-strictMode-radioStrict').prop('checked', true);
|
|
|
|
|
else $('#ccn-event-strictMode-radioRough').prop('checked', true);
|
2021-02-08 22:30:01 +08:00
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$('#ccn-event-radioLoopWeek').prop('checked', true);
|
|
|
|
|
$('#ccn-event-loopWeek-inputSpan').val(data[0][8]);
|
|
|
|
|
for(var i = 1; i <= 7; i++) {
|
|
|
|
|
$('#ccn-event-loopWeek-check' + i).prop('checked', data[0][i]);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
$('#ccn-event-radioLoopDay').prop('checked', true);
|
|
|
|
|
$('#ccn-event-loopDay-inputSpan').val(data[0][1]);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-02-08 16:22:04 +08:00
|
|
|
|
2021-02-09 17:10:05 +08:00
|
|
|
// give some item a default value
|
|
|
|
|
ccn_datetimepicker_Set(3, nowtime, false);
|
|
|
|
|
|
2021-02-08 22:30:01 +08:00
|
|
|
if (isAdd) {
|
|
|
|
|
$('#ccn-event-loopStop-radioForever').prop('checked', true);
|
|
|
|
|
} else {
|
|
|
|
|
switch(data[1][0]) {
|
|
|
|
|
case 0:
|
|
|
|
|
$('#ccn-event-loopStop-radioForever').prop('checked', true);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
$('#ccn-event-loopStop-radioDateTime').prop('checked', true);
|
2021-02-09 17:10:05 +08:00
|
|
|
var stopDatetime = new Date((data[1][1] + ccn_event_editingEvent[7]) * 60000);
|
|
|
|
|
ccn_datetimepicker_Set(3, stopDatetime, true);
|
2021-02-08 22:30:01 +08:00
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$('#ccn-event-loopStop-radioTimes').prop('checked', true);
|
|
|
|
|
$('#ccn-event-loopStop-inputTimes').val(data[1][1]);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-02-08 16:22:04 +08:00
|
|
|
|
2021-02-08 22:30:01 +08:00
|
|
|
}
|
2021-02-08 16:22:04 +08:00
|
|
|
|
2021-02-08 22:30:01 +08:00
|
|
|
// refresh some ui element according to form options
|
|
|
|
|
function ccn_event_RefreshRadioDiaplay() {
|
|
|
|
|
// loop method
|
|
|
|
|
// note: no loop control loop stop's display
|
|
|
|
|
// note: year and month loop also control strict mode display
|
|
|
|
|
SmarterShowHide(!$('#ccn-event-radioLoopNever').prop('checked'), $('#ccn-event-boxLoopStop'));
|
|
|
|
|
|
|
|
|
|
SmarterShowHide($('#ccn-event-radioLoopDay').prop('checked'), $('#ccn-event-boxLoopDay'));
|
|
|
|
|
SmarterShowHide($('#ccn-event-radioLoopWeek').prop('checked'), $('#ccn-event-boxLoopWeek'));
|
|
|
|
|
SmarterShowHide($('#ccn-event-radioLoopMonth').prop('checked'), $('#ccn-event-boxLoopMonth'));
|
|
|
|
|
SmarterShowHide($('#ccn-event-radioLoopYear').prop('checked'), $('#ccn-event-boxLoopYear'));
|
|
|
|
|
|
|
|
|
|
SmarterShowHide(
|
|
|
|
|
$('#ccn-event-radioLoopMonth').prop('checked') || $('#ccn-event-radioLoopYear').prop('checked'),
|
|
|
|
|
$('#ccn-event-boxStrictMode')
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// loop stop
|
|
|
|
|
SmarterShowHide($('#ccn-event-loopStop-radioForever').prop('checked'), undefined);
|
|
|
|
|
SmarterShowHide($('#ccn-event-loopStop-radioDateTime').prop('checked'), $('#ccn-event-boxLoopStopDateTime'));
|
|
|
|
|
SmarterShowHide($('#ccn-event-loopStop-radioTimes').prop('checked'), $('#ccn-event-boxLoopStopTimes'));
|
2021-02-08 16:22:04 +08:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-08 22:30:01 +08:00
|
|
|
function ccn_event_RefreshLoopMonthType() {
|
2021-02-09 17:10:05 +08:00
|
|
|
var picker = ccn_datetimepicker_Get(1, false);
|
|
|
|
|
var data = ccn_datetime_GetDayInMonth(picker.getFullYear(), picker.getMonth() + 1, picker.getDate());
|
2021-02-08 16:22:04 +08:00
|
|
|
|
2021-02-09 17:10:05 +08:00
|
|
|
$('#ccn-event-loopMonth-textA').text($.i18n.prop('ccn-i18n-event-loopWeek-optionA').format(data[0]));
|
|
|
|
|
$('#ccn-event-loopMonth-textB').text($.i18n.prop('ccn-i18n-event-loopWeek-optionB').format(data[1]));
|
|
|
|
|
$('#ccn-event-loopMonth-textC').text($.i18n.prop('ccn-i18n-event-loopWeek-optionC').format(data[2], data[3] + 1));
|
|
|
|
|
$('#ccn-event-loopMonth-textD').text($.i18n.prop('ccn-i18n-event-loopWeek-optionD').format(data[4], data[5] + 1));
|
2021-02-08 16:22:04 +08:00
|
|
|
}
|
|
|
|
|
|
2021-04-07 15:22:53 +08:00
|
|
|
function ccn_event_UpdateDateTimePickerButton(index) {
|
|
|
|
|
switch(index) {
|
|
|
|
|
case 1:
|
|
|
|
|
$('#ccn-event-btnStartDateTime-text').text(
|
|
|
|
|
ccn_datetimepicker_Get(1, false).toLocaleString()
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$('#ccn-event-btnEndDateTime-text').text(
|
|
|
|
|
ccn_datetimepicker_Get(2, false).toLocaleString()
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
$('#ccn-event-btnLoopStopDateTime-text').text(
|
|
|
|
|
ccn_datetimepicker_Get(3, false).toLocaleDateString()
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-08 16:22:04 +08:00
|
|
|
// return undefined to indicate an error
|
2021-02-09 17:10:05 +08:00
|
|
|
// or
|
|
|
|
|
// [belongTo, title, description, eventDateTimeStart, eventDateTimeEnd, timezoneOffset, loopRules]
|
|
|
|
|
function ccn_event_GetForm() {
|
|
|
|
|
// basic
|
|
|
|
|
var title = $('#ccn-event-inputTitle').val();
|
|
|
|
|
if (title == '') return undefined;
|
|
|
|
|
var description = $('#ccn-event-inputDescription').val();
|
|
|
|
|
if (description == '') return undefined;
|
2021-03-07 21:01:51 +08:00
|
|
|
var color = $('#ccn-event-inputColor').val();
|
|
|
|
|
if (color == '') return undefined;
|
2021-02-09 17:10:05 +08:00
|
|
|
var belongTo = $('#ccn-event-inputCollection').val();
|
|
|
|
|
if (belongTo == null) return undefined; // if no selected item, val return null, not undefined
|
|
|
|
|
|
|
|
|
|
var isAdd = typeof(ccn_event_editingEvent) == 'undefined';
|
|
|
|
|
var keepTimezone = $('#ccn-event-timezone-radioKeep').prop('checked');
|
|
|
|
|
var isStrict = $('#ccn-event-strictMode-radioStrict').prop('checked');
|
|
|
|
|
|
|
|
|
|
// time
|
|
|
|
|
var eventDateTimeStart = undefined;
|
|
|
|
|
var eventDateTimeEnd = undefined;
|
|
|
|
|
var timezoneOffset = undefined;
|
|
|
|
|
if ((!isAdd) && (!keepTimezone)) {
|
|
|
|
|
// get datetime as utc, then minus original timezone to get unix timestamp
|
|
|
|
|
timezoneOffset = ccn_event_editingEvent[7]; // keep timezone
|
|
|
|
|
eventDateTimeStart = Math.floor(ccn_datetimepicker_Get(1, true).getTime() / 60000) - timezoneOffset;
|
|
|
|
|
eventDateTimeEnd = Math.floor(ccn_datetimepicker_Get(2, true).getTime() / 60000) - timezoneOffset;
|
|
|
|
|
} else {
|
|
|
|
|
// use my timezone, resolve presented data as my local time
|
|
|
|
|
var cache = ccn_datetimepicker_Get(1, false);
|
|
|
|
|
timezoneOffset = -cache.getTimezoneOffset();
|
|
|
|
|
eventDateTimeStart = Math.floor(cache.getTime() / 60000);
|
|
|
|
|
eventDateTimeEnd = Math.floor(ccn_datetimepicker_Get(2, false).getTime() / 60000);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// loopRules
|
|
|
|
|
var loopRules = undefined;
|
|
|
|
|
if ($('#ccn-event-radioLoopNever').prop('checked')) {
|
|
|
|
|
loopRules = "";
|
|
|
|
|
} else if ($('#ccn-event-radioLoopDay').prop('checked')) {
|
|
|
|
|
loopRules = "D{0}".format($('#ccn-event-loopDay-inputSpan').val());
|
|
|
|
|
} else if ($('#ccn-event-radioLoopWeek').prop('checked')) {
|
|
|
|
|
var cache = ""
|
|
|
|
|
for(var i = 1; i < 8; i++)
|
|
|
|
|
cache += $('#ccn-event-loopWeek-check' + i).prop('checked') ? 'T' : 'F';
|
|
|
|
|
loopRules = 'W{0}{1}'.format(
|
|
|
|
|
cache,
|
|
|
|
|
$('#ccn-event-loopWeek-inputSpan').val()
|
|
|
|
|
);
|
|
|
|
|
} else if ($('#ccn-event-radioLoopMonth').prop('checked')) {
|
|
|
|
|
var cache = undefined;
|
|
|
|
|
if ($('#ccn-event-loopMonth-radioA').prop('checked')) cache='A';
|
|
|
|
|
else if ($('#ccn-event-loopMonth-radioB').prop('checked')) cache='B';
|
|
|
|
|
else if ($('#ccn-event-loopMonth-radioC').prop('checked')) cache='C';
|
|
|
|
|
else if ($('#ccn-event-loopMonth-radioD').prop('checked')) cache='D';
|
|
|
|
|
else return undefined;
|
|
|
|
|
|
|
|
|
|
loopRules = "M{0}{1}{2}".format(
|
|
|
|
|
isStrict ? "S" : "R",
|
|
|
|
|
cache,
|
|
|
|
|
$('#ccn-event-loopMonth-inputSpan').val()
|
|
|
|
|
);
|
|
|
|
|
} else if ($('#ccn-event-radioLoopYear').prop('checked')) {
|
|
|
|
|
loopRules = "Y{0}{1}".format(
|
|
|
|
|
isStrict ? "S" : "R",
|
2021-03-06 15:29:18 +08:00
|
|
|
$('#ccn-event-loopYear-inputSpan').val()
|
2021-02-09 17:10:05 +08:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// no need to process stop if this is not a loop event
|
|
|
|
|
if (loopRules != "") {
|
|
|
|
|
loopRules += '-';
|
|
|
|
|
if ($('#ccn-event-loopStop-radioForever').prop('checked')) {
|
|
|
|
|
loopRules += 'F';
|
|
|
|
|
} else if ($('#ccn-event-loopStop-radioDateTime').prop('checked')) {
|
|
|
|
|
var timestamp = undefined;
|
|
|
|
|
if ((!isAdd) && (!keepTimezone)) {
|
|
|
|
|
// keep timezone
|
|
|
|
|
var cache = ccn_datetimepicker_Get(3, true);
|
|
|
|
|
cache.setUTCHours(23);
|
|
|
|
|
cache.setUTCMinutes(59);
|
|
|
|
|
timestamp = Math.floor(cache.getTime() / 60000) - timezoneOffset;
|
|
|
|
|
} else {
|
|
|
|
|
// use my timezone
|
|
|
|
|
timestamp = Math.floor(ccn_datetimepicker_Get(3, false).getTime() / 60000);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
loopRules += 'D{0}'.format(timestamp);
|
|
|
|
|
} else if ($('#ccn-event-loopStop-radioTimes').prop('checked')) {
|
|
|
|
|
loopRules += 'T{0}'.format($('#ccn-event-loopStop-inputTimes').val());
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-02-08 16:22:04 +08:00
|
|
|
|
2021-03-07 21:01:51 +08:00
|
|
|
return [
|
|
|
|
|
belongTo,
|
|
|
|
|
title,
|
|
|
|
|
ccn_api_serializeDescription(
|
|
|
|
|
description,
|
|
|
|
|
color
|
|
|
|
|
),
|
|
|
|
|
eventDateTimeStart,
|
|
|
|
|
eventDateTimeEnd,
|
|
|
|
|
timezoneOffset,
|
|
|
|
|
loopRules
|
|
|
|
|
];
|
2021-02-09 17:10:05 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ccn_event_btnSpot() {
|
|
|
|
|
var datetime = ccn_datetimepicker_Get(1, false);
|
|
|
|
|
datetime.setMinutes(datetime.getMinutes() + 1);
|
|
|
|
|
ccn_datetimepicker_Set(2, datetime, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ccn_event_btnFullDay() {
|
|
|
|
|
var datetime = ccn_datetimepicker_Get(1, false);
|
|
|
|
|
datetime.setMinutes(0);
|
|
|
|
|
datetime.setHours(0);
|
|
|
|
|
ccn_datetimepicker_Set(1, datetime, false);
|
|
|
|
|
datetime.setMinutes(59);
|
|
|
|
|
datetime.setHours(23);
|
|
|
|
|
ccn_datetimepicker_Set(2, datetime, false);
|
|
|
|
|
}
|
|
|
|
|
|
2021-04-07 15:22:53 +08:00
|
|
|
function ccn_event_btnDateTimePicker() {
|
|
|
|
|
switch(parseInt($(this).attr('datetimepicker'))) {
|
|
|
|
|
case 1:
|
|
|
|
|
ccn_datetimepicker_Modal(ccn_datetimepicker_tabType.minute, 1, false);
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
ccn_datetimepicker_Modal(ccn_datetimepicker_tabType.minute, 2, false);
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
ccn_datetimepicker_Modal(ccn_datetimepicker_tabType.day, 3, false);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-09 17:10:05 +08:00
|
|
|
function ccn_event_btnCancel() {
|
|
|
|
|
window.location.href = '/web/calendar';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ccn_event_btnSubmit() {
|
|
|
|
|
var submitData = ccn_event_GetForm();
|
|
|
|
|
if (typeof(submitData) == 'undefined') {
|
|
|
|
|
ccn_messagebox_Show($.i18n.prop("ccn-i18n-js-fail-form"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var isAdd = typeof(ccn_event_editingEvent) == 'undefined';
|
|
|
|
|
if (isAdd) {
|
|
|
|
|
var result = ccn_api_calendar_add(
|
|
|
|
|
submitData[0],
|
|
|
|
|
submitData[1],
|
|
|
|
|
submitData[2],
|
|
|
|
|
submitData[3],
|
|
|
|
|
submitData[4],
|
|
|
|
|
submitData[6],
|
|
|
|
|
submitData[5]
|
|
|
|
|
);
|
|
|
|
|
if (typeof(result) == 'undefined') ccn_messagebox_Show($.i18n.prop("ccn-i18n-js-fail-add"));
|
|
|
|
|
else window.location.href = '/web/calendar';
|
|
|
|
|
} else {
|
|
|
|
|
var result = ccn_api_calendar_update(
|
|
|
|
|
ccn_event_editingEvent[0],
|
|
|
|
|
ccn_event_editingEvent[1] == submitData[0] ? undefined : submitData[0],
|
|
|
|
|
ccn_event_editingEvent[2] == submitData[1] ? undefined : submitData[1],
|
|
|
|
|
ccn_event_editingEvent[3] == submitData[2] ? undefined : submitData[2],
|
|
|
|
|
ccn_event_editingEvent[5] == submitData[3] ? undefined : submitData[3],
|
|
|
|
|
ccn_event_editingEvent[6] == submitData[4] ? undefined : submitData[4],
|
|
|
|
|
ccn_event_editingEvent[8] == submitData[6] ? undefined : submitData[6],
|
|
|
|
|
ccn_event_editingEvent[7] == submitData[5] ? undefined : submitData[5],
|
|
|
|
|
ccn_event_editingEvent[4]
|
|
|
|
|
);
|
|
|
|
|
if (typeof(result) == 'undefined') ccn_messagebox_Show($.i18n.prop("ccn-i18n-js-fail-update"));
|
|
|
|
|
else window.location.href = '/web/calendar';
|
|
|
|
|
}
|
2021-02-08 16:22:04 +08:00
|
|
|
}
|
2021-02-08 22:30:01 +08:00
|
|
|
|