## -*- coding: utf-8 -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## sprops: {lastid=70 serial=136 type=t}
Créer un nouveau type de tâche: e comme event.\n\nSe comporte comme une tâche de type p, sauf que la tâche est automatiquement marquée comme faite à la date indiquée.\nCe type sert à suivre des événements sur lesquels on n'a pas de pouvoir (par opposition à une tâche que l'on doit effectuer. {tid=1 cdate=27/01/2009 ddate=06/02/2009}
Utiliser -s ou -S sur la ligne de commande prend ~/.utools comme répertoire de base pour exprimer les fichiers. {tid=2 cdate=27/01/2009 ddate=08/02/2009}
L'état de la tâche représente son état au moment ou la requête est effectuée, pas son état possible dans le futur.\n\nPar exemple, une tâche planifiée peut être done, et dans le futur être planned, mais au moment de l'appel de la méthode, elle est done {tid=3 cdate=27/01/2009 ddate=06/02/2009}
title et body ne sont pas correctement splittés si on donne le body lors de 'tasks.py add' {tid=4 cdate=27/01/2009 ddate=10/02/2009}
'pnew path/comp.wosrc' ne semble pas pouvoir générer les fichiers dans path {tid=5 cdate=30/01/2009 ddate=13/09/2009}
pnew pourrait prendre une configuration par défaut dans un fichier du projet, par exemple $projdir/.utools/projectrc.\n\nCeci permettrait de configurer pour un projet des valeurs par défaut comme encoding, paramètres des templates, etc. {tid=6 cdate=30/01/2009 type=i}
Il semble que la recherche ne se fait pas si l'id est de la forme SID.TID\n\nPar exemple: 'tasks.py list 3.1' n'affichera pas la tâche d'id 3.1\nEn fait, c'est dû au bug résolu par #11. {tid=7 cdate=31/01/2009 ddate=10/02/2009}
Dans PlanStrategy, une tâche est _done si elle a été faite le jour même. De même, il faudrait qu'elle soit showable le jour ou elle a été effectuée, même si mindate est dans le futur. {tid=8 cdate=03/02/2009 ddate=06/02/2009}
get_urgency() doit afficher si une tâche est prêt d'être obsolete {tid=9 cdate=06/02/2009 ddate=08/02/2009}
Trier les tâches lors de leur affichage {tid=10 cdate=07/02/2009 ddate=08/02/2009}
'tl <recherche>' implique -a {tid=11 cdate=08/02/2009 ddate=10/02/2009}
(ABANDONNE) 'tasks.py -g' reste dessous en temps normal et se place au dessus s'il est activé {tid=12 cdate=08/02/2009 ddate=11/08/2009}
Implémenter l'auto-filtre pour les projets\n\n* autofiltre pour la recherche\n* autofiltre pour la création\n** Il faut que le store puisse savoir qu'il est dans un répertoire de projet, et\najoute automatiquement +project dans la liste des projets.\n** Ou alors, ce projet n'est pas écrit dans le store sur le disque. Il existe\ndynamiquement du fait que le store se trouve dans le répertoire du projet. A ce\nmoment-là, pas besoin d'autofiltre pour la création. {tid=13 cdate=10/02/2009}
edition d'une tâche {tid=14 cdate=10/02/2009 ddate=11/02/2009}
l'option -d permet de n'afficher que les tâches qui peuvent être effectuée {tid=15 cdate=11/02/2009 ddate=11/02/2009}
Implémenter HttpStore\n\nCet objet dérive de SimpleStore.\n- GET du contenu du store et écriture dans un fichier cache local\n- Opérations éventuelles sur le fichier\n- Si modifications sur le fichier local, envoyer les modifications sur le store\ndistant\n- Si le store distant n'est pas disponible, travailler sur le cache local\n\nLe store distant doit supporter les opérations suivantes:\n- GET http://..../nom_du_store        --> récupérer tout le store\n- GET http://..../nom_du_store?header --> récupérer l'en-tête du store\n- POST http://..../nom_du_store       --> modifier le store distant {tid=16 cdate=11/02/2009}
Projet par défaut pour un store\n\nSi un store se trouve dans un répertoire de projet, il "hérite" de ce projet\ndans sa liste projects. Cette information n'est pas inscrite, elle est\ndynamique.\n\nDe plus, quand on se trouve dans un répertoire de projet, ajouter en premier,\ns'il existe, le fichier Tasks.txt ou wiki/Tasks.txt (configurable un jour avec\n.utools/tasksrc) à la liste des stores. Ainsi, l'ajout se fera dans le store du\nprojet. Il est important de faire cela uniquement si le fichier existe, pour ne\npas créer intempestivement des fichiers dans un répertoire de projet.\n\npratiquement, faire un module utools.tasks.projects et une classe Project avec\nles méthodes:\n- getprojdir()\n- gettasksfile()\n- getpurgedfile()\n- ... {tid=17 cdate=12/02/2009}
'tasks.py -g' devient 'tasks.py gui' qui est équivalent à 'tasks.py list' et\nprend les mêmes options, mais affiche les tâches sous forme graphique plutôt\nque sur la console {tid=18 cdate=13/02/2009 ddate=13/02/2009}
Rendre le filtre obligatoire pour les opérations edit, do, remove {tid=19 cdate=13/02/2009 ddate=13/02/2009}
Faire un générateur de sources\n\nL'idée est de pouvoir faire un générateur non plus avec des templates, mais avec\nun programme, comme par exemple:\n\nc = JavaGenerator(srcdir=..., file=...)\n// srcdir permet de savoir automatiquement le nom et le chemin du fichier en\n// fonction de son package\nc.startclass("my.package.MyClass")\nc.member("x", INT[, PRIVATE])\nc.startmethod(Type(INT), "getX")\nc.returns(Member("x"))\nc.end()\nc.startmethod(Type(VOID), "setX", Arg("x", INT))\nc.assignment(Member("x"), Arg("x"))\nc.end()\nc.end()\n\nIl est possible aussi d'avoir des raccourcis:\n\nc.property("x", INT)\n// équivalent aux définitions ci-dessus\n\nLes classes sont indiquées pleinement qualifiées, et sont importées au besoin. {tid=20 cdate=19/02/2009}
lors de la purge, il faut écrire toutes les informations dérivées (projets, contextes, etc.) pour ne perdre aucune information. {tid=21 cdate=05/04/2009}
Si on trouve dans un répertoire de projet, mettre Tasks.txt de ce projet en premier dans la liste des stores\n\nLa création se fait alors par défaut dans ce projet.\nAttention. ne faire cela que si le fichier existe. {tid=22 cdate=05/04/2009}
te 0.17 trouve deux tâches à éditer, dont l'une est None3???\n\nDans edit_file(), on ne tenait pas compte du fait que setrow peut être vide. {tid=23 cdate=07/06/2009 ddate=07/06/2009}
Ajouter le suivi du temps pour les tâches\n\nLe format pourrait être des lignes de la forme:\n\n@25/06/2009: 9h00-10h00, 11h23-11h45, 13h30-17h00\n@24/06/2009: 9h00-12h00, 13h30-\n\nen l'occurence avec les lignes précédentes, la tâche est toujours en cours.\nLe temps total passé sur la tâche, ainsi que peut-être certaines statistiques, permet de savoir où passe son temps.\n\nCe type de suivi pourrait n'être valable que pour les tâches standard et planifiées.\nIl faudrait probablement associer aux contextes des horaires, pour éviter de compter le temps de façon intempestive: par exemple, si je commence une tâche ce matin, et que j'oublie d'arrêter le compteur jusqu'à demain, seul le temps ouvrable est compté. {tid=24 cdate=25/06/2009 ddate=23/07/2009}
Ajouter des horaires aux contextes\n\nIl faudrait pouvoir borner la zone d'influence d'un contexte. on pourrait avoir:\n\n@{8h30-12h30,13h30-17h00} pour indiquer que par défaut, les tâches sans contexte s'effectuent dans les heures ouvrables.\n@perso{12h30-13h30,17h00-8h30,w6-7} pour indiquer que le contexte perso est valable le week-end et les heures non ouvrables\n\non peut aussi imaginer inscrire les dates des vacances dans le contexte @perso\n\nensuite, quand on filtre sur les contextes, on n'affiche que les tâches qui peuvent être effectuées dans la plage horaire en cours. {tid=25 cdate=25/06/2009}
si l'id d'un élément contient un point '.', jQuery.tooltip ne fonctionne pas {tid=26 cdate=17/07/2009 ddate=21/07/2009}
passer à la ligne dans les tooltips {tid=27 cdate=17/07/2009 ddate=23/07/2009}
pour l'affichage, est-il possible d'afficher alternativement les lignes avec une fond blanc et un fond gris, pour une meilleur lecture? {tid=28 cdate=17/07/2009 ddate=23/07/2009}
les tags des tâches ne doivent pas apparaitre à l'impression {tid=29 cdate=20/07/2009 ddate=23/07/2009}
faire le cache de hts au démarrage. ne le mettre à jour que si le store sur disque est modifié {tid=30 cdate=21/07/2009 ddate=21/07/2009}
supprimer les dates périmées du champ dates quand elles sont passées, si date_ref=now {tid=31 cdate=28/07/2009 ddate=11/08/2009}
possibilité de mixer !wN et +N pour dates {tid=32 cdate=29/07/2009 ddate=11/08/2009}
revert() si erreur lors d'une opération dans taskshttpd (peut-être comme load(), mais uniquement s'il y a eu des modifications) {tid=33 cdate=08/08/2009 ddate=08/08/2009}
/action fonctionne quel que soit le bouton Search/Do/Nodo {tid=34 cdate=08/08/2009 ddate=08/08/2009}
ajouter une action /edit pour modifier une tâche {tid=35 cdate=08/08/2009 ddate=25/08/2009}
ajouter l'action 'plan [-d date]' pour tasks, qui permet de planifier une tâche pour la date du jour ou celle spécifiée. {tid=36 cdate=08/08/2009 ddate=08/08/2009}
une tâche non planifiée faite aujourd'hui doit être affichée aujourd'hui {tid=37 cdate=08/08/2009 ddate=08/08/2009}
ajouter le support ajax de drap'n'drop pour taskshttpd, pour plannifier une tâche à une certaine date {tid=38 cdate=08/08/2009}
ajouter /plan à taskshttpd {tid=39 cdate=12/08/2009 ddate=12/08/2009}
toutes les tâches faites sont affichage aujourd'hui dans cal_future() {tid=40 cdate=14/08/2009 ddate=17/08/2009}
il semble que taskshttpd écrit les fichiers de store même sans besoin {tid=41 cdate=20/08/2009 ddate=20/08/2009}
afficher un signe si une tache est démarrée {tid=42 cdate=20/08/2009 ddate=25/08/2009}
Dans la recherche, ajouter automatiquement (?i) si ce n'est pas encore fait {tid=43 cdate=20/08/2009 ddate=21/08/2009}
mettre à jour le texte explicatif de tasks.output() {tid=44 cdate=21/08/2009 ddate=25/08/2009}
donner la possibilité d'échapper les tag=value ou @context ou +project dans un titre\n\npour forcer l'échappement, utiliser ~:\n\n    tasks.py add ~date=15 ~@pas_un_context\n\nsinon, tag=value n'est reconnu que pour les propriétés valides {tid=45 cdate=21/08/2009 ddate=25/08/2009}
is_cal_future(0) doit tenir compte de get_hidden_done_delay() pour l'affichage\ndes tâches effectuées\n\nsynchroniser is_cal_future() avec le code de is_showable(): toutes les tâches\nfaites sont showable (wrt get_hidden_done_delay()) et doivent être affichées le\njour même.\n\n--> en fait, is_cal_future() et is_showable() sont différents: on filtre le\n    résultat de la recherche avec is_showable(), ensuite is_cal_future() doit\n    forcément traiter tous les cas pour que soient affichés toutes les tâches\n    sélectionnées. {tid=46 cdate=21/08/2009 ddate=28/08/2009}
remplacer les icons par le set 'clock' {tid=47 cdate=23/08/2009 ddate=23/08/2009}
si un problème, dans /action, erreur sur le type de self qui doit être page et ne l'est pas\n\n--> le problème était dû à #58 {tid=48 cdate=26/08/2009 ddate=28/08/2009}
si erreur dans index (par exemple dans get_args), catcher l'erreur {tid=49 cdate=26/08/2009 ddate=26/08/2009}
ne pas rafraichir si une case a été cochée {tid=50 cdate=26/08/2009 ddate=26/08/2009}
sanitiser les arguments de winput(): supprimer les valeurs \\r {tid=51 cdate=26/08/2009 ddate=26/08/2009}
ajouter un message pour les opérations (supprimer, ajouter, ...) {tid=52 cdate=26/08/2009 ddate=28/08/2009}
migrer vers une utilisation systématique de propriétés, pour éviter la dualité {get_x, x}, sauf peut-être si get_x() ou set_x() prennent des arguments supplémentaires {tid=53 cdate=26/08/2009}
méthode pour spécifier la version de python requise pour un module {tid=54 cdate=26/08/2009}
ajouter un argument until à Lines.readlines() pour lire jusqu'à ce qu'une fonction retourne True {tid=55 cdate=26/08/2009 ddate=26/08/2009}
enregistrer et donner accès à tous les précédentes requêtes\n\nun bouton à côté de query liste tous les précédentes termes {tid=56 cdate=27/08/2009 ddate=28/08/2009}
possibilité de choisir vers quel store l'écriture est faite {tid=57 cdate=27/08/2009 ddate=28/08/2009}
supprimer l'import circulaire sur itfctl {tid=58 cdate=28/08/2009 ddate=28/08/2009}
réorganiser les imports\n\nmettre les valeurs __all__ tout en haut du fichier, avant les imports {tid=59 cdate=02/09/2009 ddate=21/09/2009}
tasks edit force l'encoding du fichier en utf-8 {tid=60 cdate=02/09/2009}
double-cliquer sur une tâche permet de l'éditer + ajouter un bouton cancel {tid=61 cdate=06/09/2009 ddate=06/09/2009}
régler la taille du textarea pour l'édition en fonction du nombre de lignes {tid=62 cdate=06/09/2009 ddate=06/09/2009}
supprimer le strip automatique de nl pour appendtext {tid=63 cdate=13/09/2009 ddate=13/09/2009}
modifier les templates pour ajouter nl explicitement ou non {tid=64 cdate=13/09/2009 ddate=13/09/2009}
ajouter bp ou blueprint dans HtmlTempl {tid=65 cdate=13/09/2009 ddate=13/09/2009}
renommer use_utools en utools {tid=66 cdate=13/09/2009 ddate=13/09/2009}
supprimer le gap entre les messages {tid=67 cdate=03/10/2009}
modifier web.template pour supprimer les espaces de début de ligne\n\npar exemple:\n\n   cond:\n    <span/>\n\ndonne\n\n  <span/>\n {tid=68 cdate=10/11/2009}
ajouter dans web.pages le support des listes (vérifier que ce n'est pas None qui est ressorti) {tid=69 cdate=05/12/2009}
Date devient immutable par défaut (toutes les opérations retournent une copie), mais une méthode permet de le rendre mutable {tid=70 cdate=06/12/2009}
