
    Mg                     R    S SK Jr  S SKJr  S SKJr  \" S5       " S S5      5       rg)    )Fore)Memory)plugintasksc                   x    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rSrg)TaskManager   z(
Jarvis plugin For Managing User Tasks

c                     U R                  5         UR                  S5         U R                  U5      nUc  g U R                  X15        M(  )NzWelcome To Your Tasks Manager
)
load_taskssay
get_optionprocces_chosen_option)selfjarvissoptions       ;/Users/admin/workspace/ai/Jarvis/jarviscli/plugins/tasks.py__call__TaskManager.__call__   sE    

45__V,F~&&v6	     c           	      .   UR                  S5        [        U R                  5      nUS:X  a  UR                  S5        g UR                  SR                  X"S:X  a  SOS5      5        [	        U5       H[  n U R                  U   S   nUR                  S	R                  US-   U R                  U   S
   U5      U R                  U5      5        M]     g ! [         a8    UR                  SR                  US-   U R                  U   S
   5      5         M  f = f)N r   z!Your Task List Is Empty, Good JobzYou Have {} {}   TaskTaskspriority{}. {} PR: {}name{}. {})r   lenr   formatrangeget_color_with_priorityBaseException)r   r   
task_countir   s        r   list_allTaskManager.list_all   s    

2_
?JJ:;

#**:qvV]^_z"AJ::a=4

?11E4::a=0(<=A=Y=YZb=ce #
 ! J

8??1q5$**Q-2GHIJs   6AC>DDc                 z    US:X  a  [         R                  $ US:X  a  [         R                  $ [         R                  $ )NHighMedium)r   REDYELLOWGREEN)r   r   s     r   r#   #TaskManager.get_color_with_priority&   s/    v88O!;;::r   c                     UR                  S[        R                  5      nU R                  R	                  SU05        U R                  U R                  5        UR                  S5        U R                  U5        g )NzEnter New Task: r   zTask Was Successfully Added)inputr   r.   r   appendupdate_tasksr   r'   )r   r   new_tasks      r   add_taskTaskManager.add_task.   sY    << 2DJJ?

68,-$**%

01fr   c                     [        U R                  5      nU R                  U5        UR                  SR	                  US-   U5      5        U R                  X$US-   U5      $ )Nr   r   )r    r   r'   r   r!   
get_choice)r   	exit_text
input_textr   tasks_counts        r   choose_taskTaskManager.choose_task5   sM    $**of

8??;?I>?zaPPr   c                 r  ^^ U R                  SSU5      nUS:X  a  g U R                  US-
     S   mUR                  SR                  T5      5        UR	                  S[
        R                  5      m[        UU4S jU R                  5      nU R                  [        U5      5        UR                  S	5        g )
NzEXIT Editingz+Exit Editing or Choose Which Task To Edit: r   r   zChosen Task: {}zEnter Updated Task: c                 "   > U S   T:X  a  ST0$ U $ Nr    )taskchosen_task_nameupdated_tasks    r   <lambda>)TaskManager.update_task.<locals>.<lambda>B   s    tF|O_?_fl%;%iei%ir   zTask Was Successfully Updated)
r<   r   r   r!   r1   r   r.   mapr3   list)r   r   
task_index	new_tasksrD   rE   s       @@r   update_taskTaskManager.update_task;   s    %%n6cekl
::j1n5f=

$++,<=>||$:DJJGikokukuv	$y/*

23r   c                 X   UR                  S5        UR                  S[        R                  5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        U R                  SSS	U5      $ )
Nr   zChoose Priority For Taskz1: Highz	2: Mediumz3: Lowz4: Exit Priority Mode Enter your choice:       r   r   BLUEr8   r   r   s     r   get_priorityTaskManager.get_priorityF   s}    

2

-tyy9

2

9

;

8

+,

24aFCCr   c                   ^^^ SSSS.mU R                  SSU5      nUS:X  a  g U R                  U5      mTS:X  a  g U R                  US-
     S	   m[        UUU4S
 jU R                  5      nU R	                  [        U5      5        g )Nr*   r+   Low)r      rP   zEXIT Add Priority Modez3Exit Priority Mode or Choose Taks To Add Priority: r?   r   r   c                 *   > U S   T:X  a  TTT   S.$ U $ )Nr   )r   r   rB   )toptionsr   	task_names    r   rF   2TaskManager.add_priority_to_task.<locals>.<lambda>[   s2    EFvYR[E[ ,5/6x/@#B #cab#cr   )r<   rU   r   rH   r3   rI   )r   r   rJ   rK   r\   r   r]   s       @@@r   add_priority_to_task TaskManager.add_priority_to_taskQ   s    e4%%&>&[]ce
$$V,r>JJzA~.v6	 cdhdndnp	$y/*r   c                    ^ U R                  SSU5      nUS:X  a  g U R                  US-
     S   m[        U4S jU R                  5      nU R                  [	        U5      5        UR                  S5        g )NzEXIT Delete Modez*Exit Delte Mode or Choose Taks To Delete: r?   r   r   c                    > U S   T:g  $ rA   rB   )xrD   s    r   rF   )TaskManager.delete_task.<locals>.<lambda>d   s    QvY2B%Br   zTask Was Successfully Deleted)r<   r   filterr3   rI   r   )r   r   rJ   rK   rD   s       @r   delete_taskTaskManager.delete_task_   sm    %%&8:fhno
::j1n5f=BDJJO	$y/*

23r   c                 6   UR                  S5        UR                  S[        R                  5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        U R                  SSSU5      $ )	Nr   zChoose Sorting Strategyz
1: By Namez2: By Priorityz3: Exit Sorting Mode rO   rY   rP   rR   rT   s     r   get_sorting_startegy TaskManager.get_sorting_startegyh   sr    

2

,dii8

2

< 

#$

*+

24aFCCr   c           	         SSS.n[        U R                  5      nUSU-  s=:X  a  S:X  a  O  OUR                  S5        g U R                  U5      nUS:X  a  g S nS	 nU R                  R	                  5       nX$   S:X  a  UR                  US
9  OUR                  USS9  UR                  S5        [        [        U5      5       HG  n Xx   S   n	U R                  U	5      n
UR                  SR                  US-   Xx   S   U	5      U
5        MI     g ! [         a-    UR                  SR                  US-   Xx   S   5      5         M  f = f)Nr   pr)r   rY   r   r   z!There is Not Enough Tasks To sortr?   c                 L     U S   nUS:X  a  gUS:X  a  gg! [          a     gf = f)Nr   r*   rP   r+   rY   r   r   )r$   )rC   r   s     r   sort_by_priority4TaskManager.display_sorted.<locals>.sort_by_priority|   s<    	
+v%)  s     
##c                     U S   $ rA   rB   )rC   s    r   sort_by_name0TaskManager.display_sorted.<locals>.sort_by_name   s    <r   )keyT)rs   reverser   r   r   r   )
r    r   r   ri   copysortr"   r#   r!   r$   )r   r   r\   r;   strategyrn   rq   sorted_tasksr&   r   colors              r   display_sortedTaskManager.display_sortedr   s@   &$**o!k/.Q.JJ:;,,V4r>
		  zz(&,/"2DA

2s<()AL'?:644X>

?11!a%9PRZ[]bc	 *
 ! L

8??1q5,/&2IJKLs   	AD3EEc                 $   US:X  a  U R                  U5        g US:X  a  U R                  U5        g US:X  a  U R                  U5        g US:X  a  U R                  U5        g US:X  a  U R	                  U5        g US:X  a  U R                  U5        g g )Nann_newedit_curr'   add_priorityrf   rv   )r5   rL   r'   r_   rf   rz   )r   r   r   s      r   r   !TaskManager.procces_chosen_option   s    YMM&!z!V$z!MM&!~%%%f-}$V$v'r   c                    SSSSSSS.nUR                  S5        UR                  S	[        R                  5        UR                  S5        UR                  S
5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        U R                  SSSU5      nUS:X  a  g X#   $ )Nr'   r}   r~   rf   r   rv   )r   rY   rP   rQ         r   zHow Can I Help You?z1: List All My Tasksz2: Add New Taskz3: Edit Existing Taskz4: Delete  Taskz5: Add Priority To Taskz6: Sortz7: Exit rO   r   r	   r?   rR   )r   r   r\   choices       r   r   TaskManager.get_option   s     Y:-Tbgmn

2

($))4

2

)*

$%

*+

$%

,-

9

:

2!61fER<?"r   c                 :     [        UR                  U[        R                  5      5      nXS:X  a  gXR::  a  U$ UR	                  S[        R
                  5         UR	                  S5        Mk  ! [         a#    UR	                  S[        R
                  5         N?f = f)Nr?   z8Invalid input! Enter a number from the choices provided.r   )intr1   r   r.   r   r-   
ValueError)r   r:   max_valid_value
terminatorr   inserted_values         r   r8   TaskManager.get_choice   s    ]!$V\\*djj%I!J!/#6))JJRTXT_T_a
 JJrN   ]

NPTP[P[]]s   .A- A-  A- -*BBc                 z    [        S5      nUR                  S5      c  / U l        g UR                  S5      U l        g Nz
tasks.json
tasks_list)r   get_datar   )r   ms     r   r   TaskManager.load_tasks   s2    < ::l#+DJL1DJr   c                     [        S5      nUR                  S5      c  UR                  SU5        OUR                  SU5        UR	                  5         Xl        g r   )r   r   add_dataupdate_datasaver   )r   rK   r   s      r   r3   TaskManager.update_tasks   sE    < ::l#+JJ|Y/MM,	2	
r   )r   N)__name__
__module____qualname____firstlineno____doc__r   r'   r#   r5   r<   rL   rU   r_   rf   ri   rz   r   r   r8   r   r3   __static_attributes__rB   r   r   r   r      s]    
7JQ	4	D+4D%LN #& 2r   r   N)coloramar   packages.memory.memoryr   r   r   rB   r   r   <module>r      s.     )  R R Rr   