From: dsc Date: Fri, 24 Feb 2012 19:59:18 +0000 (-0800) Subject: Adds endpoints for listing all dataset metadata files in /data, and a metadata file... X-Git-Url: http://git.less.ly:3516/?a=commitdiff_plain;h=bb0bf579525a55644d455f9bbdd594bfa9deaa5f;p=kraken-ui.git Adds endpoints for listing all dataset metadata files in /data, and a metadata file for page_views_by_language --- diff --git a/data/page_views_by_language.yaml b/data/page_views_by_language.yaml new file mode 100644 index 0000000..724a59a --- /dev/null +++ b/data/page_views_by_language.yaml @@ -0,0 +1,18 @@ +id : page_views_by_language +name : Pageviews by Language +format : csv +url : /data/page_views_by_language.csv + +timespan : + start : 2008-01 + end : 2011-11 + step : 1mo + +columns : + labels : [ Month, Russian, All, English, German, French, Japanese, Spanish ] + types : [ date, int, int, int, int, int, int, int ] + +chart : + library : dygraphs + options : {} + diff --git a/lib/server/server.co b/lib/server/server.co index 2f7ff0d..1dded9e 100755 --- a/lib/server/server.co +++ b/lib/server/server.co @@ -5,6 +5,8 @@ path = require 'path' {exec, spawn} = require 'child_process' _ = require 'underscore' +Seq = require 'seq' +yaml = require 'js-yaml' mime = require 'mime' express = require 'express' compiler = require 'connect-compiler-extras' @@ -110,6 +112,40 @@ app.configure -> app.get '/', (req, res) -> res.render 'dashboard' + +YAML_EXT_PAT = /\.ya?ml$/i + +app.get '/data/list', (req, res, next) -> + fs.readdir "#CWD/data", (err, files) -> + res.send do + files.filter -> /\.(json|ya?ml)$/i.test it + .map -> "/data/#it".replace YAML_EXT_PAT, '.json' + +app.get '/data/all', (req, res, next) -> + data = {} + files = [] + Seq() + .seq fs.readdir, "#CWD/data", Seq, + .flatten() + .filter -> /\.(json|ya?ml)$/.test it + .seq -> + files := @stack.slice() + @ok @stack + .parMap (f) -> fs.readFile "#CWD/data/#f", 'utf8', this + .parMap (text, i) -> + f = files[i] + k = f.replace YAML_EXT_PAT, '.json' + v = data[k] = {} + try + if YAML_EXT_PAT.test f + v = data[k] = yaml.load text + else + v = data[k] = JSON.parse text + @ok v + catch err + this err + .seq -> res.send data + app.get '/:type/:action', (req, res, next) -> {type, action} = req.params if path.existsSync "#WWW/#type/#action.jade"