Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

breaking how absolutely everything works so that i can make something…

… else work. i really hope you dont depend on the master.
  • Loading branch information...
commit 407dc2acfb20328c4712cd6843ce0fcf4bea54e5 1 parent 0ef2b54
@linked authored
View
1,108 autographs/index.html
@@ -1,12 +1,1112 @@
<html>
<head>
- <title>AutoGraphs Demo</title>
- <script type="text/javascript" src="/graph.js?debug=true&area=zero&pk=countMany"></script>
+ <title>Test Playground</title>
+ <link rel=stylesheet href="/js/style.css">
+<script src='/js/jquery.min.js'></script>
+<script src='/js/d3.js'></script>
+<script src='/js/nvd3.js'></script>
+<script src='/js/hailwhale.js'></script>
</head>
<body>
- <h1>Graphs with only script tags!</h1>
- <div id="hailwhale_graphs"></div>
+ <div class="chart" id="main-chart"><svg style='height:500px' /></div>
+ <script>
+
+nv.addGraph(function() {
+ var chart = nv.models.lineChart();
+
+ chart.xAxis
+ .axisLabel('Time (ms)')
+ .tickFormat(d3.format(',r'));
+
+ chart.yAxis
+ .axisLabel('Voltage (v)')
+ .tickFormat(d3.format('.02f'));
+
+ d3.select('#chart svg')
+ .datum(sinAndCos())
+ .transition().duration(500)
+ .call(chart);
+
+ nv.utils.windowResize(function() { d3.select('#chart svg').call(chart) });
+
+ return chart;
+});
+
+
+
+
+/**************************************
+ * Simple test data generator
+ */
+
+
+function sinAndCos() {
+ var sin = [],
+ cos = [];
+
+ for (var i = 0; i < 100; i++) {
+ sin.push({x: i, y: Math.sin(i/10)});
+ cos.push({x: i, y: .5 * Math.cos(i/10)});
+ }
+
+ return [
+ {
+ values: sin,
+ key: 'Sine Wave',
+ color: '#ff7f0e'
+ },
+ {
+ values: cos,
+ key: 'Cosine Wave',
+ color: '#2ca02c'
+ }
+ ];
+}
+
+ </script>
+<table width="100%" class="table table-striped datatables"
+ data-sort=""
+ data-len=5 data-uri="/apps/?&json=true"
+ data-daterange=today
+ data-hw-target="#main-chart"
+ >
+ <thead>
+ <tr>
+
+ <th data-name="id" rel="tooltip" title="">
+ Id
+ </th>
+
+ <th data-name="name" rel="tooltip" title="">
+ Name
+ </th>
+
+ <th data-name="all_time_installs" rel="tooltip" title="">
+ All_time_installs
+ </th>
+
+ <th data-name="currently_active_installs" rel="tooltip" title="">
+ Currently_active_installs
+ </th>
+
+ <th data-name="download_impressions" rel="tooltip" title="">
+ Download Button Impressions
+ </th>
+
+ <th data-name="download_impressions/market_clicks" rel="tooltip" title="">
+ Download Button CTR
+ </th>
+
+ <th data-name="market_clicks" rel="tooltip" title="">
+ Clicks to Market
+ </th>
+
+ <th data-name="tracked_installs/clicks" rel="tooltip" title="">
+ Tracked Install Rate
+ </th>
+
+ <th data-name="tracked_installs" rel="tooltip" title="">
+ Tracked Installs
+ </th>
+
+ <th data-name="organic_installs" rel="tooltip" title="">
+ Organic Installs
+ </th>
+
+ </tr>
+ </thead>
+ <tbody>
+
+
+ <tr><td>a8223b38b6ce75bed1e5b5f042dae802759e6201</td>
+ <td><a href="/apps/a8223b38b6ce75bed1e5b5f042dae802759e6201?">Leadshare Twilight</a></td>
+ <td>0</td>
+ <td>0</td>
+ <td><table data-hw-pk="['CricketApp', u'a8223b38b6ce75bed1e5b5f042dae802759e6201']" data-hw-name="Leadshare Twilight" data-hw-dimension="_" data-metric="download_impressions"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'a8223b38b6ce75bed1e5b5f042dae802759e6201']" data-hw-name="Leadshare Twilight" data-hw-dimension="_" data-metric="download_impressions/market_clicks"><tr><td>Mon May 28 2012</td><td>0.00%</td></tr>
+<tr><td>Tue May 29 2012</td><td>0.00%</td></tr>
+<tr><td>Wed May 30 2012</td><td>0.00%</td></tr>
+<tr><td>Thu May 31 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0.00%</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'a8223b38b6ce75bed1e5b5f042dae802759e6201']" data-hw-name="Leadshare Twilight" data-hw-dimension="_" data-metric="market_clicks"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'a8223b38b6ce75bed1e5b5f042dae802759e6201']" data-hw-name="Leadshare Twilight" data-hw-dimension="_" data-metric="tracked_installs/clicks"><tr><td>Mon May 28 2012</td><td>0.00%</td></tr>
+<tr><td>Tue May 29 2012</td><td>0.00%</td></tr>
+<tr><td>Wed May 30 2012</td><td>0.00%</td></tr>
+<tr><td>Thu May 31 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0.00%</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'a8223b38b6ce75bed1e5b5f042dae802759e6201']" data-hw-name="Leadshare Twilight" data-hw-dimension="_" data-metric="tracked_installs"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'a8223b38b6ce75bed1e5b5f042dae802759e6201']" data-hw-name="Leadshare Twilight" data-hw-dimension="_" data-metric="organic_installs"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td></tr>
+
+ <tr><td>co.lwb.twilightquiz</td>
+ <td><a href="/apps/co.lwb.twilightquiz?">twilight</a></td>
+ <td>0</td>
+ <td>0</td>
+ <td><table data-hw-pk="['CricketApp', u'co.lwb.twilightquiz']" data-hw-name="twilight" data-hw-dimension="_" data-metric="download_impressions"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'co.lwb.twilightquiz']" data-hw-name="twilight" data-hw-dimension="_" data-metric="download_impressions/market_clicks"><tr><td>Mon May 28 2012</td><td>0.00%</td></tr>
+<tr><td>Tue May 29 2012</td><td>0.00%</td></tr>
+<tr><td>Wed May 30 2012</td><td>0.00%</td></tr>
+<tr><td>Thu May 31 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0.00%</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'co.lwb.twilightquiz']" data-hw-name="twilight" data-hw-dimension="_" data-metric="market_clicks"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'co.lwb.twilightquiz']" data-hw-name="twilight" data-hw-dimension="_" data-metric="tracked_installs/clicks"><tr><td>Mon May 28 2012</td><td>0.00%</td></tr>
+<tr><td>Tue May 29 2012</td><td>0.00%</td></tr>
+<tr><td>Wed May 30 2012</td><td>0.00%</td></tr>
+<tr><td>Thu May 31 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0.00%</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'co.lwb.twilightquiz']" data-hw-name="twilight" data-hw-dimension="_" data-metric="tracked_installs"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0/td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'co.lwb.twilightquiz']" data-hw-name="twilight" data-hw-dimension="_" data-metric="organic_installs"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td></tr>
+
+ <tr><td>JAVA_ERROR</td>
+ <td><a href="/apps/JAVA_ERROR?">unnamed app</a></td>
+ <td>0</td>
+ <td>0</td>
+ <td><table data-hw-pk="['CricketApp', u'JAVA_ERROR']" data-hw-name="unnamed app" data-hw-dimension="_" data-metric="download_impressions"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'JAVA_ERROR']" data-hw-name="unnamed app" data-hw-dimension="_" data-metric="download_impressions/market_clicks"><tr><td>Mon May 28 2012</td><td>0.00%</td></tr>
+<tr><td>Tue May 29 2012</td><td>0.00%</td></tr>
+<tr><td>Wed May 30 2012</td><td>0.00%</td></tr>
+<tr><td>Thu May 31 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0.00%</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'JAVA_ERROR']" data-hw-name="unnamed app" data-hw-dimension="_" data-metric="market_clicks"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'JAVA_ERROR']" data-hw-name="unnamed app" data-hw-dimension="_" data-metric="tracked_installs/clicks"><tr><td>Mon May 28 2012</td><td>0.00%</td></tr>
+<tr><td>Tue May 29 2012</td><td>0.00%</td></tr>
+<tr><td>Wed May 30 2012</td><td>0.00%</td></tr>
+<tr><td>Thu May 31 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0.00%</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'JAVA_ERROR']" data-hw-name="unnamed app" data-hw-dimension="_" data-metric="tracked_installs"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'JAVA_ERROR']" data-hw-name="unnamed app" data-hw-dimension="_" data-metric="organic_installs"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td></tr>
+
+ <tr><td>me.tickletouch.batterymaster</td>
+ <td><a href="/apps/me.tickletouch.batterymaster?">batterymaster</a></td>
+ <td>0</td>
+ <td>0</td>
+ <td><table data-hw-pk="['CricketApp', u'me.tickletouch.batterymaster']" data-hw-name="batterymaster" data-hw-dimension="_" data-metric="download_impressions"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'me.tickletouch.batterymaster']" data-hw-name="batterymaster" data-hw-dimension="_" data-metric="download_impressions/market_clicks"><tr><td>Mon May 28 2012</td><td>0.00%</td></tr>
+<tr><td>Tue May 29 2012</td><td>0.00%</td></tr>
+<tr><td>Wed May 30 2012</td><td>0.00%</td></tr>
+<tr><td>Thu May 31 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0.00%</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'me.tickletouch.batterymaster']" data-hw-name="batterymaster" data-hw-dimension="_" data-metric="market_clicks"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'me.tickletouch.batterymaster']" data-hw-name="batterymaster" data-hw-dimension="_" data-metric="tracked_installs/clicks"><tr><td>Mon May 28 2012</td><td>0.00%</td></tr>
+<tr><td>Tue May 29 2012</td><td>0.00%</td></tr>
+<tr><td>Wed May 30 2012</td><td>0.00%</td></tr>
+<tr><td>Thu May 31 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0.00%</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'me.tickletouch.batterymaster']" data-hw-name="batterymaster" data-hw-dimension="_" data-metric="tracked_installs"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'me.tickletouch.batterymaster']" data-hw-name="batterymaster" data-hw-dimension="_" data-metric="organic_installs"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td></tr>
+
+ <tr><td>mortgagedropnotifier</td>
+ <td><a href="/apps/mortgagedropnotifier?">None</a></td>
+ <td>0</td>
+ <td>0</td>
+ <td><table data-hw-pk="['CricketApp', u'mortgagedropnotifier']" data-hw-name="None" data-hw-dimension="_" data-metric="download_impressions"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'mortgagedropnotifier']" data-hw-name="None" data-hw-dimension="_" data-metric="download_impressions/market_clicks"><tr><td>Mon May 28 2012</td><td>0.00%</td></tr>
+<tr><td>Tue May 29 2012</td><td>0.00%</td></tr>
+<tr><td>Wed May 30 2012</td><td>0.00%</td></tr>
+<tr><td>Thu May 31 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0.00%</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'mortgagedropnotifier']" data-hw-name="None" data-hw-dimension="_" data-metric="market_clicks"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'mortgagedropnotifier']" data-hw-name="None" data-hw-dimension="_" data-metric="tracked_installs/clicks"><tr><td>Mon May 28 2012</td><td>0.00%</td></tr>
+<tr><td>Tue May 29 2012</td><td>0.00%</td></tr>
+<tr><td>Wed May 30 2012</td><td>0.00%</td></tr>
+<tr><td>Thu May 31 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0.00%</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0.00%</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0.00%</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0.00%</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0.00%</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0.00%</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0.00%</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0.00%</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'mortgagedropnotifier']" data-hw-name="None" data-hw-dimension="_" data-metric="tracked_installs"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td>
+ <td><table data-hw-pk="['CricketApp', u'mortgagedropnotifier']" data-hw-name="None" data-hw-dimension="_" data-metric="organic_installs"><tr><td>Mon May 28 2012</td><td>0</td></tr>
+<tr><td>Tue May 29 2012</td><td>0</td></tr>
+<tr><td>Wed May 30 2012</td><td>0</td></tr>
+<tr><td>Thu May 31 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 01 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 02 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 03 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 04 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 05 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 06 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 07 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 08 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 09 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 10 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 11 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 12 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 13 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 14 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 15 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 16 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 17 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 18 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 19 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 20 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 21 2012</td><td>0</td></tr>
+<tr><td>Fri Jun 22 2012</td><td>0</td></tr>
+<tr><td>Sat Jun 23 2012</td><td>0</td></tr>
+<tr><td>Sun Jun 24 2012</td><td>0</td></tr>
+<tr><td>Mon Jun 25 2012</td><td>0</td></tr>
+<tr><td>Tue Jun 26 2012</td><td>0</td></tr>
+<tr><td>Wed Jun 27 2012</td><td>0</td></tr>
+<tr><td>Thu Jun 28 2012</td><td>0</td></tr></table></td></tr>
+
+
+ </tbody>
+ </table>
</body>
</html>
View
57 hailwhale/whale.py
@@ -6,7 +6,7 @@
import urllib
from redis import Redis
-from collections import defaultdict
+from collections import defaultdict, OrderedDict
from datetime import datetime, timedelta
from util import *
@@ -140,7 +140,7 @@ def curry_whale_instance_methods(self, attr='id'):
for method in ['plotpoints', 'ratio_plotpoints', 'scalar_plotpoints',
'totals', 'count_now', 'count_decided_now', 'decide',
'weighted_reasons', 'reasons_for', 'graph_tag', 'today',
- 'yesterday', 'update_count_to', 'total']:
+ 'yesterday', 'update_count_to', 'total', 'render_divs']:
curry_instance_attribute(attr, method, self,
with_class_name=True)
# Currying for related models as
@@ -267,7 +267,7 @@ def cached_plotpoints(cls, *args, **kwargs):
@classmethod
def scalar_plotpoints(cls, pk, dimensions=None, metrics=None,
- depth=0, period=None, flot_time=False, points_type=dict):
+ depth=0, period=None, flot_time=False, points_type=OrderedDict):
metrics = metrics or ['hits']
if isinstance(metrics, basestring):
metrics = [metrics]
@@ -314,7 +314,8 @@ def scalar_plotpoints(cls, pk, dimensions=None, metrics=None,
@classmethod
def ratio_plotpoints(cls, pk, numerator_metric, denomenator_metric='hits',
- dimensions=None, depth=0, period=None, flot_time=False, points_type=dict):
+ dimensions=None, depth=0, period=None, flot_time=False,
+ points_type=OrderedDict):
if flot_time:
points_type = list
top, bot = numerator_metric, denomenator_metric
@@ -325,12 +326,12 @@ def ratio_plotpoints(cls, pk, numerator_metric, denomenator_metric='hits',
# The function that makes the ratios
def ratio_func(tup):
dim, mets = tup
- tgt_iter = points_type is dict and mets[bot].items() or mets[bot]
+ tgt_iter = issubclass(points_type, dict) and mets[bot].items() or mets[bot]
# A function to get the numerator from either points_type=dict or points_type=list
def get_top(dt):
# Easy, just use the dict index
- if points_type is dict:
+ if issubclass(points_type, dict):
return mets[top][dt]
# Complicated, use i-based index
else:
@@ -375,6 +376,50 @@ def total(cls, pk, metric, dimension='_', period=None, at=None, index=None,
return bot_tot and top_tot/bot_tot or 0
@classmethod
+ def render_divs(cls, pk, metric, dimension='_', period=None, at=None,
+ tzoffset=None, format=None, hidden=False):
+ period, ats, tzoffset = Period.get_days(period, at, tzoffset=tzoffset)
+ top, bot = parse_formula(metric)
+ pps = cls.plotpoints(pk, dimension, metric, period=period)
+ ppsm = pps[dimension][metric]
+ if not format:
+ if bot:
+ format = 'pct'
+ else:
+ format = 'grouped'
+ def fmt(v):
+ import locale
+ if v == 'None':
+ v = None
+ f = format
+ if f == 'int':
+ f = lambda s: int(float(s or 0))
+ elif f == 'float':
+ v = v or 0.0
+ f = float
+ elif f == 'grouped':
+ v = v or 0
+ f = lambda s: locale.format('%d', int(float(s)), True)
+ elif f in ['pct', 'percent', '%', 'ratio']:
+ v = v and float(v)*100 or 0
+ f = lambda s: '%.2f%%'%s
+ elif f in ['cash', 'money', 'usd', '$', 'dollars', 'cents']:
+ v = v and float(v) or 0.0
+ if f == 'cents':
+ v = v/100.0
+ f = locale.currency
+ if not f:
+ return v
+ return callable(f) and f(v) or v
+ hidden = hidden and 'style="display: none"' or ''
+ rep = lambda s: s.format(pk=pk, metric=metric, dimension=dimension, hidden=hidden)
+ table = rep('<table {hidden} data-hw-pk="{pk}" data-hw-name="{{name}}" \
+ data-hw-dimension="{dimension}" data-metric="{metric}">')+'\n'.join([
+ '<tr><td>%s</td><td>%s</td></tr>'%(at.replace(' 00:00:00', ''), fmt(count) )
+ for at, count in ppsm.items()])+'</table>'
+ return table
+
+ @classmethod
def today(cls, pk, metric, dimension='_'):
return cls.total(pk, metric, dimension, Period.all_sizes()[1],
at=cls.now())
View
48 hailwhale/wsgi.py
@@ -177,6 +177,54 @@ def hw_decoded(t):
return str(uid)
+@route('/table_graph.js')
+def table_graph():
+ from periods import Period
+ params = {
+ 'tzoffset': g('tzoffset', 0.0),
+ 'period': g('period', str(Period.get(None))),
+ }
+ debug = g('debug', False)
+ table = g('table', '')
+ height = g('height', '300px')
+ delay = g('delay', 0)
+ hwurl = req.GET.get('hwurl', req.url.split('table_graph.js')[0])
+ include_string = \
+"document.write(\"<scr\" + \"ipt type='text/javascript' src='%sjs/jquery.min.js'></script>\");"%hwurl
+ include_string += \
+"document.write(\"<scr\" + \"ipt type='text/javascript' src='%sjs/hailwhale.js'></script>\");"%hwurl
+ include_string += \
+"document.write(\"<scr\" + \"ipt type='text/javascript' src='%sjs/d3.js'></script>\");"%hwurl
+ include_string += \
+"document.write(\"<scr\" + \"ipt type='text/javascript' src='%sjs/nvd3.js'></script>\");"%hwurl
+
+ return_string = '''
+appended=false;\n
+function jqinit() {{\n
+ if(typeof(jQuery) == 'undefined' || typeof(jQuery.hailwhale) == 'undefined') {{\n
+ if(!appended) {{\n
+ appended = true;\n
+ {include_string}\n
+ }}\n
+ setTimeout(jqinit, 250);\n
+ }} else {{\n
+ $(function() {{\n
+ init_graphs =function() {{
+ $.hailwhale('{hwurl}').graph_tables('{table}', {options});\n
+ }}
+ setTimeout(init_graphs, {delay});
+ if(ui_loaded_funcs)
+ ui_loaded_funcs.init_graphs = init_graphs;
+ }});\n
+ }}
+}}
+jqinit();\n
+
+
+ '''.format( include_string=include_string, table=table, delay=delay,
+ hwurl=hwurl, options=util.maybe_dumps(params))
+ return return_string
+
@route('/graph.js')
def graph():
View
2,397 js/d3.js
1,274 additions, 1,123 deletions not shown
View
2  js/hailwhale.dev_includes.html
@@ -1,4 +1,4 @@
<script src='/js/jquery.min.js'></script>
-<script src='/js/highcharts.src.js'></script>
<script src='/js/d3.js'></script>
+<script src='/js/nvd3.js'></script>
<script src='/js/hailwhale.js'></script>
View
325 js/hailwhale.js
@@ -4,6 +4,45 @@
$ = jQuery;
$.charts = $.charts || [];
+ var render_graph = function(target) {
+ $(target).attr('data-redraw', function() {
+ selectors = $(target).attr('data-selector').split(',');
+ metric = $(target).attr('data-metric');
+ tables = $.map(selectors, function(s) {
+ return $(s+ ' table[data-metric="'+metric+'"]')});
+ datum = d3.range(tables.length).map(function(i) {
+ t = tables[i]
+ return {
+ key: $(t).attr('data-hw-name'),
+ color: $(t).attr('data-hw-color'),
+ values: $.map($('tr', t), function(data_row) {
+ cells = $('td', data_row);
+ if(cells.length != 2)
+ return;
+ if(cells[1].innerText != '0')
+ console.log(cells);
+ return {x: new Date(cells[0].innerText), y: parseFloat(cells[1].innerText)};})
+ };
+ }, tables);
+ var chart = nv.models.lineChart()
+ //.color(d3.scale.category10().range());
+ chart.xAxis
+ .tickFormat(function(d) {
+ return d3.time.format('%x')(new Date(d))
+ });
+
+ chart.yAxis
+ .tickFormat(d3.format(',.1'));
+ svg = $('svg', target);
+ d3.select(svg[0])
+ .datum(datum)
+ .transition().duration(500)
+ .call(chart);
+ nv.utils.windowResize(chart.update);
+ return chart;
+ });
+ $(target).attr('data-redraw');
+ }
$.hailwhale = function(host, opts) {
this.host = host;
@@ -43,15 +82,32 @@
}
return this;
};
+ this.graph_tables = function(target, extra) {
+ selector = target+'[data-hw-target]'
+ graphs = $(selector)
+ $.each(graphs, function(graph_idx, source_table) {
+ columns = $(source_table).children('thead').first().children('tr').first().children('th[data-extra*=graphable]')
+ rows = $(source_table).children('tbody').first().children('tr')
+ graph_selector = $(source_table).attr('data-hw-target');
+ graph = $(graph_selector)
+ console.log(rows);
+ row_ids = $.map(rows, function(r) {
+ $(r).attr('data-id', $(r).attr('id'));
+ return '[data-id="' + $(r).attr('id')+'"]'});
+ console.log(row_ids)
+ $(graph_selector).attr('data-selector', row_ids.join(','));
+ $(graph_selector).attr('data-metric', $(columns[0]).attr('data-name'));
+ graph_obj = render_graph(graph_selector);
+ });
+ }
this.add_graph = function(target, extra) {
var params, poller, poller_handle, url;
- //
+
// Get the jquery object of the target
if(typeof(target) == 'string' && target[0] != '#')
target='#'+target;
target = $(target)[0];
- url = this.host + 'plotpoints';
var charts_on_page = $.charts.length || 0;
var our_chart_id = charts_on_page+1;
var our_chart = $.charts[our_chart_id];
@@ -61,18 +117,13 @@
extra = $.extend(extra, {
pk: extra.pk || extra.category || false,
dimensions: extra.dimensions || extra.dimension || false,
- metrics: extra.metrics || extra.metric || false,
metric: extra.metrics && extra.metrics[0] || extra.metric || false,
metric_two: extra.metrics && extra.metrics[1] ? extra.metrics[1] : false,
- width_factor: extra.width_factor || 6,
- area: extra.area || false,
- d3: extra.d3 || false
+ url: extra.url || false,
+ area: extra.area || false
});
params = this.make_params(extra);
- console.log(params);
- params['depth'] = (extra.depth || 0);
if(extra.area) {
- params['depth'] = 1;
if(extra.area == 'wiggle' || extra.area == 'expand' || extra.area == 'zero' || extra.area == 'silhouette')
{
extra.d3 = extra.area;
@@ -81,262 +132,6 @@
our_chart = $.charts[our_chart_id] = d3.select(target).append("svg");
}
}
- poller = function() {
- return $.getJSON(url, params, function(data, status, xhr) {
- var colors, d_d, dimension, dimension_data, i, label, line_width, lines, max_dim, metrics, min_dim, plot, unpacked, yaxis, yaxis_two, _ref, _ref2;
- lines = [];
- colors = extra.colors || ['#000000', '#261AFF', '#0ED42F', '#E84414', '#F5E744', '#36B9FF'];
- colors = extra.colors || ['#000000', '#98A942', '#4C1B33', '#D2A825', '#EFE672', '#DE2B5B', '#2D6960'];
- i = 0;
- min_dim = 10;
- max_dim = 0;
- root_dimension = '_';
- dimension_data = {};
- ordered_dimensions = [];
- our_chart = $.charts[our_chart_id];
- // Data comes back as JSON in the following format:
- // { 'dimension_str_or_list': {'metric': [[x, y], ... ] , 'metric2': ...} }
- // First, let's look at the dimensions and gather some info
- for (dimension in data) {
- metrics = data[dimension];
- ordered_dimensions.push(dimension);
-
- // Decipher dimension's name
- try {
- unpacked = JSON.parse(dimension);
- } catch (error) {
- unpacked = [dimension];
- }
- if (unpacked[0] === "_") unpacked = [];
- if (unpacked.length < min_dim)
- {
- root_dimension = dimension;
- min_dim = unpacked.length;
- }
- if (unpacked.length > max_dim) max_dim = unpacked.length;
-
- // Keep some extra info about each dimension around
- dimension_data[dimension] = {
- unpacked: unpacked,
- length: unpacked.length,
- metrics: []
- };
- for(i in metrics) {
- dimension_data[dimension].metrics.push(i);
- }
- }
- ordered_dimensions = ordered_dimensions.sort(function(a,b) {
- return dimension_data[a].length - dimension_data[b].length;});
-
- // OK, now if any of the dimensions changed, we have to re-render the graph
- // Also, always re-render d3
- var re_render = $(target).attr('data-redraw') == 'true';
- if(extra.d3)
- {
- re_render = true;
- }
- else if(!our_chart)
- {
- re_render = true;
- }
- else
- {
- for(var this_d in data)
- {
- if(our_chart.get(this_d) === null)
- {
- // Unless it's an area chart and this is the root dimension
-
- if(extra.area && this_d == root_dimension)
- continue;
- re_render = true;
- }
- }
- for(var index in our_chart.series)
- {
- if(data[our_chart.series[index].options.id] === null)
- {
- re_render = true;
- }
- }
- if(re_render)
- console.log('something changed, need to render chart');
- }
-
- if(re_render && extra.d3 === false) {
- console.log('re-drawing highcharts graph at ',target);
- var render_options = {
- chart: {
- renderTo: target, // don't hardcode this
- defaultSeriesType: extra.area && 'area' || 'spline'
- },
- title: {
- text: extra.title
- },
- xAxis: {
- type: 'datetime',
- tickPixelInterval: 150,
- maxZoom: 20 * 1000
- },
- yAxis: {
- minPadding: 0.2,
- maxPadding: 0.2,
- min: 0,
- title: {
- margin: 20
- }
- },
- series: []
- };
-
- // Now we loop dimensions and find our relevant plotpoints
- for (var idx in ordered_dimensions) {
- dimension = ordered_dimensions[idx];
- metrics = data[dimension];
- if(typeof(metrics) == 'undefined')
- continue;
- d_d = dimension_data[dimension];
-
- // If no metric specified, default to the first one
- if (!extra.metric) extra.metric = d_d.metrics[0];
-
- // If two metrics returned, show the second one too!
- if (!extra.metric_two && d_d.metrics.length > 1) {
- extra.metric_two = d_d.metrics[1];
- }
-
- if (_ref = !extra.metric, __indexOf.call(d_d.metrics, _ref) >= 0) {
- break;
- }
- // Did we ask for a nested graph?
- if (params['depth']) {
- // If so, let's give parent a fat line and all the kids skiny ones
- if (d_d.length === min_dim) {
- label = 'Overall ' + d_d.unpacked;
- line_width = extra.width_factor;
- // But if this is an area graph, skip now
- // and don't add the line to the chart
- if(extra.area)
- {
- continue;
- }
- } else {
- label = d_d.unpacked[d_d.length-1];
- line_width = extra.width_factor / (.5 + (d_d.length - min_dim));
- }
- } else {
- // Not nested graphs, just size these all the same
- label = d_d.unpacked[0] || 'Overall';
- line_width = extra.width_factor * 3 / 4;
- }
-
- // Add the lines to the render_options
- render_options.series.push({
- metric: extra.metric,
- lines: {
- show: true,
- lineWidth: line_width
- },
- color: colors[i++ % colors.length],
- name: label + (extra.metric_two && (' ' + extra.metric) || ''),
- id: dimension
- });
- // Second metric if necessary
- if (_ref2 = extra.metric_two, __indexOf.call(d_d.metrics, _ref2) >= 0) {
- render_options.series.push({
- data: metrics[extra.metric_two],
- metric: extra.metric_two,
- lines: {
- show: true,
- lineWidth: line_width
- },
- color: colors[i % colors.length],
- name: label + ' ' + extra.metric_two,
- yaxis: 2,
- id: dimension+'||'+metric
- });
- }
- }
- if(extra.area)
- {
- render_options.plotOptions = {
- area: {
- stacking: extra.area == 'percent' && 'percent' || 'normal',
- lineColor: '#ffffff',
- lineWidth: 1,
- marker: {
- lineWidth: 1,
- lineColor: '#ffffff'
- }
- }
- };
- }
- yaxis = {
- min: 0
- };
- yaxis_two = $.extend({}, yaxis);
- yaxis_two.position = 'right';
- yaxis_two.label = extra.metric_two;
- if (extra.metric_two) yaxis = [yaxis, yaxis_two];
- our_chart = new Highcharts.Chart(render_options);
- our_chart_id = our_chart.container.id;
- $.charts[our_chart_id] = our_chart;
- };
- if (extra.d3) {
- extra.metric = extra.metric || 'hits';
- var lines = our_chart.selectAll("path");
- var datapoints = d3.range(ordered_dimensions.length).map(function(d, n) {
- var this_d = ordered_dimensions[n];
- if(dimension_data[this_d].length == min_dim)
- return [];
- var pps = data[this_d][extra.metric];
- return d3.range(pps.length).map(function(idx) {
- return {x: idx, y: pps[idx][1], at: pps[idx][0], metric: extra.metric};
- });
- }).filter(function(d,n) {return d.length >= 1})
- var stack = stack_func(datapoints);
- var n = datapoints.length,
- m = datapoints[0].length,
- colors_arr = d3.scale.category20c();
- color_sets = [
- extra.colors,
- ['#52e430'],
- ['#006ac2']];
- var mx = m - 1,
- my = d3.max(stack, function(d) {
- return d3.max(d, function(d) {
- return d.y0 + d.y;
- });
- }) || 1;
- area.x(function(d) { return d.x * w / mx; })
- .y0(function(d) { return h - d.y0 * h / my; })
- .y1(function(d) { return h - (d.y + d.y0) * h / my; });
- our_chart.attr("width", w)
- .attr("height", h);
- entry = lines.data(stack).attr("d", area).enter()
- .append("path").style("fill", function(line, i) {
- return colors[i+1]; }).attr("d", area);
- }
-
- if(extra.d3 === false)
- {
- // Highcharts? Update the plotpoints!
- $.each(our_chart.series, function(index, series) {
- id_extra = series.options.id.split('||');
- if(id_extra.length == 2)
- metric = id_extra[1];
- else
- metric = extra.metric;
- dimension = id_extra[0];
- series.setData(data[dimension][metric]);
- });
- }
- });
- };
- poller();
- if (extra.autoupdate) {
- return poller_handle = setInterval(poller, extra.interval || 3500);
- }
};
return this;
};
View
2  js/manifest.js.complete.txt
@@ -1,4 +1,4 @@
jquery.min.js
-highcharts.src.js
d3.js
+nvd3.js
hailwhale.js
View
6,662 js/nvd3.js
6,662 additions, 0 deletions not shown
View
488 js/style.css
@@ -0,0 +1,488 @@
+
+/********************
+ * HTML CSS
+ */
+
+
+.chartWrap {
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+}
+
+.nvd3.background {
+ fill: none;
+ pointer-events: none;
+}
+
+
+/********************
+ * TOOLTIP CSS
+ */
+
+.nvtooltip {
+ position: absolute;
+ background-color: rgba(255,255,255,1);
+ padding: 10px;
+ border: 1px solid #ddd;
+ z-index: 10000;
+
+ font-family: Arial;
+ font-size: 13px;
+
+ transition: opacity 500ms linear;
+ -moz-transition: opacity 500ms linear;
+ -webkit-transition: opacity 500ms linear;
+
+ transition-delay: 500ms;
+ -moz-transition-delay: 500ms;
+ -webkit-transition-delay: 500ms;
+
+ -moz-box-shadow: 4px 4px 12px rgba(0,0,0,.5);
+ -webkit-box-shadow: 4px 4px 12px rgba(0,0,0,.5);
+ box-shadow: 4px 4px 12px rgba(0,0,0,.5);
+
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+
+ pointer-events: none;
+}
+
+.nvtooltip h3 {
+ margin: 0;
+ padding: 0;
+ text-align: center;
+}
+
+.nvtooltip p {
+ margin: 0;
+ padding: 0;
+ text-align: center;
+}
+
+.nvtooltip span {
+ display: inline-block;
+ margin: 2px 0;
+}
+
+
+/********************
+ * SVG CSS
+ */
+
+
+svg {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ /* Trying to get SVG to act like a greedy block in all browsers */
+ display: block;
+ width:100%;
+}
+
+
+svg text {
+ font: 12px sans-serif;
+}
+
+svg .title {
+ font: bold 14px Arial;
+}
+
+/**********
+* Brush
+*/
+
+.brush .extent {
+ stroke: #666;
+ fill-opacity: .125;
+ shape-rendering: crispEdges;
+}
+
+
+
+/**********
+* Legend
+*/
+
+.nvd3 .legend .series {
+ cursor: pointer;
+}
+
+.nvd3 .legend .disabled circle {
+ fill-opacity: 0;
+}
+
+
+
+/**********
+* Axes
+*/
+
+.nvd3 .axis path {
+ fill: none;
+ stroke: #000;
+ stroke-opacity: .75;
+ shape-rendering: crispEdges;
+}
+
+.nvd3 .axis path.domain {
+ stroke-opacity: .75;
+}
+
+.nvd3 .axis line {
+ fill: none;
+ stroke: #000;
+ stroke-opacity: .25;
+ shape-rendering: crispEdges;
+}
+
+.nvd3 .axis line.zero {
+ stroke-opacity: .75;
+}
+
+.nvd3 .axis .axisMaxMin text {
+ font-weight: bold;
+}
+
+
+/**********
+* Brush
+*/
+
+.brush .resize path {
+ fill: #eee;
+ stroke: #666;
+}
+
+
+
+/**********
+* Bars
+*/
+
+.nvd3 .bars .negative rect {
+ zfill: brown;
+ cursor: pointer;
+}
+
+.nvd3 .bars rect {
+ zfill: steelblue;
+ cursor: pointer;
+ fill-opacity: .75;
+
+ transition: fill-opacity 250ms linear;
+ -moz-transition: fill-opacity 250ms linear;
+ -webkit-transition: fill-opacity 250ms linear;
+}
+
+.nvd3 .bars rect:hover {
+ fill-opacity: 1;
+}
+
+.nvd3 .bars .hover rect {
+ fill: lightblue;
+}
+
+.nvd3 .bars text {
+ fill: rgba(0,0,0,0);
+}
+
+.nvd3 .bars .hover text {
+ fill: rgba(0,0,0,1);
+}
+
+.nvd3 .x.axis text {
+ transform: rotate(90);
+}
+
+
+/**********
+* Bars
+*/
+
+.nvd3 .multibar .groups rect,
+.nvd3 .multibarHorizontal .groups rect,
+.nvd3 .discretebar .groups rect {
+ stroke-opacity: 0;
+
+ transition: fill-opacity 250ms linear;
+ -moz-transition: fill-opacity 250ms linear;
+ -webkit-transition: fill-opacity 250ms linear;
+}
+
+.nvd3 .multibar .groups rect:hover,
+.nvd3 .multibarHorizontal .groups rect:hover,
+.nvd3 .discretebar .groups rect:hover {
+ fill-opacity: 1;
+}
+
+.nvd3 .discretebar .groups text,
+.nvd3 .multibarHorizontal .groups text {
+ font-weight: bold;
+ fill: rgba(0,0,0,1);
+ stroke: rgba(0,0,0,0);
+}
+
+/***********
+* Pie Chart
+*/
+
+.nvd3 .pie .hover path {
+ fill: lightblue;
+}
+
+/**********
+* Lines
+*/
+
+.nvd3 .groups path.line {
+ fill: none;
+ stroke-width: 2.5px;
+ stroke-linecap: round;
+ shape-rendering: geometricPrecision;
+
+ /*
+ transition: stroke-width 250ms linear;
+ -moz-transition: stroke-width 250ms linear;
+ -webkit-transition: stroke-width 250ms linear;
+
+ transition-delay: 250ms
+ -moz-transition-delay: 250ms;
+ -webkit-transition-delay: 250ms;
+ */
+}
+
+.nvd3