Plusieurs champs dans une vue calendrier

Bonjour,

Je souhaite afficher plusieurs champs dans une même vue calendrier.
J’ai donc ajouté deux « field » à ma vue mais cela ne fonctionne pas. J’ai uniquement le premier champ qui s’affiche.

Avez-vous une solution pour afficher les deux champs ?

Merci

hello
tu ne peux pas

Bonjour,

Il est prévu sur AOP 7.1 de pouvoir définir un template pour faire apparaitre plusieurs informations, exemple :

<calendar name="sales-timeline" title="Sales Timeline" model="com.axelor.sale.db.Order" editable="true"
    eventStart="orderDate"
    eventStop="confirmDate"
    eventLength="8"
    colorBy="customer">
    <!-- All fields that should be fetched, ie, used in template -->
    <field name="name" />
    <field name="customer" />
    <field name="orderDate" />
    <field name="confirmDate" />
    <!-- The template that will be displayed in the event popover -->
    <template>
      <![CDATA[
      <>
       <ul>
         <li>{$fmt("customer")}</li>
         <li>{$fmt("orderDate")}</li>
         <li>{$fmt("confirmDate")}</li>
       </ul>
      </>
      ]]>
    </template>
  </calendar>

Sur les versions précédentes, une solution serait de créer un troisième champ, qui serait le seul affiché sur le calendrier, et réaliserai une concaténation des deux autres.

Bonne journée

1 « J'aime »

Bonjour,
Merci beaucoup pour votre aide.
Comment pensez-vous que je pourrais concaténer les deux champs illustrés dans ma capture d’écran ?

Bonjour, comment changer la carte de la vue calendrier pour afficher d’autres infos ?

cap1

je relance également la question pour la concaténation de champs

Bonjour @csch @Julien_L ,

Pour afficher plusieurs champs dans une même vue calendrier, vous pouvez envisager d’utiliser un champ concaténé. Voici une solution possible :

  1. Ajouter un champ concaténé dans votre domaine :
  • Dans votre fichier ProjectPlanningTime.xml, ajoutez un nouveau champ concatProjectProjectTask :

<string name="concatProjectProjectTask" namecolumn="true" readonly="true">

<![CDATA[

String concatProjectProjectTask = "";

if (this.getProject() != null) {

concatProjectProjectTask += this.getProject().getName();

}

if (this.getProjectTask() != null) {

concatProjectProjectTask += " / " + this.getProjectTask().getName();

}

return concatProjectProjectTask;

]]>

</string>

  1. Ajouter ce champ à la vue calendrier :
  • Dans la vue project-planning-time-calendar, remplacez les champs ProjectTask et Project par le nouveau champ concatProjectProjectTask :

<field name="concatProjectProjectTask"/>

Notez que cette solution n’a pas été testée et qu’il se peut qu’elle requière des ajustements selon votre configuration spécifique.

J’espère que cela vous aidera !

Cordialement

Bonjour,
De mon côté, puisque j’utilise une instance chez Axelor, que la version AOP est la 6, et que je n’ai pas accès aux sources, j’ai procédé ainsi :

  • Création via Studio d’un champ personnalisé de type String sur le modèle Event (vue Event_Form) : strTitreAgenda
  • Création d’une action qui met à jour ce nouveau champs dès qu’un évènement est créé ou mis à jour :
<action-attrs name="toltech-atys-action-event-record-get-title-partner-opportunity">
  <attribute if="opportunityFullName != null &amp;&amp; contactPartner == null &amp;&amp; partner == null" name="value" expr="eval:subject + ' - ' + opportunityFullName" for="strTitreAgenda"/>
  <attribute if="opportunityFullName != null &amp;&amp; contactPartner == null &amp;&amp; partner != null" name="value" expr="eval:subject + ' - ' + partner.name + ' - ' + opportunityFullName" for="strTitreAgenda"/>
  <attribute if="opportunityFullName != null &amp;&amp; contactPartner != null &amp;&amp; partner == null" name="value" expr="eval:subject + ' - ' +  contactPartner.name + ' - ' + opportunityFullName" for="strTitreAgenda"/>
  <attribute if="opportunityFullName != null &amp;&amp; contactPartner != null &amp;&amp; partner != null" name="value" expr="eval:subject  + ' - ' + partner.name  + ' (' + contactPartner.firstName + ' ' + contactPartner.name + ') - ' + opportunityFullName" for="strTitreAgenda"/>
  <attribute if="opportunityFullName == null &amp;&amp; contactPartner == null &amp;&amp; partner == null" name="value" expr="eval:subject" for="strTitreAgenda"/>
  <attribute if="opportunityFullName == null &amp;&amp; contactPartner == null &amp;&amp; partner != null" name="value" expr="eval:subject + ' - ' + partner.name" for="strTitreAgenda"/>
  <attribute if="opportunityFullName == null &amp;&amp; contactPartner != null &amp;&amp; partner == null" name="value" expr="eval:subject + ' - ' +  contactPartner.name" for="strTitreAgenda"/>
  <attribute if="opportunityFullName == null &amp;&amp; contactPartner != null &amp;&amp; partner != null" name="value" expr="eval:subject  + ' - ' + partner.name  + ' (' + contactPartner.firstName + ' ' + contactPartner.name + ')'" for="strTitreAgenda"/>
</action-attrs>
  • Duplication de la vue event-calendar-color-by-calendar, que j’ai mis en priorité au-dessus de la précédente pour qu’elle soit active à la place de l’autre :
<calendar id="atys-event-calendar-color-by-calendar" name="event-calendar-color-by-calendar" title="My Calendar" model="com.axelor.apps.crm.db.Event" mode="month" colorBy="eventCategory" onChange="action-event-method-compute-from-calendar" eventStart="startDateTime" eventStop="endDateTime" eventLength="1">
  <field name="attrs.strTitreAgenda"/>
</calendar>

Une fois cela mis en place, il est nécessaire de réenregistrer les évènements anciens puisque le nouveau champs n'est pas à jour sur ceux existants.
En espérant que ça permettre de résoudre votre problème.