events:
# Select the whole permalink URI text when it receives focus.
- 'focus .graph-permalink input' : 'onPermalinkFocus'
- 'click .export-button' : 'exportChart'
- # 'click .load-button' : 'load'
-
- 'focus .graph-permalink input' : 'onPermalinkFocus'
- # 'click .redraw-button' : 'stopAndRender'
- # 'click .load-button' : 'load'
++ 'focus .graph-permalink input' : 'onPermalinkFocus'
++ 'click .export-button' : 'exportChart'
++ # 'click .load-button' : 'load'
+
data : {}
ready : false
-
+
+
constructor: function GraphDisplayView
BaseView ...
return { width, height } unless @ready
# Remove old style, as it confuses dygraph after options update
- viewport = @$el.find '.viewport'
+ viewport = @$ '.viewport'
viewport.attr 'style', ''
- label = @$el.find '.graph-legend'
+ label = @$ '.graph-legend'
if width is 'auto'
- vpWidth = viewport.innerWidth()
- labelW = label.outerWidth()
+ vpWidth = viewport.innerWidth() or 300
+ labelW = label.outerWidth() or 228
width = vpWidth - labelW - 10 - (vpWidth - label.position().left - labelW)
width ?= modelW
if height is 'auto'
# last action that happens. If we don't
# defer, the focusing click will
# unselect the text.
- _.defer( ~> @$el.find '.graph-permalink input' .select() )
+ _.defer( ~> @$ '.graph-permalink input' .select() )
+
+
# Needed because (sigh) _.debounce returns undefined
stopAndRender: ->
@render ...
modelH = height = @model.get 'height'
return { width, height } unless @ready
+ viewport = @$ '.viewport'
+
# Remove old style, as it confuses dygraph after options update
- @viewport.attr 'style', ''
- label = @$el.find '.graph-label'
+ viewport.attr 'style', ''
+ label = @$ '.graph-label'
if width is 'auto'
- vpWidth = @viewport.innerWidth() or 300
- vpWidth = viewport.innerWidth()
- labelW = label.outerWidth()
++ vpWidth = viewport.innerWidth() or 300
+ labelW = label.outerWidth() or 228
width = vpWidth - labelW - 10 - (vpWidth - label.position().left - labelW)
width ?= modelW
if height is 'auto'
- height = @viewport.innerHeight() or 320
- height = viewport.innerHeight()
++ height = viewport.innerHeight() or 320
height ?= modelH
size = { width, height }
- _ = require 'underscore'
- fs = require 'fs'
- path = require 'path'
- yaml = require 'js-yaml'
- Seq = require 'seq'
-
+ fs = require 'fs'
+ path = require 'path'
{existsSync:exists} = path
+
+ _ = require 'underscore'
++Seq = require 'seq'
+ yaml = require 'js-yaml'
{mkdirp, mkdirpAsync} = require '../mkdirp'
+
+{ readJSONFilesAsync,
+} = require '../files'
+
Controller = require '../controller'
console.error that if err.stack
res.send { error:String(err), partial_data:data }
+ app.controller require './controllers/datasource'
+
+
app.get '/', (req, res) ->
- res.render 'dashboard'
+ ### XXX: Temporary, while I implement backwards compat with the old data format
+ # res.render 'dashboard'
+ res.redirect '/graphs/ohai/edit'
+app.get '/geo', (req, res) ->
+ res.render 'geo'
+
app.get '/:type/:action/?', (req, res, next) ->
{type, action} = req.params
if exists "#WWW/#type/#action.jade"
- section#graph-list
+ section#dashboard
.page-header
- h1 Wikimedia Report Card
- small February 2012
+ h1 Wikimedia Report Card
+ small March 2012
- section#graphs
+ .row
+ .graphs.tabbable
+ nav
+ ul.nav.subnav.nav-pills
+ li: h3 Graphs
+ li.active: a(href="#core-graphs", data-toggle="tab") Core
+ li: a(href="#other-graphs", data-toggle="tab") Others
+ if ENV == 'dev'
+ li: a(href="#dev-graphs", data-toggle="tab") Dev
+
+ .tab-content
+ .core-graphs-pane.tab-pane.active(id="core-graphs")
+ .other-graphs-pane.tab-pane(id="other-graphs")
+ if ENV == 'dev'
+ .dev-graphs-pane.tab-pane(id="dev-graphs")
+
include browser-helpers
- var graph_id = view.id
- section.graph-display.graph(id=view.id)
-
+ section.graph-display.graph(id=graph_id)
+
.graph-name-row.page-header.row-fluid
-- h2.graph-name
++ h2.graph-name
a(id="graph-title", href="#{model.toLink()}") #{name}
.graph-viewport-row.row-fluid
.viewport
.graph-legend
- .graph-details-row.row-fluid
- .graph-desc.span6
+ .graph-details-row.row
+ .span7.offset1.graph-desc
- != jade.filters.markdown(desc)
-
+ != jade.filters.markdown(desc)
-
- .span8
- .graph-permalink
- input.span6(value="#{model.toPermalink()}", readonly="readonly")
-
- .graph-notes
- != jade.filters.markdown(notes)
-
++
+ .graph-details-row.row
- .span6.offset1.graph-permalink
- input.span6(value="#{model.toPermalink()}", readonly="readonly")
++ .span6.offset1.graph-permalink
++ input.span6(value="#{model.toPermalink()}", readonly="readonly")
+ if ENV == 'dev'
+ .span1.a.export-button.btn(href="#")
+ i.icon-file
+ | Export
-
++
+ .graph-details-row.row
+ .span6.offset1.graph-notes
- != jade.filters.markdown(notes)
-
-
++ != jade.filters.markdown(notes)
++
+