jquery-datetimepicker 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
data/README.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
test
|
@@ -0,0 +1,310 @@
|
|
1
|
+
(function($) {
|
2
|
+
$.fn.dateTimePicker = function(opts) {
|
3
|
+
var thresholdDictionary = {
|
4
|
+
'minute' : 'Minutes before',
|
5
|
+
'hour' : 'Hours before',
|
6
|
+
'day' : 'Days before',
|
7
|
+
'week' : 'Weeks before'
|
8
|
+
}
|
9
|
+
|
10
|
+
var methods = {
|
11
|
+
insertCalendar: function(element, dateTimePicker) {
|
12
|
+
methods.bindMethods(element, dateTimePicker);
|
13
|
+
element.data('activeDateTimePicker', true);
|
14
|
+
// Add datepicker
|
15
|
+
dateTimePicker.find('.reminder-date-add').datepicker({
|
16
|
+
onSelect: function(dateText, _datepickerInstance) {
|
17
|
+
options.onSelectDate.apply(element, [dateText, _datepickerInstance, this]); // 'this' refers to associated input field (see docs for jQuery-UI datepicker)
|
18
|
+
},
|
19
|
+
defaultDate: (typeof(options.defaultDate) == 'function') ? options.defaultDate.apply(element) : options.defaultDate
|
20
|
+
});
|
21
|
+
|
22
|
+
// convenience method for getting to datepicker element
|
23
|
+
dateTimePicker.dtElement = dateTimePicker.find('.reminder-date-add');
|
24
|
+
|
25
|
+
if (options.hideAlertUI) {
|
26
|
+
dateTimePicker.find('.add-alert-container').hide();
|
27
|
+
dateTimePicker.find('.alert-add').hide();
|
28
|
+
} else {
|
29
|
+
// Show UI if there are alerts set by default if (dateTimePicker.alerts.length > 0)
|
30
|
+
// Set default alerts
|
31
|
+
var defaultAlerts;
|
32
|
+
if (typeof(options.defaultAlerts) == 'function') {
|
33
|
+
defaultAlerts = options.defaultAlerts.apply(element) || [];
|
34
|
+
}
|
35
|
+
else if (typeof(options.defaultAlerts) == 'array') {
|
36
|
+
defaultAlerts = options.defaultAlerts;
|
37
|
+
}
|
38
|
+
|
39
|
+
$.each(defaultAlerts, function(i, _alert) {
|
40
|
+
dateTimePicker.setAlert(_alert.time, _alert.threshold, _alert.data);
|
41
|
+
});
|
42
|
+
|
43
|
+
// Show UI if there are alerts set by default
|
44
|
+
if (dateTimePicker.alerts.length > 0) {
|
45
|
+
dateTimePicker.find('.alert-trigger-container .slider').addClass('on');
|
46
|
+
dateTimePicker.find('.alert-add').show();
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
// Insert the calendar into the DOM
|
51
|
+
if (typeof(options.insert) == 'function') {
|
52
|
+
options.insert.apply(element, [dateTimePicker]);
|
53
|
+
}
|
54
|
+
else if (typeof(options.insert) == 'string') {
|
55
|
+
$(options.insert).append(dateTimePicker);
|
56
|
+
}
|
57
|
+
else {
|
58
|
+
element.append(dateTimePicker);
|
59
|
+
}
|
60
|
+
|
61
|
+
// Pick alert threshold (e.g. minutes, hours, days, weeks)
|
62
|
+
dateTimePicker.find('.alert-before ul li').click(function() {
|
63
|
+
dateTimePicker.find('.alert-before .selected').replaceWith(
|
64
|
+
$(this).find('a').clone().addClass('selected')
|
65
|
+
);
|
66
|
+
});
|
67
|
+
|
68
|
+
// Set default time
|
69
|
+
if (typeof(options.defaultTime) == 'function') {
|
70
|
+
dateTimePicker.setTime(options.defaultTime.apply(element));
|
71
|
+
}else{
|
72
|
+
dateTimePicker.setTime(options.defaultTime);
|
73
|
+
}
|
74
|
+
},
|
75
|
+
bindMethods: function(element, dateTimePicker) {
|
76
|
+
dateTimePicker.getDateTime = methods.getDateTime.bind(dateTimePicker);
|
77
|
+
dateTimePicker.getDate = methods.getDate.bind(dateTimePicker);
|
78
|
+
dateTimePicker.getTime = methods.getTime.bind(dateTimePicker);
|
79
|
+
dateTimePicker.getAlerts = methods.getAlerts.bind(dateTimePicker);
|
80
|
+
|
81
|
+
dateTimePicker.setTime = methods.setTime.bind(dateTimePicker);
|
82
|
+
dateTimePicker.setAlert = methods.setAlert.bind(dateTimePicker);
|
83
|
+
dateTimePicker.removeAlert = methods.removeAlert.bind(dateTimePicker);
|
84
|
+
dateTimePicker.destroy = methods.destroy.bind(dateTimePicker);
|
85
|
+
dateTimePicker.thresholdDictionary = thresholdDictionary;
|
86
|
+
dateTimePicker.alerts = [];
|
87
|
+
dateTimePicker.element = element;
|
88
|
+
|
89
|
+
dateTimePicker.bind('clickoutside', function(e) {
|
90
|
+
//*****************************************************
|
91
|
+
// datepicker removes some elements from the dom, and
|
92
|
+
// that triggers clickoutside. So we need to check for elements
|
93
|
+
// that have been removed from the DOM.
|
94
|
+
|
95
|
+
if ($(e.target).parents('.ui-datepicker-header').length > 0) return; // Cycling through months
|
96
|
+
if ($(e.target).parents('.alert-record').length > 0) return; // Removal of alerts
|
97
|
+
//*****************************************************
|
98
|
+
|
99
|
+
// Looks like we're clear to remove
|
100
|
+
if (options.onClickOutside == 'cancel') {
|
101
|
+
options.onCancel.apply(element, [dateTimePicker]);
|
102
|
+
} else if (options.onClickOutside == 'OK') {
|
103
|
+
options.onOK.apply(element, [dateTimePicker]);
|
104
|
+
}
|
105
|
+
dateTimePicker.destroy();
|
106
|
+
});
|
107
|
+
|
108
|
+
dateTimePicker.find('.clock-down-arrow,.clock-up-arrow').click(function () {
|
109
|
+
methods.changeTime.apply($(this), [dateTimePicker]);
|
110
|
+
});
|
111
|
+
|
112
|
+
// Cancel button
|
113
|
+
dateTimePicker.find('.cancel').click(function() {
|
114
|
+
options.onCancel.apply(element, [dateTimePicker]);
|
115
|
+
dateTimePicker.destroy();
|
116
|
+
});
|
117
|
+
|
118
|
+
// OK button
|
119
|
+
dateTimePicker.find('.ok').click(function() {
|
120
|
+
options.onOK.apply(element, [dateTimePicker]);
|
121
|
+
dateTimePicker.destroy();
|
122
|
+
});
|
123
|
+
|
124
|
+
// Toggle alerts callback
|
125
|
+
dateTimePicker.find('.alert-trigger-container').click(function(e){
|
126
|
+
var slider = $(this).find('.slider');
|
127
|
+
slider.toggleClass("on");
|
128
|
+
|
129
|
+
if(slider.hasClass("on")) {
|
130
|
+
dateTimePicker.find('.alert-add').show();
|
131
|
+
} else {
|
132
|
+
// Destroy all alerts if use decides to hide UI
|
133
|
+
dateTimePicker.find('.alert-add').hide();
|
134
|
+
|
135
|
+
// callback for onRemoveAlert
|
136
|
+
$.each($(dateTimePicker.alerts), function(i, _alert) {
|
137
|
+
dateTimePicker.removeAlert($(_alert['recordElement']));
|
138
|
+
});
|
139
|
+
}
|
140
|
+
});
|
141
|
+
|
142
|
+
// Create alert callback
|
143
|
+
dateTimePicker.find('.btn-add-alert').click(function(){
|
144
|
+
var alertTime = dateTimePicker.find('.add-reminder-time-input input').val();
|
145
|
+
var alertThreshold = dateTimePicker.find('.alert-before .selected').data('threshold');
|
146
|
+
dateTimePicker.setAlert(alertTime, alertThreshold);
|
147
|
+
});
|
148
|
+
},
|
149
|
+
setAlert: function(alertTime, alertThreshold, _data) {
|
150
|
+
var alertRecord = $("<div class='alert-record'><span class='alert-time'>" + alertTime + "</span> <span data-threshold-value='"+alertThreshold+"' class='alert-threshold'>" + (this.thresholdDictionary[alertThreshold] || alertThreshold) + "</span></div>");
|
151
|
+
var cancelAlert = $("<span class='cancel'>X</span>");
|
152
|
+
|
153
|
+
var dateTimePicker = this;
|
154
|
+
cancelAlert.click(function() {
|
155
|
+
dateTimePicker.removeAlert($(this).closest('.alert-record'));
|
156
|
+
});
|
157
|
+
|
158
|
+
alertRecord.append(cancelAlert);
|
159
|
+
dateTimePicker.find('.scheduled-alerts').append(alertRecord);
|
160
|
+
|
161
|
+
var alertObject = methods.buildAlertObject(alertRecord);
|
162
|
+
dateTimePicker.alerts.push(alertObject);
|
163
|
+
|
164
|
+
// Custom data members for alert (can be set using defaultAlerts option)
|
165
|
+
if (_data) {
|
166
|
+
$.each(_data, function(attr, value) {
|
167
|
+
alertRecord.attr("data-"+attr, value);
|
168
|
+
alertRecord.data(attr, value);
|
169
|
+
});
|
170
|
+
|
171
|
+
alertObject.data = _data;
|
172
|
+
}
|
173
|
+
|
174
|
+
options.onSetAlert.apply(alertRecord, [alertObject]);
|
175
|
+
|
176
|
+
return alertObject;
|
177
|
+
},
|
178
|
+
removeAlert: function(alertDOMObject) {
|
179
|
+
// Note: Have to use [0] to get DOM element out of jQuery object (http://stackoverflow.com/questions/6325671/jquery-inarray-locating-html-element)
|
180
|
+
var arrayPosition = $.inArray(alertDOMObject[0], alertDOMObject.parent('.scheduled-alerts').children('.alert-record'));
|
181
|
+
|
182
|
+
options.onRemoveAlert.apply(this.alerts[arrayPosition]['recordElement'], [this.alerts[arrayPosition]]);
|
183
|
+
|
184
|
+
alertDOMObject.remove(); // remove it from DOM
|
185
|
+
this.alerts.splice(arrayPosition, 1); // Remove it from alerts array
|
186
|
+
},
|
187
|
+
buildAlertObject: function(alertRecord) {
|
188
|
+
var alertTime = parseInt($(alertRecord).find('.alert-time').html());
|
189
|
+
var alertThreshold = $(alertRecord).find('.alert-threshold').data('threshold-value');
|
190
|
+
return {time: alertTime, threshold: alertThreshold, recordElement: alertRecord};
|
191
|
+
},
|
192
|
+
destroy: function() {
|
193
|
+
this.element.data('activeDateTimePicker', false);
|
194
|
+
this.remove();
|
195
|
+
},
|
196
|
+
defaultTime: function() {
|
197
|
+
var today=new Date();
|
198
|
+
var hour = today.getHours() + 1 > 24 ? 0 : today.getHours() + 1
|
199
|
+
return methods.toTimeObject(hour, 0);
|
200
|
+
},
|
201
|
+
toTimeObject: function(hour, minute, ampm) {
|
202
|
+
var m1,m2;
|
203
|
+
hour = parseInt(hour);
|
204
|
+
minute = parseInt(minute);
|
205
|
+
|
206
|
+
if (hour >= 12) {
|
207
|
+
if (hour != 12) hour = hour - 12;
|
208
|
+
if (!ampm) ampm = 'pm';
|
209
|
+
}
|
210
|
+
else if (hour <= 11) {
|
211
|
+
if (hour == 0) hour = 1;
|
212
|
+
if (!ampm) ampm = 'am';
|
213
|
+
}
|
214
|
+
|
215
|
+
if (minute > 10) {
|
216
|
+
m1 = parseInt((""+minute)[0]);
|
217
|
+
m2 = parseInt((""+minute)[1]);
|
218
|
+
} else {
|
219
|
+
m1 = 0;
|
220
|
+
m2 = minute;
|
221
|
+
}
|
222
|
+
|
223
|
+
return { "hour" : hour,
|
224
|
+
"minuteOne" : m1,
|
225
|
+
"minuteTwo" : m2,
|
226
|
+
"ampm" : ampm };
|
227
|
+
},
|
228
|
+
setTime: function(timeObject) {
|
229
|
+
if (!this.time) this.time = methods.defaultTime();
|
230
|
+
$.extend(this.time, timeObject);
|
231
|
+
|
232
|
+
this.find('.clock-hour-one .clock-value').html(this.time['hour']);
|
233
|
+
this.find('.clock-minute-one .clock-value').html(this.time['minuteOne']);
|
234
|
+
this.find('.clock-minute-two .clock-value').html(this.time['minuteTwo']);
|
235
|
+
this.find('.clock-ampm .clock-value').html(this.time['ampm']);
|
236
|
+
},
|
237
|
+
changeTime: function(dateTimePicker) {
|
238
|
+
var value = parseInt($(this).siblings('.clock-value').html());
|
239
|
+
var min = parseInt($(this).closest('[data-min]').data('min') || '0');
|
240
|
+
var max = parseInt($(this).closest('[data-max]').data('max') || '0');
|
241
|
+
var _type = $(this).closest('[data-clock-value]').data('clock-value');
|
242
|
+
var next;
|
243
|
+
|
244
|
+
if (_type == 'ampm') {
|
245
|
+
next = ($(this).siblings('.clock-value').html() == 'am' ? 'pm' : 'am');
|
246
|
+
} else {
|
247
|
+
if ($(this).hasClass('clock-up-arrow')) {
|
248
|
+
next = ((value + 1) > max) ? min : value + 1;
|
249
|
+
} else {
|
250
|
+
next = ((value - 1) < min) ? max : value - 1;
|
251
|
+
}
|
252
|
+
}
|
253
|
+
|
254
|
+
dateTimePicker.time[_type] = next;
|
255
|
+
dateTimePicker.setTime();
|
256
|
+
},
|
257
|
+
getDateTime: function() {
|
258
|
+
var date = this.dtElement.datepicker('getDate');
|
259
|
+
var time = this.time;
|
260
|
+
var minute = parseInt(time.minuteOne + "" + time.minuteTwo);
|
261
|
+
var hour = parseInt(time.hour);
|
262
|
+
|
263
|
+
if (hour < 12 && time.ampm == 'pm'){
|
264
|
+
hour = hour + 12;
|
265
|
+
}
|
266
|
+
else if (hour == 12 && time.ampm == 'am') {
|
267
|
+
hour = 0;
|
268
|
+
}
|
269
|
+
|
270
|
+
date.setHours(hour);
|
271
|
+
date.setMinutes(minute);
|
272
|
+
return date;
|
273
|
+
},
|
274
|
+
getDate: function() {
|
275
|
+
var d = this.dtElement.datepicker('getDate');
|
276
|
+
return (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
|
277
|
+
},
|
278
|
+
getTime: function() {
|
279
|
+
return this.time;
|
280
|
+
},
|
281
|
+
getAlerts: function() {
|
282
|
+
return this.alerts;
|
283
|
+
}
|
284
|
+
};
|
285
|
+
|
286
|
+
var cal = '<div class="arrow_box-ca calendar-main-container"><div class="calender-container"> <div class="reminder-date-add"> </div> <ul class="reminder-time-set"> <li class="clock-hour-one" data-min="1" data-max="12" data-clock-value="hour"> <div class="clock-up-arrow"></div> <div class="clock-value">12</div> <div class="clock-down-arrow"></div> </li> <li class="clock-operator">:</li> <li class="clock-minute-one" data-max="5" data-clock-value="minuteOne"> <div class="clock-up-arrow"></div> <div class="clock-value">0</div> <div class="clock-down-arrow"></div> </li> <li class="clock-minute-two" data-max="9" data-clock-value="minuteTwo"> <div class="clock-up-arrow"></div> <div class="clock-value">0</div> <div class="clock-down-arrow"></div> </li> <li class="clock-ampm" data-clock-value="ampm"> <div class="clock-up-arrow"></div> <div class="clock-value">pm</div> <div class="clock-down-arrow"></div> </li> </ul> <div class="add-alert-container"> <div class="alerts-label">Alerts</div> <div class="alert-trigger-container"> <div class="alert-trigger"> <div class="slider off"></div> </div> <div class="trigger-labels"> <span class="pull-left">OFF</span> <span class="pull-right">ON</span> <br style="clear:both;"> </div> </div> <br style="clear:both;"> <div class="scheduled-alerts"></div> </div> <div class="alert-add"> <div class="a-label">Alerts</div> <div class="alert-settings"> <ul> <li class="add-reminder-time-input"><input type="text" value="5"></li> <li class="alert-before"> <a href="#" class="selected" data-format="M" title="Min" data-threshold="minute"><span class="alert-when">Minutes</span> <span class="before-label">before</span></a> <ul><li><a href="#" data-format="M" title="Minutes" data-threshold="minute"><span class="alert-when">Minutes</span> <span class="before-label">before</span></a></li><li><a href="#" title="Hours" data-format="H" data-threshold="hour"><span class="alert-when">Hours</span> <span class="alert-when">before</span></a></li> <li><a href="#" title="Days" data-format="D" data-threshold="day"><span class="alert-when">Days</span> <span class="before-label">before</span></a></li> <li><a href="#" title="Weeks" data-format="W" data-threshold="week"><span class="alert-when">Weeks</span> <span class="before-label">before</span></a></li> </ul> </li> <li class="btn-add-alert">+</li> <br style="clear:both;"> </ul> </div> </div> </div><div class="actions"><span class="cancel">Cancel</span><span class="ok">OK</span></div></div>';
|
287
|
+
|
288
|
+
var options = $.extend({
|
289
|
+
onClickOutside: 'OK', // 'OK' or 'cancel'
|
290
|
+
onSelectDate: $.noop, // (optional) When user clicks on a date. Passes dateText, datepicker instance, and associate input field as arguments.
|
291
|
+
onSetAlert: $.noop, // (optional) passes added alert as argument
|
292
|
+
onRemoveAlert: $.noop, // (optional) passes removed alert and alert instance as argument
|
293
|
+
onCancel: $.noop,
|
294
|
+
onOK: $.noop,
|
295
|
+
defaultDate: null,
|
296
|
+
defaultTime: null, // (optional) {hour: 12, minuteOne: 0, minuteTwo: 5, ampm: 'pm'} OR function that returns object
|
297
|
+
defaultAlerts: $.noop, // (optional) [{time: 5, threshold: 'Mins', data : {'alert-id' : 1}}, {time: 10, threshold: 'Days'}]
|
298
|
+
insert: null, // (optional) css id or function where you want to add the widget
|
299
|
+
hideAlertUI: null
|
300
|
+
}, opts);
|
301
|
+
|
302
|
+
return $(document).on('click', this.selector, function(e) {
|
303
|
+
if (!$(this).data('activeDateTimePicker')) {
|
304
|
+
methods.insertCalendar($(this), $(cal));
|
305
|
+
}
|
306
|
+
|
307
|
+
e.stopPropagation();
|
308
|
+
});
|
309
|
+
}
|
310
|
+
})(jQuery);
|
@@ -0,0 +1,339 @@
|
|
1
|
+
.arrow_box-ca {
|
2
|
+
background: rgb(221, 221, 221);
|
3
|
+
width: 232px;
|
4
|
+
position: absolute;
|
5
|
+
z-index: 1000;
|
6
|
+
border: thin solid rgb(173, 173, 173);
|
7
|
+
}
|
8
|
+
|
9
|
+
.arrow_box-ca:after, .arrow_box-ca:before {
|
10
|
+
bottom: 100%;
|
11
|
+
border: solid transparent;
|
12
|
+
content: " ";
|
13
|
+
height: 0;
|
14
|
+
width: 0;
|
15
|
+
position: absolute;
|
16
|
+
pointer-events: none;
|
17
|
+
}
|
18
|
+
|
19
|
+
.arrow_box-ca:after {
|
20
|
+
border-color: rgba(255, 255, 255, 0);
|
21
|
+
border-bottom-color: #dddddd;
|
22
|
+
border-width: 9px;
|
23
|
+
left: 50%;
|
24
|
+
margin-left: -9px;
|
25
|
+
}
|
26
|
+
|
27
|
+
.arrow_box-ca:before {
|
28
|
+
border-color: rgba(128, 201, 232, 0);
|
29
|
+
border-bottom-color: #adadad;
|
30
|
+
border-width: 10px;
|
31
|
+
left: 50%;
|
32
|
+
margin-left: -10px;
|
33
|
+
}
|
34
|
+
|
35
|
+
.calender-container {
|
36
|
+
display: inline-block;
|
37
|
+
background: rgb(231, 231, 231);
|
38
|
+
.actions{
|
39
|
+
display: none;
|
40
|
+
}
|
41
|
+
.reminder-date-add{
|
42
|
+
width: 232px;
|
43
|
+
margin: 0 auto;
|
44
|
+
.ui-datepicker-inline{
|
45
|
+
padding: 0;
|
46
|
+
width: auto;
|
47
|
+
}
|
48
|
+
.ui-corner-all{
|
49
|
+
-webkit-border-radius: 0;
|
50
|
+
border-radius: 0;
|
51
|
+
border: none;
|
52
|
+
background: transparent;
|
53
|
+
}
|
54
|
+
.ui-datepicker-header{
|
55
|
+
border: none;
|
56
|
+
background: transparent;
|
57
|
+
padding:0;
|
58
|
+
color: rgb(184, 184, 184);
|
59
|
+
height: 40px;
|
60
|
+
.ui-datepicker-prev{
|
61
|
+
top: 5px;
|
62
|
+
left: 13px;
|
63
|
+
span{
|
64
|
+
background: url(backend-v2/cal-month-prev-arrow.png) 0 0 no-repeat;
|
65
|
+
top: 13px;
|
66
|
+
margin-top: 0;
|
67
|
+
left: 9px;
|
68
|
+
}
|
69
|
+
}
|
70
|
+
.ui-datepicker-next{
|
71
|
+
top: 7px;
|
72
|
+
right: 0;
|
73
|
+
span{
|
74
|
+
background: url(backend-v2/cal-month-next-arrow.png) 0 0 no-repeat;;
|
75
|
+
top:18px;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
}
|
79
|
+
.ui-datepicker-calendar{
|
80
|
+
border-left: none;
|
81
|
+
thead{
|
82
|
+
background: rgb(74, 154, 255);
|
83
|
+
th{
|
84
|
+
color: #fff;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
td{
|
88
|
+
border: 0px;
|
89
|
+
}
|
90
|
+
}
|
91
|
+
.ui-state-default{
|
92
|
+
background: transparent;
|
93
|
+
color: rgb(143, 143, 143);
|
94
|
+
}
|
95
|
+
.ui-datepicker-title{
|
96
|
+
font-weight: normal;
|
97
|
+
}
|
98
|
+
.ui-datepicker td{
|
99
|
+
padding: 0;
|
100
|
+
a{
|
101
|
+
padding: 5px;
|
102
|
+
text-align: center;
|
103
|
+
text-decoration: none;
|
104
|
+
}
|
105
|
+
}
|
106
|
+
.ui-state-default, .ui-widget-content .ui-state-default{
|
107
|
+
border-top: thin solid rgb(241, 241, 241);
|
108
|
+
border-bottom: thin solid #d1d1d1;
|
109
|
+
border-left: thin solid #d1d1d1;
|
110
|
+
border-right: thin solid rgb(241, 241, 241);
|
111
|
+
color: rgb(121, 121, 121);
|
112
|
+
}
|
113
|
+
.ui-state-active{
|
114
|
+
background: rgb(182, 182, 182);
|
115
|
+
color: #fff;
|
116
|
+
}
|
117
|
+
.ui-datepicker-next{
|
118
|
+
right: 15px;
|
119
|
+
}
|
120
|
+
.ui-datepicker-next:hover{
|
121
|
+
right: 15px;
|
122
|
+
}
|
123
|
+
.ui-datepicker-title{
|
124
|
+
line-height: 3em;
|
125
|
+
color: rgb(134, 134, 134);
|
126
|
+
text-transform: uppercase;
|
127
|
+
}
|
128
|
+
}
|
129
|
+
.reminder-time-set {
|
130
|
+
width: 180px;
|
131
|
+
margin: 20px auto;
|
132
|
+
li{
|
133
|
+
display: inline-block;
|
134
|
+
.clock-value{
|
135
|
+
padding: 12px 5px;
|
136
|
+
font-size: 26px;
|
137
|
+
color: #868686;
|
138
|
+
background: #fff;
|
139
|
+
text-align: center;
|
140
|
+
}
|
141
|
+
.clock-up-arrow{
|
142
|
+
height: 10px;
|
143
|
+
background: url(backend-v2/up-arrow-cal.png) no-repeat center center;
|
144
|
+
width: 24px;
|
145
|
+
margin-bottom: 5px;
|
146
|
+
cursor: pointer;
|
147
|
+
}
|
148
|
+
.clock-down-arrow{
|
149
|
+
height: 10px;
|
150
|
+
background: url(backend-v2/down-arrow-cal.png) no-repeat center center;
|
151
|
+
width: 24px;
|
152
|
+
margin-top: 5px;
|
153
|
+
cursor: pointer;
|
154
|
+
}
|
155
|
+
}
|
156
|
+
li.clock-time {
|
157
|
+
.clock-up-arrow, .clock-down-arrow{
|
158
|
+
width: 50px;
|
159
|
+
}
|
160
|
+
}
|
161
|
+
.clock-operator {
|
162
|
+
font-size: 26px;
|
163
|
+
color: #868686;
|
164
|
+
padding: 0 5px;
|
165
|
+
}
|
166
|
+
}
|
167
|
+
.scheduled-alerts{
|
168
|
+
overflow: auto;
|
169
|
+
margin-left: -1px;
|
170
|
+
margin-bottom: 10px;
|
171
|
+
margin-top: 10px;
|
172
|
+
.alert-record {
|
173
|
+
background-color: #fff;
|
174
|
+
text-align: left;
|
175
|
+
overflow: hidden;
|
176
|
+
padding: 5px;
|
177
|
+
.cancel {
|
178
|
+
cursor: pointer;
|
179
|
+
float: right;
|
180
|
+
display: block;
|
181
|
+
background-color: #eee;
|
182
|
+
}
|
183
|
+
}
|
184
|
+
}
|
185
|
+
|
186
|
+
.add-alert-container{
|
187
|
+
text-align: center;
|
188
|
+
color: #868686;
|
189
|
+
border-top: thin solid #cfcfce;
|
190
|
+
padding: 5px 10px;
|
191
|
+
|
192
|
+
.alerts-label{
|
193
|
+
float: left;
|
194
|
+
font-size: 12px;
|
195
|
+
background: url(backend-v2/reminder-env.png) no-repeat 0 center;
|
196
|
+
padding: 20px 35px;
|
197
|
+
}
|
198
|
+
|
199
|
+
.alert-trigger-container{
|
200
|
+
float:right;
|
201
|
+
padding: 0 10px;
|
202
|
+
}
|
203
|
+
|
204
|
+
.alert-trigger{
|
205
|
+
position: relative;
|
206
|
+
background: #fff;
|
207
|
+
height:17px;
|
208
|
+
width: 50px;
|
209
|
+
margin: 9px 0;
|
210
|
+
border-radius: 10px;
|
211
|
+
-webkit-border-radius: 10px;
|
212
|
+
overflow: hidden;
|
213
|
+
.slider{
|
214
|
+
position: absolute;
|
215
|
+
height: 100%;
|
216
|
+
width: 17px;
|
217
|
+
top: 0;
|
218
|
+
border-radius: 10px;
|
219
|
+
-webkit-border-radius: 10px;
|
220
|
+
cursor: pointer;
|
221
|
+
}
|
222
|
+
.slider.off{
|
223
|
+
background: #b6b6b6;
|
224
|
+
|
225
|
+
}
|
226
|
+
.slider.on{
|
227
|
+
background: #4a9aff;
|
228
|
+
right: 0;
|
229
|
+
}
|
230
|
+
}
|
231
|
+
|
232
|
+
.trigger-labels{
|
233
|
+
font-size: 10px;
|
234
|
+
}
|
235
|
+
}
|
236
|
+
|
237
|
+
.alert-add{
|
238
|
+
background: #4a9aff;
|
239
|
+
padding: 10px;
|
240
|
+
display: none;
|
241
|
+
color: #fff;
|
242
|
+
.alert-settings{
|
243
|
+
a{
|
244
|
+
color: #fff !important;
|
245
|
+
}
|
246
|
+
>ul{
|
247
|
+
display: inline-block;
|
248
|
+
cursor: pointer;
|
249
|
+
>li{
|
250
|
+
float:left;
|
251
|
+
background: #e7e7e7;
|
252
|
+
padding: 10px 0;
|
253
|
+
color:#4a9aff;
|
254
|
+
font-size: 20px;
|
255
|
+
width: 50px;
|
256
|
+
text-align: center;
|
257
|
+
}
|
258
|
+
li.alert-before{
|
259
|
+
background: #3988e9;
|
260
|
+
color: #fff;
|
261
|
+
font-size: 12px;
|
262
|
+
width: 110px;
|
263
|
+
text-align: left;
|
264
|
+
padding: 0;
|
265
|
+
overflow:hidden;
|
266
|
+
position: relative;
|
267
|
+
a{
|
268
|
+
color: #fff;
|
269
|
+
padding: 8px 10px;
|
270
|
+
display: block;
|
271
|
+
|
272
|
+
}
|
273
|
+
ul{
|
274
|
+
position: absolute;
|
275
|
+
width: 100%;
|
276
|
+
background: #3988e9;
|
277
|
+
li{
|
278
|
+
a{
|
279
|
+
border-top: thin solid #fff;
|
280
|
+
}
|
281
|
+
}
|
282
|
+
}
|
283
|
+
}
|
284
|
+
li.alert-before:hover{
|
285
|
+
overflow: visible;
|
286
|
+
}
|
287
|
+
li.add-reminder-time-input{
|
288
|
+
padding:0;
|
289
|
+
input{
|
290
|
+
height: 25px;
|
291
|
+
margin: 2px;
|
292
|
+
line-height: 25px;
|
293
|
+
width: 37px;
|
294
|
+
text-align: center;
|
295
|
+
background: transparent;
|
296
|
+
border: none;
|
297
|
+
outline: none;
|
298
|
+
color: #4a9aff;
|
299
|
+
font-size: 15px;
|
300
|
+
}
|
301
|
+
}
|
302
|
+
li.btn-add-alert{
|
303
|
+
font-weight: bold;
|
304
|
+
font-size: 32px;
|
305
|
+
padding: 8px 0;
|
306
|
+
}
|
307
|
+
}
|
308
|
+
}
|
309
|
+
a.selected{
|
310
|
+
background-image: url(backend-v2/table-sort-arrow-down.png);
|
311
|
+
background-position: 99px center;
|
312
|
+
background-repeat: no-repeat;
|
313
|
+
}
|
314
|
+
}
|
315
|
+
|
316
|
+
.add-reminder-trigger-show{
|
317
|
+
overflow: visible !important;
|
318
|
+
background: rgb(231, 231, 231);
|
319
|
+
}
|
320
|
+
|
321
|
+
}
|
322
|
+
.actions{
|
323
|
+
float:right;
|
324
|
+
span{
|
325
|
+
display: inline-block;
|
326
|
+
padding: 5px 10px;
|
327
|
+
min-width: 40px;
|
328
|
+
text-align:center;
|
329
|
+
margin: 15px 5px;
|
330
|
+
cursor: pointer;
|
331
|
+
}
|
332
|
+
.cancel{
|
333
|
+
background: #b6b6b6;
|
334
|
+
}
|
335
|
+
.ok{
|
336
|
+
background: #4a9aff;
|
337
|
+
color: #fff;
|
338
|
+
}
|
339
|
+
}
|
metadata
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jquery-datetimepicker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Aldo Sarmiento
|
9
|
+
- Chris Kendrick
|
10
|
+
- Clifford Simon
|
11
|
+
autorequire:
|
12
|
+
bindir: bin
|
13
|
+
cert_chain: []
|
14
|
+
date: 2013-06-03 00:00:00.000000000 Z
|
15
|
+
dependencies: []
|
16
|
+
description: Simple pop up widget for picking a date and time. Also can set reminders
|
17
|
+
and alerts
|
18
|
+
email: cliff@bigpurpledot.com
|
19
|
+
executables: []
|
20
|
+
extensions: []
|
21
|
+
extra_rdoc_files: []
|
22
|
+
files:
|
23
|
+
- vendor/assets/javascripts/jquery-datetimepicker.js
|
24
|
+
- vendor/assets/stylesheets/jquery-datetimepicker.css
|
25
|
+
- README.md
|
26
|
+
homepage: http://rubygems.org/gems/jquery-datetimepicker
|
27
|
+
licenses: []
|
28
|
+
post_install_message:
|
29
|
+
rdoc_options: []
|
30
|
+
require_paths:
|
31
|
+
- lib
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
requirements: []
|
45
|
+
rubyforge_project:
|
46
|
+
rubygems_version: 1.8.25
|
47
|
+
signing_key:
|
48
|
+
specification_version: 3
|
49
|
+
summary: Date and Time Picker into one!
|
50
|
+
test_files: []
|