Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 13th, 2012  |  syntax: None  |  size: 1.46 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. var jsdom = require("jsdom"),
  2.     jq    = require('jquery'),
  3.     fs    = require('fs'),
  4.     canvas = require('canvas');
  5.  
  6. exports.bg = function(req, res) {
  7.   var document = jsdom.jsdom(),
  8.   window = document.createWindow(),
  9.   jQuery = jq.create(window),  
  10.   script = document.createElement("script");
  11.  
  12.   window.Canvas = canvas;
  13.   script.src = 'file://' + __dirname + '/public/javascripts/jquery.flot.js';
  14.   script.onload = function ()
  15.   {
  16.     var i, d1 = [], d2 = [], d3 = [];
  17.     for (i = 10; --i;) d1.push([i, parseInt(Math.random() * 30)]);
  18.     for (i = 10; --i;) d2.push([i, parseInt(Math.random() * 30)]);
  19.     for (i = 10; --i;) d3.push([i, parseInt(Math.random() * 30)]);
  20.    
  21.     var defaults = {
  22.       lines: { show: true, fill: true, steps: false },
  23.       bars: { show: false, barWidth: 0.6 }
  24.     };
  25.    
  26.     var data = [
  27.     jQuery.extend(true, {}, defaults, {data: d1}),
  28.     jQuery.extend(true, {}, defaults, {data: d2}),
  29.     jQuery.extend(true, {}, defaults, {data: d3})
  30.     ];
  31.    
  32.     var options = {
  33.       width: 600, height: 300,
  34.       grid: {clickable: true, hoverable: true}
  35.     };
  36.    
  37.     var placeholder = jQuery(''), // empty jQuery object
  38.     plot = jQuery.plot(placeholder, data, options),
  39.     node_canvas = plot.getCanvas(),
  40.     ctx = node_canvas.getContext('2d');
  41.    
  42.     node_canvas.toBuffer(function(err, buf){
  43.       res.send(buf, { 'Content-Type': 'image/png' });
  44.     });
  45.   };
  46.   document.head.appendChild(script);  
  47. };