[Dynamically generate list items from test data structure. Key handler accesses global data by tabindex attribute of selected list element (TODO: use closure instead) Betty Diegel **20121124225217 Ignore-this: 3ec2a4a2b76fa0cb748825f928838868 ] hunk ./client/dist/index.html 8 + hunk ./client/dist/index.html 10 + hunk ./client/dist/index.html 27 - + hunk ./client/src/keys.coffee 2 - + createNavShows data +### hunk ./client/src/keys.coffee 57 +### hunk ./client/src/keys.coffee 59 + +createNavShows = (alldata) -> + ul = $ '#nav-shows' + ul.append createShowLi showdata for showdata in alldata + $( "#nav-shows li" ).attr 'tabindex', (index, attr) -> index + $( "#nav-shows li").bind showHandler + + +createShowLi = (showdata) -> + "
  • #{showdata.title}
  • " + + +createNavEpisodes = (episodes) -> + #$( '#nav-episodes li' ).remove() + ul = $ '#nav-episodes' + ul.empty() + ul.append createEpisodeLi epdata for epdata in episodes + + +createEpisodeLi = (epdata) -> + "
  • #{epdata.title}
  • " + + +showHandler = { + keydown: (e) -> + key = e.keyCode + target = $ e.currentTarget + + switch key + when 38 # arrow up + target.prev().focus() + break + when 39 # arrow right + # TODO: update episodes + break + when 40 # arrow down + target.next().focus() + break + + focusin: (e) -> + ($ e.currentTarget).addClass "ui-selected" + showdata = getShowData ($ e.currentTarget).attr( 'tabindex' ) + console.log "showdata=" + JSON.stringify showdata + createNavEpisodes showdata.episodes + + + focusout: (e) -> + ($ e.currentTarget).removeClass "ui-selected" + +} + + +getShowData = (index) -> + data[index]