diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js
index b1a9e295d87..e7becef4e20 100644
--- a/addons/base/static/src/js/search.js
+++ b/addons/base/static/src/js/search.js
@@ -654,15 +654,79 @@ openerp.base.search.SelectionField = openerp.base.search.Field.extend({
return this.$element.val();
}
});
-openerp.base.search.DateTimeField = openerp.base.search.Field.extend({
- get_value: function () {
- return this.$element.val();
+/**
+ * @class
+ * @extends openerp.base.search.Field
+ */
+openerp.base.search.DateField = openerp.base.search.Field.extend(
+ /** @lends openerp.base.search.DateField# */{
+ template: 'SearchView.fields.date',
+ /**
+ * enables date picker on the HTML widgets
+ */
+ start: function () {
+ this._super();
+ this.$element.find('input').datepicker();
+ },
+ stop: function () {
+ this.$element.find('input').datepicker('destroy');
+ },
+ /**
+ * Returns an object with two optional keys ``from`` and ``to`` providing
+ * the values for resp. the from and to sections of the date widget.
+ *
+ * If a key is absent, then the corresponding field was not filled.
+ *
+ * @returns {Object}
+ */
+ get_values: function () {
+ var values_array = this.$element.find('input').serializeArray();
+
+ var from = values_array[0].value;
+ var to = values_array[1].value;
+
+ var field_values = {};
+ if (from) {
+ field_values.from = from;
+ }
+ if (to) {
+ field_values.to = to;
+ }
+ return field_values;
+ },
+ get_context: function () {
+ var values = this.get_values();
+ if (!this.attrs.context || _.isEmpty(values)) {
+ return null;
+ }
+ return _.extend(
+ {}, this.attrs.context,
+ {own_values: {self: values}});
+ },
+ get_domain: function () {
+ var values = this.get_values();
+ if (_.isEmpty(values)) {
+ return null;
+ }
+ var domain = this.attrs['filter_domain'];
+ if (!domain) {
+ domain = [];
+ if (values.from) {
+ domain.push([this.attrs.name, '>=', values.from]);
+ }
+ if (values.to) {
+ domain.push([this.attrs.name, '<=', values.to]);
+ }
+ return domain;
+ }
+
+ return _.extend(
+ {}, domain,
+ {own_values: {self: values}});
}
});
-openerp.base.search.DateField = openerp.base.search.Field.extend({
- get_value: function () {
- return this.$element.val();
- }
+openerp.base.search.DateTimeField = openerp.base.search.DateField.extend({
+ // TODO: time?
});
openerp.base.search.OneToManyField = openerp.base.search.IntegerField.extend({
// TODO: .relation, .context, .domain
diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml
index 06c6ea43df7..e7dcf3a2b7e 100644
--- a/addons/base/static/src/xml/base.xml
+++ b/addons/base/static/src/xml/base.xml
@@ -319,6 +319,21 @@
+
+
+
+
+ to
+
+
+
+