summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2012-04-03 11:08:07 +0200
committerXavier Morel <xmo@openerp.com>2012-04-03 11:08:07 +0200
commitac5eed3c6c99d01ac064d95c30f23556fab44bcc (patch)
tree07888718c4dfb47305850de8c447c451342f610a /addons/web/static/src
parent9ec3559e006bba6881542c6aff297933149a7b8e (diff)
[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
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/search.js37
1 files 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<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: '<em>' + this.attrs.string + '</em>',
+ value: '<strong>' + value + '</strong>'});
+ 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({