-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Expand file tree
/
Copy pathsettings.coffee
More file actions
99 lines (79 loc) · 2.01 KB
/
settings.coffee
File metadata and controls
99 lines (79 loc) · 2.01 KB
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
90
91
92
93
94
95
96
97
98
99
class app.views.Settings extends app.View
SIDEBAR_HIDDEN_LAYOUT = '_sidebar-hidden'
@el: '._settings'
@elements:
sidebar: '._sidebar'
saveBtn: 'button[type="submit"]'
backBtn: 'button[data-back]'
@events:
import: 'onImport'
change: 'onChange'
submit: 'onSubmit'
click: 'onClick'
@shortcuts:
enter: 'onEnter'
init: ->
@addSubview @docPicker = new app.views.DocPicker
return
activate: ->
if super
@render()
document.body.classList.remove(SIDEBAR_HIDDEN_LAYOUT)
return
deactivate: ->
if super
@resetClass()
@docPicker.detach()
document.body.classList.add(SIDEBAR_HIDDEN_LAYOUT) if app.settings.hasLayout(SIDEBAR_HIDDEN_LAYOUT)
return
render: ->
@docPicker.appendTo @sidebar
@refreshElements()
@addClass '_in'
return
save: (options = {}) ->
unless @saving
@saving = true
if options.import
docs = app.settings.getDocs()
else
docs = @docPicker.getSelectedDocs()
app.settings.setDocs(docs)
@saveBtn.textContent = 'Saving\u2026'
disabledDocs = new app.collections.Docs(doc for doc in app.docs.all() when docs.indexOf(doc.slug) is -1)
disabledDocs.uninstall ->
app.db.migrate()
app.reload()
return
onChange: =>
@addClass('_dirty')
return
onEnter: =>
@save()
return
onSubmit: (event) =>
event.preventDefault()
@save()
return
onImport: =>
@addClass('_dirty')
@save(import: true)
return
onClick: (event) =>
return if event.which isnt 1
if event.target is @backBtn
$.stopEvent(event)
app.router.show '/'
return
setCheckboxesEvent: =>
button = document.getElementById('enable-all')
button.addEventListener 'click', @checkAllCheckboxes
return
checkAllCheckboxes: =>
checkboxes = document.getElementsByClassName('_list-checkbox')
i = 0
while (i < checkboxes.length)
checkboxes[i].checked = true
i++
@addClass('_dirty')
return