diff --git a/.ide/change_workspace.pl b/.ide/change_workspace.pl new file mode 100755 index 0000000..6cd8970 --- /dev/null +++ b/.ide/change_workspace.pl @@ -0,0 +1,26 @@ +#!/usr/bin/perl -w + +my @files=`ls vim-views/ | grep view`; +my $cwd=`pwd`; +chomp($cwd); + +$cwd=~s!(.*?)/VBS!$1!; + +print $cwd; + +chdir("vim-views"); + +foreach my $file (@files) { + chomp($file); + system("mv", "$file", "$file.bak"); + open(IN,"<$file.bak"); + open(OUT, ">$file"); + + while() { + s!(edit\s).*?(/VBS.*)!$1$cwd$2!; + print OUT; + } + + close(IN); + close(OUT); +} diff --git a/.ide/clean_trailing_whitespace.sh b/.ide/clean_trailing_whitespace.sh new file mode 100755 index 0000000..71ca396 --- /dev/null +++ b/.ide/clean_trailing_whitespace.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +perl -pi -e 's/[\t\r\f ]+$//g' $@ + +for file in $@ +do + rm "$file.bak" + echo "$file done!" +done diff --git a/.ide/line-count.pl b/.ide/line-count.pl new file mode 100755 index 0000000..de7f627 --- /dev/null +++ b/.ide/line-count.pl @@ -0,0 +1,20 @@ +#!/usr/bin/perl -w + +my $lc=0; +my $flc; +my $filename; +while(<>) { + $filename=$_; + chomp($filename); + open(IN,"<$filename"); + + $flc=0; + while() { + $flc++; + $lc++; + } + + print "$filename: $flc\n"; +} + +print "Total: $lc\n"; diff --git a/.ide/vim-ide.vim b/.ide/vim-ide.vim new file mode 100755 index 0000000..0b06d9d --- /dev/null +++ b/.ide/vim-ide.vim @@ -0,0 +1,8 @@ +set viewoptions=cursor,folds,options,slash,unix + +let ideHome = $PWD +augroup ide + au BufWinEnter *.java,*.xml,*.scss,*.yaws,*.html,*.js execute "source ".ideHome."/.ide/vim-views/".strpart(bufname("%"), strridx(bufname("%"), "/") + 1).".view" + au BufWinLeave *.java,*.xml,*.scss,*.yaws,*.html,*.js execute "mkview! ".ideHome."/.ide/vim-views/".strpart(bufname("%"), strridx(bufname("%"), "/") + 1).".view" + au BufWinLeave *.java,*.xml,*.scss,*.yaws,*.html,*.js execute "silent !echo 'syntax on' >> ".ideHome."/.ide/vim-views/".strpart(bufname("%"), strridx(bufname("%"), "/") + 1).".view" +augroup END diff --git a/.ide/vim-views/ts-screen.scss.view b/.ide/vim-views/ts-screen.scss.view new file mode 100644 index 0000000..9ef293d --- /dev/null +++ b/.ide/vim-views/ts-screen.scss.view @@ -0,0 +1,107 @@ +let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0 +argglobal +edit ~/projects/jdb-labs/timestamper/web-app/www/css/ts-screen.scss +setlocal keymap= +setlocal noarabic +setlocal autoindent +setlocal balloonexpr= +setlocal nobinary +setlocal bufhidden= +setlocal buflisted +setlocal buftype= +setlocal nocindent +setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e +setlocal cinoptions= +setlocal cinwords=if,else,while,do,for,switch +setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:- +setlocal commentstring=/*%s*/ +setlocal complete=.,w,b,u,t,i +setlocal completefunc= +setlocal nocopyindent +setlocal nocursorcolumn +setlocal nocursorline +setlocal define= +setlocal dictionary= +setlocal nodiff +setlocal equalprg= +setlocal errorformat= +setlocal expandtab +if &filetype != 'scss' +setlocal filetype=scss +endif +setlocal foldcolumn=0 +setlocal foldenable +setlocal foldexpr=0 +setlocal foldignore=# +setlocal foldlevel=0 +setlocal foldmarker={{{,}}} +setlocal foldmethod=manual +setlocal foldminlines=1 +setlocal foldnestmax=20 +setlocal foldtext=foldtext() +setlocal formatexpr= +setlocal formatoptions=tcq +setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s* +setlocal grepprg= +setlocal iminsert=2 +setlocal imsearch=2 +setlocal include= +setlocal includeexpr= +setlocal indentexpr= +setlocal indentkeys=0{,0},:,0#,!^F,o,O,e +setlocal noinfercase +setlocal iskeyword=@,48-57,_,192-255 +setlocal keywordprg= +setlocal nolinebreak +setlocal nolisp +setlocal nolist +setlocal makeprg= +setlocal matchpairs=(:),{:},[:] +setlocal nomodeline +setlocal modifiable +setlocal nrformats=octal,hex +setlocal number +setlocal numberwidth=4 +setlocal omnifunc= +setlocal path= +setlocal nopreserveindent +setlocal nopreviewwindow +setlocal quoteescape=\\ +setlocal noreadonly +setlocal norightleft +setlocal rightleftcmd=search +setlocal noscrollbind +setlocal shiftwidth=4 +setlocal noshortname +setlocal nosmartindent +setlocal softtabstop=0 +setlocal nospell +setlocal spellcapcheck=[.?!]\\_[\\])'\"\ \ ]\\+ +setlocal spellfile= +setlocal spelllang=en +setlocal statusline= +setlocal suffixesadd= +setlocal swapfile +setlocal synmaxcol=3000 +if &syntax != 'scss' +setlocal syntax=scss +endif +setlocal tabstop=4 +setlocal tags= +setlocal textwidth=80 +setlocal thesaurus= +setlocal nowinfixheight +setlocal nowinfixwidth +setlocal wrap +setlocal wrapmargin=0 +silent! normal! zE +let s:l = 120 - ((39 * winheight(0) + 23) / 46) +if s:l < 1 | let s:l = 1 | endif +exe s:l +normal! zt +120 +normal! 012l +let &so = s:so_save | let &siso = s:siso_save +doautoall SessionLoadPost +" vim: set ft=vim : +syntax on diff --git a/.ide/vim-views/ts.js.view b/.ide/vim-views/ts.js.view new file mode 100644 index 0000000..7c0774d --- /dev/null +++ b/.ide/vim-views/ts.js.view @@ -0,0 +1,143 @@ +let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0 +argglobal +edit ~/projects/jdb-labs/timestamper/web-app/www/js/ts.js +setlocal keymap= +setlocal noarabic +setlocal autoindent +setlocal balloonexpr= +setlocal nobinary +setlocal bufhidden= +setlocal buflisted +setlocal buftype= +setlocal nocindent +setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e +setlocal cinoptions= +setlocal cinwords=if,else,while,do,for,switch +setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:- +setlocal commentstring=/*%s*/ +setlocal complete=.,w,b,u,t,i +setlocal completefunc= +setlocal nocopyindent +setlocal nocursorcolumn +setlocal nocursorline +setlocal define= +setlocal dictionary= +setlocal nodiff +setlocal equalprg= +setlocal errorformat= +setlocal expandtab +if &filetype != 'javascript' +setlocal filetype=javascript +endif +setlocal foldcolumn=0 +setlocal foldenable +setlocal foldexpr=0 +setlocal foldignore=# +setlocal foldlevel=0 +setlocal foldmarker={{{,}}} +setlocal foldmethod=manual +setlocal foldminlines=1 +setlocal foldnestmax=20 +setlocal foldtext=foldtext() +setlocal formatexpr= +setlocal formatoptions=tcq +setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s* +setlocal grepprg= +setlocal iminsert=2 +setlocal imsearch=2 +setlocal include= +setlocal includeexpr= +setlocal indentexpr= +setlocal indentkeys=0{,0},:,0#,!^F,o,O,e +setlocal noinfercase +setlocal iskeyword=@,48-57,_,192-255 +setlocal keywordprg= +setlocal nolinebreak +setlocal nolisp +setlocal nolist +setlocal makeprg= +setlocal matchpairs=(:),{:},[:] +setlocal nomodeline +setlocal modifiable +setlocal nrformats=octal,hex +setlocal number +setlocal numberwidth=4 +setlocal omnifunc= +setlocal path= +setlocal nopreserveindent +setlocal nopreviewwindow +setlocal quoteescape=\\ +setlocal noreadonly +setlocal norightleft +setlocal rightleftcmd=search +setlocal noscrollbind +setlocal shiftwidth=4 +setlocal noshortname +setlocal nosmartindent +setlocal softtabstop=0 +setlocal nospell +setlocal spellcapcheck=[.?!]\\_[\\])'\"\ \ ]\\+ +setlocal spellfile= +setlocal spelllang=en +setlocal statusline= +setlocal suffixesadd= +setlocal swapfile +setlocal synmaxcol=3000 +if &syntax != 'javascript' +setlocal syntax=javascript +endif +setlocal tabstop=4 +setlocal tags= +setlocal textwidth=80 +setlocal thesaurus= +setlocal nowinfixheight +setlocal nowinfixwidth +setlocal wrap +setlocal wrapmargin=0 +silent! normal! zE +9,18fold +20,28fold +30,43fold +45,61fold +63,81fold +86,288fold +290,348fold +350,418fold +420,457fold +459,557fold +559,618fold +620,656fold +9 +normal zc +20 +normal zc +30 +normal zc +45 +normal zc +63 +normal zc +86 +normal zc +290 +normal zc +350 +normal zc +420 +normal zc +459 +normal zc +559 +normal zc +620 +normal zc +let s:l = 3 - ((2 * winheight(0) + 23) / 47) +if s:l < 1 | let s:l = 1 | endif +exe s:l +normal! zt +3 +normal! 0 +let &so = s:so_save | let &siso = s:siso_save +doautoall SessionLoadPost +" vim: set ft=vim : +syntax on diff --git a/db/test/DECISION_TAB.LOG b/db/test/DECISION_TAB.LOG index 0c590e4..076bf02 100644 Binary files a/db/test/DECISION_TAB.LOG and b/db/test/DECISION_TAB.LOG differ diff --git a/db/test/LATEST.LOG b/db/test/LATEST.LOG index ea2d05b..694f0da 100644 Binary files a/db/test/LATEST.LOG and b/db/test/LATEST.LOG differ diff --git a/db/test/id_counter.DCD b/db/test/id_counter.DCD index f17ad07..1594640 100644 Binary files a/db/test/id_counter.DCD and b/db/test/id_counter.DCD differ diff --git a/db/test/id_counter.DCL b/db/test/id_counter.DCL new file mode 100644 index 0000000..a83bc9f Binary files /dev/null and b/db/test/id_counter.DCL differ diff --git a/db/test/ts_entry.DCD b/db/test/ts_entry.DCD index 724f32a..92e0338 100644 Binary files a/db/test/ts_entry.DCD and b/db/test/ts_entry.DCD differ diff --git a/db/test/ts_entry.DCL b/db/test/ts_entry.DCL index 97b12e1..397ea3b 100644 Binary files a/db/test/ts_entry.DCL and b/db/test/ts_entry.DCL differ diff --git a/db/test/ts_timeline.DCD b/db/test/ts_timeline.DCD index 93c5712..7722c9e 100644 Binary files a/db/test/ts_timeline.DCD and b/db/test/ts_timeline.DCD differ diff --git a/doc/issues/desktop/0007tn2.rst b/doc/issues/desktop/0007ts2.rst similarity index 88% rename from doc/issues/desktop/0007tn2.rst rename to doc/issues/desktop/0007ts2.rst index 7e2188b..a4fe5f8 100644 --- a/doc/issues/desktop/0007tn2.rst +++ b/doc/issues/desktop/0007ts2.rst @@ -5,5 +5,5 @@ Allow the user to change timelines. ========= ========== Created: 2011-05-15 -Resolved: YYYY-MM-DD +Resolved: 2011-06-08 ========= ========== \ No newline at end of file diff --git a/doc/issues/desktop/0009tn3.rst b/doc/issues/desktop/0009tn3.rst index 3159966..07d4856 100644 --- a/doc/issues/desktop/0009tn3.rst +++ b/doc/issues/desktop/0009tn3.rst @@ -1,7 +1,7 @@ -Implement a date-picker for start time. -======================================= +Implement correct start time editor. +==================================== -Use a custom jQuery UI theme? +The start time input field needs to look the same as the start time view. ========= ========== Created: 2011-05-15 diff --git a/doc/issues/desktop/0018bn2.rst b/doc/issues/desktop/0018bn2.rst deleted file mode 100644 index ba7e991..0000000 --- a/doc/issues/desktop/0018bn2.rst +++ /dev/null @@ -1,9 +0,0 @@ -Error in UI when creating or selecting a timeline. -================================================== - -Brief description. - -========= ========== -Created: 2011-06-07 -Resolved: YYYY-MM-DD -========= ========== \ No newline at end of file diff --git a/doc/issues/desktop/0018bs2.rst b/doc/issues/desktop/0018bs2.rst new file mode 100644 index 0000000..661c422 --- /dev/null +++ b/doc/issues/desktop/0018bs2.rst @@ -0,0 +1,15 @@ +Error in UI when creating or selecting a timeline. +================================================== + +A type error is occurring whenever a timeline link is clicked. + +Resolution +---------- + +The problem was an event registered on the AppView class, linked +to 'selectTimeline' function, which was not defined. + +========= ========== +Created: 2011-06-07 +Resolved: 2011-06-08 +========= ========== \ No newline at end of file diff --git a/doc/issues/desktop/0019bn3.rst b/doc/issues/desktop/0019bn3.rst new file mode 100644 index 0000000..4bd70e7 --- /dev/null +++ b/doc/issues/desktop/0019bn3.rst @@ -0,0 +1,16 @@ +API calls fail silently after session timeout. +============================================== + +API starts failing with a 500 error after session time-out. + +Steps to Reproduce +------------------ + +1. Login +2. Wait until session times out (5 min?) +3. Try to create a new entry. + +========= ========== +Created: 2011-06-08 +Resolved: YYYY-MM-DD +========= ========== \ No newline at end of file diff --git a/www/css/ts-screen.css b/www/css/ts-screen.css index bef9640..e2e1601 100644 --- a/www/css/ts-screen.css +++ b/www/css/ts-screen.css @@ -74,13 +74,19 @@ input { text-align: right; right: 0; width: 172.41%; } - #timeline .drop-menu .drop-menu-items .new-timeline-link, #timeline .drop-menu .drop-menu-items .timeline-link { - padding-left: 0.5em; + #timeline .drop-menu .drop-menu-items .new-timeline-link { + padding-right: 0.5em; font-size: medium; } - #timeline .drop-menu .drop-menu-items .new-timeline-link img, #timeline .drop-menu .drop-menu-items .timeline-link img { + #timeline .drop-menu .drop-menu-items .new-timeline-link a { + text-decoration: underline; } + #timeline .drop-menu .drop-menu-items .new-timeline-link img { position: relative; top: 4px; left: -4px; } + #timeline .drop-menu .drop-menu-items .timeline-link { + padding: 0 0.5em; + font-size: medium; + border-left: thin solid white; } .dialog { background: white; diff --git a/www/css/ts-screen.scss b/www/css/ts-screen.scss index 7ef216e..c0526c4 100644 --- a/www/css/ts-screen.scss +++ b/www/css/ts-screen.scss @@ -100,9 +100,11 @@ input { right: 0; width: 172.41%; - .new-timeline-link, .timeline-link { - padding-left: 0.5em; + .new-timeline-link { + padding-right: 0.5em; font-size: medium; + + a { text-decoration: underline; } img { position: relative; @@ -110,6 +112,12 @@ input { left: -4px; } } + + .timeline-link { + padding: 0 0.5em; + font-size: medium; + border-left: thin solid white + } } } } diff --git a/www/js/ts.js b/www/js/ts.js index 91f936c..caa95a8 100644 --- a/www/js/ts.js +++ b/www/js/ts.js @@ -362,7 +362,7 @@ $(document).ready(function(){ initialize: function(options) { _.bindAll(this, 'render', 'renderOne', 'editId', - 'editDesc', 'updateOnEnter'); + 'editDesc', 'updateOnEnter', 'close'); if (options.initialTimelineId == undefined) { throw "Can not create a TimelineListView without an initial timeline." @@ -466,7 +466,8 @@ $(document).ready(function(){ initialize: function() { - _.bindAll(this, 'initializeViews', 'loadInitialData'); + _.bindAll(this, 'initializeViews', 'loadInitialData', + 'selectTimeline'); appThis = this; @@ -541,6 +542,25 @@ $(document).ready(function(){ async: false}).responseText); return data; + }, + + selectTimeline: function(e) { + if (e) { + // get the timeline model + var tl = this.timelines.collection.get(e.srcElement.text); + + // set the on the timeline view + this.timelines.view.selected = tl; + + // set the timeline on the EntryList + this.entries.collection.timeline = tl; + + // refresh TimelineListView + this.timelines.view.render(); + + // refresh EntryList records + this.entries.collection.fetch() + } } });