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 | 35 | """<span class="_list-item _list-pagelink">Show more\u2026 (#{count})</span>""" |
| 36 | 36 | |
| 37 | 37 | templates.sidebarLabel = (doc, options = {}) -> |
| 38 | − label = """<label class="_list-item _list-label _icon-#{doc.icon}""" | |
| 39 | − label += ' _list-label-off' unless options.checked | |
| 38 | + label = """<label class="_list-item""" | |
| 39 | + label += " _icon-#{doc.icon}" unless doc.version | |
| 40 | 40 | label += """"><input type="checkbox" name="#{doc.slug}" class="_list-checkbox" """ |
| 41 | − label += 'checked' if options.checked | |
| 41 | + label += "checked" if options.checked | |
| 42 | 42 | label += ">#{doc.name}" |
| 43 | − label += " (#{doc.version})" if doc.version | |
| 43 | + label += " #{doc.version}" if doc.version | |
| 44 | 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 | 51 | templates.sidebarDisabledList = (options) -> |
| 47 | 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 | 10 | left: 'onLeft' |
| 11 | 11 | right: 'onRight' |
| 12 | 12 | |
| 13 | − constructor: (@el) -> super | |
| 13 | + constructor: (@el, @options = {}) -> super | |
| 14 | 14 | |
| 15 | 15 | open: (el) -> |
| 16 | 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 | 60 | $.stopEvent(event) |
| 61 | 61 | @toggle el.parentElement |
| 62 | 62 | else if el.classList.contains @constructor.targetClass |
| 63 | − @open el | |
| 63 | + if @options.toggleOnclick then @toggle(el) else @open(el) | |
| 64 | 64 | return |
| @@ -1,5 +1,5 @@ | ||
| 1 | 1 | class app.views.DocPicker extends app.View |
| 2 | − @className: '_list' | |
| 2 | + @className: '_list _list-picker' | |
| 3 | 3 | |
| 4 | 4 | @elements: |
| 5 | 5 | saveLink: '._sidebar-footer-save' |
| @@ -10,6 +10,10 @@ class app.views.DocPicker extends app.View · 4 unmodified lines | ||
| 10 | 10 | @shortcuts: |
| 11 | 11 | enter: 'onEnter' |
| 12 | 12 | |
| 13 | + init: -> | |
| 14 | + @addSubview @listFold = new app.views.ListFold(@el, toggleOnclick: true) | |
| 15 | + return | |
| 16 | + | |
| 13 | 17 | activate: -> |
| 14 | 18 | if super |
| 15 | 19 | @render() |
| @@ -26,11 +30,17 @@ class app.views.DocPicker extends app.View · 10 unmodified lines | ||
| 26 | 30 | return |
| 27 | 31 | |
| 28 | 32 | render: -> |
| 29 | − @html @tmpl('sidebarLabel', app.docs.all(), checked: true) + | |
| 30 | − @tmpl('sidebarLabel', app.disabledDocs.all()) + | |
| 31 | − @tmpl('sidebarPickerNote') + | |
| 32 | − @tmpl('sidebarSave') | |
| 33 | + html = '' | |
| 34 | + docs = app.docs.all().concat(app.disabledDocs.all()...) | |
| 35 | + | |
| 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 | 44 | @refreshElements() |
| 35 | 45 | |
| 36 | 46 | @delay -> # trigger animation |
| @@ -38,6 +48,18 @@ class app.views.DocPicker extends app.View · 1 unmodified line | ||
| 38 | 48 | @addClass '_in' |
| 39 | 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 | 63 | empty: -> |
| 42 | 64 | @resetClass() |
| 43 | 65 | super |