save: ->
console.log "#this.save!"
- id = @model.id or @model.get('slug')
+ id = @model.get('slug') or @model.id
@model.save {id}, {+wait}
false
changes = @model.changedAttributes()
options = @model.getOptions()
# console.log "Graph.changed( options ) ->\n\tchanges: #{JSON.stringify changes}\n\toptions: #{JSON.stringify options}" #"\n\t^opts: #{JSON.stringify _.intersection _.keys(changes), _.keys(options)}"
- @chart.updateOptions file:that if changes?.dataset
+ @chart?.updateOptions file:that if changes?.dataset
@chartOptions options, {+silent} if changes?.options
onScaffoldChange: (scaffold, value, key, field) ->
(v, k) -> [ k, dyglib.parseOption(k,v) ]
# Extract id from URL
- if match = /\/graph\/(?!view)([^\/?]+)/i.exec loc
+ if match = /\/graphs\/([^\/?]+)/i.exec loc
data.id = data.slug = match[1]
# _.dump _.clone(data.options), 'data.options'
parser = yaml.load
err, data <- fs.readFile file, 'utf8'
+ if 'ENOENT' is err?.code
+ return cb null, {}
if err
console.error "GraphController.autoload(#id, #{typeof cb}) -->\nerr"
return cb err
# GET /graphs/:graph
show: (req, res) ->
- res.send req.graph
+ if req.format is 'json'
+ res.send req.graph
+ else
+ res.render 'graph/view'
# GET /graphs/:graph/edit
edit: (req, res) ->
- res.send req.graph
+ if req.format is 'json'
+ res.send req.graph
+ else
+ res.render 'graph/edit'
# GET /graphs/new
new: (req, res) ->