$.fn.Readings.list = (opts) -> # category # url # mapper # title # filter # mapper (rec) -> obj # this.each -> $('[data-role=header] h1').text opts.title list = $('[data-role=listview]', this) console.log "lst1 #{list.length}" # show filter search? if !opts.filter $(".ui-listview-filter").hide() # display elements render = (objs) => console.log("lst #{list.length}") list.empty() last_divider = null for obj in objs # throw a divider in for some categories if opts.dividers divider = obj.group() if last_divider != divider list.append "
  • #{divider}
  • " last_divider = divider list.append obj.render() list.listview 'refresh' if opts.sql Readings.catalogue.db.transaction (tx) -> tx.executeSql opts.sql, opts.params, (tx, rs) -> objs = [] for i in [0...rs.rows.length] objs.push opts.mapper rs.rows.item i render(objs) , (tx, err) -> window.last_error = err alert "SQL Error while fetching list contents: #{err.message}" if opts.url $.ajax url: opts.url contentType: "json" success: (data) -> render($.map(data, opts.mapper)) if opts.fetch opts.fetch(render) $.fn.Readings.TagList = (category) -> this.each -> $('[data-role=header] h1').text Readings.config.get('categories')[category] list = $('[data-role=listview]', this) if Readings.config.get('show_filter').indexOf(category) < 0 $(".ui-listview-filter").hide() $.ajax url: Readings.config.get('wlurl') + "/api/#{category}" contentType: "json" success: (data) -> tags = $.map data, (rec) -> new Readings.Tag(rec, category) list.empty() last_separator = null show_separator = Readings.config.get('show_dividers').indexOf(category) >= 0 for t in tags # throw a separator in for some categories if show_separator separator = t.group() if last_separator != separator list.append "
  • #{separator}
  • " last_separator = separator list.append t.render() list.listview 'refresh'