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 += "\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 += "\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 += "\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 += "\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'],