[Cubicweb] About IPrevNextAdapters and related
Adrien Di Mascio
adrien.dimascio at logilab.fr
Mon Sep 17 08:17:34 CEST 2012
On 14/09/2012 09:33, Stéphane Bugat wrote:
> I was wondering if it was possible to use ITreeAdapters in some specific cases where there is actually no obvious tree relations.
ITreeAdapters are usually helpful when entities can be modeled with
parent / child relations. In your case, I would say it doesn't fit.
> Let's imagine we have persons that are in contact using the relation "X in_contact_with Y". For a given person X, I want him to be able to navigate through its contacts Y. The problem is that X and Y are of the same types, so a tree relation has no sense here -- except if we could define that the "parent" entity is a kind of RQL result set... But it seems that we cannot define an ITreeAdapter with a simple "tree_relation" here.
> My question is: is it possible to define a specific IPrevNextAdapter in such cases? How could I select this Adapter not only on the instance (here ``is_instance('Person')``) but also on an RQL query (something like ``custom_rql = 'Any Y WHERE Y is Person, X is Person, X is_user U, X in_contact_with Y'`` where U is the current session user...)?
> Afterwards the previous_entity() and next_entity() will be very easy to define.
You can have a look at the tracker cube and see how the
IPrevNextAdapter for tickets is implemented. There is a crucial
difference in your case, though : a ticket is part of a single version
whereas a person can be part of several networks.
Don't know exactly what your application does, but you'd probably like
to try and dive into d3.js or one of its peer who implement nice
network visualization tools.
Adrien Di Mascio - LOGILAB, Paris (France).
Formations - http://www.logilab.fr/formations
Développements - http://www.logilab.fr/services
Gestion de connaissances - http://www.cubicweb.org/
More information about the Cubicweb