|
42 | 42 |
|
43 | 43 | var defaults = {
|
44 | 44 | initial : "* * * * *",
|
| 45 | + readOnly: false, |
45 | 46 | minuteOpts : {
|
46 | 47 | minWidth : 100, // Only applies if columns and itemWidth not set.
|
47 | 48 | itemWidth : 30,
|
|
91 | 92 | closeEffect : "slide",
|
92 | 93 | hideOnMouseOut : true
|
93 | 94 | },
|
94 |
| - url_set : undefined, |
95 | 95 | customValues : undefined,
|
96 | 96 | onChange: undefined
|
97 | 97 | };
|
|
100 | 100 | var str_opt_mih = "";
|
101 | 101 | for (var i = 0; i < 60; i++) {
|
102 | 102 | var j = (i < 10)? "0":"";
|
103 |
| - str_opt_mih += "<option value='"+i+"'>" + j + i + "</option>\n"; |
| 103 | + str_opt_mih += "<option value='" + i + "'>" + j + i + "</option>\n"; |
104 | 104 | }
|
105 | 105 |
|
106 | 106 | // Options for hours in a day,
|
|
117 | 117 | else if (i == 2 || i == 22) { var suffix = "nd"; }
|
118 | 118 | else if (i == 3 || i == 23) { var suffix = "rd"; }
|
119 | 119 | else { var suffix = "th"; }
|
120 |
| - str_opt_dom += "<option value='"+i+"'>" + i + suffix + "</option>\n"; |
| 120 | + str_opt_dom += "<option value='" + i + "'>" + i + suffix + "</option>\n"; |
121 | 121 | }
|
122 | 122 |
|
123 | 123 | // Options for months.
|
|
126 | 126 | "May", "June", "July", "August",
|
127 | 127 | "September", "October", "November", "December"];
|
128 | 128 | for (var i = 0; i < months.length; i++) {
|
129 |
| - str_opt_month += "<option value='"+(i+1)+"'>" + months[i] + "</option>\n"; |
| 129 | + str_opt_month += "<option value='" + (i + 1) + "'>" + months[i] + "</option>\n"; |
130 | 130 | }
|
131 | 131 |
|
132 | 132 | // Options for day of week.
|
133 | 133 | var str_opt_dow = "";
|
134 | 134 | var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
|
135 | 135 | "Friday", "Saturday"];
|
136 | 136 | for (var i = 0; i < days.length; i++) {
|
137 |
| - str_opt_dow += "<option value='"+i+"'>" + days[i] + "</option>\n"; |
| 137 | + str_opt_dow += "<option value='" + i + "'>" + days[i] + "</option>\n"; |
138 | 138 | }
|
139 | 139 |
|
140 | 140 | // Options for period.
|
141 | 141 | var str_opt_period = "";
|
142 | 142 | var periods = ["minute", "hour", "day", "week", "month", "year"];
|
143 | 143 | for (var i = 0; i < periods.length; i++) {
|
144 |
| - str_opt_period += "<option value='"+periods[i]+"'>" + periods[i] + "</option>\n"; |
| 144 | + str_opt_period += "<option value='" + periods[i] + "'>" + periods[i] + "</option>\n"; |
145 | 145 | }
|
146 | 146 |
|
147 | 147 | // Display matrix.
|
|
235 | 235 | return false;
|
236 | 236 | }
|
237 | 237 |
|
238 |
| - function getCurrentValue(c) { |
239 |
| - var block = c.data("block"); |
240 |
| - var min = hour = day = month = dow = "*"; |
| 238 | + function getCurrentValue($el) { |
| 239 | + var min, hour, day, month, dow; |
| 240 | + min = hour = day = month = dow = "*"; |
| 241 | + |
| 242 | + var block = $el.data("block"); |
241 | 243 | var selectedPeriod = block["period"].find("select").val();
|
| 244 | + |
242 | 245 | switch (selectedPeriod) {
|
243 | 246 | case "minute":
|
244 | 247 | break;
|
|
286 | 289 | var methods = {
|
287 | 290 | init : function(opts) {
|
288 | 291 | // Init options.
|
289 |
| - var options = opts ? opts : {}; // Default to empty obj. |
| 292 | + var options = opts ? opts : {}; |
290 | 293 | var o = $.extend([], defaults, options);
|
291 |
| - var eo = $.extend({}, defaults.effectOpts, options.effectOpts); |
| 294 | + var ro = { readOnly: o.readOnly }; |
| 295 | + var eo = $.extend({}, defaults.effectOpts, options.effectOpts, ro); |
292 | 296 | $.extend(o, {
|
293 |
| - minuteOpts : $.extend({}, defaults.minuteOpts, eo, options.minuteOpts), |
294 |
| - domOpts : $.extend({}, defaults.domOpts, eo, options.domOpts), |
295 |
| - monthOpts : $.extend({}, defaults.monthOpts, eo, options.monthOpts), |
296 |
| - dowOpts : $.extend({}, defaults.dowOpts, eo, options.dowOpts), |
297 |
| - timeHourOpts : $.extend({}, defaults.timeHourOpts, eo, options.timeHourOpts), |
298 |
| - timeMinuteOpts : $.extend({}, defaults.timeMinuteOpts, eo, options.timeMinuteOpts) |
| 297 | + minuteOpts : $.extend({}, defaults.minuteOpts, eo, ro, options.minuteOpts), |
| 298 | + domOpts : $.extend({}, defaults.domOpts, eo, ro, options.domOpts), |
| 299 | + monthOpts : $.extend({}, defaults.monthOpts, eo, ro, options.monthOpts), |
| 300 | + dowOpts : $.extend({}, defaults.dowOpts, eo, ro, options.dowOpts), |
| 301 | + timeHourOpts : $.extend({}, defaults.timeHourOpts, eo, ro, options.timeHourOpts), |
| 302 | + timeMinuteOpts : $.extend({}, defaults.timeMinuteOpts, eo, ro, options.timeMinuteOpts) |
299 | 303 | });
|
300 | 304 |
|
301 | 305 | // Prepend custom values if specified.
|
|
412 | 416 | this.data("block", block);
|
413 | 417 | this.data("blockBefore", blockBefore);
|
414 | 418 | this.data("blockAfter", blockAfter);
|
415 |
| - this.data("current_value", o.initial); // Remember base value to detect changes. |
| 419 | + this.data("initialized", false); |
416 | 420 |
|
417 |
| - return methods["value"].call(this, o.initial); // Set initial value. |
| 421 | + return methods.value.call(this, o.initial); // Set initial value. |
418 | 422 | },
|
419 | 423 |
|
420 | 424 | value : function(cron_str) {
|
|
424 | 428 | var t = getCronType(cron_str);
|
425 | 429 | if (!defined(t)) { return false; }
|
426 | 430 |
|
| 431 | + // Do not set the value if read-only unless the cron has not yet been initialized. |
| 432 | + var initialized = this.data('initialized'); |
| 433 | + var opts = this.data('options'); |
| 434 | + if (initialized && opts.readOnly) { return false; } |
| 435 | + |
427 | 436 | var block = this.data('block');
|
428 | 437 | var d = cron_str.split(' ');
|
429 | 438 | var v = {
|
|
474 | 483 | .gentleSelect('update')
|
475 | 484 | .trigger('change');
|
476 | 485 |
|
| 486 | + // Cron has been initialized. |
| 487 | + this.data("initialized", true); |
| 488 | + |
477 | 489 | return this;
|
478 | 490 | }
|
479 | 491 | };
|
480 | 492 |
|
481 | 493 | var event_handlers = {
|
482 | 494 | periodChanged : function() {
|
483 |
| - var root = $(this).data("root"); |
| 495 | + var root = $(this).data('root'); |
| 496 | + var initialized = root.data('initialized'); |
| 497 | + var opts = root.data('options'); |
| 498 | + |
| 499 | + if (initialized && opts.readOnly) { return; } |
| 500 | + |
484 | 501 | var blockBefore = root.data("blockBefore");
|
485 | 502 | var blockAfter = root.data("blockAfter");
|
486 | 503 | var block = root.data("block");
|
487 |
| - var opt = root.data("options"); |
488 | 504 | var period = $(this).val();
|
| 505 | + |
489 | 506 | root.find(".cron-block").hide(); // First, hide all blocks.
|
490 | 507 | if (toDisplay.hasOwnProperty(period)) {
|
491 | 508 | // Only if not a custom value.
|
|
0 commit comments