dashboard.coffee 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. Spine = require('spine/core')
  2. # $ = Spine.$
  3. templates = require('duality/templates')
  4. Essay = require('models/essay')
  5. Video = require('models/video')
  6. Scene = require('models/scene')
  7. class DashboardOne extends Spine.Controller
  8. className: 'dashboard one panel'
  9. events:
  10. 'click h1 .count': 'reload'
  11. constructor: ->
  12. super
  13. # @active @render
  14. Essay.bind 'change refresh', @render
  15. Video.bind 'change refresh', @render
  16. Scene.bind 'change refresh', @render
  17. Spine.bind 'filterbox:change', @filter
  18. render: =>
  19. essaySortFunc = if @filterObj?.sortBy then Essay[@filterObj.sortBy] else Essay.dateSort
  20. videoSortFunc = if @filterObj?.sortBy then Video[@filterObj.sortBy] else Video.dateSort
  21. sceneSortFunc = if @filterObj?.sortBy then Scene[@filterObj.sortBy] else Scene.dateSort
  22. context =
  23. essays: Essay.select(@selectFilter).sort(essaySortFunc)
  24. videos: Video.select(@selectFilter).sort(videoSortFunc)
  25. scenes: Scene.select(@selectFilter).sort(sceneSortFunc)
  26. @html templates.render('dashboard.html', {}, context)
  27. selectFilter: (item) =>
  28. query = @filterObj?.query.toLowerCase()
  29. siteId = @filterObj?.siteId.toLowerCase()
  30. matchedQuery = query and item.title.toLowerCase().indexOf(query) isnt -1
  31. matchedSite = siteId and item.site is siteId
  32. if query and siteId
  33. matchedQuery and matchedSite and not item.published
  34. else if query
  35. matchedQuery and not item.published
  36. else if siteId
  37. matchedSite and not item.published
  38. else
  39. not item.published
  40. filter: (@filterObj) =>
  41. @render()
  42. @el.scrollTop(0)
  43. reload: ->
  44. Essay.fetch()
  45. Video.fetch()
  46. Scene.fetch()
  47. class Dashboard extends Spine.Stack
  48. className: 'dashboards panel'
  49. controllers:
  50. one: DashboardOne
  51. default: 'one'
  52. routes:
  53. '/dashboard/one': 'one'
  54. constructor: ->
  55. super
  56. for k, v of @controllers
  57. @[k].active => @active()
  58. module.exports = Dashboard