input_calendar 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/input_calendar/version.rb +1 -1
- data/src/calendar.coffee +12 -5
- data/vendor/assets/javascripts/input_calendar.js +48 -15
- metadata +5 -5
data/src/calendar.coffee
CHANGED
@@ -99,15 +99,22 @@ class @Calendar
|
|
99
99
|
classes.push("othermonth") if date.getMonth() != month
|
100
100
|
classes.push("today") if date.same_as(new Date())
|
101
101
|
classes.push("selected") if date.same_as(@date)
|
102
|
-
"<td class='#{classes.join(" ")}'><a data-date='#{
|
102
|
+
"<td class='#{classes.join(" ")}'><a data-date='#{@toDateString(date)}' href='#'>#{date.getDate()}</a></td>"
|
103
|
+
|
104
|
+
toDateString: (date) ->
|
105
|
+
month = date.getMonth()
|
106
|
+
day = date.getDate()
|
107
|
+
month = if month < 10 then "0#{month}" else month
|
108
|
+
day = if day < 10 then "0#{day}" else day
|
109
|
+
"#{date.getFullYear()}-#{month}-#{day}"
|
103
110
|
|
104
111
|
clicked: (event) ->
|
105
112
|
o=$(event.target)
|
106
113
|
o=o.children("A") if o[0].tagName=="TD"
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
@field.val(
|
114
|
+
args = o.data("date").split("-")
|
115
|
+
@date = new Date(args...)
|
116
|
+
# stuff the raw value in the value field
|
117
|
+
@field.val(o.data("date"))
|
111
118
|
@element.find(".selected").removeClass "selected"
|
112
119
|
o.parent().addClass("selected")
|
113
120
|
@element.find(".selectedtext").html @generateFooter()
|
@@ -1,3 +1,4 @@
|
|
1
|
+
// Generated by CoffeeScript 1.3.3
|
1
2
|
(function() {
|
2
3
|
var $, DateHelper, dh;
|
3
4
|
|
@@ -10,7 +11,9 @@
|
|
10
11
|
this.id = id;
|
11
12
|
this.field = field;
|
12
13
|
this.options = options != null ? options : {};
|
13
|
-
if (!this.field.jquery)
|
14
|
+
if (!this.field.jquery) {
|
15
|
+
this.field = $("#" + this.field);
|
16
|
+
}
|
14
17
|
if (this.id != null) {
|
15
18
|
this.element = $("#" + this.id);
|
16
19
|
} else {
|
@@ -34,7 +37,9 @@
|
|
34
37
|
};
|
35
38
|
|
36
39
|
Calendar.prototype.getDateFromField = function() {
|
37
|
-
if (this.field.val() === "")
|
40
|
+
if (this.field.val() === "") {
|
41
|
+
return;
|
42
|
+
}
|
38
43
|
return this.date = this.parseIncomingDate();
|
39
44
|
};
|
40
45
|
|
@@ -163,22 +168,46 @@
|
|
163
168
|
var classes;
|
164
169
|
classes = [];
|
165
170
|
classes.push("day");
|
166
|
-
if (date.getMonth() !== month)
|
167
|
-
|
168
|
-
|
169
|
-
|
171
|
+
if (date.getMonth() !== month) {
|
172
|
+
classes.push("othermonth");
|
173
|
+
}
|
174
|
+
if (date.same_as(new Date())) {
|
175
|
+
classes.push("today");
|
176
|
+
}
|
177
|
+
if (date.same_as(this.date)) {
|
178
|
+
classes.push("selected");
|
179
|
+
}
|
180
|
+
return "<td class='" + (classes.join(" ")) + "'><a data-date='" + (this.toDateString(date)) + "' href='#'>" + (date.getDate()) + "</a></td>";
|
181
|
+
};
|
182
|
+
|
183
|
+
Calendar.prototype.toDateString = function(date) {
|
184
|
+
var day, month;
|
185
|
+
month = date.getMonth();
|
186
|
+
day = date.getDate();
|
187
|
+
month = month < 10 ? "0" + month : month;
|
188
|
+
day = day < 10 ? "0" + day : day;
|
189
|
+
return "" + (date.getFullYear()) + "-" + month + "-" + day;
|
170
190
|
};
|
171
191
|
|
172
192
|
Calendar.prototype.clicked = function(event) {
|
173
|
-
var o;
|
193
|
+
var args, o;
|
174
194
|
o = $(event.target);
|
175
|
-
if (o[0].tagName === "TD")
|
176
|
-
|
177
|
-
|
195
|
+
if (o[0].tagName === "TD") {
|
196
|
+
o = o.children("A");
|
197
|
+
}
|
198
|
+
args = o.data("date").split("-");
|
199
|
+
this.date = (function(func, args, ctor) {
|
200
|
+
ctor.prototype = func.prototype;
|
201
|
+
var child = new ctor, result = func.apply(child, args), t = typeof result;
|
202
|
+
return t == "object" || t == "function" ? result || child : child;
|
203
|
+
})(Date, args, function(){});
|
204
|
+
this.field.val(o.data("date"));
|
178
205
|
this.element.find(".selected").removeClass("selected");
|
179
206
|
o.parent().addClass("selected");
|
180
207
|
this.element.find(".selectedtext").html(this.generateFooter());
|
181
|
-
if (this.options.onchange)
|
208
|
+
if (this.options.onchange) {
|
209
|
+
this.options.onchange(this.field.val());
|
210
|
+
}
|
182
211
|
return false;
|
183
212
|
};
|
184
213
|
|
@@ -198,8 +227,8 @@
|
|
198
227
|
};
|
199
228
|
|
200
229
|
Calendar.prototype.redraw = function() {
|
201
|
-
var html
|
202
|
-
|
230
|
+
var html,
|
231
|
+
_this = this;
|
203
232
|
html = "<table class=\"" + this.options["class"] + "\" cellspacing=\"0\">\n<thead> \n <tr><th class=\"back\"><a href=\"#\">←</a></th>\n <th colspan=\"5\" class=\"month_label\">" + (this.label()) + "</th>\n <th class=\"forward\"><a href=\"#\">→</a></th></tr>\n <tr class=\"day_header\">" + (this.dayRows()) + "</tr>\n </thead>\n <tbody>" + (this.buildDateCells()) + "</tbody>\n <tfoot>\n <tr><td colspan=\"7\" class=\"selectedtext\">" + (this.generateFooter()) + "</td></tr>\n </tfoot>\n </table>";
|
204
233
|
this.element.html(html);
|
205
234
|
this.element.find("th.back").click(function() {
|
@@ -228,7 +257,9 @@
|
|
228
257
|
|
229
258
|
DateHelper.forward_a_month = function(count) {
|
230
259
|
var d, month;
|
231
|
-
if (count == null)
|
260
|
+
if (count == null) {
|
261
|
+
count = 1;
|
262
|
+
}
|
232
263
|
month = this.getMonth() + count;
|
233
264
|
d = new Date(this.getFullYear(), month, 1);
|
234
265
|
return this.setTime(d);
|
@@ -236,7 +267,9 @@
|
|
236
267
|
|
237
268
|
DateHelper.back_a_month = function(count) {
|
238
269
|
var d, month;
|
239
|
-
if (count == null)
|
270
|
+
if (count == null) {
|
271
|
+
count = 1;
|
272
|
+
}
|
240
273
|
month = this.getMonth() - count;
|
241
274
|
d = new Date(this.getFullYear(), month, 1);
|
242
275
|
return this.setTime(d);
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: input_calendar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Josh Goebel
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-07-13 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: Simple and clean JS calendar to enter dates on forms
|