From 74e0715ff710297927b455c1e48195ae663b4d72 Mon Sep 17 00:00:00 2001
From: Chris Lamb
Date: Thu, 23 Aug 2012 14:56:41 -0500
Subject: [PATCH 1/3] Ability to hide time and period for drop downs.
---
cron/jquery-cron.js | 49 ++++++++++++++++++++++++---------------------
1 file changed, 26 insertions(+), 23 deletions(-)
diff --git a/cron/jquery-cron.js b/cron/jquery-cron.js
index 8b21e26..6b32579 100644
--- a/cron/jquery-cron.js
+++ b/cron/jquery-cron.js
@@ -91,9 +91,11 @@
closeEffect : "slide",
hideOnMouseOut : true
},
+ periodsShown: ['minute', 'hour', 'day', 'week', 'month', 'year'],
url_set : undefined,
customValues : undefined,
- onChange: undefined // callback function each time value changes
+ onChange: undefined, // callback function each time value changes
+ showTime: true
};
// ------- build some static data -------
@@ -139,23 +141,6 @@
str_opt_dow += "" + days[i] + " \n";
}
- // options for period
- var str_opt_period = "";
- var periods = ["minute", "hour", "day", "week", "month", "year"];
- for (var i = 0; i < periods.length; i++) {
- str_opt_period += "" + periods[i] + " \n";
- }
-
- // display matrix
- var toDisplay = {
- "minute" : [],
- "hour" : ["mins"],
- "day" : ["time"],
- "week" : ["dow", "time"],
- "month" : ["dom", "time"],
- "year" : ["dom", "month", "time"]
- };
-
var combinations = {
"minute" : /^(\*\s){4}\*$/, // "* * * * *"
"hour" : /^\d{1,2}\s(\*\s){3}\*$/, // "? * * * *"
@@ -164,7 +149,7 @@
"month" : /^(\d{1,2}\s){3}\*\s\*$/, // "? ? ? * *"
"year" : /^(\d{1,2}\s){4}\*$/ // "? ? ? ? *"
};
-
+
// ------------------ internal functions ---------------
function defined(obj) {
if (typeof obj == "undefined") { return false; }
@@ -174,7 +159,7 @@
function undefinedOrObject(obj) {
return (!defined(obj) || typeof obj == "object")
}
-
+
function getCronType(cron_str) {
// check format of initial cron value
var valid_cron = /^((\d{1,2}|\*)\s){4}(\d{1,2}|\*)$/
@@ -272,7 +257,24 @@
timeHourOpts : $.extend({}, defaults.timeHourOpts, eo, options.timeHourOpts),
timeMinuteOpts : $.extend({}, defaults.timeMinuteOpts, eo, options.timeMinuteOpts)
});
-
+
+ // options for period
+ var str_opt_period = "";
+ var periods = o.periodsShown
+ for (var i = 0; i < periods.length; i++) {
+ str_opt_period += "" + periods[i] + " \n";
+ }
+
+ // display matrix
+ var toDisplay = {
+ "minute" : [],
+ "hour" : ["mins"],
+ "day" : o.showTime ? ["time"] : [],
+ "week" : o.showTime ? ["dow", "time"] : ["dow"],
+ "month" : o.showTime ? ["dom", "time"] : ["dom"],
+ "year" : o.showTime ? ["dom", "month", "time"] : ["dom", "month"]
+ };
+
// error checking
if (hasError(this, o)) { return this; }
@@ -360,7 +362,7 @@
.end();
this.find("select").bind("change.cron-callback", event_handlers.somethingChanged);
- this.data("options", o).data("block", block); // store options and block pointer
+ this.data("options", o).data("block", block).data("toDisplay", toDisplay); // store options and block pointer
this.data("current_value", o.initial); // remember base value to detect changes
return methods["value"].call(this, o.initial); // set initial value
@@ -384,7 +386,7 @@
};
// update appropriate select boxes
- var targets = toDisplay[t];
+ var targets = this.data("toDisplay")[t];
for (var i = 0; i < targets.length; i++) {
var tgt = targets[i];
if (tgt == "time") {
@@ -415,6 +417,7 @@
periodChanged : function() {
var root = $(this).data("root");
var block = root.data("block"),
+ toDisplay = root.data("toDisplay"),
opt = root.data("options");
var period = $(this).val();
root.find("span.cron-block").hide(); // first, hide all blocks
From 30e42e46ec8753d069f9145e0d7f303bc7c2123c Mon Sep 17 00:00:00 2001
From: Chris Lamb
Date: Thu, 23 Aug 2012 15:47:29 -0500
Subject: [PATCH 2/3] Documentation for displayPeriods and displayTime.
---
cron/jquery-cron.js | 14 +++++++-------
index.html | 46 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 53 insertions(+), 7 deletions(-)
diff --git a/cron/jquery-cron.js b/cron/jquery-cron.js
index 6b32579..42f21fa 100644
--- a/cron/jquery-cron.js
+++ b/cron/jquery-cron.js
@@ -91,11 +91,11 @@
closeEffect : "slide",
hideOnMouseOut : true
},
- periodsShown: ['minute', 'hour', 'day', 'week', 'month', 'year'],
+ displayPeriods: ['minute', 'hour', 'day', 'week', 'month', 'year'],
url_set : undefined,
customValues : undefined,
onChange: undefined, // callback function each time value changes
- showTime: true
+ displayTime: true
};
// ------- build some static data -------
@@ -260,7 +260,7 @@
// options for period
var str_opt_period = "";
- var periods = o.periodsShown
+ var periods = o.displayPeriods
for (var i = 0; i < periods.length; i++) {
str_opt_period += "" + periods[i] + " \n";
}
@@ -269,10 +269,10 @@
var toDisplay = {
"minute" : [],
"hour" : ["mins"],
- "day" : o.showTime ? ["time"] : [],
- "week" : o.showTime ? ["dow", "time"] : ["dow"],
- "month" : o.showTime ? ["dom", "time"] : ["dom"],
- "year" : o.showTime ? ["dom", "month", "time"] : ["dom", "month"]
+ "day" : o.displayTime ? ["time"] : [],
+ "week" : o.displayTime ? ["dow", "time"] : ["dow"],
+ "month" : o.displayTime ? ["dom", "time"] : ["dom"],
+ "year" : o.displayTime ? ["dom", "month", "time"] : ["dom", "month"]
};
// error checking
diff --git a/index.html b/index.html
index 6bcce61..058ed3d 100644
--- a/index.html
+++ b/index.html
@@ -51,6 +51,16 @@
"2 Hours on Weekends" : "0 */2 * * 5,6"
}
});
+ $('#example4').cron({
+ displayPeriods: ['day', 'week', 'month'],
+ });
+ $('#example5').cron({
+ displayPeriods: ['day', 'week', 'month'],
+ displayTime: false,
+ onChange: function() {
+ $('#example5-val').text($(this).cron("value"));
+ }
+ });
});
@@ -308,6 +318,42 @@ Adding custom values
+
+ Removing default periods
+
+ If you do not need certain periods to be displayed in the drop down, you can specify which periods to
+ display with the displayPeriods option.
+
+
+ For example, you can only show day, week, and month periods with the following:
+
+$('#selector').cron({
+ displayPeriods: ['day', 'week', 'month']
+});
+
+
+
+
+ Disabling time selection
+
+ Time selection can also be disabled with the displayTime option. This will only have an effect on the
+ periods that have time selection.
+
+
+ For example, the following disables time selection.
+
+$('#selector').cron({
+ displayPeriods: ['day', 'week', 'month'],
+ displayTime: false
+});
+
+
+
+
Generated cron entry:
+
+
Methods
value
From f7f36cebe56ad442cc811a2b2327284ee4e90425 Mon Sep 17 00:00:00 2001
From: Chris Lamb
Date: Fri, 24 Aug 2012 10:53:20 -0500
Subject: [PATCH 3/3] Documentation for displayPeriods and displayTime.
---
index.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/index.html b/index.html
index 058ed3d..a23a42d 100644
--- a/index.html
+++ b/index.html
@@ -325,7 +325,7 @@ Removing default periods
display with the displayPeriods option.
- For example, you can only show day, week, and month periods with the following:
+ For example, you can limit display periods to day, week, and month with the following:
$('#selector').cron({
displayPeriods: ['day', 'week', 'month']
@@ -342,7 +342,7 @@ Disabling time selection
periods that have time selection.
- For example, the following disables time selection.
+ For example, the following disables time selection:
$('#selector').cron({
displayPeriods: ['day', 'week', 'month'],