Skip to content

Commit

Permalink
Closes #32. Reimplement showing messages (loading and errors)
Browse files Browse the repository at this point in the history
Complete implementation of PreviewView extending EditorView.
  • Loading branch information
Glavin001 committed Aug 10, 2014
1 parent daabc1e commit 5c723c4
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 5 deletions.
8 changes: 8 additions & 0 deletions lib/preview-message-view.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{View} = require 'atom'
module.exports =
class PreviewMessageView extends View
@content: ->
@div =>
@div
class: 'overlay from-top'
outlet: 'message'
61 changes: 56 additions & 5 deletions lib/preview-view.coffee
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
{$, $$$, EditorView} = require 'atom'
path = require 'path'
_ = require 'underscore-plus'
TextBuffer = atom.deserializers.deserializers.TextBuffer
Editor = atom.deserializers.deserializers.Editor
renderers = require './renderer'
PreviewMessageView = require './preview-message-view.coffee'
analyticsWriteKey = "bp0dj6lufc"
pkg = require "../package"
version = pkg.version
# FIXME: TextBuffer and Editor should be exposed from Atom
TextBuffer = atom.deserializers.deserializers.TextBuffer
Editor = atom.deserializers.deserializers.Editor

module.exports =
class PreviewView extends EditorView
Expand All @@ -21,17 +23,23 @@ class PreviewView extends EditorView
editor = new Editor(buffer: buffer)
# Initialize the EditorView
super(editor)
# Add classes
@addClass('preview-container')
# Empty to start
editor.setText ''

# Attach the MessageView
@messageView = new PreviewMessageView()
@showLoading()

# Setup Observers
# Update on Tab Change
atom.workspaceView.on \
'pane-container:active-pane-item-changed', @handleTabChanges
# Setup debounced renderer
atom.config.observe 'preview.refreshDebouncePeriod', \
(wait) =>
console.log "update debounce to #{wait} ms"
# console.log "update debounce to #{wait} ms"
@debouncedRenderPreview = _.debounce @renderPreview.bind(@), wait

# Setup Analytics
Expand All @@ -52,6 +60,7 @@ class PreviewView extends EditorView
@renderPreview()

destroy: ->
@messageView.detach()
@unsubscribe()
atom.workspaceView.off \
'pane-container:active-pane-item-changed', @handleTabChanges
Expand Down Expand Up @@ -118,6 +127,7 @@ class PreviewView extends EditorView
editor.setGrammar grammar
editor.setText result
@redraw()
@hideMessage()
# Start preview processing
try
grammar = cEditor.getGrammar().name
Expand Down Expand Up @@ -182,5 +192,46 @@ class PreviewView extends EditorView
category: version
}
return @showError e
showLoading: () ->
showError: () ->

showError: (result) ->
failureMessage = result?.message
@showMessage()
@messageView.message.html $$$ ->
@div
class: 'preview-spinner'
style: 'text-align: center'
=>
@span
class: 'loading loading-spinner-large inline-block'
@div
class: 'text-highlight',
'Previewing Failed\u2026'
=>
@div
class: 'text-error'
failureMessage if failureMessage?
@div
class: 'text-warning'
result?.stack

showLoading: ->
@showMessage()
@messageView.message.html $$$ ->
@div
class: 'preview-spinner'
style: 'text-align: center'
=>
@span
class: 'loading loading-spinner-large inline-block'
@div
class: 'text-highlight',
'Loading Preview\u2026'

showMessage: ->
if not @messageView.hasParent()
editorContents = $('.editor-contents', @element)
editorContents.append @messageView

hideMessage: ->
if @messageView.hasParent()
@messageView.detach()

0 comments on commit 5c723c4

Please sign in to comment.