clockpunch 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,10 +1,16 @@
1
1
  # Clockpunch Changelog
2
2
 
3
+ ## Version 0.1.5 (July 12, 2013)
4
+
5
+ * Don't apply timeinput multiple times
6
+ * Ability to pass 'hm' as a time format
7
+ * Began refactoring to allow application-defined formats via strings and functions
8
+
3
9
  ## Version 0.1.4 (July 10, 2013)
4
-
10
+
5
11
  * Support input type="number"
6
12
 
7
13
  ## Version 0.1.3 (July 2, 2013)
8
14
 
9
15
  * Can replace <span> or other elements with the specified format
10
- * Allow format as an option
16
+ * Allow format as an option
data/README.md CHANGED
@@ -74,6 +74,23 @@ This library comprises the following pieces:
74
74
  - "1:30.2" is read like "1:30"
75
75
  - See spec/time_parser_spec.coffee for more examples of how input is handled.
76
76
 
77
+ ### Formats
78
+
79
+ There are three built-in formats:
80
+
81
+ * default: "H:MM"
82
+ * Zero-padded minutes
83
+ * hm: "HmMMm"
84
+ * Zero-padded minutes
85
+ * minutes: MMm
86
+ * Not zero-padded. Always show total minutes. E.g. 90 minutes stays "90m"
87
+
88
+ To use one of the other formats, just pass it in the constructor, e.g. `new TimeParser('hm')`
89
+
90
+ #### Custom formats
91
+
92
+ You can also pass custom formats either as a string or a function. This feature is still in development.
93
+
77
94
  # Use in Forms
78
95
 
79
96
  Apply the jQuery plugin to the elements:
@@ -1,7 +1,7 @@
1
1
  // Generated by CoffeeScript 1.4.0
2
2
 
3
3
  /*
4
- Clockpunch 0.1.4
4
+ Clockpunch 0.1.5
5
5
  https://github.com/tablexi/clockpunch
6
6
  */
7
7
 
@@ -27,7 +27,7 @@ https://github.com/tablexi/clockpunch
27
27
 
28
28
  function TimeParsingInput(elem, format) {
29
29
  if (format == null) {
30
- format = null;
30
+ format = 'default';
31
31
  }
32
32
  this.$elem = $(elem);
33
33
  this.$elem.data('timeparser', this);
@@ -51,6 +51,9 @@ https://github.com/tablexi/clockpunch
51
51
  TimeParsingInput.prototype.configure_input = function(format) {
52
52
  var self;
53
53
  self = this;
54
+ if (this.$elem.hasClass('clockpunch-applied')) {
55
+ return;
56
+ }
54
57
  this.create_hidden_field(format);
55
58
  this.ensure_elem_is_text();
56
59
  this.$elem.change(function() {
@@ -61,7 +64,8 @@ https://github.com/tablexi/clockpunch
61
64
  return $this.val(self.parser.from_minutes(minutes));
62
65
  });
63
66
  this.$elem.trigger('change');
64
- return this.create_tooltip();
67
+ this.create_tooltip();
68
+ return this.$elem.addClass('clockpunch-applied');
65
69
  };
66
70
 
67
71
  TimeParsingInput.prototype.create_hidden_field = function() {
@@ -112,8 +116,10 @@ https://github.com/tablexi/clockpunch
112
116
  window.TimeParser = (function() {
113
117
 
114
118
  function TimeParser(time_format) {
115
- this.time_format = time_format != null ? time_format : null;
116
- this.time_format || (this.time_format = "{HOURS}:{MINUTES}");
119
+ if (time_format == null) {
120
+ time_format = null;
121
+ }
122
+ this.time_format = this.get_format_mapping(time_format);
117
123
  }
118
124
 
119
125
  /*
@@ -172,11 +178,7 @@ https://github.com/tablexi/clockpunch
172
178
  }
173
179
  hours = Math.floor(minutes / 60.0);
174
180
  mins = minutes % 60;
175
- return this.format(hours, mins);
176
- };
177
-
178
- TimeParser.prototype.format = function(hours, minutes) {
179
- return this.time_format.replace('{HOURS}', hours).replace('{MINUTES}', TimeParser.pad(minutes.toString()));
181
+ return this.time_format(hours, mins);
180
182
  };
181
183
 
182
184
  TimeParser.prototype.transform = function(string) {
@@ -230,6 +232,36 @@ https://github.com/tablexi/clockpunch
230
232
  };
231
233
  };
232
234
 
235
+ TimeParser.prototype.get_format_mapping = function(format) {
236
+ var formats;
237
+ if (typeof format === 'function') {
238
+ return format;
239
+ }
240
+ formats = {
241
+ "default": function(hours, minutes) {
242
+ return this.default_string_format('{HOURS}:{MINUTES}', hours, minutes);
243
+ },
244
+ hm: function(hours, minutes) {
245
+ return this.default_string_format('{HOURS}h{MINUTES}m', hours, minutes);
246
+ },
247
+ minutes: function(hours, minutes) {
248
+ var total_minutes;
249
+ total_minutes = hours * 60 + minutes;
250
+ return total_minutes.toString();
251
+ }
252
+ };
253
+ if (format == null) {
254
+ return formats['default'];
255
+ }
256
+ return formats[format] || function(hours, minutes) {
257
+ return this.default_string_format(format, hours, minutes);
258
+ };
259
+ };
260
+
261
+ TimeParser.prototype.default_string_format = function(format_string, hours, minutes) {
262
+ return format_string.replace('{HOURS}', hours).replace('{MINUTES}', TimeParser.pad(minutes.toString()));
263
+ };
264
+
233
265
  return TimeParser;
234
266
 
235
267
  })();
@@ -1,3 +1,3 @@
1
1
  module Clockpunch
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clockpunch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-10 00:00:00.000000000 Z
12
+ date: 2013-07-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sass