diff options
Diffstat (limited to 'public/assets/js/DataTables/DateTime-1.4.0')
4 files changed, 0 insertions, 1933 deletions
diff --git a/public/assets/js/DataTables/DateTime-1.4.0/css/dataTables.dateTime.css b/public/assets/js/DataTables/DateTime-1.4.0/css/dataTables.dateTime.css deleted file mode 100644 index 768efed..0000000 --- a/public/assets/js/DataTables/DateTime-1.4.0/css/dataTables.dateTime.css +++ /dev/null @@ -1,218 +0,0 @@ -div.dt-datetime { - position: absolute; - background-color: white; - z-index: 2050; - border: 1px solid #ccc; - box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.5); - padding: 0 20px 6px 20px; - width: 275px; -} -div.dt-datetime.inline { - position: relative; - box-shadow: none; -} -div.dt-datetime div.dt-datetime-title { - text-align: center; - padding: 5px 0px 3px; -} -div.dt-datetime div.dt-datetime-buttons { - text-align: center; -} -div.dt-datetime div.dt-datetime-buttons a { - display: inline-block; - padding: 0 0.5em 0.5em 0.5em; - margin: 0; - font-size: 0.9em; -} -div.dt-datetime div.dt-datetime-buttons a:hover { - text-decoration: underline; -} -div.dt-datetime table { - border-spacing: 0; - margin: 12px 0; - width: 100%; -} -div.dt-datetime table.dt-datetime-table-nospace { - margin-top: -12px; -} -div.dt-datetime table th { - font-size: 0.8em; - color: #777; - font-weight: normal; - width: 14.285714286%; - padding: 0 0 4px 0; - text-align: center; -} -div.dt-datetime table td { - font-size: 0.9em; - color: #444; - padding: 0; -} -div.dt-datetime table td.selectable { - text-align: center; - background: #f5f5f5; -} -div.dt-datetime table td.selectable.disabled { - color: #aaa; - background: white; -} -div.dt-datetime table td.selectable.disabled button:hover { - color: #aaa; - background: white; -} -div.dt-datetime table td.selectable.now { - background-color: #ddd; -} -div.dt-datetime table td.selectable.now button { - font-weight: bold; -} -div.dt-datetime table td.selectable.selected button { - background: #4E6CA3; - color: white; - border-radius: 2px; -} -div.dt-datetime table td.selectable button:hover { - background: #ff8000; - color: white; - border-radius: 2px; -} -div.dt-datetime table td.dt-datetime-week { - font-size: 0.7em; -} -div.dt-datetime table button { - width: 100%; - box-sizing: border-box; - border: none; - background: transparent; - font-size: inherit; - color: inherit; - text-align: center; - padding: 4px 0; - cursor: pointer; - margin: 0; -} -div.dt-datetime table button span { - display: inline-block; - min-width: 14px; - text-align: right; -} -div.dt-datetime table.weekNumber th { - width: 12.5%; -} -div.dt-datetime div.dt-datetime-calendar table { - margin-top: 0; -} -div.dt-datetime div.dt-datetime-label { - position: relative; - display: inline-block; - height: 30px; - padding: 5px 6px; - border: 1px solid transparent; - box-sizing: border-box; - cursor: pointer; -} -div.dt-datetime div.dt-datetime-label:hover { - border: 1px solid #ddd; - border-radius: 2px; - background-color: #f5f5f5; -} -div.dt-datetime div.dt-datetime-label select { - position: absolute; - top: 6px; - left: 0; - cursor: pointer; - opacity: 0; -} -div.dt-datetime.horizontal { - width: 550px; -} -div.dt-datetime.horizontal div.dt-datetime-date, -div.dt-datetime.horizontal div.dt-datetime-time { - width: 48%; -} -div.dt-datetime.horizontal div.dt-datetime-time { - margin-left: 4%; -} -div.dt-datetime div.dt-datetime-date { - position: relative; - float: left; - width: 100%; -} -div.dt-datetime div.dt-datetime-time { - position: relative; - float: left; - width: 100%; - text-align: center; -} -div.dt-datetime div.dt-datetime-time > span { - vertical-align: middle; -} -div.dt-datetime div.dt-datetime-time th { - text-align: left; -} -div.dt-datetime div.dt-datetime-time div.dt-datetime-timeblock { - display: inline-block; - vertical-align: middle; -} -div.dt-datetime div.dt-datetime-iconLeft, -div.dt-datetime div.dt-datetime-iconRight, -div.dt-datetime div.dt-datetime-iconUp, -div.dt-datetime div.dt-datetime-iconDown { - width: 30px; - height: 30px; - background-position: center; - background-repeat: no-repeat; - opacity: 0.3; - overflow: hidden; - box-sizing: border-box; -} -div.dt-datetime div.dt-datetime-iconLeft:hover, -div.dt-datetime div.dt-datetime-iconRight:hover, -div.dt-datetime div.dt-datetime-iconUp:hover, -div.dt-datetime div.dt-datetime-iconDown:hover { - border: 1px solid #ccc; - border-radius: 2px; - background-color: #f0f0f0; - opacity: 0.6; -} -div.dt-datetime div.dt-datetime-iconLeft button, -div.dt-datetime div.dt-datetime-iconRight button, -div.dt-datetime div.dt-datetime-iconUp button, -div.dt-datetime div.dt-datetime-iconDown button { - border: none; - background: transparent; - text-indent: 30px; - height: 100%; - width: 100%; - cursor: pointer; -} -div.dt-datetime div.dt-datetime-iconLeft { - position: absolute; - top: 5px; - left: 5px; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg=="); -} -div.dt-datetime div.dt-datetime-iconRight { - position: absolute; - top: 5px; - right: 5px; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII="); -} -div.dt-datetime div.dt-datetime-iconUp { - height: 20px; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAALCAMAAABf9c24AAAAFVBMVEX///99fX1+fn57e3t6enoAAAAAAAC73bqPAAAABnRSTlMAYmJkZt92bnysAAAAL0lEQVR4AWOgJmBhxCvLyopHnpmVjY2VCadeoCxIHrcsWJ4RlyxCHlMWCTBRJxwAjrIBDMWSiM0AAAAASUVORK5CYII="); -} -div.dt-datetime div.dt-datetime-iconDown { - height: 20px; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAALCAMAAABf9c24AAAAFVBMVEX///99fX1+fn57e3t6enoAAAAAAAC73bqPAAAABnRSTlMAYmJkZt92bnysAAAAMElEQVR4AWOgDmBiRQIsmPKMrGxQgJDFlEfIYpoPk8Utz8qM232MYFfhkQfKUg8AANefAQxecJ58AAAAAElFTkSuQmCC"); -} - -div.dt-datetime-error { - clear: both; - padding: 0 1em; - max-width: 240px; - font-size: 11px; - line-height: 1.25em; - text-align: center; - color: #b11f1f; -}
\ No newline at end of file diff --git a/public/assets/js/DataTables/DateTime-1.4.0/css/dataTables.dateTime.min.css b/public/assets/js/DataTables/DateTime-1.4.0/css/dataTables.dateTime.min.css deleted file mode 100644 index 94b9fa1..0000000 --- a/public/assets/js/DataTables/DateTime-1.4.0/css/dataTables.dateTime.min.css +++ /dev/null @@ -1 +0,0 @@ -div.dt-datetime{position:absolute;background-color:white;z-index:2050;border:1px solid #ccc;box-shadow:0 5px 15px -5px rgba(0, 0, 0, 0.5);padding:0 20px 6px 20px;width:275px}div.dt-datetime.inline{position:relative;box-shadow:none}div.dt-datetime div.dt-datetime-title{text-align:center;padding:5px 0px 3px}div.dt-datetime div.dt-datetime-buttons{text-align:center}div.dt-datetime div.dt-datetime-buttons a{display:inline-block;padding:0 .5em .5em .5em;margin:0;font-size:.9em}div.dt-datetime div.dt-datetime-buttons a:hover{text-decoration:underline}div.dt-datetime table{border-spacing:0;margin:12px 0;width:100%}div.dt-datetime table.dt-datetime-table-nospace{margin-top:-12px}div.dt-datetime table th{font-size:.8em;color:#777;font-weight:normal;width:14.285714286%;padding:0 0 4px 0;text-align:center}div.dt-datetime table td{font-size:.9em;color:#444;padding:0}div.dt-datetime table td.selectable{text-align:center;background:#f5f5f5}div.dt-datetime table td.selectable.disabled{color:#aaa;background:white}div.dt-datetime table td.selectable.disabled button:hover{color:#aaa;background:white}div.dt-datetime table td.selectable.now{background-color:#ddd}div.dt-datetime table td.selectable.now button{font-weight:bold}div.dt-datetime table td.selectable.selected button{background:#4e6ca3;color:white;border-radius:2px}div.dt-datetime table td.selectable button:hover{background:#ff8000;color:white;border-radius:2px}div.dt-datetime table td.dt-datetime-week{font-size:.7em}div.dt-datetime table button{width:100%;box-sizing:border-box;border:none;background:transparent;font-size:inherit;color:inherit;text-align:center;padding:4px 0;cursor:pointer;margin:0}div.dt-datetime table button span{display:inline-block;min-width:14px;text-align:right}div.dt-datetime table.weekNumber th{width:12.5%}div.dt-datetime div.dt-datetime-calendar table{margin-top:0}div.dt-datetime div.dt-datetime-label{position:relative;display:inline-block;height:30px;padding:5px 6px;border:1px solid transparent;box-sizing:border-box;cursor:pointer}div.dt-datetime div.dt-datetime-label:hover{border:1px solid #ddd;border-radius:2px;background-color:#f5f5f5}div.dt-datetime div.dt-datetime-label select{position:absolute;top:6px;left:0;cursor:pointer;opacity:0}div.dt-datetime.horizontal{width:550px}div.dt-datetime.horizontal div.dt-datetime-date,div.dt-datetime.horizontal div.dt-datetime-time{width:48%}div.dt-datetime.horizontal div.dt-datetime-time{margin-left:4%}div.dt-datetime div.dt-datetime-date{position:relative;float:left;width:100%}div.dt-datetime div.dt-datetime-time{position:relative;float:left;width:100%;text-align:center}div.dt-datetime div.dt-datetime-time>span{vertical-align:middle}div.dt-datetime div.dt-datetime-time th{text-align:left}div.dt-datetime div.dt-datetime-time div.dt-datetime-timeblock{display:inline-block;vertical-align:middle}div.dt-datetime div.dt-datetime-iconLeft,div.dt-datetime div.dt-datetime-iconRight,div.dt-datetime div.dt-datetime-iconUp,div.dt-datetime div.dt-datetime-iconDown{width:30px;height:30px;background-position:center;background-repeat:no-repeat;opacity:.3;overflow:hidden;box-sizing:border-box}div.dt-datetime div.dt-datetime-iconLeft:hover,div.dt-datetime div.dt-datetime-iconRight:hover,div.dt-datetime div.dt-datetime-iconUp:hover,div.dt-datetime div.dt-datetime-iconDown:hover{border:1px solid #ccc;border-radius:2px;background-color:#f0f0f0;opacity:.6}div.dt-datetime div.dt-datetime-iconLeft button,div.dt-datetime div.dt-datetime-iconRight button,div.dt-datetime div.dt-datetime-iconUp button,div.dt-datetime div.dt-datetime-iconDown button{border:none;background:transparent;text-indent:30px;height:100%;width:100%;cursor:pointer}div.dt-datetime div.dt-datetime-iconLeft{position:absolute;top:5px;left:5px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==")}div.dt-datetime div.dt-datetime-iconRight{position:absolute;top:5px;right:5px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=")}div.dt-datetime div.dt-datetime-iconUp{height:20px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAALCAMAAABf9c24AAAAFVBMVEX///99fX1+fn57e3t6enoAAAAAAAC73bqPAAAABnRSTlMAYmJkZt92bnysAAAAL0lEQVR4AWOgJmBhxCvLyopHnpmVjY2VCadeoCxIHrcsWJ4RlyxCHlMWCTBRJxwAjrIBDMWSiM0AAAAASUVORK5CYII=")}div.dt-datetime div.dt-datetime-iconDown{height:20px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAALCAMAAABf9c24AAAAFVBMVEX///99fX1+fn57e3t6enoAAAAAAAC73bqPAAAABnRSTlMAYmJkZt92bnysAAAAMElEQVR4AWOgDmBiRQIsmPKMrGxQgJDFlEfIYpoPk8Utz8qM232MYFfhkQfKUg8AANefAQxecJ58AAAAAElFTkSuQmCC")}div.dt-datetime-error{clear:both;padding:0 1em;max-width:240px;font-size:11px;line-height:1.25em;text-align:center;color:#b11f1f} diff --git a/public/assets/js/DataTables/DateTime-1.4.0/js/dataTables.dateTime.js b/public/assets/js/DataTables/DateTime-1.4.0/js/dataTables.dateTime.js deleted file mode 100644 index 5d81543..0000000 --- a/public/assets/js/DataTables/DateTime-1.4.0/js/dataTables.dateTime.js +++ /dev/null @@ -1,1708 +0,0 @@ -/*! DateTime picker for DataTables.net v1.4.0 - * - * © SpryMedia Ltd, all rights reserved. - * License: MIT datatables.net/license/mit - */ - -(function( factory ){ - if ( typeof define === 'function' && define.amd ) { - // AMD - define( ['jquery'], function ( $ ) { - return factory( $, window, document ); - } ); - } - else if ( typeof exports === 'object' ) { - // CommonJS - var jq = require('jquery'); - var cjsRequires = function (root, $) { }; - - if (typeof window !== 'undefined') { - module.exports = function (root, $) { - if ( ! root ) { - // CommonJS environments without a window global must pass a - // root. This will give an error otherwise - root = window; - } - - if ( ! $ ) { - $ = jq( root ); - } - - cjsRequires( root, $ ); - return factory( $, root, root.document ); - }; - } - else { - cjsRequires( window, jq ); - module.exports = factory( jq, window, window.document ); - } - } - else { - // Browser - factory( jQuery, window, document ); - } -}(function( $, window, document, undefined ) { -'use strict'; - - - -/** - * @summary DateTime picker for DataTables.net - * @version 1.4.0 - * @file dataTables.dateTime.js - * @author SpryMedia Ltd - * @contact www.datatables.net/contact - */ - -// Supported formatting and parsing libraries: -// * Moment -// * Luxon -// * DayJS -var dateLib; - -/* - * This file provides a DateTime GUI picker (calendar and time input). Only the - * format YYYY-MM-DD is supported without additional software, but the end user - * experience can be greatly enhanced by including the momentjs, dayjs or luxon library - * which provide date / time parsing and formatting options. - * - * This functionality is required because the HTML5 date and datetime input - * types are not widely supported in desktop browsers. - * - * Constructed by using: - * - * new DateTime( input, opts ) - * - * where `input` is the HTML input element to use and `opts` is an object of - * options based on the `DateTime.defaults` object. - */ -var DateTime = function ( input, opts ) { - // Check if called with a window or jQuery object for DOM less applications - // This is for backwards compatibility with CommonJS loader - if (DateTime.factory(input, opts)) { - return DateTime; - } - - // Attempt to auto detect the formatting library (if there is one). Having it in - // the constructor allows load order independence. - if (typeof dateLib === 'undefined') { - dateLib = window.moment - ? window.moment - : window.dayjs - ? window.dayjs - : window.luxon - ? window.luxon - : null; - } - - this.c = $.extend( true, {}, DateTime.defaults, opts ); - var classPrefix = this.c.classPrefix; - var i18n = this.c.i18n; - - // Only IS8601 dates are supported without moment, dayjs or luxon - if ( ! dateLib && this.c.format !== 'YYYY-MM-DD' ) { - throw "DateTime: Without momentjs, dayjs or luxon only the format 'YYYY-MM-DD' can be used"; - } - - // Min and max need to be `Date` objects in the config - if (typeof this.c.minDate === 'string') { - this.c.minDate = new Date(this.c.minDate); - } - if (typeof this.c.maxDate === 'string') { - this.c.maxDate = new Date(this.c.maxDate); - } - - // DOM structure - var structure = $( - '<div class="'+classPrefix+'">'+ - '<div class="'+classPrefix+'-date">'+ - '<div class="'+classPrefix+'-title">'+ - '<div class="'+classPrefix+'-iconLeft">'+ - '<button type="button"></button>'+ - '</div>'+ - '<div class="'+classPrefix+'-iconRight">'+ - '<button type="button"></button>'+ - '</div>'+ - '<div class="'+classPrefix+'-label">'+ - '<span></span>'+ - '<select class="'+classPrefix+'-month"></select>'+ - '</div>'+ - '<div class="'+classPrefix+'-label">'+ - '<span></span>'+ - '<select class="'+classPrefix+'-year"></select>'+ - '</div>'+ - '</div>'+ - '<div class="'+classPrefix+'-buttons">'+ - '<a class="'+classPrefix+'-clear"></a>'+ - '<a class="'+classPrefix+'-today"></a>'+ - '</div>'+ - '<div class="'+classPrefix+'-calendar"></div>'+ - '</div>'+ - '<div class="'+classPrefix+'-time">'+ - '<div class="'+classPrefix+'-hours"></div>'+ - '<div class="'+classPrefix+'-minutes"></div>'+ - '<div class="'+classPrefix+'-seconds"></div>'+ - '</div>'+ - '<div class="'+classPrefix+'-error"></div>'+ - '</div>' - ); - - this.dom = { - container: structure, - date: structure.find( '.'+classPrefix+'-date' ), - title: structure.find( '.'+classPrefix+'-title' ), - calendar: structure.find( '.'+classPrefix+'-calendar' ), - time: structure.find( '.'+classPrefix+'-time' ), - error: structure.find( '.'+classPrefix+'-error' ), - buttons: structure.find( '.'+classPrefix+'-buttons' ), - clear: structure.find( '.'+classPrefix+'-clear' ), - today: structure.find( '.'+classPrefix+'-today' ), - previous: structure.find( '.'+classPrefix+'-iconLeft' ), - next: structure.find( '.'+classPrefix+'-iconRight' ), - input: $(input) - }; - - this.s = { - /** @type {Date} Date value that the picker has currently selected */ - d: null, - - /** @type {Date} Date of the calendar - might not match the value */ - display: null, - - /** @type {number} Used to select minutes in a range where the range base is itself unavailable */ - minutesRange: null, - - /** @type {number} Used to select minutes in a range where the range base is itself unavailable */ - secondsRange: null, - - /** @type {String} Unique namespace string for this instance */ - namespace: 'dateime-'+(DateTime._instance++), - - /** @type {Object} Parts of the picker that should be shown */ - parts: { - date: this.c.format.match( /[YMD]|L(?!T)|l/ ) !== null, - time: this.c.format.match( /[Hhm]|LT|LTS/ ) !== null, - seconds: this.c.format.indexOf( 's' ) !== -1, - hours12: this.c.format.match( /[haA]/ ) !== null - } - }; - - this.dom.container - .append( this.dom.date ) - .append( this.dom.time ) - .append( this.dom.error ); - - this.dom.date - .append( this.dom.title ) - .append( this.dom.buttons ) - .append( this.dom.calendar ); - - this._constructor(); -}; - -$.extend( DateTime.prototype, { - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public - */ - - /** - * Destroy the control - */ - destroy: function () { - this._hide(true); - this.dom.container.off().empty(); - this.dom.input - .removeAttr('autocomplete') - .off('.datetime'); - }, - - errorMsg: function ( msg ) { - var error = this.dom.error; - - if ( msg ) { - error.html( msg ); - } - else { - error.empty(); - } - - return this; - }, - - hide: function () { - this._hide(); - - return this; - }, - - max: function ( date ) { - this.c.maxDate = typeof date === 'string' - ? new Date(date) - : date; - - this._optionsTitle(); - this._setCalander(); - - return this; - }, - - min: function ( date ) { - this.c.minDate = typeof date === 'string' - ? new Date(date) - : date; - - this._optionsTitle(); - this._setCalander(); - - return this; - }, - - /** - * Check if an element belongs to this control - * - * @param {node} node Element to check - * @return {boolean} true if owned by this control, false otherwise - */ - owns: function ( node ) { - return $(node).parents().filter( this.dom.container ).length > 0; - }, - - /** - * Get / set the value - * - * @param {string|Date} set Value to set - * @param {boolean} [write=true] Flag to indicate if the formatted value - * should be written into the input element - */ - val: function ( set, write ) { - if ( set === undefined ) { - return this.s.d; - } - - if ( set instanceof Date ) { - this.s.d = this._dateToUtc( set ); - } - else if ( set === null || set === '' ) { - this.s.d = null; - } - else if ( set === '--now' ) { - this.s.d = this._dateToUtc(new Date()); - } - else if ( typeof set === 'string' ) { - this.s.d = this._dateToUtc( - this._convert(set, this.c.format, null) - ); - } - - if ( write || write === undefined ) { - if ( this.s.d ) { - this._writeOutput(); - } - else { - // The input value was not valid... - this.dom.input.val( set ); - } - } - - // Need something to display - this.s.display = this.s.d - ? new Date( this.s.d.toString() ) - : new Date(); - - // Set the day of the month to be 1 so changing between months doesn't - // run into issues when going from day 31 to 28 (for example) - this.s.display.setUTCDate( 1 ); - - // Update the display elements for the new value - this._setTitle(); - this._setCalander(); - this._setTime(); - - return this; - }, - - /** - * Similar to `val()` but uses a given date / time format - * - * @param format Format to get the data as (getter) or that is input (setter) - * @param val Value to write (if undefined, used as a getter) - * @returns - */ - valFormat: function (format, val) { - if (! val) { - return this._convert(this.val(), null, format); - } - - // Convert from the format given here to the instance's configured format - this.val( - this._convert(val, format, null) - ); - - return this; - }, - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Constructor - */ - - /** - * Build the control and assign initial event handlers - * - * @private - */ - _constructor: function () { - var that = this; - var classPrefix = this.c.classPrefix; - var last = this.dom.input.val(); - - var onChange = function () { - var curr = that.dom.input.val(); - - if (curr !== last) { - that.c.onChange.call( that, curr, that.s.d, that.dom.input ); - last = curr; - } - }; - - if ( ! this.s.parts.date ) { - this.dom.date.css( 'display', 'none' ); - } - - if ( ! this.s.parts.time ) { - this.dom.time.css( 'display', 'none' ); - } - - if ( ! this.s.parts.seconds ) { - this.dom.time.children('div.'+classPrefix+'-seconds').remove(); - this.dom.time.children('span').eq(1).remove(); - } - - if ( ! this.c.buttons.clear ) { - this.dom.clear.css( 'display', 'none' ); - } - - if ( ! this.c.buttons.today ) { - this.dom.today.css( 'display', 'none' ); - } - - // Render the options - this._optionsTitle(); - - $(document).on('i18n.dt', function (e, settings) { - if (settings.oLanguage.datetime) { - $.extend(true, that.c.i18n, settings.oLanguage.datetime); - that._optionsTitle(); - } - }); - - // When attached to a hidden input, we always show the input picker, and - // do so inline - if (this.dom.input.attr('type') === 'hidden') { - this.dom.container.addClass('inline'); - this.c.attachTo = 'input'; - - this.val( this.dom.input.val(), false ); - this._show(); - } - - // Set the initial value - if (last) { - this.val( last, false ); - } - - // Trigger the display of the widget when clicking or focusing on the - // input element - this.dom.input - .attr('autocomplete', 'off') - .on('focus.datetime click.datetime', function () { - // If already visible - don't do anything - if ( that.dom.container.is(':visible') || that.dom.input.is(':disabled') ) { - return; - } - - // In case the value has changed by text - that.val( that.dom.input.val(), false ); - - that._show(); - } ) - .on('keyup.datetime', function () { - // Update the calendar's displayed value as the user types - if ( that.dom.container.is(':visible') ) { - that.val( that.dom.input.val(), false ); - } - } ); - - // Main event handlers for input in the widget - this.dom.container - .on( 'change', 'select', function () { - var select = $(this); - var val = select.val(); - - if ( select.hasClass(classPrefix+'-month') ) { - // Month select - that._correctMonth( that.s.display, val ); - that._setTitle(); - that._setCalander(); - } - else if ( select.hasClass(classPrefix+'-year') ) { - // Year select - that.s.display.setUTCFullYear( val ); - that._setTitle(); - that._setCalander(); - } - else if ( select.hasClass(classPrefix+'-hours') || select.hasClass(classPrefix+'-ampm') ) { - // Hours - need to take account of AM/PM input if present - if ( that.s.parts.hours12 ) { - var hours = $(that.dom.container).find('.'+classPrefix+'-hours').val() * 1; - var pm = $(that.dom.container).find('.'+classPrefix+'-ampm').val() === 'pm'; - - that.s.d.setUTCHours( hours === 12 && !pm ? - 0 : - pm && hours !== 12 ? - hours + 12 : - hours - ); - } - else { - that.s.d.setUTCHours( val ); - } - - that._setTime(); - that._writeOutput( true ); - - onChange(); - } - else if ( select.hasClass(classPrefix+'-minutes') ) { - // Minutes select - that.s.d.setUTCMinutes( val ); - that._setTime(); - that._writeOutput( true ); - - onChange(); - } - else if ( select.hasClass(classPrefix+'-seconds') ) { - // Seconds select - that.s.d.setSeconds( val ); - that._setTime(); - that._writeOutput( true ); - - onChange(); - } - - that.dom.input.focus(); - that._position(); - } ) - .on( 'click', function (e) { - var d = that.s.d; - var nodeName = e.target.nodeName.toLowerCase(); - var target = nodeName === 'span' ? - e.target.parentNode : - e.target; - - nodeName = target.nodeName.toLowerCase(); - - if ( nodeName === 'select' ) { - return; - } - - e.stopPropagation(); - - if ( nodeName === 'a' ) { - e.preventDefault(); - - if ($(target).hasClass(classPrefix+'-clear')) { - // Clear the value and don't change the display - that.s.d = null; - that.dom.input.val(''); - that._writeOutput(); - that._setCalander(); - that._setTime(); - - onChange(); - } - else if ($(target).hasClass(classPrefix+'-today')) { - // Don't change the value, but jump to the month - // containing today - that.s.display = new Date(); - - that._setTitle(); - that._setCalander(); - } - } - if ( nodeName === 'button' ) { - var button = $(target); - var parent = button.parent(); - - if ( parent.hasClass('disabled') && ! parent.hasClass('range') ) { - button.blur(); - return; - } - - if ( parent.hasClass(classPrefix+'-iconLeft') ) { - // Previous month - that.s.display.setUTCMonth( that.s.display.getUTCMonth()-1 ); - that._setTitle(); - that._setCalander(); - - that.dom.input.focus(); - } - else if ( parent.hasClass(classPrefix+'-iconRight') ) { - // Next month - that._correctMonth( that.s.display, that.s.display.getUTCMonth()+1 ); - that._setTitle(); - that._setCalander(); - - that.dom.input.focus(); - } - else if ( button.parents('.'+classPrefix+'-time').length ) { - var val = button.data('value'); - var unit = button.data('unit'); - - d = that._needValue(); - - if ( unit === 'minutes' ) { - if ( parent.hasClass('disabled') && parent.hasClass('range') ) { - that.s.minutesRange = val; - that._setTime(); - return; - } - else { - that.s.minutesRange = null; - } - } - - if ( unit === 'seconds' ) { - if ( parent.hasClass('disabled') && parent.hasClass('range') ) { - that.s.secondsRange = val; - that._setTime(); - return; - } - else { - that.s.secondsRange = null; - } - } - - // Specific to hours for 12h clock - if ( val === 'am' ) { - if ( d.getUTCHours() >= 12 ) { - val = d.getUTCHours() - 12; - } - else { - return; - } - } - else if ( val === 'pm' ) { - if ( d.getUTCHours() < 12 ) { - val = d.getUTCHours() + 12; - } - else { - return; - } - } - - var set = unit === 'hours' ? - 'setUTCHours' : - unit === 'minutes' ? - 'setUTCMinutes' : - 'setSeconds'; - - d[set]( val ); - that._setCalander(); - that._setTime(); - that._writeOutput( true ); - onChange(); - } - else { - // Calendar click - d = that._needValue(); - - // Can't be certain that the current day will exist in - // the new month, and likewise don't know that the - // new day will exist in the old month, But 1 always - // does, so we can change the month without worry of a - // recalculation being done automatically by `Date` - d.setUTCDate( 1 ); - d.setUTCFullYear( button.data('year') ); - d.setUTCMonth( button.data('month') ); - d.setUTCDate( button.data('day') ); - - that._writeOutput( true ); - - // Don't hide if there is a time picker, since we want to - // be able to select a time as well. - if ( ! that.s.parts.time ) { - // This is annoying but IE has some kind of async - // behaviour with focus and the focus from the above - // write would occur after this hide - resulting in the - // calendar opening immediately - setTimeout( function () { - that._hide(); - }, 10 ); - } - else { - that._setCalander(); - that._setTime(); - } - - onChange(); - } - } - else { - // Click anywhere else in the widget - return focus to the - // input element - that.dom.input.focus(); - } - } ); - }, - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private - */ - - /** - * Compare the date part only of two dates - this is made super easy by the - * toDateString method! - * - * @param {Date} a Date 1 - * @param {Date} b Date 2 - * @private - */ - _compareDates: function( a, b ) { - // Can't use toDateString as that converts to local time - // luxon uses different method names so need to be able to call them - return this._isLuxon() - ? dateLib.DateTime.fromJSDate(a).toUTC().toISODate() === dateLib.DateTime.fromJSDate(b).toUTC().toISODate() - : this._dateToUtcString(a) === this._dateToUtcString(b); - }, - - /** - * Convert from one format to another - * - * @param {string|Date} val Value - * @param {string|null} from Format to convert from. If null a `Date` must be given - * @param {string|null} to Format to convert to. If null a `Date` will be returned - * @returns {string|Date} Converted value - */ - _convert(val, from, to) { - if (! val) { - return val; - } - - if (! dateLib) { - // Note that in here from and to can either be null or YYYY-MM-DD - // They cannot be anything else - if ((! from && ! to) || (from && to)) { - // No conversion - return val; - } - else if (! from) { - // Date in, string back - return val.getUTCFullYear() +'-'+ - this._pad(val.getUTCMonth() + 1) +'-'+ - this._pad(val.getUTCDate()); - } - else { // (! to) - // String in, date back - var match = val.match(/(\d{4})\-(\d{2})\-(\d{2})/ ); - return match ? - new Date( match[1], match[2]-1, match[3] ) : - null; - } - } - else if (this._isLuxon()) { - // Luxon - var dtLux = val instanceof Date - ? dateLib.DateTime.fromJSDate(val).toUTC() - : dateLib.DateTime.fromFormat(val, from); - - if (! dtLux.isValid) { - return null; - } - - return to - ? dtLux.toFormat(to) - : dtLux.toJSDate(); - } - else { - // Moment / DayJS - var dtMo = val instanceof Date - ? dateLib.utc( val, undefined, this.c.locale, this.c.strict ) - : dateLib( val, from, this.c.locale, this.c.strict ); - - if (! dtMo.isValid()) { - return null; - } - - return to - ? dtMo.format(to) - : dtMo.toDate(); - } - }, - - /** - * When changing month, take account of the fact that some months don't have - * the same number of days. For example going from January to February you - * can have the 31st of Jan selected and just add a month since the date - * would still be 31, and thus drop you into March. - * - * @param {Date} date Date - will be modified - * @param {integer} month Month to set - * @private - */ - _correctMonth: function ( date, month ) { - var days = this._daysInMonth( date.getUTCFullYear(), month ); - var correctDays = date.getUTCDate() > days; - - date.setUTCMonth( month ); - - if ( correctDays ) { - date.setUTCDate( days ); - date.setUTCMonth( month ); - } - }, - - /** - * Get the number of days in a method. Based on - * http://stackoverflow.com/a/4881951 by Matti Virkkunen - * - * @param {integer} year Year - * @param {integer} month Month (starting at 0) - * @private - */ - _daysInMonth: function ( year, month ) { - // - var isLeap = ((year % 4) === 0 && ((year % 100) !== 0 || (year % 400) === 0)); - var months = [31, (isLeap ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - - return months[month]; - }, - - /** - * Create a new date object which has the UTC values set to the local time. - * This allows the local time to be used directly for the library which - * always bases its calculations and display on UTC. - * - * @param {Date} s Date to "convert" - * @return {Date} Shifted date - */ - _dateToUtc: function ( s ) { - if (! s) { - return s; - } - - return new Date( Date.UTC( - s.getFullYear(), s.getMonth(), s.getDate(), - s.getHours(), s.getMinutes(), s.getSeconds() - ) ); - }, - - /** - * Create a UTC ISO8601 date part from a date object - * - * @param {Date} d Date to "convert" - * @return {string} ISO formatted date - */ - _dateToUtcString: function ( d ) { - // luxon uses different method names so need to be able to call them - return this._isLuxon() - ? dateLib.DateTime.fromJSDate(d).toUTC().toISODate() - : d.getUTCFullYear()+'-'+ - this._pad(d.getUTCMonth()+1)+'-'+ - this._pad(d.getUTCDate()); - }, - - /** - * Hide the control and remove events related to its display - * - * @private - */ - _hide: function (destroy) { - if (! destroy && this.dom.input.attr('type') === 'hidden') { - return; - } - - var namespace = this.s.namespace; - - this.dom.container.detach(); - - $(window).off( '.'+namespace ); - $(document).off( 'keydown.'+namespace ); - $('div.dataTables_scrollBody').off( 'scroll.'+namespace ); - $('div.DTE_Body_Content').off( 'scroll.'+namespace ); - $('body').off( 'click.'+namespace ); - $(this.dom.input[0].offsetParent).off('.'+namespace); - }, - - /** - * Convert a 24 hour value to a 12 hour value - * - * @param {integer} val 24 hour value - * @return {integer} 12 hour value - * @private - */ - _hours24To12: function ( val ) { - return val === 0 ? - 12 : - val > 12 ? - val - 12 : - val; - }, - - /** - * Generate the HTML for a single day in the calendar - this is basically - * and HTML cell with a button that has data attributes so we know what was - * clicked on (if it is clicked on) and a bunch of classes for styling. - * - * @param {object} day Day object from the `_htmlMonth` method - * @return {string} HTML cell - */ - _htmlDay: function( day ) - { - if ( day.empty ) { - return '<td class="empty"></td>'; - } - - var classes = [ 'selectable' ]; - var classPrefix = this.c.classPrefix; - - if ( day.disabled ) { - classes.push( 'disabled' ); - } - - if ( day.today ) { - classes.push( 'now' ); - } - - if ( day.selected ) { - classes.push( 'selected' ); - } - - return '<td data-day="' + day.day + '" class="' + classes.join(' ') + '">' + - '<button class="'+classPrefix+'-button '+classPrefix+'-day" type="button" ' +'data-year="' + day.year + '" data-month="' + day.month + '" data-day="' + day.day + '">' + - '<span>'+day.day+'</span>'+ - '</button>' + - '</td>'; - }, - - - /** - * Create the HTML for a month to be displayed in the calendar table. - * - * Based upon the logic used in Pikaday - MIT licensed - * Copyright (c) 2014 David Bushell - * https://github.com/dbushell/Pikaday - * - * @param {integer} year Year - * @param {integer} month Month (starting at 0) - * @return {string} Calendar month HTML - * @private - */ - _htmlMonth: function ( year, month ) { - var now = this._dateToUtc( new Date() ), - days = this._daysInMonth( year, month ), - before = new Date( Date.UTC(year, month, 1) ).getUTCDay(), - data = [], - row = []; - - if ( this.c.firstDay > 0 ) { - before -= this.c.firstDay; - - if (before < 0) { - before += 7; - } - } - - var cells = days + before, - after = cells; - - while ( after > 7 ) { - after -= 7; - } - - cells += 7 - after; - - var minDate = this.c.minDate; - var maxDate = this.c.maxDate; - - if ( minDate ) { - minDate.setUTCHours(0); - minDate.setUTCMinutes(0); - minDate.setSeconds(0); - } - - if ( maxDate ) { - maxDate.setUTCHours(23); - maxDate.setUTCMinutes(59); - maxDate.setSeconds(59); - } - - for ( var i=0, r=0 ; i<cells ; i++ ) { - var day = new Date( Date.UTC(year, month, 1 + (i - before)) ), - selected = this.s.d ? this._compareDates(day, this.s.d) : false, - today = this._compareDates(day, now), - empty = i < before || i >= (days + before), - disabled = (minDate && day < minDate) || - (maxDate && day > maxDate); - - var disableDays = this.c.disableDays; - if ( Array.isArray( disableDays ) && $.inArray( day.getUTCDay(), disableDays ) !== -1 ) { - disabled = true; - } - else if ( typeof disableDays === 'function' && disableDays( day ) === true ) { - disabled = true; - } - - var dayConfig = { - day: 1 + (i - before), - month: month, - year: year, - selected: selected, - today: today, - disabled: disabled, - empty: empty - }; - - row.push( this._htmlDay(dayConfig) ); - - if ( ++r === 7 ) { - if ( this.c.showWeekNumber ) { - row.unshift( this._htmlWeekOfYear(i - before, month, year) ); - } - - data.push( '<tr>'+row.join('')+'</tr>' ); - row = []; - r = 0; - } - } - - var classPrefix = this.c.classPrefix; - var className = classPrefix+'-table'; - if ( this.c.showWeekNumber ) { - className += ' weekNumber'; - } - - // Show / hide month icons based on min/max - if ( minDate ) { - var underMin = minDate >= new Date( Date.UTC(year, month, 1, 0, 0, 0 ) ); - - this.dom.title.find('div.'+classPrefix+'-iconLeft') - .css( 'display', underMin ? 'none' : 'block' ); - } - - if ( maxDate ) { - var overMax = maxDate < new Date( Date.UTC(year, month+1, 1, 0, 0, 0 ) ); - - this.dom.title.find('div.'+classPrefix+'-iconRight') - .css( 'display', overMax ? 'none' : 'block' ); - } - - return '<table class="'+className+'">' + - '<thead>'+ - this._htmlMonthHead() + - '</thead>'+ - '<tbody>'+ - data.join('') + - '</tbody>'+ - '</table>'; - }, - - /** - * Create the calendar table's header (week days) - * - * @return {string} HTML cells for the row - * @private - */ - _htmlMonthHead: function () { - var a = []; - var firstDay = this.c.firstDay; - var i18n = this.c.i18n; - - // Take account of the first day shift - var dayName = function ( day ) { - day += firstDay; - - while (day >= 7) { - day -= 7; - } - - return i18n.weekdays[day]; - }; - - // Empty cell in the header - if ( this.c.showWeekNumber ) { - a.push( '<th></th>' ); - } - - for ( var i=0 ; i<7 ; i++ ) { - a.push( '<th>'+dayName( i )+'</th>' ); - } - - return a.join(''); - }, - - /** - * Create a cell that contains week of the year - ISO8601 - * - * Based on https://stackoverflow.com/questions/6117814/ and - * http://techblog.procurios.nl/k/n618/news/view/33796/14863/ - * - * @param {integer} d Day of month - * @param {integer} m Month of year (zero index) - * @param {integer} y Year - * @return {string} - * @private - */ - _htmlWeekOfYear: function ( d, m, y ) { - var date = new Date( y, m, d, 0, 0, 0, 0 ); - - // First week of the year always has 4th January in it - date.setDate( date.getDate() + 4 - (date.getDay() || 7) ); - - var oneJan = new Date( y, 0, 1 ); - var weekNum = Math.ceil( ( ( (date - oneJan) / 86400000) + 1)/7 ); - - return '<td class="'+this.c.classPrefix+'-week">' + weekNum + '</td>'; - }, - - /** - * Determine if Luxon is being used - * - * @returns Flag for Luxon - */ - _isLuxon: function () { - return dateLib && dateLib.DateTime && dateLib.Duration && dateLib.Settings - ? true - : false; - }, - - /** - * Check if the instance has a date object value - it might be null. - * If is doesn't set one to now. - * @returns A Date object - * @private - */ - _needValue: function () { - if ( ! this.s.d ) { - this.s.d = this._dateToUtc( new Date() ); - - if (! this.s.parts.time) { - this.s.d.setUTCHours(0); - this.s.d.setUTCMinutes(0); - this.s.d.setSeconds(0); - this.s.d.setMilliseconds(0); - } - } - - return this.s.d; - }, - - /** - * Create option elements from a range in an array - * - * @param {string} selector Class name unique to the select element to use - * @param {array} values Array of values - * @param {array} [labels] Array of labels. If given must be the same - * length as the values parameter. - * @private - */ - _options: function ( selector, values, labels ) { - if ( ! labels ) { - labels = values; - } - - var select = this.dom.container.find('select.'+this.c.classPrefix+'-'+selector); - select.empty(); - - for ( var i=0, ien=values.length ; i<ien ; i++ ) { - select.append( '<option value="'+values[i]+'">'+labels[i]+'</option>' ); - } - }, - - /** - * Set an option and update the option's span pair (since the select element - * has opacity 0 for styling) - * - * @param {string} selector Class name unique to the select element to use - * @param {*} val Value to set - * @private - */ - _optionSet: function ( selector, val ) { - var select = this.dom.container.find('select.'+this.c.classPrefix+'-'+selector); - var span = select.parent().children('span'); - - select.val( val ); - - var selected = select.find('option:selected'); - span.html( selected.length !== 0 ? - selected.text() : - this.c.i18n.unknown - ); - }, - - /** - * Create time options list. - * - * @param {string} unit Time unit - hours, minutes or seconds - * @param {integer} count Count range - 12, 24 or 60 - * @param {integer} val Existing value for this unit - * @param {integer[]} allowed Values allow for selection - * @param {integer} range Override range - * @private - */ - _optionsTime: function ( unit, count, val, allowed, range ) { - var classPrefix = this.c.classPrefix; - var container = this.dom.container.find('div.'+classPrefix+'-'+unit); - var i, j; - var render = count === 12 ? - function (i) { return i; } : - this._pad; - var classPrefix = this.c.classPrefix; - var className = classPrefix+'-table'; - var i18n = this.c.i18n; - - if ( ! container.length ) { - return; - } - - var a = ''; - var span = 10; - var button = function (value, label, className) { - // Shift the value for PM - if ( count === 12 && typeof value === 'number' ) { - if (val >= 12 ) { - value += 12; - } - - if (value == 12) { - value = 0; - } - else if (value == 24) { - value = 12; - } - } - - var selected = val === value || (value === 'am' && val < 12) || (value === 'pm' && val >= 12) ? - 'selected' : - ''; - - if (typeof value === 'number' && allowed && $.inArray(value, allowed) === -1) { - selected += ' disabled'; - } - - if ( className ) { - selected += ' '+className; - } - - return '<td class="selectable '+selected+'">' + - '<button class="'+classPrefix+'-button '+classPrefix+'-day" type="button" data-unit="'+unit+'" data-value="'+value+ '">' + - '<span>'+label+'</span>'+ - '</button>' + - '</td>'; - } - - if ( count === 12 ) { - // Hours with AM/PM - a += '<tr>'; - - for ( i=1 ; i<=6 ; i++ ) { - a += button(i, render(i)); - } - a += button('am', i18n.amPm[0]); - - a += '</tr>'; - a += '<tr>'; - - for ( i=7 ; i<=12 ; i++ ) { - a += button(i, render(i)); - } - a += button('pm', i18n.amPm[1]); - a += '</tr>'; - - span = 7; - } - else if ( count === 24 ) { - // Hours - 24 - var c = 0; - for (j=0 ; j<4 ; j++ ) { - a += '<tr>'; - for ( i=0 ; i<6 ; i++ ) { - a += button(c, render(c)); - c++; - } - a += '</tr>'; - } - - span = 6; - } - else { - // Minutes and seconds - a += '<tr>'; - for (j=0 ; j<60 ; j+=10 ) { - a += button(j, render(j), 'range'); - } - a += '</tr>'; - - // Slight hack to allow for the different number of columns - a += '</tbody></thead><table class="'+className+' '+className+'-nospace"><tbody>'; - - var start = range !== null - ? range - : val === -1 - ? 0 - : Math.floor( val / 10 )*10; - - a += '<tr>'; - for (j=start+1 ; j<start+10 ; j++ ) { - a += button(j, render(j)); - } - a += '</tr>'; - - span = 6; - } - - container - .empty() - .append( - '<table class="'+className+'">'+ - '<thead><tr><th colspan="'+span+'">'+ - i18n[unit] + - '</th></tr></thead>'+ - '<tbody>'+ - a+ - '</tbody>'+ - '</table>' - ); - }, - - /** - * Create the options for the month and year - * - * @param {integer} year Year - * @param {integer} month Month (starting at 0) - * @private - */ - _optionsTitle: function () { - var i18n = this.c.i18n; - var min = this.c.minDate; - var max = this.c.maxDate; - var minYear = min ? min.getFullYear() : null; - var maxYear = max ? max.getFullYear() : null; - - var i = minYear !== null ? minYear : new Date().getFullYear() - this.c.yearRange; - var j = maxYear !== null ? maxYear : new Date().getFullYear() + this.c.yearRange; - - this._options( 'month', this._range( 0, 11 ), i18n.months ); - this._options( 'year', this._range( i, j ) ); - - // Set the language strings in case any have changed - this.dom.today.text(i18n.today).text(i18n.today); - this.dom.clear.text(i18n.clear).text(i18n.clear); - this.dom.previous - .attr('title', i18n.previous) - .children('button') - .text(i18n.previous); - this.dom.next - .attr('title', i18n.next) - .children('button') - .text(i18n.next); - }, - - /** - * Simple two digit pad - * - * @param {integer} i Value that might need padding - * @return {string|integer} Padded value - * @private - */ - _pad: function ( i ) { - return i<10 ? '0'+i : i; - }, - - /** - * Position the calendar to look attached to the input element - * @private - */ - _position: function () { - var offset = this.c.attachTo === 'input' ? this.dom.input.position() : this.dom.input.offset(); - var container = this.dom.container; - var inputHeight = this.dom.input.outerHeight(); - - if (container.hasClass('inline')) { - container.insertAfter( this.dom.input ); - return; - } - - if ( this.s.parts.date && this.s.parts.time && $(window).width() > 550 ) { - container.addClass('horizontal'); - } - else { - container.removeClass('horizontal'); - } - - if(this.c.attachTo === 'input') { - container - .css( { - top: offset.top + inputHeight, - left: offset.left - } ) - .insertAfter( this.dom.input ); - } - else { - container - .css( { - top: offset.top + inputHeight, - left: offset.left - } ) - .appendTo( 'body' ); - } - - var calHeight = container.outerHeight(); - var calWidth = container.outerWidth(); - var scrollTop = $(window).scrollTop(); - - // Correct to the bottom - if ( offset.top + inputHeight + calHeight - scrollTop > $(window).height() ) { - var newTop = offset.top - calHeight; - - container.css( 'top', newTop < 0 ? 0 : newTop ); - } - - // Correct to the right - if ( calWidth + offset.left > $(window).width() ) { - var newLeft = $(window).width() - calWidth; - - // Account for elements which are inside a position absolute element - if (this.c.attachTo === 'input') { - newLeft -= $(container).offsetParent().offset().left; - } - - container.css( 'left', newLeft < 0 ? 0 : newLeft ); - } - }, - - /** - * Create a simple array with a range of values - * - * @param {integer} start Start value (inclusive) - * @param {integer} end End value (inclusive) - * @param {integer} [inc=1] Increment value - * @return {array} Created array - * @private - */ - _range: function ( start, end, inc ) { - var a = []; - - if ( ! inc ) { - inc = 1; - } - - for ( var i=start ; i<=end ; i+=inc ) { - a.push( i ); - } - - return a; - }, - - /** - * Redraw the calendar based on the display date - this is a destructive - * operation - * - * @private - */ - _setCalander: function () { - if ( this.s.display ) { - this.dom.calendar - .empty() - .append( this._htmlMonth( - this.s.display.getUTCFullYear(), - this.s.display.getUTCMonth() - ) ); - } - }, - - /** - * Set the month and year for the calendar based on the current display date - * - * @private - */ - _setTitle: function () { - this._optionSet( 'month', this.s.display.getUTCMonth() ); - this._optionSet( 'year', this.s.display.getUTCFullYear() ); - }, - - /** - * Set the time based on the current value of the widget - * - * @private - */ - _setTime: function () { - var that = this; - var d = this.s.d; - - // luxon uses different method names so need to be able to call them. This happens a few time later in this method too - var luxDT = null - if (this._isLuxon()) { - luxDT = dateLib.DateTime.fromJSDate(d).toUTC(); - } - - var hours = luxDT != null - ? luxDT.hour - : d - ? d.getUTCHours() - : -1; - - var allowed = function ( prop ) { // Backwards compt with `Increment` option - return that.c[prop+'Available'] ? - that.c[prop+'Available'] : - that._range( 0, 59, that.c[prop+'Increment'] ); - } - - this._optionsTime( 'hours', this.s.parts.hours12 ? 12 : 24, hours, this.c.hoursAvailable ) - this._optionsTime( - 'minutes', - 60, - luxDT != null - ? luxDT.minute - : d - ? d.getUTCMinutes() - : -1, - allowed('minutes'), - this.s.minutesRange - ); - this._optionsTime( - 'seconds', - 60, - luxDT != null - ? luxDT.second - : d - ? d.getSeconds() - : -1, - allowed('seconds'), - this.s.secondsRange - ); - }, - - /** - * Show the widget and add events to the document required only while it - * is displayed - * - * @private - */ - _show: function () { - var that = this; - var namespace = this.s.namespace; - - this._position(); - - // Need to reposition on scroll - $(window).on( 'scroll.'+namespace+' resize.'+namespace, function () { - that._position(); - } ); - - $('div.DTE_Body_Content').on( 'scroll.'+namespace, function () { - that._position(); - } ); - - $('div.dataTables_scrollBody').on( 'scroll.'+namespace, function () { - that._position(); - } ); - - var offsetParent = this.dom.input[0].offsetParent; - - if ( offsetParent !== document.body ) { - $(offsetParent).on( 'scroll.'+namespace, function () { - that._position(); - } ); - } - - // On tab focus will move to a different field (no keyboard navigation - // in the date picker - this might need to be changed). - $(document).on( 'keydown.'+namespace, function (e) { - if ( - e.keyCode === 9 || // tab - e.keyCode === 27 || // esc - e.keyCode === 13 // return - ) { - that._hide(); - } - } ); - - // Hide if clicking outside of the widget - but in a different click - // event from the one that was used to trigger the show (bubble and - // inline) - setTimeout( function () { - $('body').on( 'click.'+namespace, function (e) { - var parents = $(e.target).parents(); - - if ( ! parents.filter( that.dom.container ).length && e.target !== that.dom.input[0] ) { - that._hide(); - } - } ); - }, 10 ); - }, - - /** - * Write the formatted string to the input element this control is attached - * to - * - * @private - */ - _writeOutput: function ( focus ) { - var date = this.s.d; - var out = ''; - - if (date) { - out = this._convert(date, null, this.c.format); - } - - this.dom.input - .val( out ) - .trigger('change', {write: date}); - - if ( this.dom.input.attr('type') === 'hidden' ) { - this.val(out, false); - } - - if ( focus ) { - this.dom.input.focus(); - } - } -} ); - -/** - * Use a specificmoment compatible date library - */ -DateTime.use = function (lib) { - dateLib = lib; -}; - -/** - * For generating unique namespaces - * - * @type {Number} - * @private - */ -DateTime._instance = 0; - -/** - * Defaults for the date time picker - * - * @type {Object} - */ -DateTime.defaults = { - attachTo: 'body', - - buttons: { - clear: false, - today: false - }, - - // Not documented - could be an internal property - classPrefix: 'dt-datetime', - - // function or array of ints - disableDays: null, - - // first day of the week (0: Sunday, 1: Monday, etc) - firstDay: 1, - - format: 'YYYY-MM-DD', - - hoursAvailable: null, - - i18n: { - clear: 'Clear', - previous: 'Previous', - next: 'Next', - months: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ], - weekdays: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ], - amPm: [ 'am', 'pm' ], - hours: 'Hour', - minutes: 'Minute', - seconds: 'Second', - unknown: '-', - today: 'Today' - }, - - maxDate: null, - - minDate: null, - - minutesAvailable: null, - - minutesIncrement: 1, // deprecated - - strict: true, - - locale: 'en', - - onChange: function () {}, - - secondsAvailable: null, - - secondsIncrement: 1, // deprecated - - // show the ISO week number at the head of the row - showWeekNumber: false, - - // overruled by max / min date - yearRange: 25 -}; - -DateTime.version = '1.4.0'; - -/** - * CommonJS factory function pass through. Matches DataTables. - * @param {*} root Window - * @param {*} jq jQUery - * @returns {boolean} Indicator - */ -DateTime.factory = function (root, jq) { - var is = false; - - // Test if the first parameter is a window object - if (root && root.document) { - window = root; - document = root.document; - } - - // Test if the second parameter is a jQuery object - if (jq && jq.fn && jq.fn.jquery) { - $ = jq; - is = true; - } - - return is; -} - -// Global export - if no conflicts -if (! window.DateTime) { - window.DateTime = DateTime; -} - -// Global DataTable -if (window.DataTable) { - window.DataTable.DateTime = DateTime; -} - -// Make available via jQuery -$.fn.dtDateTime = function (options) { - return this.each(function() { - new DateTime(this, options); - }); -} - -// Attach to DataTables if present -if ($.fn.dataTable) { - $.fn.dataTable.DateTime = DateTime; - $.fn.DataTable.DateTime = DateTime; - - if ($.fn.dataTable.Editor) { - $.fn.dataTable.Editor.DateTime = DateTime; - } -} - - -return DateTime; -})); diff --git a/public/assets/js/DataTables/DateTime-1.4.0/js/dataTables.dateTime.min.js b/public/assets/js/DataTables/DateTime-1.4.0/js/dataTables.dateTime.min.js deleted file mode 100644 index 4f83e33..0000000 --- a/public/assets/js/DataTables/DateTime-1.4.0/js/dataTables.dateTime.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! DateTime picker for DataTables.net v1.4.0 - * - * © SpryMedia Ltd, all rights reserved. - * License: MIT datatables.net/license/mit - */ -!function(s){var i;"function"==typeof define&&define.amd?define(["jquery"],function(t){return s(t,window,document)}):"object"==typeof exports?(i=require("jquery"),"undefined"!=typeof window?module.exports=function(t,e){return t=t||window,e=e||i(t),s(e,t,t.document)}:(window,module.exports=s(i,window,window.document))):s(jQuery,window,document)}(function(C,o,i,n){"use strict";function a(t,e){if(a.factory(t,e))return a;if(void 0===r&&(r=o.moment||o.dayjs||o.luxon||null),this.c=C.extend(!0,{},a.defaults,e),e=this.c.classPrefix,this.c.i18n,!r&&"YYYY-MM-DD"!==this.c.format)throw"DateTime: Without momentjs, dayjs or luxon only the format 'YYYY-MM-DD' can be used";"string"==typeof this.c.minDate&&(this.c.minDate=new Date(this.c.minDate)),"string"==typeof this.c.maxDate&&(this.c.maxDate=new Date(this.c.maxDate));var s=C('<div class="'+e+'"><div class="'+e+'-date"><div class="'+e+'-title"><div class="'+e+'-iconLeft"><button type="button"></button></div><div class="'+e+'-iconRight"><button type="button"></button></div><div class="'+e+'-label"><span></span><select class="'+e+'-month"></select></div><div class="'+e+'-label"><span></span><select class="'+e+'-year"></select></div></div><div class="'+e+'-buttons"><a class="'+e+'-clear"></a><a class="'+e+'-today"></a></div><div class="'+e+'-calendar"></div></div><div class="'+e+'-time"><div class="'+e+'-hours"></div><div class="'+e+'-minutes"></div><div class="'+e+'-seconds"></div></div><div class="'+e+'-error"></div></div>');this.dom={container:s,date:s.find("."+e+"-date"),title:s.find("."+e+"-title"),calendar:s.find("."+e+"-calendar"),time:s.find("."+e+"-time"),error:s.find("."+e+"-error"),buttons:s.find("."+e+"-buttons"),clear:s.find("."+e+"-clear"),today:s.find("."+e+"-today"),previous:s.find("."+e+"-iconLeft"),next:s.find("."+e+"-iconRight"),input:C(t)},this.s={d:null,display:null,minutesRange:null,secondsRange:null,namespace:"dateime-"+a._instance++,parts:{date:null!==this.c.format.match(/[YMD]|L(?!T)|l/),time:null!==this.c.format.match(/[Hhm]|LT|LTS/),seconds:-1!==this.c.format.indexOf("s"),hours12:null!==this.c.format.match(/[haA]/)}},this.dom.container.append(this.dom.date).append(this.dom.time).append(this.dom.error),this.dom.date.append(this.dom.title).append(this.dom.buttons).append(this.dom.calendar),this._constructor()}var r;return C.extend(a.prototype,{destroy:function(){this._hide(!0),this.dom.container.off().empty(),this.dom.input.removeAttr("autocomplete").off(".datetime")},errorMsg:function(t){var e=this.dom.error;return t?e.html(t):e.empty(),this},hide:function(){return this._hide(),this},max:function(t){return this.c.maxDate="string"==typeof t?new Date(t):t,this._optionsTitle(),this._setCalander(),this},min:function(t){return this.c.minDate="string"==typeof t?new Date(t):t,this._optionsTitle(),this._setCalander(),this},owns:function(t){return 0<C(t).parents().filter(this.dom.container).length},val:function(t,e){return t===n?this.s.d:(t instanceof Date?this.s.d=this._dateToUtc(t):null===t||""===t?this.s.d=null:"--now"===t?this.s.d=this._dateToUtc(new Date):"string"==typeof t&&(this.s.d=this._dateToUtc(this._convert(t,this.c.format,null))),!e&&e!==n||(this.s.d?this._writeOutput():this.dom.input.val(t)),this.s.display=this.s.d?new Date(this.s.d.toString()):new Date,this.s.display.setUTCDate(1),this._setTitle(),this._setCalander(),this._setTime(),this)},valFormat:function(t,e){return e?(this.val(this._convert(e,t,null)),this):this._convert(this.val(),null,t)},_constructor:function(){function a(){var t=o.dom.input.val();t!==e&&(o.c.onChange.call(o,t,o.s.d,o.dom.input),e=t)}var o=this,r=this.c.classPrefix,e=this.dom.input.val();this.s.parts.date||this.dom.date.css("display","none"),this.s.parts.time||this.dom.time.css("display","none"),this.s.parts.seconds||(this.dom.time.children("div."+r+"-seconds").remove(),this.dom.time.children("span").eq(1).remove()),this.c.buttons.clear||this.dom.clear.css("display","none"),this.c.buttons.today||this.dom.today.css("display","none"),this._optionsTitle(),C(i).on("i18n.dt",function(t,e){e.oLanguage.datetime&&(C.extend(!0,o.c.i18n,e.oLanguage.datetime),o._optionsTitle())}),"hidden"===this.dom.input.attr("type")&&(this.dom.container.addClass("inline"),this.c.attachTo="input",this.val(this.dom.input.val(),!1),this._show()),e&&this.val(e,!1),this.dom.input.attr("autocomplete","off").on("focus.datetime click.datetime",function(){o.dom.container.is(":visible")||o.dom.input.is(":disabled")||(o.val(o.dom.input.val(),!1),o._show())}).on("keyup.datetime",function(){o.dom.container.is(":visible")&&o.val(o.dom.input.val(),!1)}),this.dom.container.on("change","select",function(){var t,e,s=C(this),i=s.val();s.hasClass(r+"-month")?(o._correctMonth(o.s.display,i),o._setTitle(),o._setCalander()):s.hasClass(r+"-year")?(o.s.display.setUTCFullYear(i),o._setTitle(),o._setCalander()):s.hasClass(r+"-hours")||s.hasClass(r+"-ampm")?(o.s.parts.hours12?(t=+C(o.dom.container).find("."+r+"-hours").val(),e="pm"===C(o.dom.container).find("."+r+"-ampm").val(),o.s.d.setUTCHours(12!=t||e?e&&12!=t?12+t:t:0)):o.s.d.setUTCHours(i),o._setTime(),o._writeOutput(!0),a()):s.hasClass(r+"-minutes")?(o.s.d.setUTCMinutes(i),o._setTime(),o._writeOutput(!0),a()):s.hasClass(r+"-seconds")&&(o.s.d.setSeconds(i),o._setTime(),o._writeOutput(!0),a()),o.dom.input.focus(),o._position()}).on("click",function(t){var e=o.s.d,s="span"===t.target.nodeName.toLowerCase()?t.target.parentNode:t.target,i=s.nodeName.toLowerCase();if("select"!==i)if(t.stopPropagation(),"a"===i&&(t.preventDefault(),C(s).hasClass(r+"-clear")?(o.s.d=null,o.dom.input.val(""),o._writeOutput(),o._setCalander(),o._setTime(),a()):C(s).hasClass(r+"-today")&&(o.s.display=new Date,o._setTitle(),o._setCalander())),"button"===i){t=C(s),i=t.parent();if(i.hasClass("disabled")&&!i.hasClass("range"))t.blur();else if(i.hasClass(r+"-iconLeft"))o.s.display.setUTCMonth(o.s.display.getUTCMonth()-1),o._setTitle(),o._setCalander(),o.dom.input.focus();else if(i.hasClass(r+"-iconRight"))o._correctMonth(o.s.display,o.s.display.getUTCMonth()+1),o._setTitle(),o._setCalander(),o.dom.input.focus();else{if(t.parents("."+r+"-time").length){var s=t.data("value"),n=t.data("unit"),e=o._needValue();if("minutes"===n){if(i.hasClass("disabled")&&i.hasClass("range"))return o.s.minutesRange=s,void o._setTime();o.s.minutesRange=null}if("seconds"===n){if(i.hasClass("disabled")&&i.hasClass("range"))return o.s.secondsRange=s,void o._setTime();o.s.secondsRange=null}if("am"===s){if(!(12<=e.getUTCHours()))return;s=e.getUTCHours()-12}else if("pm"===s){if(!(e.getUTCHours()<12))return;s=e.getUTCHours()+12}e["hours"===n?"setUTCHours":"minutes"===n?"setUTCMinutes":"setSeconds"](s),o._setCalander(),o._setTime(),o._writeOutput(!0)}else(e=o._needValue()).setUTCDate(1),e.setUTCFullYear(t.data("year")),e.setUTCMonth(t.data("month")),e.setUTCDate(t.data("day")),o._writeOutput(!0),o.s.parts.time?(o._setCalander(),o._setTime()):setTimeout(function(){o._hide()},10);a()}}else o.dom.input.focus()})},_compareDates:function(t,e){return this._isLuxon()?r.DateTime.fromJSDate(t).toUTC().toISODate()===r.DateTime.fromJSDate(e).toUTC().toISODate():this._dateToUtcString(t)===this._dateToUtcString(e)},_convert(t,e,s){var i;return t&&(r?this._isLuxon()?(i=t instanceof Date?r.DateTime.fromJSDate(t).toUTC():r.DateTime.fromFormat(t,e)).isValid?s?i.toFormat(s):i.toJSDate():null:(i=t instanceof Date?r.utc(t,n,this.c.locale,this.c.strict):r(t,e,this.c.locale,this.c.strict)).isValid()?s?i.format(s):i.toDate():null:!e&&!s||e&&s?t:e?(i=t.match(/(\d{4})\-(\d{2})\-(\d{2})/))?new Date(i[1],i[2]-1,i[3]):null:t.getUTCFullYear()+"-"+this._pad(t.getUTCMonth()+1)+"-"+this._pad(t.getUTCDate()))},_correctMonth:function(t,e){var s=this._daysInMonth(t.getUTCFullYear(),e),i=t.getUTCDate()>s;t.setUTCMonth(e),i&&(t.setUTCDate(s),t.setUTCMonth(e))},_daysInMonth:function(t,e){return[31,t%4==0&&(t%100!=0||t%400==0)?29:28,31,30,31,30,31,31,30,31,30,31][e]},_dateToUtc:function(t){return t&&new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds()))},_dateToUtcString:function(t){return this._isLuxon()?r.DateTime.fromJSDate(t).toUTC().toISODate():t.getUTCFullYear()+"-"+this._pad(t.getUTCMonth()+1)+"-"+this._pad(t.getUTCDate())},_hide:function(t){!t&&"hidden"===this.dom.input.attr("type")||(t=this.s.namespace,this.dom.container.detach(),C(o).off("."+t),C(i).off("keydown."+t),C("div.dataTables_scrollBody").off("scroll."+t),C("div.DTE_Body_Content").off("scroll."+t),C("body").off("click."+t),C(this.dom.input[0].offsetParent).off("."+t))},_hours24To12:function(t){return 0===t?12:12<t?t-12:t},_htmlDay:function(t){var e,s;return t.empty?'<td class="empty"></td>':(e=["selectable"],s=this.c.classPrefix,t.disabled&&e.push("disabled"),t.today&&e.push("now"),t.selected&&e.push("selected"),'<td data-day="'+t.day+'" class="'+e.join(" ")+'"><button class="'+s+"-button "+s+'-day" type="button" data-year="'+t.year+'" data-month="'+t.month+'" data-day="'+t.day+'"><span>'+t.day+"</span></button></td>")},_htmlMonth:function(t,e){for(var s=this._dateToUtc(new Date),i=this._daysInMonth(t,e),n=new Date(Date.UTC(t,e,1)).getUTCDay(),a=[],o=[],r=(0<this.c.firstDay&&(n-=this.c.firstDay)<0&&(n+=7),i+n),d=r;7<d;)d-=7;r+=7-d;var l=this.c.minDate,h=this.c.maxDate;l&&(l.setUTCHours(0),l.setUTCMinutes(0),l.setSeconds(0)),h&&(h.setUTCHours(23),h.setUTCMinutes(59),h.setSeconds(59));for(var c=0,u=0;c<r;c++){var m=new Date(Date.UTC(t,e,c-n+1)),f=!!this.s.d&&this._compareDates(m,this.s.d),p=this._compareDates(m,s),y=c<n||i+n<=c,T=l&&m<l||h&&h<m,_=this.c.disableDays,f={day:c-n+1,month:e,year:t,selected:f,today:p,disabled:T=Array.isArray(_)&&-1!==C.inArray(m.getUTCDay(),_)||"function"==typeof _&&!0===_(m)?!0:T,empty:y};o.push(this._htmlDay(f)),7==++u&&(this.c.showWeekNumber&&o.unshift(this._htmlWeekOfYear(c-n,e,t)),a.push("<tr>"+o.join("")+"</tr>"),o=[],u=0)}var v,D=this.c.classPrefix,g=D+"-table";return this.c.showWeekNumber&&(g+=" weekNumber"),l&&(v=l>=new Date(Date.UTC(t,e,1,0,0,0)),this.dom.title.find("div."+D+"-iconLeft").css("display",v?"none":"block")),h&&(v=h<new Date(Date.UTC(t,e+1,1,0,0,0)),this.dom.title.find("div."+D+"-iconRight").css("display",v?"none":"block")),'<table class="'+g+'"><thead>'+this._htmlMonthHead()+"</thead><tbody>"+a.join("")+"</tbody></table>"},_htmlMonthHead:function(){var t=[],e=this.c.firstDay,s=this.c.i18n;this.c.showWeekNumber&&t.push("<th></th>");for(var i=0;i<7;i++)t.push("<th>"+function(t){for(t+=e;7<=t;)t-=7;return s.weekdays[t]}(i)+"</th>");return t.join("")},_htmlWeekOfYear:function(t,e,s){e=new Date(s,e,t,0,0,0,0),e.setDate(e.getDate()+4-(e.getDay()||7)),t=new Date(s,0,1),s=Math.ceil(((e-t)/864e5+1)/7);return'<td class="'+this.c.classPrefix+'-week">'+s+"</td>"},_isLuxon:function(){return!!(r&&r.DateTime&&r.Duration&&r.Settings)},_needValue:function(){return this.s.d||(this.s.d=this._dateToUtc(new Date),this.s.parts.time)||(this.s.d.setUTCHours(0),this.s.d.setUTCMinutes(0),this.s.d.setSeconds(0),this.s.d.setMilliseconds(0)),this.s.d},_options:function(t,e,s){s=s||e;var i=this.dom.container.find("select."+this.c.classPrefix+"-"+t);i.empty();for(var n=0,a=e.length;n<a;n++)i.append('<option value="'+e[n]+'">'+s[n]+"</option>")},_optionSet:function(t,e){var t=this.dom.container.find("select."+this.c.classPrefix+"-"+t),s=t.parent().children("span"),e=(t.val(e),t.find("option:selected"));s.html(0!==e.length?e.text():this.c.i18n.unknown)},_optionsTime:function(n,a,o,r,t){var e,d=this.c.classPrefix,s=this.dom.container.find("div."+d+"-"+n),i=12===a?function(t){return t}:this._pad,l=(d=this.c.classPrefix)+"-table",h=this.c.i18n;if(s.length){var c="",u=10,m=function(t,e,s){12===a&&"number"==typeof t&&(12<=o&&(t+=12),12==t?t=0:24==t&&(t=12));var i=o===t||"am"===t&&o<12||"pm"===t&&12<=o?"selected":"";return"number"==typeof t&&r&&-1===C.inArray(t,r)&&(i+=" disabled"),s&&(i+=" "+s),'<td class="selectable '+i+'"><button class="'+d+"-button "+d+'-day" type="button" data-unit="'+n+'" data-value="'+t+'"><span>'+e+"</span></button></td>"};if(12===a){for(c+="<tr>",e=1;e<=6;e++)c+=m(e,i(e));for(c=(c+=m("am",h.amPm[0]))+"</tr>"+"<tr>",e=7;e<=12;e++)c+=m(e,i(e));c=c+m("pm",h.amPm[1])+"</tr>",u=7}else{if(24===a)for(var f=0,p=0;p<4;p++){for(c+="<tr>",e=0;e<6;e++)c+=m(f,i(f)),f++;c+="</tr>"}else{for(c+="<tr>",p=0;p<60;p+=10)c+=m(p,i(p),"range");var c=c+"</tr>"+('</tbody></thead><table class="'+l+" "+l+'-nospace"><tbody>'),y=null!==t?t:-1===o?0:10*Math.floor(o/10);for(c+="<tr>",p=y+1;p<y+10;p++)c+=m(p,i(p));c+="</tr>"}u=6}s.empty().append('<table class="'+l+'"><thead><tr><th colspan="'+u+'">'+h[n]+"</th></tr></thead><tbody>"+c+"</tbody></table>")}},_optionsTitle:function(){var t=this.c.i18n,e=this.c.minDate,s=this.c.maxDate,e=e?e.getFullYear():null,s=s?s.getFullYear():null,e=null!==e?e:(new Date).getFullYear()-this.c.yearRange,s=null!==s?s:(new Date).getFullYear()+this.c.yearRange;this._options("month",this._range(0,11),t.months),this._options("year",this._range(e,s)),this.dom.today.text(t.today).text(t.today),this.dom.clear.text(t.clear).text(t.clear),this.dom.previous.attr("title",t.previous).children("button").text(t.previous),this.dom.next.attr("title",t.next).children("button").text(t.next)},_pad:function(t){return t<10?"0"+t:t},_position:function(){var t,e,s,i="input"===this.c.attachTo?this.dom.input.position():this.dom.input.offset(),n=this.dom.container,a=this.dom.input.outerHeight();n.hasClass("inline")?n.insertAfter(this.dom.input):(this.s.parts.date&&this.s.parts.time&&550<C(o).width()?n.addClass("horizontal"):n.removeClass("horizontal"),"input"===this.c.attachTo?n.css({top:i.top+a,left:i.left}).insertAfter(this.dom.input):n.css({top:i.top+a,left:i.left}).appendTo("body"),t=n.outerHeight(),e=n.outerWidth(),s=C(o).scrollTop(),i.top+a+t-s>C(o).height()&&(a=i.top-t,n.css("top",a<0?0:a)),e+i.left>C(o).width()&&(s=C(o).width()-e,"input"===this.c.attachTo&&(s-=C(n).offsetParent().offset().left),n.css("left",s<0?0:s)))},_range:function(t,e,s){var i=[];s=s||1;for(var n=t;n<=e;n+=s)i.push(n);return i},_setCalander:function(){this.s.display&&this.dom.calendar.empty().append(this._htmlMonth(this.s.display.getUTCFullYear(),this.s.display.getUTCMonth()))},_setTitle:function(){this._optionSet("month",this.s.display.getUTCMonth()),this._optionSet("year",this.s.display.getUTCFullYear())},_setTime:function(){function t(t){return e.c[t+"Available"]||e._range(0,59,e.c[t+"Increment"])}var e=this,s=this.s.d,i=null,n=null!=(i=this._isLuxon()?r.DateTime.fromJSDate(s).toUTC():i)?i.hour:s?s.getUTCHours():-1;this._optionsTime("hours",this.s.parts.hours12?12:24,n,this.c.hoursAvailable),this._optionsTime("minutes",60,null!=i?i.minute:s?s.getUTCMinutes():-1,t("minutes"),this.s.minutesRange),this._optionsTime("seconds",60,null!=i?i.second:s?s.getSeconds():-1,t("seconds"),this.s.secondsRange)},_show:function(){var e=this,t=this.s.namespace,s=(this._position(),C(o).on("scroll."+t+" resize."+t,function(){e._position()}),C("div.DTE_Body_Content").on("scroll."+t,function(){e._position()}),C("div.dataTables_scrollBody").on("scroll."+t,function(){e._position()}),this.dom.input[0].offsetParent);s!==i.body&&C(s).on("scroll."+t,function(){e._position()}),C(i).on("keydown."+t,function(t){9!==t.keyCode&&27!==t.keyCode&&13!==t.keyCode||e._hide()}),setTimeout(function(){C("body").on("click."+t,function(t){C(t.target).parents().filter(e.dom.container).length||t.target===e.dom.input[0]||e._hide()})},10)},_writeOutput:function(t){var e=this.s.d,s="";e&&(s=this._convert(e,null,this.c.format)),this.dom.input.val(s).trigger("change",{write:e}),"hidden"===this.dom.input.attr("type")&&this.val(s,!1),t&&this.dom.input.focus()}}),a.use=function(t){r=t},a._instance=0,a.defaults={attachTo:"body",buttons:{clear:!1,today:!1},classPrefix:"dt-datetime",disableDays:null,firstDay:1,format:"YYYY-MM-DD",hoursAvailable:null,i18n:{clear:"Clear",previous:"Previous",next:"Next",months:["January","February","March","April","May","June","July","August","September","October","November","December"],weekdays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],amPm:["am","pm"],hours:"Hour",minutes:"Minute",seconds:"Second",unknown:"-",today:"Today"},maxDate:null,minDate:null,minutesAvailable:null,minutesIncrement:1,strict:!0,locale:"en",onChange:function(){},secondsAvailable:null,secondsIncrement:1,showWeekNumber:!1,yearRange:25},a.version="1.4.0",a.factory=function(t,e){var s=!1;return t&&t.document&&(i=(o=t).document),e&&e.fn&&e.fn.jquery&&(C=e,s=!0),s},o.DateTime||(o.DateTime=a),o.DataTable&&(o.DataTable.DateTime=a),C.fn.dtDateTime=function(t){return this.each(function(){new a(this,t)})},C.fn.dataTable&&(C.fn.dataTable.DateTime=a,C.fn.DataTable.DateTime=a,C.fn.dataTable.Editor)&&(C.fn.dataTable.Editor.DateTime=a),a});
\ No newline at end of file |
