PowerPro is the best utility I know. It allow many good things.
I wrote script that is invoked by some key to track my activities during the day:
I wrote script that is invoked by some key to track my activities during the day:
;-----------------------------------------------
; log file location - new
;-----------------------------------------------
log_file = "c:/z/log.txt"
alias_l = "LICENSE - "
alias_sr = "SCREEN RECORDER - "
alias_m = "MEETING - "
*Bar show timer_track
*Bar show taskbar
;-----------------------------------------------
; get input from user
;-----------------------------------------------
newnote = input ("Note (l=license, sr=screen recorder, m=meeting)")
;-----------------------------------------------
; general variables
; last_usedtimer - name of last used timer (needed for "start")
; last_barcolor - last used color (needed for "start")
; last_htmlbgcolor - background color for HTML report
;
; timer a = main tasks
; timer b = work related tasks
; timer d = delta since last start of task
; timer z = private tasks
;-----------------------------------------------
if (last_usedtimer=="") do
last_usedtimer="a"
last_barcolor="54143"
last_htmlbgcolor="white"
endif
;-----------------------------------------------
; handle special commands
;-----------------------------------------------
if ((newnote=="h") | (newnote=="hold") || (newnote=="stop") || (newnote=="suspend")) do
*Timer Stop abdz
cl.SetBackColor ("timer_track", 0, 16744576)
quit
elseif ((newnote=="s") | (newnote=="start") || (newnote=="resume") || (newnote=="continue") || (newnote=="cont")) do
*Timer Start last_usedtimer
*Timer Start "d"
cl.SetBackColor ("timer_track", 0, last_barcolor)
cl.SetBackColor ("timer_track", 1, last_barcolor)
cl.SetBackColor ("timer_track", 2, last_barcolor)
quit
elseif ((newnote=="r") | (newnote=="reset"))do
*Timer Clear abdz
quit
elseif ((newnote=="") | (length(newnote) < 2)) do
quit
elseif (newnote=="arrival") do
*Timer Clear abdz
last_htmlbgcolor="BLANCH-DALMOND"
newnote="b arrival"
endif
;-----------------------------------------------
; set new displayed note to be the entered text
; type:
; (m)ain, (w) - work but not main, (z/p) private
;-----------------------------------------------
note=newnote
notetype="m"
;-----------------------------------------------
; handle private tasks
;-----------------------------------------------
if ((index(note,"z ")==1) || (index(note,"p ")==1)) do
notetype=word (note, 1)
last_usedtimer="z"
last_barcolor="8421631"
last_htmlbgcolor="red"
*Timer Stop abdz
*Timer Start z
;; *Format Item item 1 list "timer_track" text "*Info timersec a"
;-----------------------------------------------
; handle tasks that are related to work but not main work tasks
;-----------------------------------------------
elseif (index(note,"w ")==1) do
notetype=word (note, 1)
last_usedtimer="b"
last_barcolor="8454143"
last_htmlbgcolor="yellow"
*Timer Stop abdz
*Timer Start b
;-----------------------------------------------
; handle tasks that are related to real code
;-----------------------------------------------
;elseif (index(note,"c ")==1) do
; notetype=word (note, 1)
; last_usedtimer="a"
; last_barcolor="54143"
; last_htmlbgcolor="white"
; *Timer Stop abdz
; *Timer Start a
;-----------------------------------------------
; handle main work tasks
;-----------------------------------------------
else
notetype="m"
last_usedtimer="a"
last_barcolor="54143"
last_htmlbgcolor="white"
*Timer Stop abdz
*Timer Start a
if (index(note,"l ")==1) do
note = alias_l ++ note
elseif (index(note,"sr ")==1) do
note = alias_sr ++ note
elseif (index(note,"m ")==1) do
note = alias_m ++ note
endif
endif
;-----------------------------------------------
; set color of bar
;-----------------------------------------------
cl.SetBackColor ("timer_track", 0, last_barcolor)
cl.SetBackColor ("timer_track", 1, last_barcolor)
;cl.SetBackColor ("timer_track", 2, last_barcolor)
;cl.SetBackColor ("timer_track", 3, last_barcolor)
;-----------------------------------------------
; if user entered 'home', close HTML table and create
; new HTML table
;-----------------------------------------------
if (newnote=="home") do
*Timer Stop abdz
cl.SetBackColor ("timer_track", 0, 16744576)
last_htmlbgcolor="orange"
; calculate main work time
plannedHours = timer("a")/3600
plannedMin = (timer("a")%3600)/60
plannedTime = ""++plannedHours++":"++plannedMin
; calculate work related tasks
noplannedHours = timer("b")/3600
noplannedMin = (timer("b")%3600)/60
noplannedTime = ""++noplannedHours++":"++noplannedMin
; calculate private tasks
privateHours = timer("z")/3600
privateMin = (timer("z")%3600)/60
privateTime = ""++privateHours++":"++privateMin
; create the text for the report
; note="Planned:"++plannedTime++" Not planned:"++noplannedTime++" Private:"++privateTime
endif
;-----------------------------------------------
; caluclate task duration and reset the duration timer
;-----------------------------------------------
deltaTimeHours = timer("d")/3600
deltaTimeMin = (timer("d")%3600)/60
deltaTime = ""++deltaTimeHours++":"++deltaTimeMin
*Timer Clear d
if (newnote!="home") do
*Timer Start d
endif
;-----------------------------------------------
; update the log file (html report)
;-----------------------------------------------
;FOR CSV file: s = formatdate("dd/MM/yyyy",date)++","++formattime("HH:mm",time)++","++notetype++","++note
s = formatdate("dd/MM/yyyy",date)++" "++formattime("HH:mm",time)++" ["++notetype++"] "++note
fh = file.open(log_file,"a")
fh.writeLine(s)
fh.close
Comments