mirror of
https://github.com/vale981/Vulcan
synced 2025-03-09 04:16:37 -04:00
102 lines
3.1 KiB
JavaScript
102 lines
3.1 KiB
JavaScript
AutoForm.addInputType("bootstrap-datetimepicker", {
|
|
template: "afBootstrapDateTimePicker",
|
|
valueOut: function () {
|
|
// var val = this.datepicker('getUTCDate');
|
|
if (!!this.data("DateTimePicker").getDate()) {
|
|
var val = this.data("DateTimePicker").getDate().toDate();
|
|
// console.log(val)
|
|
return (val instanceof Date) ? val : this.val();
|
|
}
|
|
},
|
|
valueConverters: {
|
|
"string": function (val) {
|
|
return (val instanceof Date) ? AutoForm.Utility.dateToDateStringUTC(val) : val;
|
|
},
|
|
"stringArray": function (val) {
|
|
if (val instanceof Date) {
|
|
return [AutoForm.Utility.dateToDateStringUTC(val)];
|
|
}
|
|
return val;
|
|
},
|
|
"number": function (val) {
|
|
return (val instanceof Date) ? val.getTime() : val;
|
|
},
|
|
"numberArray": function (val) {
|
|
if (val instanceof Date) {
|
|
return [val.getTime()];
|
|
}
|
|
return val;
|
|
},
|
|
"dateArray": function (val) {
|
|
if (val instanceof Date) {
|
|
return [val];
|
|
}
|
|
return val;
|
|
}
|
|
}
|
|
});
|
|
|
|
Template.afBootstrapDateTimePicker.helpers({
|
|
atts: function addFormControlAtts() {
|
|
var atts = _.clone(this.atts);
|
|
// Add bootstrap class
|
|
atts = AutoForm.Utility.addClass(atts, "form-control");
|
|
return atts;
|
|
}
|
|
});
|
|
|
|
Template.afBootstrapDateTimePicker.rendered = function () {
|
|
var $input = this.$('input');
|
|
var data = this.data;
|
|
|
|
// instanciate datepicker
|
|
$input.datetimepicker(data.atts.datePickerOptions);
|
|
|
|
// set and reactively update values
|
|
this.autorun(function () {
|
|
var data = Template.currentData();
|
|
|
|
// set field value
|
|
if (data.value instanceof Date) {
|
|
// $input.datepicker('setUTCDate', data.value);
|
|
$input.data("DateTimePicker").setDate(data.value);
|
|
} else if (typeof data.value === "string") {
|
|
// $input.datepicker('update', data.value);
|
|
$input.data("DateTimePicker").setDate(moment(data.value).toDate());
|
|
}
|
|
|
|
// set start date if there's a min in the schema
|
|
if (data.min instanceof Date) {
|
|
// datepicker plugin expects local Date object, so convert UTC Date object to local
|
|
var startDate = utcToLocal(data.min);
|
|
// $input.datepicker('setStartDate', startDate);
|
|
$input.data("DateTimePicker").setMinDate(startDate);
|
|
}
|
|
|
|
// set end date if there's a max in the schema
|
|
if (data.max instanceof Date) {
|
|
// datepicker plugin expects local Date object, so convert UTC Date object to local
|
|
var endDate = utcToLocal(data.max);
|
|
// $input.datepicker('setEndDate', endDate);
|
|
$input.data("DateTimePicker").setMinDate(endDate);
|
|
}
|
|
});
|
|
|
|
};
|
|
|
|
Template.afBootstrapDateTimePicker.destroyed = function () {
|
|
// this.$('input').datepicker('remove');
|
|
this.$('input').data('DateTimePicker').destroy();
|
|
};
|
|
|
|
function utcToLocal(utcDate) {
|
|
var localDateObj = new Date();
|
|
localDateObj.setDate(utcDate.getUTCDate());
|
|
localDateObj.setMonth(utcDate.getUTCMonth());
|
|
localDateObj.setFullYear(utcDate.getUTCFullYear());
|
|
localDateObj.setHours(0);
|
|
localDateObj.setMinutes(0);
|
|
localDateObj.setSeconds(0);
|
|
localDateObj.setMilliseconds(0);
|
|
return localDateObj;
|
|
}
|