diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index c3612d3..b90401f 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -1,128 +1,62 @@
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery.min
//= require jquery_ujs
+//= require jquery.timepicker.min
//= require jquery-ui.min
//= require bootstrap.min
//= require jstree
//= require chosen.jquery.min
//= require jquery.dataTables.min
//= require dataTables.bootstrap.min
//= require_tree .
//= require highcharts
//= require jobs
//= require filesets
//= require clients
$(document).ready(function() {
- if ($('.schedule_run_form_plus').size() > 0) {
- $(".schedule_run_form_plus").click(function() {
- addScheduleRun();
- return false;
- });
- };
- if ($('.schedule_run_form_remove').size() > 0) {
- $(".schedule_run_form_remove").click(function() {
- removeScheduleRun();
- return false;
- });
- };
- if ($('.schedule_run_form').size() > 1) {
- $('.schedule_run_form_remove').show();
- };
if ($('table#admin_clients').size() > 0) {
$('table#admin_clients').DataTable({
paging: false,
columnDefs: [
{
targets: 'neither-search-nor-order',
orderable: false,
searchable: false
},
{
targets: 'no-search',
orderable: true,
searchable: false
}],
});
};
if ($('table#admin_jobs').size() > 0) {
$('table#admin_jobs').DataTable({
paging: false,
columnDefs: [
{
targets: 'neither-search-nor-order',
orderable: false,
searchable: false
},
{
targets: 'no-search',
orderable: true,
searchable: false
}],
});
};
});
-
-function addScheduleRun() {
- var count = $('.schedule_run_form').size();
- var scheduleRun = $('.schedule_run_form:last').clone();
-
- $(scheduleRun).find('label').each(function() {
- var newLabel, oldLabel;
- oldLabel = $(this).attr('for');
- newLabel = oldLabel.replace(new RegExp(/_[0-9]+_/), "_" + count + "_");
- $(this).attr('for', newLabel);
- });
-
- $(scheduleRun).find('select, input').each(function() {
- var newId, oldId, newName, oldName;
- oldId = $(this).attr('id');
- newId = oldId.replace(new RegExp(/_[0-9]+_/), "_" + count + "_");
- $(this).attr('id', newId);
-
- oldName = $(this).attr('name');
- newName = oldName.replace(new RegExp(/[0-9]+/), "[" + count + "]");
- $(this).attr('name', newName);
- });
-
- scheduleRun.insertAfter('.schedule_run_form:last');
- $('.schedule_run_form:last input').val('');
- if (count > 0) {
- $(".schedule_run_form_remove").show();
- };
- $('.destroyer:last').remove();
-}
-
-function removeScheduleRun() {
- var count = $('.schedule_run_form').size();
- if (count > 1) {
- var last_id = count - 1;
- $('').attr({
- type: 'hidden',
- class: 'destroyer',
- id: 'schedule_schedule_runs_attributes_' + last_id + '__destroy',
- name: 'schedule[schedule_runs_attributes][' + last_id + '][_destroy]',
- value: '1'
- }).appendTo('form');
-
- $('.schedule_run_form:last').remove();
- if ($('.schedule_run_form').size() == 1) {
- $(".schedule_run_form_remove").hide();
- };
- }
- else {
- alert('nothing to remove');
- };
-}
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/schedules.js
similarity index 54%
copy from app/assets/javascripts/application.js
copy to app/assets/javascripts/schedules.js
index c3612d3..97d3101 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/schedules.js
@@ -1,128 +1,99 @@
-// This is a manifest file that'll be compiled into application.js, which will include all the files
-// listed below.
-//
-// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
-// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
-//
-// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
-// compiled file.
-//
-// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
-// about supported directives.
-//
-//= require jquery.min
-//= require jquery_ujs
-//= require jquery-ui.min
-//= require bootstrap.min
-//= require jstree
-//= require chosen.jquery.min
-//= require jquery.dataTables.min
-//= require dataTables.bootstrap.min
-//= require_tree .
-//= require highcharts
-//= require jobs
-//= require filesets
-//= require clients
-
$(document).ready(function() {
if ($('.schedule_run_form_plus').size() > 0) {
$(".schedule_run_form_plus").click(function() {
addScheduleRun();
return false;
});
};
if ($('.schedule_run_form_remove').size() > 0) {
$(".schedule_run_form_remove").click(function() {
removeScheduleRun();
return false;
});
};
if ($('.schedule_run_form').size() > 1) {
$('.schedule_run_form_remove').show();
};
- if ($('table#admin_clients').size() > 0) {
- $('table#admin_clients').DataTable({
- paging: false,
- columnDefs: [
- {
- targets: 'neither-search-nor-order',
- orderable: false,
- searchable: false
- },
- {
- targets: 'no-search',
- orderable: true,
- searchable: false
- }],
- });
- };
- if ($('table#admin_jobs').size() > 0) {
- $('table#admin_jobs').DataTable({
- paging: false,
- columnDefs: [
- {
- targets: 'neither-search-nor-order',
- orderable: false,
- searchable: false
- },
- {
- targets: 'no-search',
- orderable: true,
- searchable: false
- }],
- });
- };
-
+ if ($('input.timepicker').size() > 0) {
+ setTimepickers();
+ }
});
+function setTimepickers() {
+ $('input.timepicker').timepicker(
+ {
+ timeFormat: 'HH:mm',
+ interval: 1,
+ minTime: '00:00',
+ maxTime: '23:59',
+ defaultTime: '08:00',
+ startTime: '00:00',
+ dynamic: false,
+ dropdown: true,
+ scrollbar: true
+ });
+}
+
function addScheduleRun() {
var count = $('.schedule_run_form').size();
- var scheduleRun = $('.schedule_run_form:last').clone();
+ var scheduleRun = $('.schedule_run_form:last').clone(true);
$(scheduleRun).find('label').each(function() {
var newLabel, oldLabel;
oldLabel = $(this).attr('for');
newLabel = oldLabel.replace(new RegExp(/_[0-9]+_/), "_" + count + "_");
$(this).attr('for', newLabel);
});
$(scheduleRun).find('select, input').each(function() {
var newId, oldId, newName, oldName;
oldId = $(this).attr('id');
newId = oldId.replace(new RegExp(/_[0-9]+_/), "_" + count + "_");
$(this).attr('id', newId);
oldName = $(this).attr('name');
newName = oldName.replace(new RegExp(/[0-9]+/), "[" + count + "]");
$(this).attr('name', newName);
});
+ $(scheduleRun).find('.timepicker').timepicker(
+ {
+ timeFormat: 'HH:mm',
+ interval: 1,
+ minTime: '00:00',
+ maxTime: '23:59',
+ defaultTime: '08:00',
+ startTime: '00:00',
+ dynamic: false,
+ dropdown: true,
+ scrollbar: true
+ });
scheduleRun.insertAfter('.schedule_run_form:last');
$('.schedule_run_form:last input').val('');
if (count > 0) {
$(".schedule_run_form_remove").show();
};
$('.destroyer:last').remove();
}
function removeScheduleRun() {
var count = $('.schedule_run_form').size();
if (count > 1) {
var last_id = count - 1;
$('').attr({
type: 'hidden',
class: 'destroyer',
id: 'schedule_schedule_runs_attributes_' + last_id + '__destroy',
name: 'schedule[schedule_runs_attributes][' + last_id + '][_destroy]',
value: '1'
}).appendTo('form');
$('.schedule_run_form:last').remove();
if ($('.schedule_run_form').size() == 1) {
$(".schedule_run_form_remove").hide();
};
}
else {
alert('nothing to remove');
};
}
diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css
index 806f34f..320c6f7 100644
--- a/app/assets/stylesheets/application.css
+++ b/app/assets/stylesheets/application.css
@@ -1,86 +1,87 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
* compiled file so the styles you add here take precedence over styles defined in any styles
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
* file per style scope.
*
*= require bootstrap.min
*= require jstree-default
*= require bootstrap-chosen
*= require dataTables.bootstrap.min
+ *= require jquery.timepicker.min
*= require_tree .
*= require_self
*/
/* Make sure navbar does not overlay body */
body {
padding-top: 70px;
}
.right {
text-align: right;
margin-right: 0px;
float: right;
}
.graybox {
max-width: 500px;
margin-right: 0;
margin-left: 0;
background-color: #F7F7F9;
margin-bottom: 30px;
}
.graybox form {
padding-top: 30px;
}
#_days_back {
margin: auto 10px;
}
tr.fatal > td {
background-color: #EA7272;
}
tr.fatal > td {
background-color: #EA7272;
}
li.logo {
}
li.logo > a {
padding-left: 60px;
background: url('/images/logo.png') no-repeat scroll 4px 5px;
padding-top: 5px;
padding-bottom: 5px;
}
li.logo > a > p {
font-size: 13px;
margin-bottom: 0;
color: #333333px;
}
.jstree-closed > a > i.jstree-checkbox,
.jstree-open > a > i.jstree-checkbox
{ display: none; }
.datatable-wrapper {
margin-bottom: 20px;
}
.faq-link > svg {
visibility: hidden;
}
h2:hover > a.faq-link > svg {
visibility: visible;
}
diff --git a/app/views/schedules/_form.html.erb b/app/views/schedules/_form.html.erb
index 2e9f830..1b00f39 100644
--- a/app/views/schedules/_form.html.erb
+++ b/app/views/schedules/_form.html.erb
@@ -1,49 +1,49 @@
<%= bootstrap_form_for(@schedule, url: url, method: method, layout: :horizontal,
label_col: 'col-xs-3', control_col: 'col-xs-8') do |f| %>
<%= f.text_field :name, required: true %>
<% if ['schedule_runs.day','schedule_runs.month','scheduled_runs.time'] - @schedule.errors.keys %>
<% @schedule.errors.full_messages.each do |message| %>
- <%= message %>
<% end %>
<% end %>
<%= f.fields_for :schedule_runs, @schedule.schedule_runs do |r| %>
<% end %>
<%= link_to '#', class: 'schedule_run_form_remove', style: 'display:none;' do %>
<% end %>
<%= link_to '#', class: 'schedule_run_form_plus' do %>
<% end %>
<%= (hidden_field_tag :job_id, @job_id) if @job_id %>
<% end %>
diff --git a/vendor/assets/javascripts/jquery.timepicker.min.js b/vendor/assets/javascripts/jquery.timepicker.min.js
new file mode 100644
index 0000000..fe895a0
--- /dev/null
+++ b/vendor/assets/javascripts/jquery.timepicker.min.js
@@ -0,0 +1,10 @@
+/**
+ * jQuery Timepicker - v1.3.5 - 2016-07-10
+ * http://timepicker.co
+ *
+ * Enhances standard form input fields helping users to select (or type) times.
+ *
+ * Copyright (c) 2016 Willington Vega; Licensed MIT, GPL
+ */
+
+!function(a){"object"==typeof module&&"object"==typeof module.exports?a(require("jquery"),window,document):"undefined"!=typeof jQuery&&a(jQuery,window,document)}(function(a,b,c,d){!function(){function b(a,b,c){return new Array(c+1-a.length).join(b)+a}function d(){if(1===arguments.length){var b=arguments[0];return"string"==typeof b&&(b=a.fn.timepicker.parseTime(b)),new Date(0,0,0,b.getHours(),b.getMinutes(),b.getSeconds())}return 3===arguments.length?new Date(0,0,0,arguments[0],arguments[1],arguments[2]):2===arguments.length?new Date(0,0,0,arguments[0],arguments[1],0):new Date(0,0,0)}a.TimePicker=function(){var b=this;b.container=a(".ui-timepicker-container"),b.ui=b.container.find(".ui-timepicker"),0===b.container.length&&(b.container=a("").addClass("ui-timepicker-container").addClass("ui-timepicker-hidden ui-helper-hidden").appendTo("body").hide(),b.ui=a("").addClass("ui-timepicker").addClass("ui-widget ui-widget-content ui-menu").addClass("ui-corner-all").appendTo(b.container),b.viewport=a("").addClass("ui-timepicker-viewport").appendTo(b.ui),a.fn.jquery>="1.4.2"&&b.ui.delegate("a","mouseenter.timepicker",function(){b.activate(!1,a(this).parent())}).delegate("a","mouseleave.timepicker",function(){b.deactivate(!1)}).delegate("a","click.timepicker",function(c){c.preventDefault(),b.select(!1,a(this).parent())}))},a.TimePicker.count=0,a.TimePicker.instance=function(){return a.TimePicker._instance||(a.TimePicker._instance=new a.TimePicker),a.TimePicker._instance},a.TimePicker.prototype={keyCode:{ALT:18,BLOQ_MAYUS:20,CTRL:17,DOWN:40,END:35,ENTER:13,HOME:36,LEFT:37,NUMPAD_ENTER:108,PAGE_DOWN:34,PAGE_UP:33,RIGHT:39,SHIFT:16,TAB:9,UP:38},_items:function(b,c){var e,f,g=this,h=a(""),i=null;for(-1===b.options.timeFormat.indexOf("m")&&b.options.interval%60!==0&&(b.options.interval=60*Math.max(Math.round(b.options.interval/60),1)),e=c?d(c):b.options.startTime?d(b.options.startTime):d(b.options.startHour,b.options.startMinutes),f=new Date(e.getTime()+864e5);f>e;)g._isValidTime(b,e)&&(i=a("").addClass("ui-menu-item").appendTo(h),a("").addClass("ui-corner-all").text(a.fn.timepicker.formatTime(b.options.timeFormat,e)).appendTo(i),i.data("time-value",e)),e=new Date(e.getTime()+60*b.options.interval*1e3);return h.children()},_isValidTime:function(a,b){var c=null,e=null;return b=d(b),null!==a.options.minTime?c=d(a.options.minTime):(null!==a.options.minHour||null!==a.options.minMinutes)&&(c=d(a.options.minHour,a.options.minMinutes)),null!==a.options.maxTime?e=d(a.options.maxTime):(null!==a.options.maxHour||null!==a.options.maxMinutes)&&(e=d(a.options.maxHour,a.options.maxMinutes)),null!==c&&null!==e?b>=c&&e>=b:null!==c?b>=c:null!==e?e>=b:!0},_hasScroll:function(){var a="undefined"!=typeof this.ui.prop?"prop":"attr";return this.ui.height()e?c.ui.scrollTop(f+e):e>=g&&c.ui.scrollTop(f+e-g+b.height())}c.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-item").end()}},deactivate:function(){var a=this;a.active&&(a.active.children("a").removeClass("ui-state-hover").removeAttr("id"),a.active=null)},next:function(a){return(this.closed()||this.instance===a)&&this._move(a,"next",".ui-menu-item:first"),a.element},previous:function(a){return(this.closed()||this.instance===a)&&this._move(a,"prev",".ui-menu-item:last"),a.element},first:function(a){return this.instance===a?this.active&&0===this.active.prevAll(".ui-menu-item").length:!1},last:function(a){return this.instance===a?this.active&&0===this.active.nextAll(".ui-menu-item").length:!1},selected:function(a){return this.instance===a&&this.active?this.active:null},open:function(b){var d=this,e=b.getTime(),f=b.options.dynamic&&e;if(!b.options.dropdown)return b.element;switch(b.element.data("timepicker-event-namespace",Math.random()),a(c).bind("click.timepicker-"+b.element.data("timepicker-event-namespace"),function(a){b.element.get(0)===a.target?b.element.data("timepicker-user-clicked-outside",!1):b.element.data("timepicker-user-clicked-outside",!0).blur()}),(b.rebuild||!b.items||f)&&(b.items=d._items(b,f?e:null)),(b.rebuild||d.instance!==b||f)&&(a.fn.jquery<"1.4.2"?(d.viewport.children().remove(),d.viewport.append(b.items),d.viewport.find("a").bind("mouseover.timepicker",function(){d.activate(b,a(this).parent())}).bind("mouseout.timepicker",function(){d.deactivate(b)}).bind("click.timepicker",function(c){c.preventDefault(),d.select(b,a(this).parent())})):(d.viewport.children().detach(),d.viewport.append(b.items))),b.rebuild=!1,d.container.removeClass("ui-helper-hidden ui-timepicker-hidden ui-timepicker-standard ui-timepicker-corners").show(),b.options.theme){case"standard":d.container.addClass("ui-timepicker-standard");break;case"standard-rounded-corners":d.container.addClass("ui-timepicker-standard ui-timepicker-corners")}d.container.hasClass("ui-timepicker-no-scrollbar")||b.options.scrollbar||(d.container.addClass("ui-timepicker-no-scrollbar"),d.viewport.css({paddingRight:40}));var g=d.container.outerHeight()-d.container.height(),h=b.options.zindex?b.options.zindex:b.element.offsetParent().css("z-index"),i=b.element.offset();d.container.css({top:i.top+b.element.outerHeight(),left:i.left}),d.container.show(),d.container.css({left:b.element.offset().left,height:d.ui.outerHeight()+g,width:b.element.outerWidth(),zIndex:h,cursor:"default"});var j=d.container.width()-(d.ui.outerWidth()-d.ui.width());return d.ui.css({width:j}),d.viewport.css({width:j}),b.items.css({width:j}),d.instance=b,e?b.items.each(function(){var c,f=a(this);return c=a.fn.jquery<"1.4.2"?a.fn.timepicker.parseTime(f.find("a").text()):f.data("time-value"),c.getTime()===e.getTime()?(d.activate(b,f),!1):!0}):d.deactivate(b),b.element},close:function(b){var d=this;return d.instance===b&&(d.container.addClass("ui-helper-hidden ui-timepicker-hidden").hide(),d.ui.scrollTop(0),d.ui.children().removeClass("ui-state-hover")),a(c).unbind("click.timepicker-"+b.element.data("timepicker-event-namespace")),b.element},closed:function(){return this.ui.is(":hidden")},destroy:function(a){var b=this;return b.close(a,!0),a.element.unbind(".timepicker").data("TimePicker",null)},parse:function(b,c){return a.fn.timepicker.parseTime(c)},format:function(b,c,d){return d=d||b.options.timeFormat,a.fn.timepicker.formatTime(d,c)},getTime:function(b){var c=this,d=a.fn.timepicker.parseTime(b.element.val());return d instanceof Date&&!c._isValidTime(b,d)?null:d instanceof Date&&b.selectedTime?b.format(d)===b.format(b.selectedTime)?b.selectedTime:d:d instanceof Date?d:null},setTime:function(b,c,e){var f=this,g=b.selectedTime;if("string"==typeof c&&(c=b.parse(c)),c&&c.getMinutes&&f._isValidTime(b,c)){if(c=d(c),b.selectedTime=c,b.element.val(b.format(c,b.options.timeFormat)),e)return b}else b.selectedTime=null;return(null!==g||null!==b.selectedTime)&&(b.element.trigger("time-change",[c]),a.isFunction(b.options.change)&&b.options.change.apply(b.element,[c])),b.element},option:function(b,c,d){if("undefined"==typeof d)return b.options[c];var e,f,g=b.getTime();"string"==typeof c?(e={},e[c]=d):e=c,f=["minHour","minMinutes","minTime","maxHour","maxMinutes","maxTime","startHour","startMinutes","startTime","timeFormat","interval","dropdown"],a.each(e,function(c){b.options[c]=e[c],b.rebuild=b.rebuild||a.inArray(c,f)>-1}),b.rebuild&&b.setTime(g)}},a.TimePicker.defaults={timeFormat:"hh:mm p",minHour:null,minMinutes:null,minTime:null,maxHour:null,maxMinutes:null,maxTime:null,startHour:null,startMinutes:null,startTime:null,interval:30,dynamic:!0,theme:"standard",zindex:null,dropdown:!0,scrollbar:!1,change:function(){}},a.TimePicker.methods={chainable:["next","previous","open","close","destroy","setTime"]},a.fn.timepicker=function(b){if("string"==typeof b){var c,d,e=Array.prototype.slice.call(arguments,1);return c="option"===b&&arguments.length>2?"each":-1!==a.inArray(b,a.TimePicker.methods.chainable)?"each":"map",d=this[c](function(){var c=a(this),d=c.data("TimePicker");return"object"==typeof d?d[b].apply(d,e):void 0}),"map"===c&&1===this.length?a.makeArray(d).shift():"map"===c?a.makeArray(d):d}if(1===this.length&&this.data("TimePicker"))return this.data("TimePicker");var f=a.extend({},a.TimePicker.defaults,b);return this.each(function(){a.TimePicker.instance().register(this,f)})},a.fn.timepicker.formatTime=function(a,c){var d=c.getHours(),e=d%12,f=c.getMinutes(),g=c.getSeconds(),h={hh:b((0===e?12:e).toString(),"0",2),HH:b(d.toString(),"0",2),mm:b(f.toString(),"0",2),ss:b(g.toString(),"0",2),h:0===e?12:e,H:d,m:f,s:g,p:d>11?"PM":"AM"},i=a,j="";for(j in h)h.hasOwnProperty(j)&&(i=i.replace(new RegExp(j,"g"),h[j]));return i=i.replace(new RegExp("a","g"),d>11?"pm":"am")},a.fn.timepicker.parseTime=function(){var b=[[/^(\d+)$/,"$1"],[/^:(\d)$/,"$10"],[/^:(\d+)/,"$1"],[/^(\d):([7-9])$/,"0$10$2"],[/^(\d):(\d\d)$/,"$1$2"],[/^(\d):(\d{1,})$/,"0$1$20"],[/^(\d\d):([7-9])$/,"$10$2"],[/^(\d\d):(\d)$/,"$1$20"],[/^(\d\d):(\d*)$/,"$1$2"],[/^(\d{3,}):(\d)$/,"$10$2"],[/^(\d{3,}):(\d{2,})/,"$1$2"],[/^(\d):(\d):(\d)$/,"0$10$20$3"],[/^(\d{1,2}):(\d):(\d\d)/,"$10$2$3"]],c=b.length;return function(e){var f=d(new Date),g=!1,h=!1,i=!1,j=!1,k=!1;if("undefined"==typeof e||!e.toLowerCase)return null;e=e.toLowerCase(),g=/a/.test(e),h=g?!1:/p/.test(e),e=e.replace(/[^0-9:]/g,"").replace(/:+/g,":");for(var l=0;c>l;l+=1)if(b[l][0].test(e)){e=e.replace(b[l][0],b[l][1]);break}return e=e.replace(/:/g,""),1===e.length?i=e:2===e.length?i=e:3===e.length||5===e.length?(i=e.substr(0,1),j=e.substr(1,2),k=e.substr(3,2)):(4===e.length||e.length>5)&&(i=e.substr(0,2),j=e.substr(2,2),k=e.substr(4,2)),e.length>0&&e.length<5&&(e.length<3&&(j=0),k=0),i===!1||j===!1||k===!1?!1:(i=parseInt(i,10),j=parseInt(j,10),k=parseInt(k,10),g&&12===i?i=0:h&&12>i&&(i+=12),i>24?e.length>=6?a.fn.timepicker.parseTime(e.substr(0,5)):a.fn.timepicker.parseTime(e+"0"+(g?"a":"")+(h?"p":"")):(f.setHours(i,j,k),f))}}()}()});
\ No newline at end of file
diff --git a/vendor/assets/stylesheets/jquery.timepicker.min.css b/vendor/assets/stylesheets/jquery.timepicker.min.css
new file mode 100644
index 0000000..bb60921
--- /dev/null
+++ b/vendor/assets/stylesheets/jquery.timepicker.min.css
@@ -0,0 +1,11 @@
+/**
+ * jQuery Timepicker - v1.3.5 - 2016-07-10
+ * http://timepicker.co
+ *
+ * Enhances standard form input fields helping users to select (or type) times.
+ *
+ * Copyright (c) 2016 Willington Vega; Licensed MIT, GPL
+ */
+
+
+.ui-timepicker-container{position:absolute;overflow:hidden;box-sizing:border-box}.ui-timepicker{box-sizing:content-box;display:block;height:205px;list-style:none outside none;margin:0;padding:0 1px;text-align:center}.ui-timepicker-viewport{box-sizing:content-box;display:block;height:205px;margin:0;padding:0;overflow:auto;overflow-x:hidden}.ui-timepicker-standard{font-family:Verdana,Arial,sans-serif;font-size:1.1em;background-color:#FFF;border:1px solid #AAA;color:#222;margin:0;padding:2px}.ui-timepicker-standard a{border:1px solid transparent;color:#222;display:block;padding:.2em .4em;text-decoration:none}.ui-timepicker-standard .ui-state-hover{background-color:#DADADA;border:1px solid #999;font-weight:400;color:#212121}.ui-timepicker-standard .ui-menu-item{margin:0;padding:0}.ui-timepicker-corners,.ui-timepicker-corners .ui-corner-all{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.ui-timepicker-hidden{display:none}.ui-timepicker-no-scrollbar .ui-timepicker{border:0}
\ No newline at end of file