Hi, We know all that the current search interface is not perfect. It is easy for simple query but not for complex one and the GUI takes a lot of space (even without the advanced).
So we have thought about improving it. Here is some ideas and goals.
We think that users have their biggest experience in searching through the
Google webpage. Users know how it works and it is simple.
So we could apply the same mechanism to the Tryton search by having only one
long text entry. But we need some specific stuff like being able to specify
on which field the search must be done etc.
Here is some examples on how the syntax could be:
By default search is on rec_name
search: Holmes
domain: [('rec_name', 'ilike', '%Holmes%')]
By default many value are linked by AND
search: Holmes Watson
domain: ['AND',
('rec_name', 'ilike', '%Holmes%'),
('rec_name', 'ilike', '%Watson%'),
]
We can use OR operator
search: Holmes OR Watson
domain: ['OR',
('rec_name', 'ilike', '%Holmes%'),
('rec_name', 'ilike', '%Watson%'),
]
Quote to group words
search: "Sherlock Holmes"
domain: [('rec_name', 'ilike', '%Sherlock Holmes%')]
Append operator to use it
search: ="Sherlock Holmes"
domain: [('rec_name', '=', 'Sherlock Holmes')]
Use field name (label) to search on other fields
search: Code: 23
domain: [('code', 'ilike', '%23%')]
Selection fields are splitted into list
search: Language: Français English
domain: [('lang', 'in', ('fr_FR', 'en_US')]
Field name must be case insensitive
search: language: Français English
domain: [('lang', 'in', ('fr_FR', 'en_US')]
We can use internal field name
search: lang: Français English
domain: [('lang', 'in', ('fr_FR', 'en_US')]
We can use internal values
search: lang: fr_FR en_US
domain: [('lang', 'in', ('fr_FR', 'en_US')]
We can compose field search with by default AND
search: Name: Holmes Language: English
domain: [('name', 'ilike', '%Holmes%'), ('lang', '=', 'en_US')]
We can compose field search with OR
search: Name: Holmes OR Language: English
domain: ['OR', ('name', 'ilike', '%Holmes%'), ('lang', '=', 'en_US')]
But also have many values when composiing
search: Name: Holmes Watson Language: Français English
domain: ['AND',
['AND',
('name', 'ilike', '%Holmes%'),
('name', 'ilike', '%Watson%'),
],
('lang', 'in', ('fr_FR', 'en_US')),
]
User can also force how the wildcard are put
search: Name: Holmes*
domain: [('name', 'ilike', 'Holmes%')]
Parenthesis could be used
search: (Name: Holmes AND lang: Français) OR Name: Watson
domain: ['OR',
['AND',
('name', 'ilike', '%Holmes%'),
('lang', '=', 'fr_FR'),
],
('name', 'ilike', '%Watson%'),
]
Searching on amount
search: Payable: 1000
domain: [('payable', '=', 1000)]
search: Payable: >1000
domain: [('payable', '>', 1000)]
search: Payable: 500..1000
domain: ['AND', ('payable', '>', 500), ('payable', '<', 1000)]
And idem for dates
For boolean:
search: Active: false
domain: [('active', '=', False)]
Of course to be very ergonomic, the text entry will need autocompletion on
field names, validation of dates and numbers etc.
--
Cédric Krier
B2CK SPRL
Rue de Rotterdam, 4
4000 Liège
Belgium
Tel: +32 472 54 46 59
Email/Jabber: [email protected]
Website: http://www.b2ck.com/
pgp2teN4SEqBM.pgp
Description: PGP signature
