gaining speed
[ReadingsJQM.git] / js / app / TagList.coffee
index a481284..a765172 100644 (file)
@@ -1,39 +1,76 @@
 
 class Readings.Tag
-  constructor: (record) ->
+  constructor: (record, @category) ->
     @href = record.href
     @name = record.name
     #@url = record.url
     @slug = $.grep(@href.split('/'), (e) -> e != "")
 
-
   render: ->
-    "<li"
+    "<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) ->
-    this.each ->
-      list = $(this)
-      $.ajax
-        url: Readings.config.get('wlurl') + "/api/#{@category}"
-        contentType: "json"
-        success: (data) ->
-          console.log(data)
-          tags = $.map data, (rec) -> new Readings.Tag(rec)
-          list.empty()
-          for t in tags
-            list.append t.render()
-
-
-class Readings.TagList
-  defaults: null
-  constructor: (list, options) ->
-    @options = $.extend @defaults, options
-    if not list.tag_list?
-      list.tag_list = this
-    list.tag_list
-
-  load: ->
+  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}"
-      success: ->
-        true
+      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 "<li data-role=\"list-divider\">#{separator}</li>"
+              last_separator = separator
+
+          list.append t.render()
+        list.listview 'refresh'