// Generated by CoffeeScript 1.10.0 (function() { var END, MARGIN, MARGIN_BOTTOM, MARGIN_LEFT, START, STEP, chart, chart_height, chart_width, forum, height, keyword, line_generator, redraw, svg, width, x, y; MARGIN = 20; MARGIN_LEFT = 20; MARGIN_BOTTOM = 40; keyword = 'cocaine'; forum = 'drugsforum'; START = 946598400; END = 1450310400; STEP = 604800; svg = d3.select('svg'); width = svg.node().getBoundingClientRect().width; height = svg.node().getBoundingClientRect().height; chart_width = width - 2 * MARGIN - MARGIN_LEFT; chart_height = height - 2 * MARGIN - MARGIN_BOTTOM; chart = svg.append('g').attr({ transform: "translate(" + (MARGIN + MARGIN_LEFT) + " " + MARGIN + ")" }); x = d3.time.scale().range([0, chart_width]); y = d3.scale.linear().range([chart_height, 0]); line_generator = d3_shape.area().x(function(d) { return x(d.date); }).y1(function(d) { return y(d.value); }).y0(function(d) { return y(0); }).curve(d3_shape.stepAfter); redraw = function() { d3.select('body').classed('wait', true); return d3.json("http://wafi.iit.cnr.it/cas-scraper2/api/timeseries/getTermTs.php?db=" + forum + "&term=" + keyword + "&start=" + START + "&end=" + END + "&step=" + STEP, function(result) { var data, end, index, start, xAxis, yAxis; d3.select('body').classed('wait', false); start = new Date(START * 1000); end = new Date(END * 1000 + (STEP * 1000)); index = {}; result.data.forEach(function(d) { d.date = 1000 * d.date; return index[d.date] = d; }); data = d3.range(+start, +end, STEP * 1000).map(function(k) { if (k in index) { return index[k]; } else { return { date: new Date(k), value: 0 }; } }); data.forEach(function(d) { return d.date = new Date(d.date); }); x.domain([start, end]); y.domain([ 0, d3.max(data, function(d) { return d.value; }) ]); data.push({ date: end, value: null }); xAxis = d3.svg.axis().orient("bottom").ticks(d3.time.year, 1).scale(x); yAxis = d3.svg.axis().orient("left").scale(y); chart.selectAll('*').remove(); chart.append("g").attr("class", "xaxis").attr("transform", "translate(0," + (chart_height + 0.5) + ")").call(xAxis); chart.append("g").attr("class", "yaxis").call(yAxis); return chart.append('path').datum(data).attr({ "class": 'area', d: line_generator, fill: 'orange' }); }); }; d3.select("#keyword").node().value = keyword; d3.select("#keyword").on('keyup', function() { if (d3.event.keyCode === 13) { keyword = this.value.replace(/ and /gi, "%2BAND%2B").replace(/ or /gi, "%2BOR%2B").replace(/-/g, "%2D").replace(/ /g, "%2B"); return redraw(); } }); d3.select("#forum_ctrl").on("change", function() { forum = this.options[this.selectedIndex].value; return redraw(); }); redraw(); }).call(this);