Modul: todoist - Task-/Listenverwaltung in FHEM (Bsp. Einkaufsliste) + Frontend

Begonnen von marvin78, 27 Oktober 2017, 16:26:48

Vorheriges Thema - Nächstes Thema

marvin78

Im widget der neuen Version (0.9.5) können items zwischen 2 Listen verschoben werden. Dabei wird das item aber in der aktuellen Variante stets ans Ende der neuen Liste verschoben, nicht an die Stelle, an der man es fallen lässt. Ich muss mal sehen, ob ich das noch "verbessere".

marvin78

In Version 0.9.6 hat das widget in leeren Listen eine zusätzliche Zeile, die es ermöglichst, auch Elemente in leere Listen zu schieben. Keine große Änderung, sie verbessert nur das Handling mehrerer Listen, die per Drag&Drop Daten untereinander austauschen.

marvin78

In Version 0.9.8 kann nun die parent_id direkt bei addTask gesetzt werden und nicht mehr nur bei update.

Die API gibt das zwar immer noch nicht her, das Modul feuert jetzt aber direkt nach dem addTask ein updateTask mit parent_id hinterher.

marvin78

Neue version 0.9.10: Wenn ein Task mit parent_id und indent abgehakt wird, wird dieser nicht aus der Liste entfernt (auch im original Todoist-Frontend nicht). Um das (in möglichen Frontend und zu Informationszwecken) abbilden zu können, wird nun auch der checked (oder isDeleted) Status solcher Tasks mit dem Wert 1 als Reading aufgenommen. Das kann per Attribut verhindert werden. Ggf. wird diese Funktion demnächst auch im weblink Frontend verwendet.

marvin78

In Version 0.9.11 aktualisiert sich das Widget bei einem getTasks (auch das interne getTasks im Interval) selbständig. Das heißt, Änderungen, die außerhalb von FHEM gemacht werden, erscheinen auch ohne Seitenaktualisierung im weblink Widget.

Ich bin mir im Übrigen bewusst darüber, dass ich mit mir selbst rede ;)

marvin78

Das Widget in Version 0.9.14 kommt mit 2 neuen Icons in der Titelzeile jeder Liste. Es gibt einen Mülleimer für "clearList" und ein "refresh"-Icon für "getTasks".

marvin78

In Version 1.0.6 nutzt das Weblink Widget nun das Attribut language des global Devices um die Meldungen und Titel in der eingestellten Sprache darzustellen. Das Frontend kann also vollständig in Deutsch oder in Englisch verwendet werden.

Außerdem gibt es eine detailFn. Das widget wird über der Detailansicht eines todoist-Devices angezeigt (mit allen Funktionen des weblink-Widgets). Diese Funktion ist durch Attribut abschaltbar.

Die Doku für das Widget wurde verbessert.

Dass es wenige Meldungen in diesem Thread gibt, kann heißen, dass nur wenige Leute das Modul nutzen (wahrscheinlich) oder dass es perfekt ist (;)). Ich habe mich entschlossen, die Versionsnummer 1.0.x zu verwenden, da das Modul nun schon mehr enthält, als ich mir für eine "fertige" erste Version vorgestellt habe und es einige Testverfahren durchlaufen hat. Es können noch Funktionen integriert werden (Beispielsweise die Unterstützung von indents, parent_ids und ggf. anderen Informationen im Widget). Allerdings hängt es nun von den Nutzern ab, ob es eine Weiterentwicklung gibt. Gemeldete Bugs werden in jedem Fall entfernt, Wünsche, wenn sinnvoll, auch umgesetzt.

crispyduck

Hallo,

will dich nicht bei deinen Selbstgesprächen stören ;D, aber DANKE für das tolle Modul!!!

Hab das Modul heute erst installiert, und bin begeistert.

Was mir mal so aufgefallen ist bzw. bei mir nicht richtig funktioniert:
Umlauten werden nicht korrekt gespeichert, und ein Task der Umlaute hat und verschoben wird passt dann auch nicht mehr. (UTF8?)

Allgemein wird bei mir die Anzeige nicht upgedated, muss immer einen Reload im Browser machen. Fehlt mir da eventuell noch ein attr. in FHEMWEB?

Ebenso geht Drag and Drop am Tablet nicht.

Indents im Widget und diese auch als checked anzuzeigen wäre noch toll!

Wäre es über die Api prinzipiell auch möglich Projekte, bzw. Subprojekte anzulegen?

Oder wie machst du das z.B. mit den Listen für Einkauf.
Lebensmittel, Drogerie,... hat man ja immer, aber wie macht man das am besten mit Listen die man nur einmal oder ab und zu hat wie z.B. Obi, Ikea,...?

Danke,
crispyduck

marvin78

Du müsstest mir etwas mehr zu deiner Umgebung sagen. Was für einen Browser benutzt du? IE habe ich ehrlicherweise nicht sehr lange getestet und Safari könnte Probleme machen. In Chrome und Firefox sollte alles funktionieren. Mobil sollte drag&drop funktionieren, wenn der style f18 verwendet wird, andernfalls ggf. nicht, da entsprechende JS Komponenten nicht vorhanden sind.

Um Fehler einzugrenzen:  Hast du mal den Cache im Browser gelöscht? Gibt es Fehler in der Browserkonsole (JS Konsole)? Wenn ja, diese bitte in Code-Tags hier posten.

Umlautprobleme hatte ich in einer relativ alten Version einmal. Ich nehme an, dass du auf einem alten Stand bist. Poste bitte mal das Ergebnis von

get DEVICE version

Aktuell ist die Version 1.0.9.

Falls kleiner, mache bitte ein update per

update all https://raw.githubusercontent.com/marvin78/FHEM-todoist/master/controls_todoist.txt

Unlautprobleme können auch an deiner Einstellung im Browser legen. UTF 8 Probleme sollte es im Modul keine geben.

Indent im Widget ist im aktuellen Tabellendesign (übernommen von FHEMWEB) ein wenig problematisch. Ich müsste auf unsortierte Liste umstellen. Das habe ich auch schon getestet und ich war wenig erfolgreich. Die Haptik geht dabei komplett verloren. Wenn ich mal viel Zeit habe, gehe ich das Thema ggf. nochmal an.

Eigentlich bildet ein todoist Dervice genau eine Liste ab. Eine Projektverwaltung wäre übergeordnet. Die API gibt das her, ob es Sinn macht, bezweifel ich aktuell noch. Bei mir sind mögliche Listen einfach immer angelegt aber ggf. leer. Wenn ich wirklich mal eine neue brauche, lege ich diese in der Todoist Web- oder Mobilapp an. Die Oberfläche ist gut und muss aus meiner Sicht nicht zwingend ersetzt werden. Ggf. könnte man überlegen, ob man das define entsprechend erweitert. Das wäre jedoch ein relativ großer Umbau.


crispyduck

Puh das ging schnell! Falls du meinen Post schon gelesen hattest bevor ich ihn editieren konnte, verschieben funktioniert jetzt nachdem ich die devices mal gelöscht und neu angelegt hatte. Davor hatte ich den Weblink mit Einkauf.*, da kam dann immer please define Einkauf first.

Modul sollte aktuell sein, habe es ja gerade erst per update installiert und auch FHEM komplett upgedated.

Hatte es mit IE und Firefox probiert. Die paar komischen Verhalten von vorhin muss ich mir nochmals in Ruhe ansehen, aber FHEMWEB wird bei mir auf jeden Fall nicht refreshed. Weder mobil mit Chrome, noch am PC mit Firefox. Muss erst F5 drücken damit ich z.B. einen neu erstellten Task sehe.

Okay, style nutze ich momentan den darktouch, mit bisschen angepasstem CSS. Das mit JS muss ich mir dann auch erst ansehen. Hab gestern erst ein Tablet an die Wand gehängt und bis jetzt FHEM nur über PC oder smartphone bedient.

Umlaute dürfte wirklich am IE gelegen haben.

Indent ist wohl für eine Einkaufsliste ohnehin nicht geeignet. War gestern mal mein erster Ansatz nachdem ich mich bei todoist eigentlich erst wegen deinem Modul regstriert habe um unsere Einkäufe zu verwalten. Also ein Projekt Einkauf und darunter dann DM, OBI,... und die eigentlichen artikel dann als mit indent darunter. Als ich das heute bei Hofer (Aldi) mal testen wollte und mir dachte man kann die Liste ja gleich so anordnen wie die Artikel auch ungefähr in den Gängen liegen, hab ich bemerkt das dass verschieben in Listen mit Indent in der App eher keine gute Idee ist und man sich damit eher seine ganze Anordnung versaut.  :-\

Aber für andere Tasks wäre es sicher praktisch darunter einr Checkliste zu haben, welche man abhakt ohne das diese ganz verschwinden, sondern nur checked sind.

Ja, für den Einkauf kann ich eigentlich auch alle möglichen Listen anlegen und einfach leer lassen, oder dann vielleicht sogar ausblenden. War nur mal so eine Idee. Meine Frau arbeitet momentan noch mit Zetteln am Kühlschrank, und da werden hald immer wieder Listen hinzugefügt und auch wieder weg geschmissen.
Man müsste sie ja nicht in FHEM anlegen, aber gäbe es eventuell die Möglichkeit diese automatisch zu importieren/anzulegen?
Man kann ja in todoist auch Projekte unter Projekten anlegen, könnte man die z.B. über die Api abfragen und anlegen?
Also man legt z.B. ein Projekt FHEMlist in todoist an, unf in FHEM dann ein Device auf dieses Projekt, und alle Projekte darunter werden automatisch unter dem/durch das Device angelegt.

Ist jetzt nur mal eine Idee, ob das überhaupt geht weiß ich nicht, habe mir die API auch noch gar nicht angesehen, und wenn es ginge, wäre das natürlich sehr viel Arbeit das umzusetzen.

Danke auf jeden Fall schon mal, ich werde mich morgen näher mit deinem Modul und eventuellen Browser Problemen auseinandersetzen
Crispyduck

marvin78

Für die Probleme mit dem update der Tabellen müsstest du mir einen Auszug aus der Javascriptkonsole schicken. In Chrome geht das sehr einfach. Du rufst die Konsole über "Menü-> weitere Tools > Eintwicklertools" auf.  Dann stellst du unten auf Konsole und testest die Dinge, die nicht funktionieren. Wenn in der Konsole rote Zeilen auftauchen, sind diese auf jeden Fall beachtenswert aber auch andere Zeilen, die während des Testvorgangs in den todoist Listen auftauchen, sind interessant.

Du hast mir noch immer nicht geschrieben, welche Version du hast ;) todoist kommt und aktualisiert sich NICHT per fhem-update.

Das ist natürlich alles umsetzbar aber das wäre dann in Teilen eine ganz andere Art Modul. Ich müsste das Modul zweistufig aufbauen. Das ist mir, wenn ich ehrlich bin, aktuell zu viel Arbeit. Wie schon gesagt, wenn ich mal viel Zeit habe, sehe ich mir das aber an. Die API gibt das alles her. Automatisch geht das anlegen aber nur mit einem webhook und dann würde jeder User einen Developer Account benötigen. Das möchte ich ehrlich gesagt vermeiden.

Wegen der touch Inhalte überlege ich mal, ob ich diese mit ausliefere, wenn diese nicht schon durch f18 geladen sind. Da muss ich mal schauen, ob die FHEM API das per loadScript schon her gibt oder ob ich das selbst bauen muss.


crispyduck

Hallo,

Ich hoffe ich komme am Abend dazu mir das nochmal in Ruhe mit Chrome anzusehen und eventuell einen Auszug der Javascriptkonsole zu posten. Bin mit Javascript nicht, oder noch nicht wirklich vertraut, verwende FHEM primär zur Automatisierung, da war mir das Frontend bis jetzt nicht so wichtig und die paar sachen die ich zur Steuerung fürs smartphone optimiert habe sind rein html+perl.

Sorry, version ist die 1.0.9, habe deine Quelle für die updates hinzugefügt.  ;)

Okay, hab mir gestern Abend auch noch bisschen die Api angesehen, machbar ist darüber wohl alles, aber wie du schon sagst, wäre das wohl ein komplett Umbau und eher ein neues zweistufiges Modul.
Mich würde es ja reizen, mich selbst an soetwas zu versuchen, aber da mangelt es wohl dann doch bisschen an Programmierkenntnissen und das würde wohl nie fertig werden. Hab zwar letztes Jahr mal ein mini Modul gemacht, aber das hat schon eine Ewigkeit gedauert.

Werde es jetzt dann mal einfach versuchen so umzusetzen wie du es wohl auch machst, einfach alle möglichen Listen anlegen, und einfach leer lassen.
Könnte sie dann im Frontend auch nur anzeigen wenn sie einen Inhalt haben.

Was braucht es denn alles für die touch Inhalte?

Danke
Crispyduck

marvin78

Ggf. kann man aus Liste, die ein indent=1 haben und keine parent_id demnächst die "Tochterlisten" automatisch erstellen lassen. Das ist nicht ganz so einfach, da man nicht nach parent_id filtern kann. Die parent_id wird von der API aktuell noch recht stiefmütterlich behandelt. Da muss man aktuell noch viel tricksen. Besserung wurde versprochen. Bis dahin würde ich wohl warten, bis ich an das Thema gehe.

Bezüglich nicht anzeigen, wenn sie keinen Inhalt haben: Das ist wohl möglich. Ich könnte das per Attribut konfigurierbar machen. Dass das auch ohne Aktualisierung der Seite geht, kann ich noch nicht versprechen.

Für touch benötigt man das hier: http://touchpunch.furf.com/

Das ist in f18 schon drin. Man kann es jedoch über das FHEMWEB Attribut JavaScripts auch selbst einbinden.

marvin78

Die neue Version 1.0.10 kennt das Attribut hideListIfEmpty. Setzt man das auf 1, wird diese Liste im Widget ausgeblendet, wenn sie leer ist. Das passiert allerdings erst bei einem Neuladen der Seite. Das macht aus meiner Sicht auch Sinn. In der Detailansicht wird die Liste nicht ausgeblendet.

Edit: Eine weitere Alternative wäre natürlich, das Device auf inactive zu setzen. Dann wird es aber nicht automatisch wieder aktiv, wenn ein neuer Eintrag von außen hinzu kommt.

crispyduck

Wow, das ging schnell! Super danke!

Teste es spätestens morgen Vormittag, und melde mich wieder.

Lg
Crispyduck