Sélecteur de catégorie
Pour exécuter une recherche, il est nécessaire de définir le type d’objet recherché (documents, dossiers…) : une catégorie de composant.
Pour cela, un sélecteur de catégorie est mis à disposition. Pour le masquer, la classe FakeCategorySelectorPresenter
est mise à disposition afin de définir la catégorie sans que l’utilisateur n’ait à la sélectionner.
Exemple : Définition de la catégorie pour une recherche de dossiers virtuels
<property name="categorySelectorPresenter">
<bean class="com.flower.docs.gui.client.search.criteria.item.FakeCategorySelectorPresenter">
<property name="value">
<value type="com.flower.docs.domain.component.Category">VIRTUAL_FOLDER</value>
</property>
</bean>
</property>
Recherche par mot clés
La recherche par mot clés se configure en ajoutant la propriété suivante :
<property name="keywordCriteriaPresenter">
<bean class="com.flower.docs.gui.client.search.criteria.KeywordCriteriaPresenter" />
</property>
Pour désactiver la recherche par mot clés, il faut ajouter au bean de classe KeywordCriteriaPresenter
la propriété suivante :
<property name="enabled" value="false" />
Par défaut, la recherche par mot-clé va permettre une recherche sur tous les tags de composants. Il est possible de changer ce comportement et de spécifier sur quels tags cette recherche par mot clés doit être effectuée :
<property name="fields">
<list>
<value>Matricule</value>
<value>Contractor</value>
</list>
</property>
Recherche avancée
La recherche avancée peut être configurée en ajoutant la propriété suivante :
<property name="advancedCriteriaPresenter">
<bean class="com.flower.docs.gui.client.search.criteria.advanced.AdvancedCriteriaPresenter" />
</property>
Pour désactiver la recherche avancée, il faut ajouter la propriété suivante :
<property name="enabled" value="false" />
Par défaut, la recherche avancée permet de filtrer sur une ou plusieurs classes de composants. Pour ne pas afficher le sélecteur de classes, il faut ajouter la propriété suivante :
<property name="displayClassSelector" value="false" />
Pour que la recherche avancée soit ouverte et cacher le bouton permettant de la réduire, il faut ajouter la propriété suivante :
<property name="forceOpen" value="true" />
Le libellé par défaut de l’action est Rechercher
, il peut être surchargé en ajoutant la propriété :
<property name="searchButtonTitle">
<list>
<bean class="com.flower.docs.domain.i18n.I18NLabel">
<property name="language" value="EN"/>
<property name="value" value="Verify"/>
</bean>
<bean class="com.flower.docs.domain.i18n.I18NLabel">
<property name="language" value="FR"/>
<property name="value" value="Vérifier"/>
</bean>
</list>
</property>
CONDITIONAL
, si le tag dont il dépend n’est pas renseigné, l’ensemble des valeurs du tag CONDITIONAL
est affiché.
Critères libres
Par défaut, l’ensemble des classes de tags définies comme recherchables peuvent être ajoutées comme critère de recherche. Afin de restreindre la portée des recherches effectuées, il est possible de :
Empêcher les utilisateurs d’ajouter un critère libre grâce au bouton
+
: ajouter la propriété suivante au beanAdvancedCriteriaPresenter
:<property name="addEmptyCriterion" value="false" />
Masquer un tag dans la liste des critères disponibles : ajouter la valeur de son idenfiant à la propriété
unsearchableCriteria
<property name="unsearchableCriteria"> <list> <value>ServiceName</value> <value>Assignee</value> </list> </property>
Forcer les tags pouvant être utilisés comme critères dans un formulaire de recherche : ajouter la valeur de son idenfiant à la propriété
searchableCriteria
. Lorsque cette propriété est définie, la propriétéunsearchableCriteria
n’est pas utilisée.<property name="searchableCriteria"> <list> <value>Nature</value> </list> </property>
Critères fixes
La recherche avancée peut être configurée pour afficher, par défaut, des critères fixes que l’utilisateur n’aura plus qu’à remplir avant d’exécuter sa recherche.
Pour les critères de type chaine de caractères, il est possible de définir une description, à l’aide de la propriété description
, qui sera présentée à l’utilisateur.
Pour définir un critère fixe :
<bean id="FirstnameCriterionPresenter" class="com.flower.docs.gui.client.search.criterion.SimpleCriterionPresenter">
<property name="model">
<bean class="com.flower.docs.domain.search.Criterion">
<property name="name" value="Firstname" />
<property name="type">
<value type="com.flower.docs.domain.search.Types">STRING</value>
</property>
<property name="operator">
<value type="com.flower.docs.domain.search.Operators">CONTAINS</value>
</property>
</bean>
</property>
<property name="description">
<list>
<bean class="com.flower.docs.domain.i18n.I18NLabel">
<property name="language" value="EN"/>
<property name="value" value="Collaborator firstname"/>
</bean>
<bean class="com.flower.docs.domain.i18n.I18NLabel">
<property name="language" value="FR"/>
<property name="value" value="Prénom du collaborateur"/>
</bean>
</list>
</property></bean>
Pour affecter ces critères à une recherche avancée :
<property name="fixedCriterionPresenters">
<list>
<ref bean="FirstnameCriterionPresenter" />
</list>
</property>
Il est possible de personnaliser l’affichage d’un champ avec un bean de classe com.flower.docs.gui.client.search.criterion.FilterCriterionPresenter
à l’aide de différentes propriétés :
displayOperatorSelector
: permet de cacher le sélecteur d’opérateurforceMonovalued
: pour un critère normalement multivalué, force l’utilisateur à ne choisir qu’une valeurmandatory
: rend le champ obligatoire pour effectuer la recherche
Exemple :
<bean id="ValidationStatusCriterionPresenter" class="com.flower.docs.gui.client.search.criterion.FilterCriterionPresenter">
<property name="description">
<list>
<bean class="com.flower.docs.domain.i18n.I18NLabel">
<property name="language" value="EN"/>
<property name="value" value="Enter a value"/>
</bean>
<bean class="com.flower.docs.domain.i18n.I18NLabel">
<property name="language" value="FR"/>
<property name="value" value="Saisissez une valeur"/>
</bean>
</list>
</property>
<property name="displayOperatorSelector" value="false" />
<property name="forceMonovalued" value="true" />
<property name="mandatory" value="true" />
<property name="model">
<bean class="com.flower.docs.domain.search.Criterion">
<property name="name" value="ValidationStatus" />
<property name="type">
<value type="com.flower.docs.domain.search.Types">STRING</value>
</property>
<property name="operator">
<value type="com.flower.docs.domain.search.Operators">STARTS_WITH</value>
</property>
</bean>
</property>
</bean>
Pour affecter ces critères à une recherche avancée :
<property name="fixedCriterionPresenters">
<list>
<ref bean="ValidationStatusCriterionPresenter" />
</list>
</property>
Critères multiples :
Par défaut, l’ensemble de ces critères est défini comme unique
, à savoir que chaque tag présent dans la liste des critères ne peut être utilisé qu’une seule fois.
Cependant, il est possible de définir qu’un tag puisse correspondre à plusieurs critères, grâce à la propriété nonUniqueCriteria
:
<property name="nonUniqueCriteria">
<list>
<value>name</value>
<value>TIAmount</value>
<value>creationDate</value>
</list>
</property>
Cette fonctionnalité est désactivable en ajoutant la propriété activateUniqueCriteria
<property name="activateUniqueCriteria" value="false" />
Sélecteur de classe
Il est possible de personnaliser la sélection de la classe de composants lors d’une recherche à l’aide d’un bean de classe
com.flower.docs.gui.client.search.criteria.clazz.ComponentClassCriterionSelectorPresenter
.
Ce critère de classe est personnalisable de la même façon que les critères filtres cités ci-dessus :
displayOperatorSelector
: permet de cacher le sélecteur d’opérateurforceMonovalued
: pour un critère normalement multivalué, force l’utilisateur à ne choisir qu’une valeurmandatory
: rend le champ obligatoire pour effectuer la recherche
Exemple :
<bean id="classIdCriterionPresenter" class="com.flower.docs.gui.client.search.criteria.clazz.ComponentClassCriterionSelectorPresenter">
<property name="displayOperatorSelector" value="false" />
<property name="forceMonovalued" value="true" />
<property name="mandatory" value="true" />
<property name="model">
<bean class="com.flower.docs.domain.search.Criterion">
<property name="name" value="classid" />
<property name="type">
<value type="com.flower.docs.domain.search.Types">STRING</value>
</property>
<property name="operator">
<value type="com.flower.docs.domain.search.Operators">EQUALS_TO</value>
</property>
</bean>
</property>
</bean>
Le sélecteur de classe de type com.flower.docs.gui.client.search.criteria.clazz.CreatableTaskClassCriterionSelectorPresenter
va permettre d’afficher uniquement les tâches qui n’ont pas de pièces jointes obligatoires et techniques et où l’utilisateur a les droits de création.
Pour affecter ce critère de classe à une recherche avancée, il faut définir la propriété classCriterionPresenter
et afficher le critère de classe:
<property name="advancedCriteriaPresenter">
<bean class="com.flower.docs.gui.client.search.criteria.advanced.AdvancedCriteriaPresenter">
<property name="enabled" value="true" />
<property name="displayClassSelector" value="true" />
<property name="showSearchButton" value="true" />
<property name="classCriterionPresenter" ref="classIdCriterionPresenter" />
</bean>
</property>
Filtres
Lorsqu’une agrégation est définie pour la requête cachée du formulaire de recherche, les résultats sont affichés sous forme d’arborescence. Lors de la sélection d’un bucket, la recherche est exécutée avec les critères correspondant au bucket.
Données techniques
Les informations techniques positionnées par FlowerDocs peuvent également être utilisées en tant que critère ou filtre de recherche :
name
: titre du composantid
: identifiant du composantclassid
: identifiant de la classe du composantowner
: login de l’utilisateur ayant créé le composantcreationDate
: date de création du composantlastUpdateDate
: date de dernière modification du composantworkflow
: identifiant du workflow, ne concerne que les composants de typeTASK
assignee
: login de l’utilisateur à qui la tâche est assignée, ne concerne que les composants de typeTASK
content
: contenu du fichier, ne concerne que les composants de typeDOCUMENT
dataCriteriaCatalog
de type com.flower.docs.gui.client.search.SearchableFieldCatalog
.
Validation
Afin de décider si le bouton de recherche doit être désactivé ou non, la propriété enableIfInvalid
peut être définie. Cette propriété accepte les valeurs suivantes :
true
: le formulaire de recherche peut être invalidefalse
: le formulaire doit être valide pour activer l’action