diff --git a/README.md b/README.md index 8d526d9e..e00e93b0 100644 --- a/README.md +++ b/README.md @@ -127,6 +127,9 @@ Options include: ```coffeescript $.fn.recurring_select.options = { + hourly: { + enable: true //enable hourly option - disabled by default + }, monthly: { show_week: [true, true, true, true, false, false] //display week 1, 2 .... Last } diff --git a/app/assets/javascripts/recurring_select.js.coffee b/app/assets/javascripts/recurring_select.js.coffee index d4932139..685222a0 100644 --- a/app/assets/javascripts/recurring_select.js.coffee +++ b/app/assets/javascripts/recurring_select.js.coffee @@ -74,6 +74,9 @@ $.fn.recurring_select = (method) -> $.error( "Method #{method} does not exist on jQuery.recurring_select" ); $.fn.recurring_select.options = { + hourly: { + enable: false + }, monthly: { show_week: [true, true, true, true, false, false] } @@ -84,11 +87,13 @@ $.fn.recurring_select.texts = { repeat: "Repeat" last_day: "Last Day" frequency: "Frequency" + hourly: "Hourly" daily: "Daily" weekly: "Weekly" monthly: "Monthly" yearly: "Yearly" every: "Every" + hours: "hour(s)" days: "day(s)" weeks_on: "week(s) on" months: "month(s)" diff --git a/app/assets/javascripts/recurring_select_dialog.js.coffee.erb b/app/assets/javascripts/recurring_select_dialog.js.coffee.erb index 6cf340c3..2c9f0276 100644 --- a/app/assets/javascripts/recurring_select_dialog.js.coffee.erb +++ b/app/assets/javascripts/recurring_select_dialog.js.coffee.erb @@ -73,20 +73,32 @@ window.RecurringSelectDialog = freqInit: -> @freq_select = @outer_holder.find ".rs_frequency" + hourly_option_enabled = $.fn.recurring_select.options["hourly"]["enable"] if @current_rule.hash? && (rule_type = @current_rule.hash.rule_type)? - if rule_type.search(/Weekly/) != -1 - @freq_select.prop('selectedIndex', 1) + if rule_type.search(/Hourly/) != -1 + @freq_select.prop('selectedIndex', 0) + @initHourlyOptions() + else if rule_type.search(/Weekly/) != -1 + @freq_select.prop('selectedIndex', if hourly_option_enabled then 2 else 1) @initWeeklyOptions() else if rule_type.search(/Monthly/) != -1 - @freq_select.prop('selectedIndex', 2) + @freq_select.prop('selectedIndex', if hourly_option_enabled then 3 else 2) @initMonthlyOptions() else if rule_type.search(/Yearly/) != -1 - @freq_select.prop('selectedIndex', 3) + @freq_select.prop('selectedIndex', if hourly_option_enabled then 4 else 3) @initYearlyOptions() else + @freq_select.prop('selectedIndex', if hourly_option_enabled then 1 else 0) @initDailyOptions() @freq_select.on "change", @freqChanged + initHourlyOptions: -> + section = @content.find('.hourly_options') + interval_input = section.find('.rs_hourly_interval') + interval_input.val(@current_rule.hash.interval) + interval_input.on "change keyup", @intervalChanged + section.show() + initDailyOptions: -> section = @content.find('.daily_options') interval_input = section.find('.rs_daily_interval') @@ -233,6 +245,10 @@ window.RecurringSelectDialog = @content.find(".freq_option_section").hide(); @content.find("input[type=radio], input[type=checkbox]").prop("checked", false) switch @freq_select.val() + when "Hourly" + @current_rule.hash.rule_type = "IceCube::HourlyRule" + @current_rule.str = $.fn.recurring_select.texts["hourly"] + @initHourlyOptions() when "Weekly" @current_rule.hash.rule_type = "IceCube::WeeklyRule" @current_rule.str = $.fn.recurring_select.texts["weekly"] @@ -309,27 +325,41 @@ window.RecurringSelectDialog =

-

- -
-

- #{$.fn.recurring_select.texts["every"]} - - #{$.fn.recurring_select.texts["days"]} -

-
-
-

- #{$.fn.recurring_select.texts["every"]} - - #{$.fn.recurring_select.texts["weeks_on"]}: -

-
+ " + if $.fn.recurring_select.options["hourly"]["enable"] is true + str += "" + + str += " + + + + +

+ " + if $.fn.recurring_select.options["hourly"]["enable"] is true + str += "
+

+ #{$.fn.recurring_select.texts["every"]} + + #{$.fn.recurring_select.texts["hours"]} +

+
+ " + + str += "
+

+ #{$.fn.recurring_select.texts["every"]} + + #{$.fn.recurring_select.texts["days"]} +

+
+
+

+ #{$.fn.recurring_select.texts["every"]} + + #{$.fn.recurring_select.texts["weeks_on"]}: +

+
" for day_of_week in [$.fn.recurring_select.texts["first_day_of_week"]...(7 + $.fn.recurring_select.texts["first_day_of_week"])] day_of_week = day_of_week % 7 diff --git a/spec/dummy/app/assets/javascripts/application.js b/spec/dummy/app/assets/javascripts/application.js index 4d3fda77..8f29fecf 100644 --- a/spec/dummy/app/assets/javascripts/application.js +++ b/spec/dummy/app/assets/javascripts/application.js @@ -10,6 +10,9 @@ //= require_tree . $.fn.recurring_select.options = { + hourly: { + enable: true + }, monthly: { show_week: [true, true, true, true, true, true] }