Ref #25.
Showing the changes to assets/javascripts (3 of 4 files). Show all
Unified · Split
| @@ -35,14 +35,19 @@ templates.sidebarPageLink = (count) -> · 34 unmodified lines | |||
| 35 | """<span class="_list-item _list-pagelink">Show more\u2026 (#{count})</span>""" | 35 | """<span class="_list-item _list-pagelink">Show more\u2026 (#{count})</span>""" |
| 36 | 36 | ||
| 37 | templates.sidebarLabel = (doc, options = {}) -> | 37 | templates.sidebarLabel = (doc, options = {}) -> |
| 38 | label = """<label class="_list-item _list-label _icon-#{doc.icon}""" | 38 | label = """<label class="_list-item""" |
| 39 | label += ' _list-label-off' unless options.checked | 39 | label += " _icon-#{doc.icon}" unless doc.version |
| 40 | label += """"><input type="checkbox" name="#{doc.slug}" class="_list-checkbox" """ | 40 | label += """"><input type="checkbox" name="#{doc.slug}" class="_list-checkbox" """ |
| 41 | label += 'checked' if options.checked | 41 | label += "checked" if options.checked |
| 42 | label += ">#{doc.name}" | 42 | label += ">#{doc.name}" |
| 43 | label += " (#{doc.version})" if doc.version | 43 | label += " #{doc.version}" if doc.version |
| 44 | label + "</label>" | 44 | label + "</label>" |
| 45 | 45 | ||
| 46 | templates.sidebarVersionedDoc = (doc, versions, options = {}) -> | ||
| 47 | html = """<div class="_list-item _list-dir _list-rdir _icon-#{doc.icon}""" | ||
| 48 | html += " open" if options.open | ||
| 49 | html + """"><span class="_list-arrow"></span>#{doc.name}</div><div class="_list _list-sub">#{versions}</div>""" | ||
| 50 | |||
| 46 | templates.sidebarDisabledList = (options) -> | 51 | templates.sidebarDisabledList = (options) -> |
| 47 | """<div class="_disabled-list">#{templates.render 'sidebarDoc', options.docs, disabled: true}</div>""" | 52 | """<div class="_disabled-list">#{templates.render 'sidebarDoc', options.docs, disabled: true}</div>""" |
| 48 | 53 | ||
| @@ -10,7 +10,7 @@ class app.views.ListFold extends app.View · 9 unmodified lines | |||
| 10 | left: 'onLeft' | 10 | left: 'onLeft' |
| 11 | right: 'onRight' | 11 | right: 'onRight' |
| 12 | 12 | ||
| 13 | constructor: (@el) -> super | 13 | constructor: (@el, @options = {}) -> super |
| 14 | 14 | ||
| 15 | open: (el) -> | 15 | open: (el) -> |
| 16 | if el and not el.classList.contains @constructor.activeClass | 16 | if el and not el.classList.contains @constructor.activeClass |
| @@ -60,5 +60,5 @@ class app.views.ListFold extends app.View · 43 unmodified lines | |||
| 60 | $.stopEvent(event) | 60 | $.stopEvent(event) |
| 61 | @toggle el.parentElement | 61 | @toggle el.parentElement |
| 62 | else if el.classList.contains @constructor.targetClass | 62 | else if el.classList.contains @constructor.targetClass |
| 63 | @open el | 63 | if @options.toggleOnclick then @toggle(el) else @open(el) |
| 64 | return | 64 | return |
| @@ -1,5 +1,5 @@ | |||
| 1 | class app.views.DocPicker extends app.View | 1 | class app.views.DocPicker extends app.View |
| 2 | @className: '_list' | 2 | @className: '_list _list-picker' |
| 3 | 3 | ||
| 4 | @elements: | 4 | @elements: |
| 5 | saveLink: '._sidebar-footer-save' | 5 | saveLink: '._sidebar-footer-save' |
| @@ -10,6 +10,10 @@ class app.views.DocPicker extends app.View · 4 unmodified lines | |||
| 10 | @shortcuts: | 10 | @shortcuts: |
| 11 | enter: 'onEnter' | 11 | enter: 'onEnter' |
| 12 | 12 | ||
| 13 | init: -> | ||
| 14 | @addSubview @listFold = new app.views.ListFold(@el, toggleOnclick: true) | ||
| 15 | return | ||
| 16 | |||
| 13 | activate: -> | 17 | activate: -> |
| 14 | if super | 18 | if super |
| 15 | @render() | 19 | @render() |
| @@ -26,11 +30,17 @@ class app.views.DocPicker extends app.View · 10 unmodified lines | |||
| 26 | return | 30 | return |
| 27 | 31 | ||
| 28 | render: -> | 32 | render: -> |
| 29 | @html @tmpl('sidebarLabel', app.docs.all(), checked: true) + | 33 | html = '' |
| 30 | @tmpl('sidebarLabel', app.disabledDocs.all()) + | 34 | docs = app.docs.all().concat(app.disabledDocs.all()...) |
| 31 | @tmpl('sidebarPickerNote') + | 35 | |
| 32 | @tmpl('sidebarSave') | 36 | while doc = docs.shift() |
| 37 | if doc.version | ||
| 38 | [docs, versions] = @extractVersions(docs, doc) | ||
| 39 | html += @tmpl('sidebarVersionedDoc', doc, @renderVersions(versions), open: app.docs.contains(doc)) | ||
| 40 | else | ||
| 41 | html += @tmpl('sidebarLabel', doc, checked: app.docs.contains(doc)) | ||
| 33 | 42 | ||
| 43 | @html html + @tmpl('sidebarPickerNote') + @tmpl('sidebarSave') | ||
| 34 | @refreshElements() | 44 | @refreshElements() |
| 35 | 45 | ||
| 36 | @delay -> # trigger animation | 46 | @delay -> # trigger animation |
| @@ -38,6 +48,18 @@ class app.views.DocPicker extends app.View · 1 unmodified line | |||
| 38 | @addClass '_in' | 48 | @addClass '_in' |
| 39 | return | 49 | return |
| 40 | 50 | ||
| 51 | renderVersions: (docs) -> | ||
| 52 | html = '' | ||
| 53 | html += @tmpl('sidebarLabel', doc, checked: app.docs.contains(doc)) for doc in docs | ||
| 54 | html | ||
| 55 | |||
| 56 | extractVersions: (originalDocs, version) -> | ||
| 57 | docs = [] | ||
| 58 | versions = [version] | ||
| 59 | for doc in originalDocs | ||
| 60 | (if doc.name is version.name then versions else docs).push(doc) | ||
| 61 | [docs, versions] | ||
| 62 | |||
| 41 | empty: -> | 63 | empty: -> |
| 42 | @resetClass() | 64 | @resetClass() |
| 43 | super | 65 | super |