Skip to content

Instantly share code, notes, and snippets.

@ggoodman
Created December 13, 2011 00:06
Show Gist options
  • Save ggoodman/1469758 to your computer and use it in GitHub Desktop.
Save ggoodman/1469758 to your computer and use it in GitHub Desktop.
Lumbar interface brainstorming
lumbar.view "edit.topbar",
template: ->
div ->
h1 "Gister"
h2 $m("gist.description")
lumbar.view "edit.sidebar.filename",
template: ->
class = if @filename == $m("active.filename") then "active" else "inactive"
li class: class ->
a href: "#edit/#{$v('gist.id')}/#{@filename}", @filename
lumbar.view "edit.sidebar.version",
template: ->
li @id
lumbar.view "edit.sidebar.fork",
template: ->
li @id
lumbar.view "edit.sidebar",
template: ->
details ".files", ->
summary "Files"
ul ->
$v("edit.sidebar.filename", file) for file in $m("gist.files")
details ".mixins", ->
summary "Mixins"
ul ->
details ".versions", ->
summary "Versions"
ul ->
$v("edit.sidebar.version", version) for version in $m("gist.versions")
details ".forks", ->
summary "Forks"
ul ->
$v("edit.sidebar.fork", fork) for fork in $m("gist.forks")
lumbar.view "edit.editor",
modes:
text: require("ace/mode/text").Mode
HTML: require("ace/mode/html").Mode
css: require("ace/mode/css").Mode
js: require("ace/mode/javascript").Mode
CoffeeScript: require("ace/mode/coffee").Mode
template: ->
div "#editor-canvas", ->
initialize: ->
@editor = ace.edit("editor-canvas")
@sessions = {}
EditSession = require("ace/edit_session").EditSession
self = @
$m("active").bind "change:filename", ->
json = @toJSON()
unless self.sessions[json.filename]
mode = self.modes[json.language or "text"] or self.modes.text
self.sessions[json.filename] = new EditSession(json.content)
self.sessions[json.filename].setMode(new mode)
self.editor.setSession(self.sessions[filename])
lumbar.view "edit",
template: ->
div "#topbar", $v("gister.topbar")
div "#sidebar", $v("gister.sidebar")
div "#editor", $v("gister.editor")
lumbar.page "edit",
view: "edit"
routes:
"/edit/(?:(\d+)(?:/([^/]+))?)?": (gistId, filename) ->
activate = (err) ->
if err then throw new Error("Error: #{err}")
$m("active", $m("gist.files").get(filename))
if $m("gist.id") != gistId then $m("gist").load gistId, activate
else activate()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment