From ac5eed3c6c99d01ac064d95c30f23556fab44bcc Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 3 Apr 2012 11:08:07 +0200 Subject: [PATCH] [ADD] completion and values fetching for Date and Datetime fields, based on datejs's fuzzy date-ish parsing bzr revid: xmo@openerp.com-20120403090807-6ct56fqkd1a6jcg1 --- addons/web/static/src/js/search.js | 37 ++++++++++++++++-------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index 084dbcb0607..e029c577dbe 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -1001,7 +1001,7 @@ openerp.web.search.Field = openerp.web.search.Input.extend( /** @lends openerp.w * @returns {Array} domain to include in the resulting search */ make_domain: function (name, operator, facet) { - return [[name, operator, facet.value()]]; + return [[name, operator, this.get_value(facet)]]; }, get_domain: function (facet) { var val = this.get_value(facet); @@ -1176,20 +1176,24 @@ openerp.web.search.BooleanField = openerp.web.search.SelectionField.extend(/** @ * @extends openerp.web.search.DateField */ openerp.web.search.DateField = openerp.web.search.Field.extend(/** @lends openerp.web.search.DateField# */{ - template: "SearchView.date", - start: function () { - this._super(); - // FIXME: this insanity puts a div inside a span - this.datewidget = new openerp.web.DateWidget(this); - this.datewidget.prependTo(this.$element); - this.datewidget.$element.find("input") - .attr("size", 15) - .attr("autofocus", this.attrs.default_focus === '1' ? 'autofocus' : null) - .removeAttr('style'); - this.datewidget.set_value(this.defaults[this.attrs.name] || false); + get_value: function (facet) { + return openerp.web.date_to_str(facet.get('json')); }, - get_value: function () { - return this.datewidget.get_value() || null; + complete: function (needle) { + var d = Date.parse(needle); + if (!d) { return $.when(null); } + var value = openerp.web.format_value(d, this.attrs); + var label = _.str.sprintf(_.str.escapeHTML( + _t("Search %(field)s at: %(value)s")), { + field: '' + this.attrs.string + '', + value: '' + value + ''}); + return $.when([{ + category: this.attrs.string, + label: label, + value: value, + json: d, + field: this + }]); } }); /** @@ -1204,9 +1208,8 @@ openerp.web.search.DateField = openerp.web.search.Field.extend(/** @lends opener * @extends openerp.web.DateField */ openerp.web.search.DateTimeField = openerp.web.search.DateField.extend(/** @lends openerp.web.search.DateTimeField# */{ - make_domain: function (name, operator, value) { - return ['&', [name, '>=', value + ' 00:00:00'], - [name, '<=', value + ' 23:59:59']]; + get_value: function (facet) { + return openerp.web.datetime_to_str(facet.get('json')); } }); openerp.web.search.ManyToOneField = openerp.web.search.CharField.extend({