daisho
Version:
Modular dashboard framework
168 lines (124 loc) • 3.42 kB
text/coffeescript
import Dynamic from './dynamic-table'
import html from '../templates/hanzo-dynamic-table'
# helper for facets
getFacets = (options) ->
facets =
string: []
range: []
hasFacets = false
if options && options.string
for k, v of options.string
hasFacets = true
vals = []
for k2, v2 of v
if v2
facets.string.push
name: k
value: k2
if options && options.range
for k, v of options.range
hasFacets = true
facets.range.push
name: k
value:
start: v.from
end: v.to
return facets if hasFacets
return
export default class HanzoDynamicTable extends Dynamic
tag: 'daisho-hanzo-dynamic-table'
html: html
# Name of item in table
# name: ''
# filter config
configs:
'filter': []
initialized: false
loading: false
# a map of all the range facets that should use currency instead of numeric
# for example
# facetCurrency:
# price: true
# listPrice: true
# inventoryCost: true
facetCurrency: {}
openFilter: false
init: ->
super
# generate header onclick events
_onheader: (header, e) ->
if .get('sort') == header.field
.set 'asc', !.get('asc')
else
.set 'asc', true
.set 'sort', header.field
e
onsearch: (e, facet) ->
true
# return the query string
getFacetQuery: ->
return .get 'facets.query'
# return the facet filter options
getFacetOptions: ->
return .get 'facets.options'
# load?
doLoad: ->
return true
# overwrite with search function call and return promise
# list: (opts) ->
_refresh: (force, fn) ->
force, fn
_load: (force, fn) ->
if && !force
return
if !
return
org = .akasha.get('orgs')[.akasha.get('activeOrg')]
.set 'facets.currency', org.currency
= true
#default sorting
if !.get('sort')?
.set 'sort', 'UpdatedAt'
.set 'asc', false
# filter = .get 'filter'
opts =
sort: if .get('asc') then '-' + .get('sort') else .get('sort')
display: *
page: 1
q =
opts.q = q if q
options =
if facets = getFacets options
opts.facets = JSON.stringify facets
p = ? []
if p.then
p.then (res) =>
if fn? then fn(res) else
else
if fn? then fn(p) else
_loadMore: ->
org = .akasha.get('orgs')[.akasha.get('activeOrg')]
.set 'facets.currency', org.currency
= true
#default sorting
if !.get('sort')?
.set 'sort', 'UpdatedAt'
.set 'asc', false
# filter = .get 'filter'
opts =
sort: if .get('asc') then '-' + .get('sort') else .get('sort')
display:
page:
q = .get 'facets.query'
opts.q = q if q
options = .get 'facets.options'
if facets = getFacets options
opts.facets = JSON.stringify facets
p = ? []
if p.then
p.then (res) =>
if fn? then fn(res) else
else
if fn? then fn(p) else
toggleFilterMenu: ()->
= !