class Readings.Tag
- constructor: (record) ->
+ constructor: (record, @category) ->
@href = record.href
@name = record.name
#@url = record.url
render: ->
"<li><a href=\"#\">#{@name}</a></li>"
+ group: ->
+ if @category == 'authors'
+ # last word, first letter
+ @name.split(' ').slice(-1)[0][0].toUpperCase()
+ else
+ @name[0].toUpperCase()
+
+
+$.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)
+ if !opts.filter
+ $(".ui-listview-filter").hide()
+ $.ajax
+ url: opts.url
+ contentType: "json"
+ success: (data) ->
+ objs = $.map data, opts.mapper
+ 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 "<li data-role=\"list-divider\">#{divider}</li>"
+ last_divider = divider
+
+ list.append obj.render()
+ list.listview 'refresh'
+
+
+
$.fn.Readings.TagList = (category) ->
-# dont_filter = ['kinds']
this.each ->
$('[data-role=header] h1').text Readings.config.get('categories')[category]
list = $('[data-role=listview]', this)
-# list.listview
-# filter: dont_filter.indexOf(category) < 0
+ 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) ->
- console.log(data)
- tags = $.map data, (rec) -> new Readings.Tag(rec)
+ 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 "<li data-role=\"list-divider\">#{separator}</li>"
+ last_separator = separator
+
list.append t.render()
list.listview 'refresh'