angular-cron-jobs
Version:
UI Component For Creating Cron Job Syntax To Send To Server
228 lines (205 loc) • 8.69 kB
JavaScript
;
angular.module('angular-cron-jobs')
.value('baseFrequency', {
minute: 1,
hour: 2,
day: 3,
week: 4,
month: 5,
year: 6
})
.factory('cronService', ['baseFrequency', function(baseFrequency) {
var service = {};
service.setCron = function(n, cronType) {
if(cronType === "quartz") {
return this.setQuartzCron(n);
} else {
return this.setDefaultCron(n);
}
};
service.setQuartzCron = function(n){
var cron = ["0", "*", "*", "*", "*", "?"];
if(n && n.base && n.base >= baseFrequency.hour) {
cron[1] = typeof n.minuteValues !== "undefined" ? n.minuteValues : "0";
}
if(n && n.base && n.base >= baseFrequency.day) {
cron[2] = typeof n.hourValues !== "undefined" ? n.hourValues : "*";
}
if(n && n.base && n.base === baseFrequency.week) {
cron[3] = "?";
cron[5] = n.dayValues;
}
if(n && n.base && n.base >= baseFrequency.month) {
cron[3] = typeof n.dayOfMonthValues !== "undefined" ? n.dayOfMonthValues : "?";
}
if(n && n.base && n.base === baseFrequency.year) {
cron[4] = typeof n.monthValues !== "undefined" ? n.monthValues : "*";
}
return cron.join(" ");
};
service.setDefaultCron = function(n){
var cron = ["*", "*", "*", "*", "*"];
if (n && n.base && n.base >= baseFrequency.hour) {
cron[0] = typeof n.minuteValues !== "undefined" ? n.minuteValues : "*";
}
if (n && n.base && n.base >= baseFrequency.day) {
cron[1] = typeof n.hourValues !== "undefined" ? n.hourValues : "*";
}
if (n && n.base && n.base === baseFrequency.week) {
cron[4] = n.dayValues;
}
if (n && n.base && n.base >= baseFrequency.month) {
cron[2] = typeof n.dayOfMonthValues !== "undefined" ? n.dayOfMonthValues : "*";
}
if (n && n.base && n.base === baseFrequency.year) {
cron[3] = typeof n.monthValues !== "undefined" ? n.monthValues : "*";
}
return cron.join(" ");
};
service.fromCron = function(value, allowMultiple, cronType) {
if(cronType === "quartz") {
return this.fromQuartzCron(value, allowMultiple);
} else {
return this.fromDefaultCron(value, allowMultiple);
}
};
service.fromDefaultCron = function(value, allowMultiple) {
var cron = value.replace(/\s+/g, " ").split(" ");
var frequency = { base: "1" }; // default: every minute
var tempArray = [];
if (cron[0] === "*" && cron[1] === "*" && cron[2] === "*" && cron[3] === "*" && cron[4] === "*") {
frequency.base = baseFrequency.minute; // every minute
} else if (cron[1] === "*" && cron[2] === "*" && cron[3] === "*" && cron[4] === "*") {
frequency.base = baseFrequency.hour; // every hour
} else if (cron[2] === "*" && cron[3] === "*" && cron[4] === "*") {
frequency.base = baseFrequency.day; // every day
} else if (cron[2] === "*" && cron[3] === "*") {
frequency.base = baseFrequency.week; // every week
} else if (cron[3] === "*" && cron[4] === "*") {
frequency.base = baseFrequency.month; // every month
} else if (cron[4] === "*") {
frequency.base = baseFrequency.year; // every year
}
if (cron[0] !== "*") {
//preparing to handle multiple minutes
if (allowMultiple) {
tempArray = cron[0].split(',');
for (var i = 0; i < tempArray.length; i++) { tempArray[i] = +tempArray[i]; }
frequency.minuteValues = tempArray;
} else {
frequency.minuteValues = parseInt(cron[0]);
}
}
if (cron[1] !== "*") {
//preparing to handle multiple hours
if (allowMultiple) {
tempArray = cron[1].split(",");
for (var i = 0; i < tempArray.length; i++) { tempArray[i] = +tempArray[i]; }
frequency.hourValues = tempArray;
} else {
frequency.hourValues = parseInt(cron[1]);
}
}
if (cron[2] !== "*") {
//preparing to handle multiple days of the month
if (allowMultiple) {
tempArray = cron[2].split(",");
for (var i = 0; i < tempArray.length; i++) { tempArray[i] = +tempArray[i]; }
frequency.dayOfMonthValues = tempArray;
} else {
frequency.dayOfMonthValues = parseInt(cron[2]);
}
}
if (cron[3] !== "*") {
//preparing to handle multiple months
if (allowMultiple) {
tempArray = cron[3].split(",");
for (var i = 0; i < tempArray.length; i++) { tempArray[i] = +tempArray[i]; }
frequency.monthValues = tempArray;
} else {
frequency.monthValues = parseInt(cron[3]);
}
}
if (cron[4] !== "*") {
//preparing to handle multiple days of the week
if (allowMultiple) {
tempArray = cron[4].split(",");
for (var i = 0; i < tempArray.length; i++) { tempArray[i] = +tempArray[i]; }
frequency.dayValues = tempArray;
} else {
frequency.dayValues = parseInt(cron[4]);
}
}
return frequency;
};
service.fromQuartzCron = function(value, allowMultiple) {
var cron = value.replace(/\s+/g, " ").split(" ");
var frequency = {base: "1"}; // default: every minute
var tempArray = [];
if(cron[1] === "*" && cron[2] === "*" && cron[3] === "*" && cron[4] === "*" && cron[5] === "?") {
frequency.base = 1; // every minute
} else if(cron[2] === "*" && cron[3] === "*" && cron[4] === "*" && cron[5] === "?") {
frequency.base = 2; // every hour
} else if(cron[3] === "*" && cron[4] === "*" && cron[5] === "?") {
frequency.base = 3; // every day
} else if(cron[3] === "?") {
frequency.base = 4; // every week
} else if(cron[4] === "*" && cron[5] === "?") {
frequency.base = 5; // every month
} else if(cron[5] === "?") {
frequency.base = 6; // every year
}
if (cron[1] !== "*") {
//preparing to handle multiple minutes
if (allowMultiple) {
tempArray = cron[1].split(",");
for (var i = 0; i < tempArray.length; i++) { tempArray[i] = +tempArray[i]; }
frequency.minuteValues = tempArray;
} else {
frequency.minuteValues = parseInt(cron[1]);
}
}
if (cron[2] !== "*") {
//preparing to handle multiple hours
if (allowMultiple) {
tempArray = cron[2].split(",");
for (var i = 0; i < tempArray.length; i++) { tempArray[i] = +tempArray[i]; }
frequency.hourValues = tempArray;
} else {
frequency.hourValues = parseInt(cron[2]);
}
}
if (cron[3] !== "*" && cron[3] !== "?") {
//preparing to handle multiple days of the month
if (allowMultiple) {
tempArray = cron[3].split(",");
for (var i = 0; i < tempArray.length; i++) { tempArray[i] = +tempArray[i]; }
frequency.dayOfMonthValues = tempArray;
} else {
frequency.dayOfMonthValues = parseInt(cron[3]);
}
}
if (cron[4] !== "*") {
//preparing to handle multiple months
if (allowMultiple) {
tempArray = cron[4].split(",");
for (var i = 0; i < tempArray.length; i++) { tempArray[i] = +tempArray[i]; }
frequency.monthValues = tempArray;
} else {
frequency.monthValues = parseInt(cron[4]);
}
}
if (cron[5] !== "*" && cron[5] !== "?") {
//preparing to handle multiple days of the week
if (allowMultiple) {
tempArray = cron[5].split(",");
for (var i = 0; i < tempArray.length; i++) { tempArray[i] = +tempArray[i]; }
frequency.dayValues = tempArray;
} else {
frequency.dayValues = parseInt(cron[5]);
}
}
return frequency;
};
return service;
}]);