2017-04-12 4 views
1

Ich versuche, diesen conversationThreading-js-Code zu verwenden, um E-Mails in Threads zu gruppieren, aber Dokumentation ist spärlich und/oder ich bin nicht in der Lage, es zu verstehen. Hat jemand dieses Bit Code zuvor verwendet oder JWZ email conversation threading algorithm verwendet, auf dem es basiert?Kann mir jemand erklären, wie man mit ConversationThreading-js arbeitet?

Dies ist, wo ich so weit bin:

  1. Electron I Last mit und Parsen eine lokale mbox mit node-mbox und node-mailparser
  2. ich ein Array von JavaScript-Objekten aufzubauen, die Schlüssel-Wert-Paare von messageId haben, inReplyTo und references.
  3. Mit Beispielcode aus der test file for this lib Ich versuche, die Threads zu bauen, aber anscheinend mache ich es nicht richtig. Ich bekomme keine Fehler, aber ich bekomme auch keine Threads (und meine Test-mbox enthält Threads).

Vielleicht bin ich Missverständnis, was das Ergebnis sein sollte? Oder ich mache nur "falsch"? Mein Endziel ist hier, die resultierenden Threads in einer Art von gerichteten Graphen mit D3 anzeigen zu können - aber das wird nicht passieren, wenn ich die Daten nicht richtig einrichten kann.


 function makeThread(emails) { 
     var thread = jwz.messageThread().thread(emails.map(
      function (message) { 
       return jwz.message(message.subject, message.messageId, message.references); 
      } 
     )); 

     console.log('thread',thread); 
     } 

enter image description here

Antwort

1

Es ist ziemlich unklar, wie es funktioniert, aber ich schaffte es, einige Code zu schreiben, der die "Thread" druckt:

function recurse(node, level) { 
    level  = level || 0; 
    let prefix = '\t'.repeat(level); 

    (node.children || []).forEach(function(child) { 
    child.children = child.children || []; 
    console.log(prefix, level ? '' : '-', child.message ? child.message.subject : '??', `[${ child.children.length }]`); 
    return recurse(child, level + 1); 
    }); 
} 

recurse(jwz.messageThread().thread(messages)); 

(messages ist ein Array von jwz.message() Objekten, ähnlich wie Sie es erstellen)

Verwandte Themen