Configuration

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 : Forcer la catégorie d’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 disposée en ligne, il faut ajouter la propriété suivante :

<property name="inline" value="true" />

Pour que la recherche avancée soit forcée à être 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" value="Vérifier" />

Critères libres

Par défaut, l’ensemble des classes de tag 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 bean AdvancedCriteriaPresenter :

    <property name="addEmptyCriterion" value="true" />
    
  • 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" value="Prénom du collaborateur"/>
</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érateur
  • forceMonovalued : pour un critère normalement multivalué, force l’utilisateur à ne choisir qu’une valeur
  • mandatory : rend le champ obligatoire pour effectuer la recherche

Exemple :

<bean id="ValidationStatusCriterionPresenter" class="com.flower.docs.gui.client.search.criterion.FilterCriterionPresenter">
	<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 composant 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érateur
  • forceMonovalued : pour un critère normalement multivalué, force l’utilisateur à ne choisir qu’une valeur
  • mandatory : 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>

Validation

Afin de décider si le bouton de recherche doit être désactiver ou non, la propriété enableIfInvalid peut être définie. Cette propriété accepte les valeurs suivantes.

  • true : le formulaire de recherche peut être invalide
  • false : le formulaire doit être valide pour pouvoir rechercher des composants


Exemple

<bean id="RechercheAgent" class="com.flower.docs.gui.client.search.ComponentSearchPresenter" scope="prototype">
  <property name="title" value="Recherche de dossier agent"/>
  <property name="enableIfInvalid" value="true" />
</bean>