gaining speed
[ReadingsJQM.git] / js / app / TagList.coffee
1
2 class Readings.Tag
3   constructor: (record, @category) ->
4     @href = record.href
5     @name = record.name
6     #@url = record.url
7     @slug = $.grep(@href.split('/'), (e) -> e != "")
8
9   render: ->
10     "<li><a href=\"#\">#{@name}</a></li>"
11
12   group: ->
13     if @category == 'authors'
14       # last word, first letter
15       @name.split(' ').slice(-1)[0][0].toUpperCase()
16     else
17       @name[0].toUpperCase()
18
19
20 $.fn.Readings.list = (opts) ->
21   # category
22   # url
23   # mapper
24   # title
25   # filter
26   # mapper (rec) -> obj
27   this.each ->
28     $('[data-role=header] h1').text opts.title
29     list = $('[data-role=listview]', this)
30     if !opts.filter
31       $(".ui-listview-filter").hide()
32     $.ajax
33       url: opts.url
34       contentType: "json"
35       success: (data) ->
36         objs = $.map data, opts.mapper
37         list.empty()
38         last_divider = null
39
40         for obj in objs
41           # throw a divider in for some categories
42           if opts.dividers
43             divider = obj.group()
44             if last_divider != divider
45               list.append "<li data-role=\"list-divider\">#{divider}</li>"
46               last_divider = divider
47
48           list.append obj.render()
49         list.listview 'refresh'
50
51
52
53 $.fn.Readings.TagList = (category) ->
54   this.each ->
55     $('[data-role=header] h1').text Readings.config.get('categories')[category]
56     list = $('[data-role=listview]', this)
57     if Readings.config.get('show_filter').indexOf(category) < 0
58       $(".ui-listview-filter").hide()
59     $.ajax
60       url: Readings.config.get('wlurl') + "/api/#{category}"
61       contentType: "json"
62       success: (data) ->
63         tags = $.map data, (rec) -> new Readings.Tag(rec, category)
64         list.empty()
65         last_separator = null
66         show_separator = Readings.config.get('show_dividers').indexOf(category) >= 0
67         for t in tags
68           # throw a separator in for some categories
69           if show_separator
70             separator = t.group()
71             if last_separator != separator
72               list.append "<li data-role=\"list-divider\">#{separator}</li>"
73               last_separator = separator
74
75           list.append t.render()
76         list.listview 'refresh'