lukaswelte / PICO

Personal Internet Context Organizer
Other
1 stars 0 forks source link

recommondationitem #34

Closed ThomasW9 closed 9 years ago

ThomasW9 commented 9 years ago

@lukaswelte :Hey ich hab da mal wieder ein paar Probleme: Mir fehlt es grad ein bisschen am Verständnis und an der Umsetzung. Ich schreib dir mal auf wie ich es bisher verstanden habe: Recommendationstore: hier bekommt man die Recommendations her und es muss eine Methode geben, die bei jedem öffnen der Entryseite eine neue Recommendation erstellt bzw updatet( die handleUpdate - Methode) Action: Hier weiß ich grad noch gar nicht wie die aussehen soll. Componenten: recommendationslist: Hier erzeuge ich(gleich wie bei Labels) eine Liste von Recommendations, also eine Liste mit den ganzen empfohlenen Entries) RecommendationItem: Hier ein einzelnes Fenster der Recommendation von einem Entry. Also so wie es aussehen soll. Hab ich das erstmal so richtig verstanden oder brauche ich noch mehr? Ich kann dir auch gerne mal meinen Branche pullen. Das mache ich doch einfach in dem ich commite aber nicht die Funktion beende oder? Wollte dich heute in der Übung fragen, aber da wart ihr ja leider nicht da :(

lukaswelte commented 9 years ago

@ThomasW9: Auf dem Server stellt du eine API Methode bereit die eine Entry ID nimmt und dir dazu eine Liste an Entries (die Recommended Entries zurück liefert).

Auf der Client Seite: Gibt es einen Store der sich die Recommended Entries für eine ID speichert. Falls es für einen Entry noch keine gespeicherten Recommendations im Store gibt kann der Store einfach die API aufrufen um sich diese zu holen. (in der UI wird in der Zeit einfach angezeigt das die Recommendations gerade "erzeugt" werden oder so ähnlich.

Ansonsten gibt es dann natürlich die Recommendation Komponente die mit einer Entry aufgerufen wird und sich dann eben aus dem RecommendationStore die Recommendations holt. Und eben entweder anzeigt das sie geladen werden, oder die Recommendations anzeigt (die Anzeige einer Recommendation würde ich über ein RecommendationItem machen, ja).

ThomasW9 commented 9 years ago

Ich bin in der API ( Entry controller) und will nun eine Liste von RecommenedEntries herhalten. Dazu will ich folgendes machen:

private static Result recommendation(Long id){ User user = (User) ctx().args.get("user"); //alle Labels vom geöffnenten Entry bekommen Set

So verstehe ich die Logik dahinter, aber ich weiß leider (und das tut mir auch wirklich leid) nicht wie ich das umsetzten soll. Ich versuch das alles seit Tagen hinzubekommen, durchforsche das Internet aber ich komme einfach nicht weiter. Ich weiß das ihr im Gegensatz zu mir noch andere Fächer habt, aber ohne Hilfe werde ich nach momentane Stand an dieser Recommendationfunktion scheitern. Ich fahre morgen wieder zurück nach MUC und setzte mich dann gleich am Montag wieder an die Arbeit, damit bis Mittwoch was steht.

GoPlunder commented 9 years ago

@ThomasW9 So wie ich das verstehe, willst du ja momentan die komplette Logik in der API machen. Aber wäre es nicht vielleicht sogar einfacher, wenn du dir die Label deines momentan geöffneten Entries direkt auf der Client Seite holst und die dann an die API gibst? Dann könntest du jeweils eines dieser Label an die API übergeben und da nachsehen, ob es im gesamten System noch andere Entries zu diesem Label gibt.

GoPlunder commented 9 years ago

@ThomasW9 Und zu der Sache mit den Namen: Wenn du eine Liste an Labels hast und aus dieser Liste die Liste der name haben willst, dann musst du de map Funktion anwenden um über alle Labels drüber zu gehen und die jeweils den Namen zu holen.

ThomasW9 commented 9 years ago

Ich habe das fehlende Zeugs noch hinzugefügt und meine Branch gepullt.. Leider weiß ich gerade nicht wie die EBEAN Verbindung aussehen soll: https://github.com/lukaswelte/PICO/blob/feature/recommendation/app/models/Entry.java Die public static List getAllRecommendedEntries..... Ich weiß leider nicht wie ich die Verbindung zwischen den Joins hinbekommen soll. Habe als Kommentar meine Idee hingeschrieben, leider kommt da immer ein Fehler raus. Ohne diese Funktion kann ich leider nicht nachschauen, ob die anderen Klassen richtig sind und meine Recommendation nicht testen. Vielleicht weiß jemand von euch wie Verbindung funktioniert, dann können wir am Sonntag schneller voran kommen.

lukaswelte commented 9 years ago

@ThomasW9 Das filtern funktioniert folgendermaßen: http://stackoverflow.com/a/13549012/1578508

Hier noch andere Beispiele

ThomasW9 commented 9 years ago

Könnte das so funktionieren? public static List getAllRecommendedEntries(List labels) { return Entry.find.fetch("entry").fetch("entry.id").fetch("label").fetch("label.id").where().eq("label.name",labels).findList();

lukaswelte commented 9 years ago

so wie ich das beim überfliegen verstanden hatte musst du nur fetch("labels") machen.. aber ausprobieren hilft ;) @ThomasW9