iugu-ux 0.9.9 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. data/lib/iugu-ux/version.rb +1 -1
  2. data/sandbox/log/development.log +432 -0
  3. data/sandbox/tmp/cache/assets/BD0/110/sprockets%2F52568313d04166c1237865292979c86d +0 -0
  4. data/sandbox/tmp/cache/assets/C48/D00/sprockets%2F4a51b39094a347e3e325005c7847551c +0 -0
  5. data/sandbox/tmp/cache/assets/C49/3B0/sprockets%2F405c7112191eed23e8b860254281e763 +0 -0
  6. data/sandbox/tmp/cache/assets/C4A/8F0/sprockets%2F736644cea24629d653454c90503a0c45 +0 -0
  7. data/sandbox/tmp/cache/assets/C4F/3A0/sprockets%2F41918e8d7b402652a5649e4b7134d620 +0 -0
  8. data/sandbox/tmp/cache/assets/C5A/0F0/sprockets%2F66317254e81572f5a89184618e3c3b5b +0 -0
  9. data/sandbox/tmp/cache/assets/C7A/F30/sprockets%2F70249181577b261a3ea8851b530f1e7c +0 -0
  10. data/sandbox/tmp/cache/assets/C86/500/sprockets%2F6990a45a256263b7579492ac7a6a626a +0 -0
  11. data/sandbox/tmp/cache/assets/C87/F60/sprockets%2F83b4a89e682705a1d0c1e1327608f968 +0 -0
  12. data/sandbox/tmp/cache/assets/C88/820/sprockets%2Fb50c6382fa02d221d1b29a40402d1641 +0 -0
  13. data/sandbox/tmp/cache/assets/C97/790/sprockets%2Ffa5602401f5500215f5c4555190dcbd2 +0 -0
  14. data/sandbox/tmp/cache/assets/CC3/930/sprockets%2F7e2c9302e5050f66e888725be83f862d +0 -0
  15. data/sandbox/tmp/cache/assets/CC7/EB0/sprockets%2F079d3b368c9e843b78c90079f26d628b +0 -0
  16. data/sandbox/tmp/cache/assets/CC8/510/sprockets%2F868a1670f8822e6b7847dd22e747a66f +0 -0
  17. data/sandbox/tmp/cache/assets/CCA/850/sprockets%2F1d05d32f046ec7313b0d3619a232d73f +0 -0
  18. data/sandbox/tmp/cache/assets/CDB/610/sprockets%2Fb5b20836971a5786ca125712b8e0bf5e +0 -0
  19. data/sandbox/tmp/cache/assets/CDB/E30/sprockets%2F918458a88fec2cd01991c003b2318ab7 +0 -0
  20. data/sandbox/tmp/cache/assets/CEC/760/sprockets%2F2e588fd16989acc60b813afe18471562 +0 -0
  21. data/sandbox/tmp/cache/assets/D08/ED0/sprockets%2Fcb1aee736d3b287a872298b7741b012b +0 -0
  22. data/sandbox/tmp/cache/assets/D1A/B70/sprockets%2F47ae92dd9d034b32098b19bf8f2475a9 +0 -0
  23. data/sandbox/tmp/cache/assets/D34/3E0/sprockets%2F46a73c17c9a561115944df004dbbdd7b +0 -0
  24. data/sandbox/tmp/cache/assets/D3B/BC0/sprockets%2F19510a763bd1521ff5fc70ffe0d837d3 +0 -0
  25. data/sandbox/tmp/cache/assets/D4A/1A0/sprockets%2Fb746360a8b3ce79c57e74a9c15309fdd +0 -0
  26. data/sandbox/tmp/cache/assets/D4A/EB0/sprockets%2F601dc7267b0c9e83e7c9bd2bf94e3564 +0 -0
  27. data/sandbox/tmp/cache/assets/D4F/810/sprockets%2Fa10070d6497ba2b4ea552d4a1bb444cb +0 -0
  28. data/sandbox/tmp/cache/assets/D53/E90/sprockets%2Fb333afe57100a0a8c1bc6c37405e56bb +0 -0
  29. data/sandbox/tmp/cache/assets/D55/310/sprockets%2F2b9be79ca64ec7d294d4825e21696ce9 +0 -0
  30. data/sandbox/tmp/cache/assets/D5C/200/sprockets%2Fcd323e6f7545cee0b3ba1e84d7520b00 +0 -0
  31. data/sandbox/tmp/cache/assets/D66/7C0/sprockets%2F5afbe1fb48c4015a6ffc9085c0519b05 +0 -0
  32. data/sandbox/tmp/cache/assets/D6D/AA0/sprockets%2F1cb4a75912d38d0bdde6ee6770644d0f +0 -0
  33. data/sandbox/tmp/cache/assets/D6E/AE0/sprockets%2Fe193ea7b03f186ad2a9515fc78fa8c21 +0 -0
  34. data/sandbox/tmp/cache/assets/D74/0A0/sprockets%2Fc1392b79af6b88250b634479cbf2bcfc +0 -0
  35. data/sandbox/tmp/cache/assets/D79/5A0/sprockets%2Feb399a6f39a8dcd0bf011768e7153d8d +0 -0
  36. data/sandbox/tmp/cache/assets/D7A/D40/sprockets%2F4d2bc08f2787a3870ff93e0e0f7bc67e +0 -0
  37. data/sandbox/tmp/cache/assets/D7D/A60/sprockets%2Fad3ac10002e5ebc21d911fe229b6ec40 +0 -0
  38. data/sandbox/tmp/cache/assets/D82/480/sprockets%2F8945f20bf64a2469e9edbfb085e4b8c8 +0 -0
  39. data/sandbox/tmp/cache/assets/D92/120/sprockets%2Fbbadd54a208919f24fb50bc9e3d3d107 +0 -0
  40. data/sandbox/tmp/cache/assets/D96/940/sprockets%2F6a2c3af22b173eb975f382b4cdcd8c41 +0 -0
  41. data/sandbox/tmp/cache/assets/D96/E90/sprockets%2F0d5f451deca7e6811663f30afc3a4fd4 +0 -0
  42. data/sandbox/tmp/cache/assets/D97/180/sprockets%2F933323d1c368cfeda7a0cacdbd295933 +0 -0
  43. data/sandbox/tmp/cache/assets/DAD/190/sprockets%2Fbee62a5d7a8cd35a33763f1cd879de59 +0 -0
  44. data/sandbox/tmp/cache/assets/DB8/5B0/sprockets%2F35ed47d3f028fe65e7d4f5f4f8f95e1b +0 -0
  45. data/sandbox/tmp/cache/assets/DC5/340/sprockets%2Fd0dab495f0bbced215dd46e8ca316575 +0 -0
  46. data/sandbox/tmp/cache/assets/DCA/FD0/sprockets%2F0b59a77adfc61bb863e708ba262ce6bd +0 -0
  47. data/sandbox/tmp/cache/assets/DCE/E70/sprockets%2Facff0eeec48ccf1c25a1b968242b7827 +0 -0
  48. data/sandbox/tmp/cache/assets/DD4/040/sprockets%2Fe4c0c08358fdcc373c5f2da767cd08ff +0 -0
  49. data/sandbox/tmp/cache/assets/DD7/9B0/sprockets%2F9f2c0826bd7ae7b745ae8da6db48c26e +0 -0
  50. data/sandbox/tmp/cache/assets/DE0/650/sprockets%2F0f87cd6ed404cdfc99c86bb974d0ca59 +0 -0
  51. data/sandbox/tmp/cache/assets/DE5/390/sprockets%2F24a1cda6893cebd53997dc859def67cd +0 -0
  52. data/sandbox/tmp/cache/assets/DFC/5B0/sprockets%2Fcece55fa8f17c917fcc78cf6113a01bb +0 -0
  53. data/sandbox/tmp/cache/assets/E00/1D0/sprockets%2F571f97ca7b6dfdfefafd03ae735127a1 +0 -0
  54. data/sandbox/tmp/cache/assets/E05/2E0/sprockets%2F92ecbfa92baf6e394ce6c39d731b7cd2 +0 -0
  55. data/sandbox/tmp/cache/assets/E36/F20/sprockets%2Fd3bd4977eec9eca9c55b9a20b81b9cdb +0 -0
  56. data/sandbox/tmp/cache/assets/E37/A20/sprockets%2Fec3ccca6dfe2fc4e8793b0d83398e5ba +0 -0
  57. data/sandbox/tmp/cache/assets/F1C/0B0/sprockets%2Ffb1cb6e9be4bf2cd5aaecfbb1de7d77f +0 -0
  58. data/sandbox/tmp/cache/sass/8e0849d701bca2f5a178ed1215813b1316068a4d/components.sassc +0 -0
  59. data/sandbox/tmp/cache/sass/8e0849d701bca2f5a178ed1215813b1316068a4d/typography.sassc +0 -0
  60. data/sandbox/tmp/cache/sass/8e0849d701bca2f5a178ed1215813b1316068a4d/variables.sassc +0 -0
  61. data/sandbox/tmp/cache/sass/b49d75942b505963eb360d4c3b43ec26f9ded67e/checkbox.sassc +0 -0
  62. data/sandbox/tmp/cache/sass/b49d75942b505963eb360d4c3b43ec26f9ded67e/combobox.sassc +0 -0
  63. data/sandbox/tmp/cache/sass/b49d75942b505963eb360d4c3b43ec26f9ded67e/container.sassc +0 -0
  64. data/sandbox/tmp/cache/sass/b49d75942b505963eb360d4c3b43ec26f9ded67e/group.sassc +0 -0
  65. data/sandbox/tmp/cache/sass/b49d75942b505963eb360d4c3b43ec26f9ded67e/input.sassc +0 -0
  66. data/sandbox/tmp/cache/sass/b49d75942b505963eb360d4c3b43ec26f9ded67e/radio.sassc +0 -0
  67. data/sandbox/tmp/cache/sass/b49d75942b505963eb360d4c3b43ec26f9ded67e/responsive_box.sassc +0 -0
  68. data/sandbox/tmp/cache/sass/b49d75942b505963eb360d4c3b43ec26f9ded67e/view.sassc +0 -0
  69. data/vendor/assets/javascripts/iugu-ux/components/presenters/iugu-ui-table.jst.eco +1 -1
  70. data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-button.js.coffee +15 -3
  71. data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-combobox.js.coffee +1 -0
  72. data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-table.js.coffee +1 -0
  73. data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-view.js.coffee +1 -1
  74. data/vendor/assets/javascripts/vendor.js +2 -3
  75. data/vendor/assets/javascripts/vendor/backbone.validation.js +1 -1
  76. data/vendor/assets/javascripts/vendor/numeral.js +2104 -0
  77. data/vendor/assets/javascripts/vendor/numeral.languages.js +96 -0
  78. data/vendor/assets/javascripts/web-app/helpers.coffee +1 -1
  79. data/vendor/assets/stylesheets/iugu-ux/components/combobox.sass +7 -0
  80. data/vendor/assets/stylesheets/iugu-ux/components/input.sass +11 -0
  81. data/vendor/assets/stylesheets/iugu-ux/components/notice.sass +6 -0
  82. metadata +72 -33
  83. data/vendor/assets/javascripts/vendor/mobiscroll.core-2.3.1.js +0 -966
  84. data/vendor/assets/javascripts/vendor/mobiscroll.datetime-2.3.js +0 -656
  85. data/vendor/assets/javascripts/vendor/mobiscroll.select-2.3.1.js +0 -257
@@ -1,656 +0,0 @@
1
- /*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true */
2
- (function ($) {
3
-
4
- var ms = $.mobiscroll,
5
- date = new Date(),
6
- defaults = {
7
- dateFormat: 'mm/dd/yy',
8
- dateOrder: 'mmddy',
9
- timeWheels: 'hhiiA',
10
- timeFormat: 'hh:ii A',
11
- startYear: date.getFullYear() - 100,
12
- endYear: date.getFullYear() + 1,
13
- monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
14
- monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
15
- dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
16
- dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
17
- shortYearCutoff: '+10',
18
- monthText: 'Month',
19
- dayText: 'Day',
20
- yearText: 'Year',
21
- hourText: 'Hours',
22
- minuteText: 'Minutes',
23
- secText: 'Seconds',
24
- ampmText: ' ',
25
- nowText: 'Now',
26
- showNow: false,
27
- stepHour: 1,
28
- stepMinute: 1,
29
- stepSecond: 1,
30
- separator: ' '
31
- },
32
- preset = function (inst) {
33
- var that = $(this),
34
- html5def = {},
35
- format;
36
- // Force format for html5 date inputs (experimental)
37
- if (that.is('input')) {
38
- switch (that.attr('type')) {
39
- case 'date':
40
- format = 'yy-mm-dd';
41
- break;
42
- case 'datetime':
43
- format = 'yy-mm-ddTHH:ii:ssZ';
44
- break;
45
- case 'datetime-local':
46
- format = 'yy-mm-ddTHH:ii:ss';
47
- break;
48
- case 'month':
49
- format = 'yy-mm';
50
- html5def.dateOrder = 'mmyy';
51
- break;
52
- case 'time':
53
- format = 'HH:ii:ss';
54
- break;
55
- }
56
- // Check for min/max attributes
57
- var min = that.attr('min'),
58
- max = that.attr('max');
59
- if (min) {
60
- html5def.minDate = ms.parseDate(format, min);
61
- }
62
- if (max) {
63
- html5def.maxDate = ms.parseDate(format, max);
64
- }
65
- }
66
-
67
- // Set year-month-day order
68
- var s = $.extend({}, defaults, html5def, inst.settings),
69
- offset = 0,
70
- wheels = [],
71
- ord = [],
72
- o = {},
73
- i,
74
- k,
75
- f = { y: 'getFullYear', m: 'getMonth', d: 'getDate', h: getHour, i: getMinute, s: getSecond, ap: getAmPm },
76
- p = s.preset,
77
- dord = s.dateOrder,
78
- tord = s.timeWheels,
79
- regen = dord.match(/D/),
80
- ampm = tord.match(/a/i),
81
- hampm = tord.match(/h/),
82
- hformat = p == 'datetime' ? s.dateFormat + s.separator + s.timeFormat : p == 'time' ? s.timeFormat : s.dateFormat,
83
- defd = new Date(),
84
- stepH = s.stepHour,
85
- stepM = s.stepMinute,
86
- stepS = s.stepSecond,
87
- mind = s.minDate || new Date(s.startYear, 0, 1),
88
- maxd = s.maxDate || new Date(s.endYear, 11, 31, 23, 59, 59);
89
-
90
- format = format || hformat;
91
-
92
- if (p.match(/date/i)) {
93
-
94
- // Determine the order of year, month, day wheels
95
- $.each(['y', 'm', 'd'], function (j, v) {
96
- i = dord.search(new RegExp(v, 'i'));
97
- if (i > -1) {
98
- ord.push({ o: i, v: v });
99
- }
100
- });
101
- ord.sort(function (a, b) { return a.o > b.o ? 1 : -1; });
102
- $.each(ord, function (i, v) {
103
- o[v.v] = i;
104
- });
105
-
106
- var w = {};
107
- for (k = 0; k < 3; k++) {
108
- if (k == o.y) {
109
- offset++;
110
- w[s.yearText] = {};
111
- var start = mind.getFullYear(),
112
- end = maxd.getFullYear();
113
- for (i = start; i <= end; i++) {
114
- w[s.yearText][i] = dord.match(/yy/i) ? i : (i + '').substr(2, 2);
115
- }
116
- } else if (k == o.m) {
117
- offset++;
118
- w[s.monthText] = {};
119
- for (i = 0; i < 12; i++) {
120
- var str = dord.replace(/[dy]/gi, '').replace(/mm/, i < 9 ? '0' + (i + 1) : i + 1).replace(/m/, i);
121
- w[s.monthText][i] = str.match(/MM/) ? str.replace(/MM/, '<span class="dw-mon">' + s.monthNames[i] + '</span>') : str.replace(/M/, '<span class="dw-mon">' + s.monthNamesShort[i] + '</span>');
122
- }
123
- } else if (k == o.d) {
124
- offset++;
125
- w[s.dayText] = {};
126
- for (i = 1; i < 32; i++) {
127
- w[s.dayText][i] = dord.match(/dd/i) && i < 10 ? '0' + i : i;
128
- }
129
- }
130
- }
131
- wheels.push(w);
132
- }
133
-
134
- if (p.match(/time/i)) {
135
-
136
- // Determine the order of hours, minutes, seconds wheels
137
- ord = [];
138
- $.each(['h', 'i', 's'], function (i, v) {
139
- i = tord.search(new RegExp(v, 'i'));
140
- if (i > -1) {
141
- ord.push({ o: i, v: v });
142
- }
143
- });
144
- ord.sort(function (a, b) {
145
- return a.o > b.o ? 1 : -1;
146
- });
147
- $.each(ord, function (i, v) {
148
- o[v.v] = offset + i;
149
- });
150
-
151
- w = {};
152
- for (k = offset; k < offset + 3; k++) {
153
- if (k == o.h) {
154
- offset++;
155
- w[s.hourText] = {};
156
- for (i = 0; i < (hampm ? 12 : 24); i += stepH) {
157
- w[s.hourText][i] = hampm && i == 0 ? 12 : tord.match(/hh/i) && i < 10 ? '0' + i : i;
158
- }
159
- } else if (k == o.i) {
160
- offset++;
161
- w[s.minuteText] = {};
162
- for (i = 0; i < 60; i += stepM) {
163
- w[s.minuteText][i] = tord.match(/ii/) && i < 10 ? '0' + i : i;
164
- }
165
- } else if (k == o.s) {
166
- offset++;
167
- w[s.secText] = {};
168
- for (i = 0; i < 60; i += stepS) {
169
- w[s.secText][i] = tord.match(/ss/) && i < 10 ? '0' + i : i;
170
- }
171
- }
172
- }
173
-
174
- if (ampm) {
175
- o.ap = offset++; // ampm wheel order
176
- var upper = tord.match(/A/);
177
- w[s.ampmText] = { 0: upper ? 'AM' : 'am', 1: upper ? 'PM' : 'pm' };
178
- }
179
- wheels.push(w);
180
- }
181
-
182
- function get(d, i, def) {
183
- if (o[i] !== undefined) {
184
- return +d[o[i]];
185
- }
186
- if (def !== undefined) {
187
- return def;
188
- }
189
- return defd[f[i]] ? defd[f[i]]() : f[i](defd);
190
- }
191
-
192
- function step(v, st) {
193
- return Math.floor(v / st) * st;
194
- }
195
-
196
- function getHour(d) {
197
- var hour = d.getHours();
198
- hour = hampm && hour >= 12 ? hour - 12 : hour;
199
- return step(hour, stepH);
200
- }
201
-
202
- function getMinute(d) {
203
- return step(d.getMinutes(), stepM);
204
- }
205
-
206
- function getSecond(d) {
207
- return step(d.getSeconds(), stepS);
208
- }
209
-
210
- function getAmPm(d) {
211
- return ampm && d.getHours() > 11 ? 1 : 0;
212
- }
213
-
214
- function getDate(d) {
215
- var hour = get(d, 'h', 0);
216
- return new Date(get(d, 'y'), get(d, 'm'), get(d, 'd', 1), get(d, 'ap') ? hour + 12 : hour, get(d, 'i', 0), get(d, 's', 0));
217
- }
218
-
219
- inst.setDate = function (d, fill, time, temp) {
220
- var i;
221
- // Set wheels
222
- for (i in o) {
223
- this.temp[o[i]] = d[f[i]] ? d[f[i]]() : f[i](d);
224
- }
225
- this.setValue(true, fill, time, temp);
226
- };
227
-
228
- inst.getDate = function (d) {
229
- return getDate(d);
230
- };
231
-
232
- return {
233
- button3Text: s.showNow ? s.nowText : undefined,
234
- button3: s.showNow ? function () { inst.setDate(new Date(), false, 0.3, true); } : undefined,
235
- wheels: wheels,
236
- headerText: function (v) {
237
- return ms.formatDate(hformat, getDate(inst.temp), s);
238
- },
239
- /**
240
- * Builds a date object from the wheel selections and formats it to the given date/time format
241
- * @param {Array} d - An array containing the selected wheel values
242
- * @return {String} - The formatted date string
243
- */
244
- formatResult: function (d) {
245
- return ms.formatDate(format, getDate(d), s);
246
- },
247
- /**
248
- * Builds a date object from the input value and returns an array to set wheel values
249
- * @return {Array} - An array containing the wheel values to set
250
- */
251
- parseValue: function (val) {
252
- var d = new Date(),
253
- i,
254
- result = [];
255
- try {
256
- d = ms.parseDate(format, val, s);
257
- } catch (e) {
258
- }
259
- // Set wheels
260
- for (i in o) {
261
- result[o[i]] = d[f[i]] ? d[f[i]]() : f[i](d);
262
- }
263
- return result;
264
- },
265
- /**
266
- * Validates the selected date to be in the minDate / maxDate range and sets unselectable values to disabled
267
- * @param {Object} dw - jQuery object containing the generated html
268
- * @param {Integer} [i] - Index of the changed wheel, not set for initial validation
269
- */
270
- validate: function (dw, i) {
271
- var temp = inst.temp, //.slice(0),
272
- mins = { y: mind.getFullYear(), m: 0, d: 1, h: 0, i: 0, s: 0, ap: 0 },
273
- maxs = { y: maxd.getFullYear(), m: 11, d: 31, h: step(hampm ? 11 : 23, stepH), i: step(59, stepM), s: step(59, stepS), ap: 1 },
274
- minprop = true,
275
- maxprop = true;
276
- $.each(['y', 'm', 'd', 'ap', 'h', 'i', 's'], function (x, i) {
277
- if (o[i] !== undefined) {
278
- var min = mins[i],
279
- max = maxs[i],
280
- maxdays = 31,
281
- val = get(temp, i),
282
- t = $('ul', dw).eq(o[i]),
283
- y,
284
- m;
285
- if (i == 'd') {
286
- y = get(temp, 'y');
287
- m = get(temp, 'm');
288
- maxdays = 32 - new Date(y, m, 32).getDate();
289
- max = maxdays;
290
- if (regen) {
291
- $('li', t).each(function () {
292
- var that = $(this),
293
- d = that.data('val'),
294
- w = new Date(y, m, d).getDay(),
295
- str = dord.replace(/[my]/gi, '').replace(/dd/, d < 10 ? '0' + d : d).replace(/d/, d);
296
- $('.dw-i', that).html(str.match(/DD/) ? str.replace(/DD/, '<span class="dw-day">' + s.dayNames[w] + '</span>') : str.replace(/D/, '<span class="dw-day">' + s.dayNamesShort[w] + '</span>'));
297
- });
298
- }
299
- }
300
- if (minprop && mind) {
301
- min = mind[f[i]] ? mind[f[i]]() : f[i](mind);
302
- }
303
- if (maxprop && maxd) {
304
- max = maxd[f[i]] ? maxd[f[i]]() : f[i](maxd);
305
- }
306
- if (i != 'y') {
307
- var i1 = $('li[data-val="' + min + '"]', t).index(),
308
- i2 = $('li[data-val="' + max + '"]', t).index();
309
- $('li', t).removeClass('dw-v').slice(i1, i2 + 1).addClass('dw-v');
310
- if (i == 'd') { // Hide days not in month
311
- $('li', t).removeClass('dw-h').slice(maxdays).addClass('dw-h');
312
- }
313
- }
314
- if (val < min) {
315
- val = min;
316
- }
317
- if (val > max) {
318
- val = max;
319
- }
320
- if (minprop) {
321
- minprop = val == min;
322
- }
323
- if (maxprop) {
324
- maxprop = val == max;
325
- }
326
- // Disable some days
327
- if (s.invalid && i == 'd') {
328
- var idx = [];
329
- // Disable exact dates
330
- if (s.invalid.dates) {
331
- $.each(s.invalid.dates, function (i, v) {
332
- if (v.getFullYear() == y && v.getMonth() == m) {
333
- idx.push(v.getDate() - 1);
334
- }
335
- });
336
- }
337
- // Disable days of week
338
- if (s.invalid.daysOfWeek) {
339
- var first = new Date(y, m, 1).getDay(),
340
- j;
341
- $.each(s.invalid.daysOfWeek, function (i, v) {
342
- for (j = v - first; j < maxdays; j += 7) {
343
- if (j >= 0) {
344
- idx.push(j);
345
- }
346
- }
347
- });
348
- }
349
- // Disable days of month
350
- if (s.invalid.daysOfMonth) {
351
- $.each(s.invalid.daysOfMonth, function (i, v) {
352
- v = (v + '').split('/');
353
- if (v[1]) {
354
- if (v[0] - 1 == m) {
355
- idx.push(v[1] - 1);
356
- }
357
- } else {
358
- idx.push(v[0] - 1);
359
- }
360
- });
361
- }
362
- $.each(idx, function (i, v) {
363
- $('li', t).eq(v).removeClass('dw-v');
364
- });
365
- }
366
-
367
- // Set modified value
368
- temp[o[i]] = val;
369
- }
370
- });
371
- },
372
- methods: {
373
- /**
374
- * Returns the currently selected date.
375
- * @param {Boolean} temp - If true, return the currently shown date on the picker, otherwise the last selected one
376
- * @return {Date}
377
- */
378
- getDate: function (temp) {
379
- var inst = $(this).mobiscroll('getInst');
380
- if (inst) {
381
- return inst.getDate(temp ? inst.temp : inst.values);
382
- }
383
- },
384
- /**
385
- * Sets the selected date
386
- * @param {Date} d - Date to select.
387
- * @param {Boolean} [fill] - Also set the value of the associated input element. Default is true.
388
- * @return {Object} - jQuery object to maintain chainability
389
- */
390
- setDate: function (d, fill, time, temp) {
391
- if (fill == undefined) {
392
- fill = false;
393
- }
394
- return this.each(function () {
395
- var inst = $(this).mobiscroll('getInst');
396
- if (inst) {
397
- inst.setDate(d, fill, time, temp);
398
- }
399
- });
400
- }
401
- }
402
- };
403
- };
404
-
405
- $.each(['date', 'time', 'datetime'], function(i, v) {
406
- ms.presets[v] = preset;
407
- ms.presetShort(v);
408
- });
409
-
410
- /**
411
- * Format a date into a string value with a specified format.
412
- * @param {String} format - Output format.
413
- * @param {Date} date - Date to format.
414
- * @param {Object} settings - Settings.
415
- * @return {String} - Returns the formatted date string.
416
- */
417
- ms.formatDate = function (format, date, settings) {
418
- if (!date) {
419
- return null;
420
- }
421
- var s = $.extend({}, defaults, settings),
422
- look = function (m) { // Check whether a format character is doubled
423
- var n = 0;
424
- while (i + 1 < format.length && format.charAt(i + 1) == m) {
425
- n++;
426
- i++;
427
- }
428
- return n;
429
- },
430
- f1 = function (m, val, len) { // Format a number, with leading zero if necessary
431
- var n = '' + val;
432
- if (look(m)) {
433
- while (n.length < len) {
434
- n = '0' + n;
435
- }
436
- }
437
- return n;
438
- },
439
- f2 = function (m, val, s, l) { // Format a name, short or long as requested
440
- return (look(m) ? l[val] : s[val]);
441
- },
442
- i,
443
- output = '',
444
- literal = false;
445
-
446
- for (i = 0; i < format.length; i++) {
447
- if (literal) {
448
- if (format.charAt(i) == "'" && !look("'")) {
449
- literal = false;
450
- } else {
451
- output += format.charAt(i);
452
- }
453
- } else {
454
- switch (format.charAt(i)) {
455
- case 'd':
456
- output += f1('d', date.getDate(), 2);
457
- break;
458
- case 'D':
459
- output += f2('D', date.getDay(), s.dayNamesShort, s.dayNames);
460
- break;
461
- case 'o':
462
- output += f1('o', (date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000, 3);
463
- break;
464
- case 'm':
465
- output += f1('m', date.getMonth() + 1, 2);
466
- break;
467
- case 'M':
468
- output += f2('M', date.getMonth(), s.monthNamesShort, s.monthNames);
469
- break;
470
- case 'y':
471
- output += (look('y') ? date.getFullYear() : (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);
472
- break;
473
- case 'h':
474
- var h = date.getHours();
475
- output += f1('h', (h > 12 ? (h - 12) : (h == 0 ? 12 : h)), 2);
476
- break;
477
- case 'H':
478
- output += f1('H', date.getHours(), 2);
479
- break;
480
- case 'i':
481
- output += f1('i', date.getMinutes(), 2);
482
- break;
483
- case 's':
484
- output += f1('s', date.getSeconds(), 2);
485
- break;
486
- case 'a':
487
- output += date.getHours() > 11 ? 'pm' : 'am';
488
- break;
489
- case 'A':
490
- output += date.getHours() > 11 ? 'PM' : 'AM';
491
- break;
492
- case "'":
493
- if (look("'")) {
494
- output += "'";
495
- } else {
496
- literal = true;
497
- }
498
- break;
499
- default:
500
- output += format.charAt(i);
501
- }
502
- }
503
- }
504
- return output;
505
- };
506
-
507
- /**
508
- * Extract a date from a string value with a specified format.
509
- * @param {String} format - Input format.
510
- * @param {String} value - String to parse.
511
- * @param {Object} settings - Settings.
512
- * @return {Date} - Returns the extracted date.
513
- */
514
- ms.parseDate = function (format, value, settings) {
515
- var def = new Date();
516
-
517
- if (!format || !value) {
518
- return def;
519
- }
520
-
521
- value = (typeof value == 'object' ? value.toString() : value + '');
522
-
523
- var s = $.extend({}, defaults, settings),
524
- shortYearCutoff = s.shortYearCutoff,
525
- year = def.getFullYear(),
526
- month = def.getMonth() + 1,
527
- day = def.getDate(),
528
- doy = -1,
529
- hours = def.getHours(),
530
- minutes = def.getMinutes(),
531
- seconds = 0, //def.getSeconds(),
532
- ampm = -1,
533
- literal = false, // Check whether a format character is doubled
534
- lookAhead = function (match) {
535
- var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
536
- if (matches) {
537
- iFormat++;
538
- }
539
- return matches;
540
- },
541
- getNumber = function (match) { // Extract a number from the string value
542
- lookAhead(match);
543
- var size = (match == '@' ? 14 : (match == '!' ? 20 : (match == 'y' ? 4 : (match == 'o' ? 3 : 2)))),
544
- digits = new RegExp('^\\d{1,' + size + '}'),
545
- num = value.substr(iValue).match(digits);
546
-
547
- if (!num) {
548
- return 0;
549
- }
550
- //throw 'Missing number at position ' + iValue;
551
- iValue += num[0].length;
552
- return parseInt(num[0], 10);
553
- },
554
- getName = function (match, s, l) { // Extract a name from the string value and convert to an index
555
- var names = (lookAhead(match) ? l : s),
556
- i;
557
-
558
- for (i = 0; i < names.length; i++) {
559
- if (value.substr(iValue, names[i].length).toLowerCase() == names[i].toLowerCase()) {
560
- iValue += names[i].length;
561
- return i + 1;
562
- }
563
- }
564
- return 0;
565
- //throw 'Unknown name at position ' + iValue;
566
- },
567
- checkLiteral = function () {
568
- //if (value.charAt(iValue) != format.charAt(iFormat))
569
- //throw 'Unexpected literal at position ' + iValue;
570
- iValue++;
571
- },
572
- iValue = 0,
573
- iFormat;
574
-
575
- for (iFormat = 0; iFormat < format.length; iFormat++) {
576
- if (literal) {
577
- if (format.charAt(iFormat) == "'" && !lookAhead("'")) {
578
- literal = false;
579
- } else {
580
- checkLiteral();
581
- }
582
- } else {
583
- switch (format.charAt(iFormat)) {
584
- case 'd':
585
- day = getNumber('d');
586
- break;
587
- case 'D':
588
- getName('D', s.dayNamesShort, s.dayNames);
589
- break;
590
- case 'o':
591
- doy = getNumber('o');
592
- break;
593
- case 'm':
594
- month = getNumber('m');
595
- break;
596
- case 'M':
597
- month = getName('M', s.monthNamesShort, s.monthNames);
598
- break;
599
- case 'y':
600
- year = getNumber('y');
601
- break;
602
- case 'H':
603
- hours = getNumber('H');
604
- break;
605
- case 'h':
606
- hours = getNumber('h');
607
- break;
608
- case 'i':
609
- minutes = getNumber('i');
610
- break;
611
- case 's':
612
- seconds = getNumber('s');
613
- break;
614
- case 'a':
615
- ampm = getName('a', ['am', 'pm'], ['am', 'pm']) - 1;
616
- break;
617
- case 'A':
618
- ampm = getName('A', ['am', 'pm'], ['am', 'pm']) - 1;
619
- break;
620
- case "'":
621
- if (lookAhead("'")) {
622
- checkLiteral();
623
- } else {
624
- literal = true;
625
- }
626
- break;
627
- default:
628
- checkLiteral();
629
- }
630
- }
631
- }
632
- if (year < 100) {
633
- year += new Date().getFullYear() - new Date().getFullYear() % 100 +
634
- (year <= (typeof shortYearCutoff != 'string' ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)) ? 0 : -100);
635
- }
636
- if (doy > -1) {
637
- month = 1;
638
- day = doy;
639
- do {
640
- var dim = 32 - new Date(year, month - 1, 32).getDate();
641
- if (day <= dim) {
642
- break;
643
- }
644
- month++;
645
- day -= dim;
646
- } while (true);
647
- }
648
- hours = (ampm == -1) ? hours : ((ampm && hours < 12) ? (hours + 12) : (!ampm && hours == 12 ? 0 : hours));
649
- var date = new Date(year, month - 1, day, hours, minutes, seconds);
650
- if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) {
651
- throw 'Invalid date';
652
- }
653
- return date;
654
- };
655
-
656
- })(jQuery);