/*+***********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
*************************************************************************************/
Settings_Workflows_Edit_Js("Settings_Workflows_Edit1_Js",{},{
init : function() {
this.initialize();
},
/**
* Function to get the container which holds all the reports step1 elements
* @return jQuery object
*/
getContainer : function() {
return this.step1Container;
},
/**
* Function to set the reports step1 container
* @params : element - which represents the reports step1 container
* @return : current instance
*/
setContainer : function(element) {
this.step1Container = element;
return this;
},
/**
* Function to intialize the reports step1
*/
initialize : function(container) {
if(typeof container == 'undefined') {
container = jQuery('#workflow_step1');
}
if(container.is('#workflow_step1')) {
this.setContainer(container);
}else{
this.setContainer(jQuery('#workflow_step1'));
}
},
submit : function(){
var aDeferred = jQuery.Deferred();
var form = this.getContainer();
var formData = form.serializeFormData();
var progressIndicatorElement = jQuery.progressIndicator({
'position' : 'html',
'blockInfo' : {
'enabled' : true
}
});
AppConnector.request(formData).then(
function(data) {
form.hide();
progressIndicatorElement.progressIndicator({
'mode' : 'hide'
})
aDeferred.resolve(data);
},
function(error,err){
}
);
return aDeferred.promise();
},
/**
* Function to register event for scheduled workflows UI
*/
registerEventForScheduledWorkflow : function() {
var thisInstance = this;
jQuery('input[name="execution_condition"]').on('click', function(e) {
var element = jQuery(e.currentTarget);
var scheduleBoxContainer = jQuery('#scheduleBox');
if(element.is(':checked') && element.val() == '6') { //for scheduled workflows
scheduleBoxContainer.removeClass('hide');
} else {
scheduleBoxContainer.addClass('hide');
}
});
app.registerEventForTimeFields('#schtime', true);
app.registerEventForDatePickerFields('#scheduleByDate', true);
jQuery('#annualDates').chosen();
jQuery('#schdayofweek').chosen();
jQuery('#schdayofmonth').chosen();
var currentYear = new Date().getFullYear();
jQuery('#annualDatePicker').datepick({autoSize: true, multiSelect:100,monthsToShow: [1,2],
minDate: '01/01/'+currentYear, maxDate: '12/31/'+currentYear,
yearRange: currentYear+':'+currentYear,
onShow : function() {
//Hack to remove the year
thisInstance.removeYearInAnnualWorkflow();
},
onSelect : function(dates) {
var datesInfo = [];
var values = [];
var html='';
// reset the annual dates
var annualDatesEle = jQuery('#annualDates');
thisInstance.updateAnnualDates(annualDatesEle);
for(index in dates) {
var date = dates[index];
datesInfo.push({
id:thisInstance.DateToYMD(date),
text:thisInstance.DateToYMD(date)
});
values.push(thisInstance.DateToYMD(date));
html += '';
}
annualDatesEle.append(html);
annualDatesEle.trigger("liszt:updated");
}
});
var annualDatesEle = jQuery('#annualDates');
thisInstance.updateAnnualDates(annualDatesEle);
annualDatesEle.trigger("liszt:updated");
},
removeYearInAnnualWorkflow : function() {
setTimeout(function() {
var year = jQuery('.datepick-month.first').find('.datepick-month-year').get(1);
jQuery(year).hide();
var monthHeaders = $('.datepick-month-header');
jQuery.each(monthHeaders, function( key, ele ) {
var header = jQuery(ele);
var str = header.html().replace(/[\d]+/, '');
header.html(str);
});
},100);
},
updateAnnualDates : function(annualDatesEle) {
annualDatesEle.html('');
var annualDatesJSON = jQuery('#hiddenAnnualDates').val();
if(annualDatesJSON) {
var hiddenDates = '';
var annualDates = JSON.parse(annualDatesJSON);
for(j in annualDates) {
hiddenDates += '';
}
annualDatesEle.html(hiddenDates);
}
},
DateToYMD : function (date) {
var year, month, day;
year = String(date.getFullYear());
month = String(date.getMonth() + 1);
if (month.length == 1) {
month = "0" + month;
}
day = String(date.getDate());
if (day.length == 1) {
day = "0" + day;
}
return year + "-" + month + "-" + day;
},
registerEventForChangeInScheduledType : function() {
var thisInstance = this;
jQuery('#schtypeid').on('change', function(e){
var element = jQuery(e.currentTarget);
var value = element.val();
thisInstance.showScheduledTime();
thisInstance.hideScheduledWeekList();
thisInstance.hideScheduledMonthByDateList();
thisInstance.hideScheduledSpecificDate();
thisInstance.hideScheduledAnually();
if(value == '1') { //hourly
thisInstance.hideScheduledTime();
} else if(value == '3') { //weekly
thisInstance.showScheduledWeekList();
} else if(value == '4') { //specific date
thisInstance.showScheduledSpecificDate();
} else if(value == '5') { //monthly by day
thisInstance.showScheduledMonthByDateList();
} else if(value == '7') {
thisInstance.showScheduledAnually();
}
});
},
hideScheduledTime : function() {
jQuery('#scheduledTime').addClass('hide');
},
showScheduledTime : function() {
jQuery('#scheduledTime').removeClass('hide');
},
hideScheduledWeekList : function() {
jQuery('#scheduledWeekDay').addClass('hide');
},
showScheduledWeekList : function() {
jQuery('#scheduledWeekDay').removeClass('hide');
},
hideScheduledMonthByDateList : function() {
jQuery('#scheduleMonthByDates').addClass('hide');
},
showScheduledMonthByDateList : function() {
jQuery('#scheduleMonthByDates').removeClass('hide');
},
hideScheduledSpecificDate : function() {
jQuery('#scheduleByDate').addClass('hide');
},
showScheduledSpecificDate : function() {
jQuery('#scheduleByDate').removeClass('hide');
},
hideScheduledAnually : function() {
jQuery('#scheduleAnually').addClass('hide');
},
showScheduledAnually : function() {
jQuery('#scheduleAnually').removeClass('hide');
},
registerEvents : function(){
var container = this.getContainer();
//After loading 1st step only, we will enable the Next button
container.find('[type="submit"]').removeAttr('disabled');
var opts = app.validationEngineOptions;
// to prevent the page reload after the validation has completed
opts['onValidationComplete'] = function(form,valid) {
//returns the valid status
return valid;
};
opts['promptPosition'] = "bottomRight";
container.validationEngine(opts);
this.registerEventForScheduledWorkflow();
this.registerEventForChangeInScheduledType();
}
});