Unified · Split
| @@ -77,11 +77,7 @@ · 76 unmodified lines | ||
| 77 | 77 | return |
| 78 | 78 | |
| 79 | 79 | start: -> |
| 80 | − for doc in @docs.all() | |
| 81 | − @entries.add doc.toEntry() | |
| 82 | − @entries.add type.toEntry() for type in doc.types.all() | |
| 83 | − @entries.add doc.entries.all() | |
| 84 | − | |
| 80 | + @initDoc(doc) for doc in @docs.all() | |
| 85 | 81 | @db = new app.DB() |
| 86 | 82 | @trigger 'ready' |
| 87 | 83 | @router.start() |
| @@ -90,6 +86,25 @@ · 2 unmodified lines | ||
| 90 | 86 | @removeEvent 'ready bootError' |
| 91 | 87 | return |
| 92 | 88 | |
| 89 | + initDoc: (doc) -> | |
| 90 | + @entries.add doc.toEntry() | |
| 91 | + @entries.add type.toEntry() for type in doc.types.all() | |
| 92 | + @entries.add doc.entries.all() | |
| 93 | + return | |
| 94 | + | |
| 95 | + enableDoc: (doc, _onSuccess, onError) -> | |
| 96 | + onSuccess = => | |
| 97 | + @disabledDocs.remove(doc) | |
| 98 | + @docs.add(doc) | |
| 99 | + @docs.sort() | |
| 100 | + @initDoc(doc) | |
| 101 | + @settings.setDocs(doc.slug for doc in @docs.all()) | |
| 102 | + _onSuccess() | |
| 103 | + return | |
| 104 | + | |
| 105 | + doc.load onSuccess, onError, writeCache: true | |
| 106 | + return | |
| 107 | + | |
| 93 | 108 | welcomeBack: -> |
| 94 | 109 | visitCount = @settings.get('count') |
| 95 | 110 | @settings.set 'count', ++visitCount |
| @@ -21,6 +21,10 @@ class app.Collection · 20 unmodified lines | ||
| 21 | 21 | @models.push new (@model())(object) |
| 22 | 22 | return |
| 23 | 23 | |
| 24 | + remove: (model) -> | |
| 25 | + @models.splice @models.indexOf(model), 1 | |
| 26 | + return | |
| 27 | + | |
| 24 | 28 | size: -> |
| 25 | 29 | @models.length |
| 26 | 30 | |
| @@ -4,7 +4,10 @@ templates.sidebarDoc = (doc, options = {}) -> · 3 unmodified lines | ||
| 4 | 4 | link = """<a href="#{doc.fullPath()}" class="_list-item _icon-#{doc.slug} """ |
| 5 | 5 | link += if options.disabled then '_list-disabled' else '_list-dir' |
| 6 | 6 | link += """" data-slug="#{doc.slug}">""" |
| 7 | − link += """<span class="_list-arrow"></span>""" unless options.disabled | |
| 7 | + if options.disabled | |
| 8 | + link += """<span class="_list-enable" data-enable="#{doc.slug}">Enable</span>""" | |
| 9 | + else | |
| 10 | + link += """<span class="_list-arrow"></span>""" | |
| 8 | 11 | link += """<span class="_list-count">#{doc.version}</span>""" if doc.version |
| 9 | 12 | link + "#{doc.name}</a>" |
| 10 | 13 | |
| @@ -123,17 +123,24 @@ class app.views.DocList extends app.View · 122 unmodified lines | ||
| 123 | 123 | $.scrollTo @find("a[href='#{model.fullPath()}']"), null, 'top', margin: 0 |
| 124 | 124 | return |
| 125 | 125 | |
| 126 | − onClick: (event) => | |
| 127 | − return unless @disabledTitle and $.hasChild @disabledTitle, event.target | |
| 128 | − $.stopEvent(event) | |
| 129 | − | |
| 126 | + toggleDisabled: -> | |
| 130 | 127 | if @disabledTitle.classList.contains('open-title') |
| 131 | 128 | @removeDisabledList() |
| 132 | 129 | app.settings.set 'hideDisabled', true |
| 133 | 130 | else |
| 134 | 131 | @appendDisabledList() |
| 135 | 132 | app.settings.set 'hideDisabled', false |
| 133 | + return | |
| 136 | 134 | |
| 135 | + onClick: (event) => | |
| 136 | + if @disabledTitle and $.hasChild(@disabledTitle, event.target) | |
| 137 | + $.stopEvent(event) | |
| 138 | + @toggleDisabled() | |
| 139 | + else if slug = event.target.getAttribute('data-enable') | |
| 140 | + $.stopEvent(event) | |
| 141 | + doc = app.disabledDocs.findBy('slug', slug) | |
| 142 | + app.enableDoc(doc, @render, @render) | |
| 143 | + return | |
| 137 | 144 | |
| 138 | 145 | afterRoute: (route, context) => |
| 139 | 146 | if context.init |
| @@ -109,11 +109,9 @@ · 108 unmodified lines | ||
| 109 | 109 | } |
| 110 | 110 | } |
| 111 | 111 | |
| 112 | −._list-count { | |
| 112 | +._list-count, ._list-enable { | |
| 113 | 113 | float: right; |
| 114 | 114 | font-size: .75rem; |
| 115 | − color: $textColorLighter; | |
| 116 | − pointer-events: none; | |
| 117 | 115 | |
| 118 | 116 | .focus > &, |
| 119 | 117 | .active > & { |
| @@ -121,6 +119,22 @@ · 1 unmodified line | ||
| 121 | 119 | } |
| 122 | 120 | } |
| 123 | 121 | |
| 122 | +._list-count { | |
| 123 | + color: $textColorLighter; | |
| 124 | + pointer-events: none; | |
| 125 | + | |
| 126 | + ._list-disabled:hover > & { display: none; } | |
| 127 | +} | |
| 128 | + | |
| 129 | +._list-enable { | |
| 130 | + display: none; | |
| 131 | + color: $linkColor; | |
| 132 | + cursor: pointer; | |
| 133 | + | |
| 134 | + &:hover { text-decoration: underline; } | |
| 135 | + ._list-disabled:hover > & { display: block; } | |
| 136 | +} | |
| 137 | + | |
| 124 | 138 | // |
| 125 | 139 | // List hierarchy |
| 126 | 140 | // |