addon/components/ui-date-time-input.js
import moment from 'moment';
import layout from '../templates/components/ui-date-time-input';
import Component from '@ember/component';
import { observer } from '@ember/object'
const minutes=[];
for (let i = 0; i < 60; i++) {
minutes[i] = {'value':i, 'name':i};
}
const hours = [];
for (let i = 0; i < 24; i++) {
hours[i] = {'value':i, 'name':i};
}
/**
ui-date-time-input component
@module components
@namespace components
@class UiDateTimeInput
@constructor
*/
export default Component.extend({
layout,
minutes:minutes,
hours:hours,
/**
datetime value
@property {String} value
@default null
*/
value: null,
classNameBindings: ['class'],
/**
class apply to this component
@property {String} class
@default ''
*/
class: '',
rtime: observer('d,h,m', function(){
let hour = this.h;
let minute = this.m;
let date = moment(this.d);
let options = {
year: date.year(),
month: date.month(),
day: date.day(),
hour: hour,
minute: minute,
};
let time = moment(options).format('YYYY-MM-DD HH:mm');
if(typeof this.attrs.update === 'function'){
this.attrs.update(time);
}
}),
init(){
this._super(...arguments);
if(this.value && moment(this.value).isValid()){
let time = moment(this.value);
this.set('d', time.format('YYYY-MM-DD'));
this.set('h', time.hour());
this.set('m', time.minute());
}
}
});