es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo mostrar algunas propiedades de carpeta debajo de ella?

Estoy haciendo un widget de bandeja de entrada y necesito mostrar el correo electrónico del remitente y la fecha debajo de cada carpeta en el widget de bandeja de entrada.

Esto es una parte del código.

<div children="@bind(vm.displayedFolders)" if="${vm.isEmpty}">
   <template name="children" var="folders">
      <div> 
         <label value="${folders}" sclass="inbox-widget-label"></label>
      </div>
   </template>
</div>

Y este es el código Java.

private void initDisplayedFolders() {
   displayedFolders = new ArrayList<>();

   for (final CmisObject child : inboxFolder.getChildren()) {
      if (displayedFolders.size() >= NUMBER_OF_FOLDERS_TO_DISPLAY) {
         break;
      }
      if (child instanceof Folder) {
         final Folder childFolder = (Folder) child;
         for (final CmisObject grandChild : childFolder.getChildren()) {
            if (displayedFolders.size() >= NUMBER_OF_FOLDERS_TO_DISPLAY) {
               break;
            } else {
               displayedFolders.add(grandChild.getName());
            }
         }
      }
   }
   if (!displayedFolders.isEmpty()) {
      isEmpty = true;
   }
}

¿Alguna sugerencia?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para mostrar el correo electrónico del remitente y la fecha debajo de cada carpeta en el widget de la bandeja de entrada, se puede modificar el código de la plantilla de la siguiente manera:

    <div children="@bind(vm.displayedFolders)" if="${vm.isEmpty}">
      <template name="children" var="folders">
        <div>
          <label value="${folders}"></label>
          <ul>
            <li each="@bind(folders.emails)">
              <label value="@load(each.from)"></label> - <label value="@load(each.date)"></label>
            </li>
          </ul>
        </div>
      </template>
    </div>
    

    Aquí, creamos una lista no ordenada (ul) para cada carpeta e iteramos sobre los correos electrónicos en esa carpeta utilizando la directiva “each”. Luego, mostramos el remitente del correo electrónico (from) y la fecha utilizando los enlaces “value” y “load”.

    Para hacer que esto funcione, deberá modificar la lista “displayedFolders” en su código de Java para incluir un objeto que almacene el nombre de una carpeta y sus correos electrónicos asociados. Por ejemplo:

    public class EmailFolder {
      private String name;
      private List<email> emails;
    
      public EmailFolder(String name, List<email> emails) {
        this.name = name;
        this.emails = emails;
      }
    
      // métodos get y set para nombre y correos electrónicos
    }
    
    public class Email {
      private String from;
      private Date date;
    
      public Email(String from, Date date) {
        this.from = from;
        this.date = date;
      }
    
      // métodos get y set para remitente y fecha
    }
    

    Luego, puede modificar el método “initDisplayedFolders()” para crear instancias de estos objetos y agregarlos a la lista “displayedFolders”. Por ejemplo:

    private void initDisplayedFolders() {
      displayedFolders = new ArrayList<>();
    
      for (final CmisObject child : inboxFolder.getChildren()) {
        if (displayedFolders.size() >= NUMBER_OF_FOLDERS_TO_DISPLAY) {
          break;
        }
        if (child instanceof Folder) {
          final Folder childFolder = (Folder) child;
          List<email> emails = new ArrayList<>();
          for (final CmisObject grandChild : childFolder.getChildren()) {
            if (emails.size() >= NUMBER_OF_EMAILS_TO_DISPLAY) {
              break;
            } else if (grandChild instanceof Email) {
              final Email email = (Email) grandChild;
              emails.add(email);
            }
          }
          if (!emails.isEmpty()) {
            final EmailFolder folder = new EmailFolder(childFolder.getName(), emails);
            displayedFolders.add(folder);
          }
        }
      }
    
      if (!displayedFolders.isEmpty()) {
        isEmpty = true;
      }
    }
    

    Aquí, creamos una nueva lista de correos electrónicos para cada carpeta y agregamos instancias de la clase “Email” a ella. Luego, creamos una nueva instancia de la clase “EmailFolder” con el nombre de la carpeta y su lista de correos electrónicos, y la agregamos a la lista “displayedFolders”.

    Tenga en cuenta que deberá ajustar la constante “NUMBER_OF_EMAILS_TO_DISPLAY” para limitar el número de correos electrónicos que se muestran debajo de cada carpeta.

Comments are closed.