- From: Anssi Kostiainen <anssi.kostiainen@nokia.com>
 - Date: Tue, 13 Oct 2009 17:00:38 +0300
 - To: "ext richard.tibbett@orange-ftgroup.com" <richard.tibbett@orange-ftgroup.com>
 - Cc: "brian@westcoastlogic.com" <brian@westcoastlogic.com>, "public-device-apis@w3.org" <public-device-apis@w3.org>
 
On 9.10.2009, at 17.12, ext richard.tibbett@orange-ftgroup.com wrote:
> On 7th Oct, 2009 10:41am, anssi.kostiainen@nokia.com wrote:
>> I'd also add:
>>
>> MAY provide an interface to search through contacts.
>
> Taking the use cases from my previous email and with the assumption  
> that
> 'within each Contact object the fields are ANDed' and 'between Contact
> objects the fields are ORed' then this could be accomplished using
> sequences of ContactFilter objects as follows:
>
> 1. Filter contacts that are in my ('friends' OR 'collegues') group AND
> are based in the 'UK'.
>
> var search = {
>                 { category: 'friends', country: 'uk' },
>                 { category: 'colleagues', country: 'uk' }
>             };
>
> /*...*/device.contacts.addressbook.find(search);
>
> 2. Search for the entered query string 'london' over any of the
> following contact attributes: 'firstname', 'lastname', 'address',  
> 'job'
> and return all matching results.
>
> var search = {
>                 { firstname: 'london' },
>                 { lastname: 'london' },
>                 { address: 'london' },
>                 { job: 'london' }
>             };
>
> /*...*/device.contacts.addressbook.find(search);
>
Looks like a fairly intuitive subset of a JavaScript-ish query  
language. Granted, it's easy to start sliding into the direction of  
specifying a full-blown query language but let's stop here. I feel the  
proposal above (=support for AND and OR operators) fulfills the  
following requirement by striking a balance between simplicity and  
functionality (perhaps a bit on the expense of extensibility):
"SHOULD enable filtering the list of contacts to search for a subset"
Btw. I assume the search variable should be of type Array in the above  
examples?
> Does that provide the search feature required? This would denote only
> the following minimal change to the existing Contacts API WebIDL (plus
> some descriptive text):
>
> [NoInterfaceObject]
> interface AddressBook {
>    ...
>    sequence<Contact> find (in Object filter);
> };
>
The find method should perhaps be described as something like  
(reflecting the latest Contacts API ED):
sequence<Contact> find (in sequence<ContactFilter> filters);
-Anssi
Received on Tuesday, 13 October 2009 14:00:59 UTC