mise a jour
This commit is contained in:
parent
e18e4c8c7f
commit
4d51ed48da
4 changed files with 113 additions and 81 deletions
67
IDEAS.txt
Normal file
67
IDEAS.txt
Normal file
|
@ -0,0 +1,67 @@
|
|||
Il est ironique d'utiliser un fichier de TODO list pour
|
||||
un projet dont le but est justement d'améliorer cet état de fait.
|
||||
|
||||
1 - réflexion
|
||||
a. structure de données
|
||||
b. visualisation
|
||||
c. ordre des tâches
|
||||
d. contextes
|
||||
e. projets (jusqu'où aller ? quasi-Gantt)
|
||||
|
||||
|
||||
idées en vrac. L'idée GTD n'est pas mauvaise:
|
||||
- une tâche arrive :
|
||||
ajout rapide dans (@Inbox)
|
||||
ou ajout avec questionnement :
|
||||
* moins de deux minutes ?
|
||||
oui -> tout de suite (compteur)
|
||||
non
|
||||
* est-ce une action ? non -> @notes
|
||||
oui -> pour moi ? -> non -> qui contacter ?
|
||||
(nouveau détail de tache)
|
||||
oui -> détails (contextes, projets, notes, contacts, dépendances...)
|
||||
|
||||
- interface :
|
||||
prochaine tache
|
||||
liste des taches (ordonée en prenant en compte
|
||||
les priorités et les dépendances)
|
||||
début de l'activation de la tâche
|
||||
fin de l'activation de la tâche pour calculer la durée
|
||||
notifications :
|
||||
date maximale pour faire cette tâche
|
||||
durée maximale que l'on s'autorise à travailler sur une tâche
|
||||
durée minimale que l'on s'autorise à travailler sur cette tâche
|
||||
compteurs de 2 minutes
|
||||
compteurs pour le système (10+2)x5
|
||||
* Résumé des actions faites:
|
||||
Affichage des actions faites:
|
||||
avec cumul ou avec prorata des tâches parallèles
|
||||
(penser à une hierarchiesation des contextes et projets)
|
||||
avec affichage des durées intelligentes pour pouvoir écrire 1d 4h
|
||||
ou 1w 2d 3h par exemple.
|
||||
(journées de 8h par exemples,
|
||||
5 jours par semaines, 160h par mois)
|
||||
|
||||
* Résumé des actions à faire
|
||||
- affichage en arbre des dépendances entre tâches (à la Gantt)
|
||||
- affichage regroupé par projet
|
||||
- affichage regroupé par contexte
|
||||
|
||||
exemple: avec graphviz
|
||||
|
||||
|
||||
État de la tâche activée ou non.
|
||||
|
||||
|
||||
- ordre des tâches :
|
||||
<date> et <durée> :
|
||||
1 - tâche de moins de 2 minutes
|
||||
2 - tâches avec date dépassées
|
||||
3 - tâches pour aujourd'hui
|
||||
4 - tâches sans date
|
||||
5 - tâches sans date de début
|
||||
6 - tâches avec date de début dans le futur
|
||||
7 - tâches en attente d'une intervention extérieure
|
||||
8 - tâches en attente de la fin d'une autre tâche pas encore terminée
|
||||
|
||||
Au sein d'un même groupe : c'est la priorité qui prime
|
71
TODO.txt
71
TODO.txt
|
@ -1,67 +1,4 @@
|
|||
Il est ironique d'utiliser un fichier de TODO list pour
|
||||
un projet dont le but est justement d'améliorer cet état de fait.
|
||||
|
||||
1 - réflexion
|
||||
a. structure de données
|
||||
b. visualisation
|
||||
c. ordre des tâches
|
||||
d. contextes
|
||||
e. projets (jusqu'où aller ? quasi-Gantt)
|
||||
|
||||
|
||||
idées en vrac. L'idée GTD n'est pas mauvaise:
|
||||
- une tâche arrive :
|
||||
ajout rapide dans (@Inbox)
|
||||
ou ajout avec questionnement :
|
||||
* moins de deux minutes ?
|
||||
oui -> tout de suite (compteur)
|
||||
non
|
||||
* est-ce une action ? non -> @notes
|
||||
oui -> pour moi ? -> non -> qui contacter ?
|
||||
(nouveau détail de tache)
|
||||
oui -> détails (contextes, projets, notes, contacts, dépendances...)
|
||||
|
||||
- interface :
|
||||
prochaine tache
|
||||
liste des taches (ordonée en prenant en compte
|
||||
les priorités et les dépendances)
|
||||
début de l'activation de la tâche
|
||||
fin de l'activation de la tâche pour calculer la durée
|
||||
notifications :
|
||||
date maximale pour faire cette tâche
|
||||
durée maximale que l'on s'autorise à travailler sur une tâche
|
||||
durée minimale que l'on s'autorise à travailler sur cette tâche
|
||||
compteurs de 2 minutes
|
||||
compteurs pour le système (10+2)x5
|
||||
* Résumé des actions faites:
|
||||
Affichage des actions faites:
|
||||
avec cumul ou avec prorata des tâches parallèles
|
||||
(penser à une hierarchiesation des contextes et projets)
|
||||
avec affichage des durées intelligentes pour pouvoir écrire 1d 4h
|
||||
ou 1w 2d 3h par exemple.
|
||||
(journées de 8h par exemples,
|
||||
5 jours par semaines, 160h par mois)
|
||||
|
||||
* Résumé des actions à faire
|
||||
- affichage en arbre des dépendances entre tâches (à la Gantt)
|
||||
- affichage regroupé par projet
|
||||
- affichage regroupé par contexte
|
||||
|
||||
exemple: avec graphviz
|
||||
|
||||
|
||||
État de la tâche activée ou non.
|
||||
|
||||
|
||||
- ordre des tâches :
|
||||
<date> et <durée> :
|
||||
1 - tâche de moins de 2 minutes
|
||||
2 - tâches avec date dépassées
|
||||
3 - tâches pour aujourd'hui
|
||||
4 - tâches sans date
|
||||
5 - tâches sans date de début
|
||||
6 - tâches avec date de début dans le futur
|
||||
7 - tâches en attente d'une intervention extérieure
|
||||
8 - tâches en attente de la fin d'une autre tâche pas encore terminée
|
||||
|
||||
Au sein d'un même groupe : c'est la priorité qui prime
|
||||
[X] ajouter la méthode dateRegExp à la classe TaskDateTime qui renvoie une
|
||||
expression régulière qui matche toutes les dates dans la chaînes de
|
||||
caractère. De manière à pouvoir les supprimer et retrouver le message
|
||||
de la task.
|
||||
|
|
53
task.rb
53
task.rb
|
@ -5,7 +5,7 @@ require 'contact.rb'
|
|||
|
||||
class Task
|
||||
def initialize(description, note, contacts,
|
||||
contexts, projects, dates)
|
||||
contexts, projects, dates, tags)
|
||||
# the title of the task
|
||||
@description=description
|
||||
# list of additionnal informations about the note
|
||||
|
@ -20,29 +20,54 @@ class Task
|
|||
@projects=projects
|
||||
# multiple date associated to a task
|
||||
@dates=dates
|
||||
# tags
|
||||
@tags=tags
|
||||
end
|
||||
def initialize(description)
|
||||
@notes=[]
|
||||
@contacts=[]
|
||||
@contexts=[]
|
||||
@projects=[]
|
||||
@tags=[]
|
||||
@priority=0
|
||||
@dates=TaskTime.new()
|
||||
end
|
||||
def to_s
|
||||
return @description +
|
||||
@contexts.map { |x| x.to_s }.join " " +
|
||||
@projects.map { |x| x.to_s }.join " " +
|
||||
@contacts.map { |x| x.to_s }.join " " +
|
||||
@dates.to_s
|
||||
@contexts.map { |x| x.to_s }.join(" ") +
|
||||
@projects.map { |x| '['+x.to_s+']' }.join(" ") +
|
||||
@contacts.map { |x| x.to_s }.join(" ") +
|
||||
@dates.to_s +
|
||||
'{' + @tags.map{ |x| x.to_s }.join(", ") + '}'
|
||||
end
|
||||
def task_from_string( raw_input )
|
||||
# petite difficulté pour retrouver le message dans toute cette Meumeu...
|
||||
@description = raw_input
|
||||
@description raw_input.gsub(/ (@|(p|project|c|contact|n|note):)(\w+|"[^"]*")/,"")
|
||||
@contexts=raw.scan(/ @(\w+|"[^"]*")/).map{ |x| x[0] }
|
||||
@projects=raw.scan(/ (p|project):(\w+|"[^"]*")/).map{ |x| x[1] }
|
||||
@contacts=raw.scan(/ (c|contact):(\w+|"[^"]*")/).map{ |x| x[1] }
|
||||
@notes =raw.scan(/ (n|note):(\w+|"[^"]*")/).map{ |x| x[1] }
|
||||
@dates =TaskTime.date_from_string(raw_input)
|
||||
|
||||
# Regular Expressions for that class
|
||||
@@StdTokenRegExp=/(\w+|"[^"]*")/
|
||||
# Context
|
||||
@@ContextsRegExp=Regexp.new(%{ @#{StdTokenRegExp.inspect}})
|
||||
# Project
|
||||
@@ProjectsRegExp=Regexp.new(%{\[#{StdTokenRegExp.inspect}\]})
|
||||
# Contact
|
||||
@@ContactsRegExp=Regexp.new(%{ (c|contact):#{StdTokenRegExp.inspect}})
|
||||
# Notes
|
||||
@@NotesRegExp=Regexp.new(%{\(#{StdTokenRegExp.inspect}\)})
|
||||
|
||||
def from_s( raw_input )
|
||||
|
||||
@contexts=raw.scan(ContextsRegExp).map{ |x| x[0] }
|
||||
@projects=raw.scan(ProjectsRegExp).map{ |x| x[0] }
|
||||
@contacts=raw.scan(ContactsRegExp).map{ |x| x[1] }
|
||||
@notes =raw.scan( NotesRegExp).map{ |x| x[0] }
|
||||
# @contexts=raw.scan(/ @(\w+|"[^"]*")/).map{ |x| x[0] }
|
||||
# @projects=raw.scan(/\[(\w+|"[^"]*")\]/).map{ |x| x[0] }
|
||||
# @contacts=raw.scan(/ (c|contact):(\w+|"[^"]*")/).map{ |x| x[1] }
|
||||
# @notes=raw.scan(/\[(\w+|"[^"]*")\]/).map{ |x| x[1] }
|
||||
|
||||
# somehow special for the priority
|
||||
@priority= raw.scan( /!/ ).length - raw.scan( /\?/ ).length
|
||||
|
||||
@description=raw_input.gsub(
|
||||
Regexp.union(@@ContextsRegExp, @@ProjectsRegExp, @@ContactsRegExp, @@NotesRegExp, /!/, /\?/, @date.dateRegexp),"")
|
||||
@dates =TaskTime.from_s(raw_input)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -13,4 +13,7 @@ class TaskTime
|
|||
def initialize()
|
||||
@creation_date=Time.now
|
||||
end
|
||||
def taskTimeRegExp
|
||||
return Regexp.new(" #[^ ]*")
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue