123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- Spine = require('spine/core')
- # $ = Spine.$
- templates = require('duality/templates')
- Essay = require('models/essay')
- Video = require('models/video')
- Scene = require('models/scene')
- class DashboardOne extends Spine.Controller
- className: 'dashboard one panel'
- events:
- 'click h1 .count': 'reload'
- constructor: ->
- super
- # @active @render
- Essay.bind 'change refresh', @render
- Video.bind 'change refresh', @render
- Scene.bind 'change refresh', @render
- Spine.bind 'filterbox:change', @filter
- render: =>
- essaySortFunc = if @filterObj?.sortBy then Essay[@filterObj.sortBy] else Essay.dateSort
- videoSortFunc = if @filterObj?.sortBy then Video[@filterObj.sortBy] else Video.dateSort
- sceneSortFunc = if @filterObj?.sortBy then Scene[@filterObj.sortBy] else Scene.dateSort
- context =
- essays: Essay.select(@selectFilter).sort(essaySortFunc)
- videos: Video.select(@selectFilter).sort(videoSortFunc)
- scenes: Scene.select(@selectFilter).sort(sceneSortFunc)
- @html templates.render('dashboard.html', {}, context)
- selectFilter: (item) =>
- query = @filterObj?.query.toLowerCase()
- siteId = @filterObj?.siteId.toLowerCase()
- matchedQuery = query and item.title.toLowerCase().indexOf(query) isnt -1
- matchedSite = siteId and item.site is siteId
- if query and siteId
- matchedQuery and matchedSite and not item.published
- else if query
- matchedQuery and not item.published
- else if siteId
- matchedSite and not item.published
- else
- not item.published
- filter: (@filterObj) =>
- @render()
- @el.scrollTop(0)
- reload: ->
- Essay.fetch()
- Video.fetch()
- Scene.fetch()
- class Dashboard extends Spine.Stack
- className: 'dashboards panel'
- controllers:
- one: DashboardOne
- default: 'one'
- routes:
- '/dashboard/one': 'one'
- constructor: ->
- super
- for k, v of @controllers
- @[k].active => @active()
- module.exports = Dashboard
|