Commit Graph

407 Commits

Author SHA1 Message Date
Denis Ledoux 41f4b11ef4 [MERGE] forward port of branch saas-3 up to e552e09 2015-04-30 15:45:03 +02:00
Denis Ledoux e552e09873 [MERGE] forward port of branch 7.0 up to e601a41 2015-04-30 14:38:17 +02:00
Denis Ledoux 1da5d89ba3 [FIX] web: advanced search on floats with ',' as decimal separator
When using another decimal separator than `.` (dot)
in the language settings,
it wasn't possible to build an advanced search specifying
the decimals.

e.g. with a language with decimal separator `,` and thousand
separator `.`,
if you want to search invoices with amount total 366,38
The advanced search "Total" "is equal to" obliged you
to enter your number with `.` as separator (366.38),
and then, when entering the search, the `.` was
regarded as the thousand separator, giving as domain
`('amount_total', '=', 36638)`, which is not what you asked.

opw-634201

PS: The `|| '.'` in the xml template are only for
retro-compatibility, so if the server sources are
updated, but the browser cache is not refreshed
(meaning the Javascript code isn't refreshed, and,
therefore, `widget.decimal_point is undefined)
it still works.
2015-04-30 13:39:30 +02:00
Nicolas Lempereur a1bfa84f65 [FIX] web: get right result for arrow suggestions
In the search input, the result of filtered search with an arrow was
placed under the currently selected arrow.

Hence if we get to another arrow filter before the result is received,
the result is added under the wrong arrow.

This fix adds the result under the right arrow.

closes #6442
opw-632519
2015-04-24 11:32:58 +02:00
Denis Ledoux 84e10ad03b [FIX] web: translation of default M2O values in search bar
When a many2one field of a searchview was selected
by default, through a default_*_id within the context,
the many2one value name wasn't translated.

e.g. with Spanish loaded (and l10n_multilang installed),
translate a project.project name in Spanish.
Then, while being in Spanish, in the project.project kanban,
click on the Tasks link of a project (tareas),
then, notice the value of the project name in the
search bar.

opw-632818
2015-04-22 17:53:35 +02:00
Nicolas Lempereur 2b90e054bb [FIX] web: keep domain with search field
Currently (since commit e6a2d222d6), the domain of a search view field tag
is dropped.

This previous change was done since some of these domains refers to a
field not available in the javascript.

This fix drop the domain only if it can't be evaluated in the javascript
side.

opw-632030
2015-04-22 10:58:19 +02:00
Olivier Dony df4bd736f1 [FIX] search view: autocomplete: further improve support for rapid barcode scanning
This patch removes the asynchronous code that was
still used to open the autocompletion drawer.
Even with the setTimeout delay forced to 0, the
asynchronous handling meant the final ENTER
keyUp event could be processed before the opening
of the autocompletion drawer related to the last
key pressed. This would trigger the search with
the search string of the previous autocompletion
popup, missing the last few keys.

Also handle ENTER at keyDown, because in some
rare cases a barcode scanner may emit only
the keyDown event for ENTER, without the
corresponding keyUp, causing a merge of two
successive scanned barcodes.

Based on many tests conducted with different
barcode scanners, the only thing that
is guaranteed is the correct order of the keyPress
events for all regular characters, and the
fact that the ENTER keyDown and/or keyUp will
always be sent after them.

All other events can be mixed or simply missing
if you make a rapid succession of scans, especially
if done with a long series of barcodes.

Scanners tested (with 1ms data transmission delay):
 - Honeywell Eclipse MS5145
 - Dacomex Slim 50mm CCD scanner
2015-03-11 17:59:46 +01:00
Géry Debongnie 1fe4cef530 [FIX] web: fix issue with search view input
This patch hopefully solves an annoying issue with the search view:
when the user types really fast (or uses a barcode scanner for example),
the resulting search string was (sometimes) missing the last few
characters.  I'm unclear on the exact reason why it happens.  From the
code, I can only guess that it happens because the scanner use a TAB
key instead of ENTER (TAB is handled in keydown event, ENTER in keyup),
or that the key events aren't in a correct order (if the user press a
key A, then press ENTER, then release ENTER, then release A, it results
in an empty key).

Anyway, the way this patch probably solves the issue is by using the
keypress event for triggering the search view.  I hope that in every
case, the keypress event are correctly ordered.  It leads to some code
I'm not really proud of this patch, but the key event handling are
quite messy.  Also, I need to handle the search string also when the
keyup event is fired, because it might change the search (for example
backspace trigger a keyup, but not a keypress).
2015-03-10 11:28:56 +01:00
Denis Ledoux 2883e3f67d [MERGE] forward port of branch saas-3 up to ba5c972 2015-01-30 16:55:36 +01:00
Denis Ledoux ba5c972c3e [MERGE] forward port of branch 7.0 up to 05c907b 2015-01-30 16:52:41 +01:00
Denis Ledoux a804d9a70f [FIX] web: possibility to autocomplete 'No' for boolean fields
In the search bar.

Besides, if the label value of the selection field is set to False,
which is quite dummy but accepted
The autocomplete crashed.
2015-01-30 13:40:31 +01:00
Denis Ledoux 35806cc075 [FIX] web: indent possible values for selection/bool fields in search 2015-01-30 11:38:34 +01:00
Christophe Simonis 5f47fc84e9 [FIX] web: m2o search facet do no set `default_*` context key for "name_search" values 2014-11-27 17:06:48 +01:00
Géry Debongnie 20a8b0e66a [FIX] correctly set searchview id (web client)
The issue is that when a default searchview is requested, it is
initialized without its view_id.  Result: debug mode can't edit the
search view.  This commit makes sure that when the field_view_get is
received, the correct view_id is set.
2014-11-25 13:11:15 +01:00
Olivier Dony 784665e6bd [DOC] web: search view: extra info about key events handling
Complements bde1a4432f
2014-11-24 18:50:35 +01:00
Géry Debongnie bde1a4432f [FIX] fix autocompletion problems with quick presses
Problem was that when the user types quickly in the search bar and press
enter, the keydown event of the enter key happens before the keypress
event of the last key entered.  This means that the autocompletion has
a wrong string.  The fix is to move the enter selection detection from
keydown to keyup.
2014-11-21 12:04:23 +01:00
Denis Ledoux c7d8e9726b [MERGE] forward port of branch saas-3 up to c571413 2014-11-14 18:02:02 +01:00
Denis Ledoux c5714135c2 [MERGE] forward port of branch 7.0 up to 922a52d 2014-11-14 17:59:00 +01:00
Denis Ledoux 922a52dcde [FIX] web: date autocompletion should not harcode 'date'
But should use date or datetime according to the widget type

This fix is related to 69d60465ee
2014-11-14 17:57:10 +01:00
Denis Ledoux d9e48bae42 [MERGE] forward port of branch saas-3 up to 7ab4137 2014-11-14 16:58:24 +01:00
Denis Ledoux 7ab413724a [MERGE] forward port of branch 7.0 up to da15c9d 2014-11-14 15:59:33 +01:00
Rifakat Haradwala 69d60465ee [FIX] web: date autocompletion should use user's locale
search bar does not suggest date field format based on user's locale and always shows based on mmddyy using Date.parse,  opw:615276

Note: starting in 9.0, datejs has been replaced by momentjs, so this
problem should be solved in a better way.
2014-11-13 11:12:49 +01:00
Géry Debongnie e6a2d222d6 [FIX] correctly expand many2ones in autocompletion
The ManyToOneField widget evaluated the domain before doing a name_search,
but the domain should not be evaluated client side, because it can only
be static at that point. It caused crash in autocompletion because
some variables could not be found in the context (see stage_id in
project.task for example)
2014-09-18 11:04:01 +02:00
Mohammed Shekha 0db0df437a [FIX] web: traceback in search view when no field 2014-09-16 11:37:48 +02:00
Géry Debongnie 53a5c6d241 [FIX] correct domain for autocomplete in many2one
The domain was using '=', which is correct when selecting a specific
element in autocompletion, but not when searching for all elements
matching a string.
2014-08-20 11:55:15 +02:00
Olivier Dony e11eddf753 [MERGE] Forward-port of saas-5 up to 20cc18d 2014-08-13 20:46:47 +02:00
Denis Ledoux b49755b545 [MERGE] forward port of branch saas-3 up to 591326c 2014-08-13 10:29:14 +02:00
Denis Ledoux 8a7728790b [MERGE] forward port of branch 7.0 up to 60ab6f1 2014-08-12 17:49:12 +02:00
Martin Trigaux 7a50b3b057 [FIX] web: missing self initialisation
The self is needed in the _value() method below, opw 608878
2014-08-12 16:08:30 +02:00
Christophe Simonis 135962184d [FIX] web: make search by `id` possible.
+ correct tests
2014-08-06 17:27:27 +02:00
Christophe Simonis dc9bcf479d [FIX] Allow search on `_inherits` fields.
As `_inherits` fields are now handled via `related`
fields (not stored, obviously), a new descriptor
`searchable` has been added to `fields_get()` result
to indicated if the field is searchable or not.
2014-08-06 15:01:01 +02:00
Denis Ledoux 64ed698a58 [FIX] web: return _super deferred in start method
Forget to include the _super method in the deferred returned by the start function of the search view
See previous rev. 70605240a9
2014-07-29 19:43:56 +02:00
Denis Ledoux 70605240a9 [FIX] web: headless search views are ready from start
function start, line 783, filters_ready waits for fields_view_get deferred to be resolved before calling prepare_filters, which prepare the view filters.

The thing is that, at line 416, if this.headless boolean is true, the searchview is marked as ready (by resolving the this.ready deferred), and the fields_view_get deferred will never be resolved, as it is resolved in the else case, where the this.headless boolean is false.

Therefore, in this.headless true case, this prevents the deferred $.when(this._super(), filters_ready) to be resolved, as the deferred filters_ready will never be resolved. Therefore, the deferred returned by the start function is never resolved, and the searchview will never be regarded as ready neither.

In views.js, the ViewManager is marked as ready when the deferred manager_ready = $.when(searchview_loaded, main_view_loaded, this.view_completely_inited) is resolved. In the this.headless true case, as the searchview is never marked as ready, the manager isn't neither.

This leaded to some issues, like the action buttons in form views being disabled on click, and never re-enabled once the action/wizard executed. See opw-610723
2014-07-29 19:38:28 +02:00
Géry Debongnie 4ab85f2fb3 [FIX] prevent an incorrect state in autocompletion
When going up and wrapping around, the focus was on a hidden separator,
so hitting enter = stacktrace.  Now, the focus goes on the last
selectable list item.-
2014-07-01 09:39:26 +02:00
Olivier Dony 9132b1d306 [IMP] ir.filters: new filters are local to the menu/action by default
Allow binding an optional `action_id` to filters.
The web client will try to identify the specific
action ID when saving new filters. If no contextual
action exists, the filter is saved globally for
the model.

This will automatically keep filters within their
original menu when there are several menus/actions
leading to a given list of documents.
In some cases the action_id will not match the
filter model, which should be fine (e.g. when opening
a many2one completion popup for model `foo` within
a menu of model `bar`).

It is also still be possible to have a filter apply
to all actions/menus for a given model by manually
deleting the action_id value in the filter
(e.g. via the Manage Filters debug menu).

When updating a filter the action_id value is ignored
so that old global filters will be gradually replaced
by new "local" filters.

Also added an _order to ensure stable ordering of the
filters.
2014-07-01 03:29:05 +02:00
Olivier Dony 686fea4b3e [IMP] search views: more generic name for saved filters
Also rename variables to a more neutral term
that will hopefully remain untouched (custom filters)
regardless of the UI label.
2014-07-01 03:29:04 +02:00
Géry Debongnie 88bb66e784 [FIX] fix tests in autocompletion 2014-06-30 16:13:02 +02:00
Géry Debongnie cde4ad1159 [IMP] remove useless code
the 'first' attribute is not used anymore
2014-06-30 14:58:12 +02:00
Géry Debongnie 2c43d60518 [FIX] don't display separators in the drawer
now, separators (defined by the tag 'group'!) are only displayed
in the autocomplete and not in the searchview drawer
2014-06-30 14:42:05 +02:00
Géry Debongnie e556fd735e [FIX] ignore separators when moving in autocomplet 2014-06-27 13:57:33 +02:00
Géry Debongnie 512f7acfdc [IMP] autocomplete now display separators
separators given in the search view are now displayed
in the autocomplete widget
2014-06-27 12:05:34 +02:00
Géry Debongnie 3c1c6888ba [FIX] fix 2 display bugs with expand autocomplete
* the order was reversed
* there was an useless facet with just the string name
2014-06-27 11:40:37 +02:00
Géry Debongnie 0a4a7f3d20 [IMP] new autocomplete widget
Task #5009

This new autocomplete widget (the one used in the search bar) does not
do remote calls automatically, but on demand. In theory, it should lead
to a better user experience, not having the ui blocked every time long
remote calls are done.

It also has the benefits of bringing us one step closer to not
depending on jquery.ui. Bonus point: the code is quite short (< 200 loc
i believe)
2014-06-25 13:26:41 +02:00
Christophe Simonis eef6330c55 [MERGE] forward port of branch saas-5 up to adf07a9 2014-06-19 16:23:32 +02:00
Christophe Simonis 5087612d1d [MERGE] forward port of branch saas-3 up to bf53aed 2014-06-19 15:44:07 +02:00
Christophe Simonis bf53aeda94 [MERGE] forward port of branch 7.0 up to e5533d0 2014-06-19 15:32:32 +02:00
Géry Debongnie 3d43f9d454 [FIX] fixes searchbar navigation (web client)
the code handling the keydown events was moved, but the variable this
was not adjusted accordingly, resulting in a broken navigation.

It is now possible to press LEFT and RIGHT again to move the focus
between facets.
2014-06-19 12:43:25 +02:00
Géry Debongnie 63c702f009 [IMP] better layout with pure css for web client
this patch removes javascript calls to adjust the layout.  It manages
to do the correct layout with only css, which will correct quite a few
issues.
2014-06-10 16:22:02 +02:00
Géry Debongnie c522fe6add [FIX] compute the correct offset to adjust view
the jquery method length() compute the height of its element, even if
it is diplay:none.  But in our case, we want the offset to be zero if
there is no visible view_manager_header.  (for example, general settings
in settings menu)
2014-05-30 15:10:18 +02:00
Géry Debongnie 6cbf8c5a28 [FIX] use _.isEmpty instead of Object.keys
Object.keys is not supported by all browsers (*cough* IE *cough*).
Also, bonus, isEmpty is more readable and more 'semantic'
2014-05-30 11:33:56 +02:00