56 lines
2.4 KiB
JavaScript
56 lines
2.4 KiB
JavaScript
jQuery(function ($) {
|
|
var datepickerDict = {};
|
|
var isBootstrap4 = $.fn.collapse.Constructor.VERSION.split('.').shift() == "4";
|
|
function fixMonthEndDate(e, picker) {
|
|
e.date && picker.val().length && picker.val(e.date.endOf('month').format('YYYY-MM-DD'));
|
|
}
|
|
$("[dp_config]:not([disabled])").each(function (i, element) {
|
|
var $element = $(element), data = {};
|
|
try {
|
|
data = JSON.parse($element.attr('dp_config'));
|
|
}
|
|
catch (x) { }
|
|
if (data.id && data.options) {
|
|
data.$element = $element.datetimepicker(data.options);
|
|
data.datepickerdata = $element.data("DateTimePicker");
|
|
datepickerDict[data.id] = data;
|
|
data.$element.next('.input-group-addon').on('click', function(){
|
|
data.datepickerdata.show();
|
|
});
|
|
if(isBootstrap4){
|
|
data.$element.on("dp.show", function (e) {
|
|
$('.collapse.in').addClass('show');
|
|
});
|
|
}
|
|
}
|
|
});
|
|
$.each(datepickerDict, function (id, to_picker) {
|
|
if (to_picker.linked_to) {
|
|
var from_picker = datepickerDict[to_picker.linked_to];
|
|
from_picker.datepickerdata.maxDate(to_picker.datepickerdata.date() || false);
|
|
to_picker.datepickerdata.minDate(from_picker.datepickerdata.date() || false);
|
|
from_picker.$element.on("dp.change", function (e) {
|
|
to_picker.datepickerdata.minDate(e.date || false);
|
|
});
|
|
to_picker.$element.on("dp.change", function (e) {
|
|
if (to_picker.picker_type == 'MONTH') fixMonthEndDate(e, to_picker.$element);
|
|
from_picker.datepickerdata.maxDate(e.date || false);
|
|
});
|
|
if (to_picker.picker_type == 'MONTH') {
|
|
to_picker.$element.on("dp.hide", function (e) {
|
|
fixMonthEndDate(e, to_picker.$element);
|
|
});
|
|
fixMonthEndDate({ date: to_picker.datepickerdata.date() }, to_picker.$element);
|
|
}
|
|
}
|
|
});
|
|
if(isBootstrap4) {
|
|
$('body').on('show.bs.collapse','.bootstrap-datetimepicker-widget .collapse',function(e){
|
|
$(e.target).addClass('in');
|
|
});
|
|
$('body').on('hidden.bs.collapse','.bootstrap-datetimepicker-widget .collapse',function(e){
|
|
$(e.target).removeClass('in');
|
|
});
|
|
}
|
|
});
|