mirror of
https://github.com/VTECRM/vtenext.git
synced 2026-02-26 16:18:47 +00:00
114 lines
3.1 KiB
JavaScript
114 lines
3.1 KiB
JavaScript
/*************************************
|
|
* SPDX-FileCopyrightText: 2009-2020 Vtenext S.r.l. <info@vtenext.com>
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
************************************/
|
|
function VTCreateTodoTask($){
|
|
|
|
var map = fn.map;
|
|
var dict = fn.dict;
|
|
var filter = fn.filter;
|
|
var reduceR = fn.reduceR;
|
|
var parallelExecuter = fn.parallelExecuter;
|
|
var contains = fn.contains;
|
|
var concat = fn.concat;
|
|
|
|
|
|
function parse12HoursTime(timeStr){
|
|
var hours;
|
|
|
|
var match = timeStr.match(/(\d\d):(\d\d)(am|pm)/);
|
|
if(match[3]=='am'){
|
|
hours = parseInt(match[1], 10) % 12;
|
|
}else{
|
|
hours = parseInt(match[1], 10) % 12 + 12;
|
|
}
|
|
return hours*60+parseInt(match[2], 10);
|
|
}
|
|
|
|
function errorDialog(message){
|
|
alert(message);
|
|
}
|
|
|
|
function index(arr, field){
|
|
return dict(map(function(e){return [e[field], e];}, arr));
|
|
}
|
|
|
|
function handleError(fn){
|
|
return function(status, result){
|
|
if(status){
|
|
fn(result);
|
|
}else{
|
|
errorDialog('Failure:'+result);
|
|
}
|
|
};
|
|
}
|
|
|
|
function fillPicklist(picklistId, fieldInfo, defaultValue){
|
|
var values = fieldInfo['type']['picklistValues'];
|
|
var select = $('#'+picklistId);
|
|
$.each(values, function(i, v){
|
|
select.append('<option value="'+v['value']+'">'+v['label']+'</option>');
|
|
});
|
|
if(defaultValue!=''){
|
|
select.val(defaultValue);
|
|
} else{
|
|
select.val(values[0]['value']);
|
|
}
|
|
}
|
|
|
|
var validateDateRange = {
|
|
init: function(){
|
|
|
|
},
|
|
validator: function(){
|
|
var result;
|
|
var successResult = [true];
|
|
var failureResult = [false, 'invalid_date_range_message', []];
|
|
if(this.fieldValue('startDatefield') == this.fieldValue('endDatefield')){
|
|
var startTime = this.fieldValue('startTime');
|
|
var endTime = this.fieldValue('endTime');
|
|
var startDays = parseInt(this.fieldValue('startDays'), 10);
|
|
var endDays = parseInt(this.fieldValue('endDays'), 10);
|
|
var startDirection = this.fieldValue('startDirection')=="After"?1:-1;
|
|
var endDirection = this.fieldValue('endDirection')=="After"?1:-1;
|
|
var dd = endDays*endDirection - startDays*startDirection;
|
|
if(dd<0){
|
|
result = failureResult;
|
|
}else if(dd==0){
|
|
if(parse12HoursTime(startTime)>=parse12HoursTime(endTime)){ //crmv@102577
|
|
result = failureResult;
|
|
}else{
|
|
result = successResult;
|
|
}
|
|
}else{
|
|
result = successResult;
|
|
}
|
|
}else{
|
|
result = successResult;
|
|
}
|
|
return result;
|
|
}
|
|
};
|
|
|
|
var vtinst = new VtenextWebservices("webservice.php");
|
|
vtinst.extendSession(handleError(function(result){
|
|
$(document).ready(function(){
|
|
//Setup the validator
|
|
validator.addValidator('validateDateRange', validateDateRange);
|
|
validator.mandatoryFields.push('eventName');
|
|
|
|
vtinst.describeObject('Events', handleError(function(result){
|
|
var fields = result['fields'];
|
|
var fieldsMap = index(fields, 'name');
|
|
fillPicklist('event_status', fieldsMap['eventstatus'], eventStatus);
|
|
$('#event_status_busyicon').hide();
|
|
$('#event_status').show();
|
|
|
|
fillPicklist('event_type', fieldsMap['activitytype'], eventType);
|
|
$('#event_type_busyicon').hide();
|
|
$('#event_type').show();
|
|
}));
|
|
});
|
|
}));
|
|
}
|
|
VTCreateTodoTask(jQuery); |