hedera-web/web/js/htk/field/date-chooser.js

89 lines
1.8 KiB
JavaScript
Raw Normal View History

Htk.DateChooser = new Class
({
Extends: Htk.Field
,Tag: 'htk-date-chooser'
,format: _('%a, %e %b %Y')
,calendar: null
,ignoreCalendarChange: false
,initialize: function (props)
{
this.createElement ('div');
2015-03-15 12:44:57 +00:00
this.node.className = 'htk-date-chooser';
2015-02-08 15:38:38 +00:00
this.label = document.createElement ('span');
this.node.appendChild (this.label);
this.setEditable (this._editable);
2015-11-09 08:14:33 +00:00
this.parent (props);
}
,putValue: function (value)
{
var dateString;
if (value instanceof Date)
dateString = Vn.Date.strftime (value, this.format);
else
dateString = '';
Vn.Node.setText (this.label, dateString);
}
,setEditable: function (editable)
{
2015-12-10 13:48:43 +00:00
Vn.Node.remove (this.label);
if (this.calendar)
{
2015-12-10 13:48:43 +00:00
this.node.removeChild (this.button);
this.calendar.disconnectByInstance (this);
this.calendar = null;
}
2015-02-08 15:38:38 +00:00
2015-12-10 13:48:43 +00:00
if (editable && !this.calendar)
{
this.button = document.createElement ('button');
2015-10-23 23:23:19 +00:00
this.button.className = 'input';
this.button.title = _('ChangeDate');
2015-12-10 13:48:43 +00:00
this.button.addEventListener ('click', this._onClick.bind (this));
2015-02-08 15:38:38 +00:00
this.button.appendChild (this.label);
this.node.appendChild (this.button);
2015-03-06 23:33:54 +00:00
this.calendar = new Htk.Calendar ();
2015-12-10 13:48:43 +00:00
this.calendar.on ('changed', this._onCalendarChange.bind (this));
2015-03-06 23:33:54 +00:00
this.popup = new Htk.Popup ();
this.popup.setChild (this.calendar);
}
else if (!editable)
2015-02-08 15:38:38 +00:00
this.node.appendChild (this.label);
}
2015-12-10 13:48:43 +00:00
,_onCalendarChange: function (calendar)
{
if (this.ignoreCalendarChange)
return;
2015-03-06 23:33:54 +00:00
this.popup.hide ();
var newDate = calendar.value;
this.putValue (newDate);
this.valueChanged (newDate);
}
2015-12-10 13:48:43 +00:00
,_onClick: function (event)
{
this.ignoreCalendarChange = true;
this.calendar.value = this._value;
this.calendar.goToSelectedMonth ();
this.ignoreCalendarChange = false;
2015-03-06 23:33:54 +00:00
this.popup.show (this.button);
}
});