/
filtercollection.coffee
89 lines (81 loc) · 2.25 KB
/
filtercollection.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
Collection = require "./collection"
application = require '../application'
Frame = require "../models/frame"
#FramelistFrameView = require './framelistframe_view'
module.exports = class FilterCollection extends Collection
model: Frame
url:"/getFrames"
_defaults:
skip:0
limit:20
skip:0
limit:20
sortParams:
sortkey:''
sortorder:''
sorttype:''
initialize: (params) =>
super()
@filters = []
if !application.settings.ui_filters_framemetadata?
application.settings.ui_filters_framemetadata = []
if params.view
@view = params.view
#todo: map filter sets to view type
for o in application.settings.ui_filters_framemetadata
@filters.push @view.addSubview o.field_name, application.getFilter(o.format), '#filter_form', {params:o,collection:@}
@
#comparator: (chapter) =>
# return -chapter.get("capturetime")
# return chapter.get("capturetime")
sortList: (sorttype, sortkey, sortorder) =>
for o in @filters
if o.options.params.field_name == sortkey
@sortParams.sortkey = sortkey
@sortParams.sortorder = sortorder
@sortParams.sorttype = sorttype
return
getUrl: (total=false)=>
#todo: map .error to params.error
_json = []
for o in @filters
val = o.toJson()
if val
_json.push val
if total
skip = 0
limit = @skip+@limit
else
skip=@skip
limit=@limit
_json =
skip:skip
limit:limit
query:_json
sortkey: @sortParams.sortkey || 'capturetime'
sortorder: @sortParams.sortorder || -1
sortinfo:
type: @sortParams.sorttype || ''
name: @sortParams.sortkey || 'capturetime'
order: @sortParams.sortorder || -1
"/"+JSON.stringify _json
fetch: (params={}) =>
#console.dir _json
if params.before
params.before()
$.getJSON(@url+@getUrl(), (data) =>
@.totalavail = data.total_frames
if @skip == 0
@reset data.frames
else
@add data.frames
if params.success
params.success(data)
return
).error =>
#todo: make callback error
SimpleSeer.alert('request error','error')
#filterCallback: (data) =>
#@reset data.frames
#for att in data.frames
# @add att