package Ġservices Ċ Ċ import Ġevents . Todo EventEmitter Ċ import Ġmodel . Task Ċ Ċ class ĠStorage Service ( val Ġevent Emitter : ĠTodo EventEmitter ) Ġ: ĠLinkedHashMap < String , ĠTask >() Ġ{ ĊĊĠĠĠ Ġval Ġadd Event : ĠString Ġ= Ġ" add Task " ĊĠĠĠ Ġval Ġdone Event : ĠString Ġ= Ġ" done Event " ĊĠĠĠ Ġval Ġund one Event : ĠString Ġ= Ġ" und one Event " ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( event Emitter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon ( add Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (" added Ġtask : Ġ% s ", Ġit . is Done ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon ( done Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (" marked Ġtask : Ġ% s Ġas Ġdone ", Ġit . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( task Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon ( und one Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log (" marked Ġtask : Ġ% s Ġas Ġund one ", Ġit . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( task Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll ( callback : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAjax (). get ("/ api / tasks ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtasks Ġ= ĠJSON . parse < Array < Task >>( it . responseText ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠTask ( it . id , Ġit . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . is Arch ived Ġ= Ġit . is Arch ived ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . is Done Ġ= Ġit . is Done ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ task . id ] Ġ= Ġtask ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate ( task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAjax (). post ("/ api / task /${ task . id }", Ġtask ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log ( it . response ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġput ( key : ĠString , Ġvalue : ĠTask ): ĠTask ? Ġ{ ĊĠĠĠĠĠĠĠ Ġevent Emitter . trigger ( add Event , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . put ( key , Ġvalue ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ