--- a/ckanext/ga_report/templates/ga_report/site/index.html +++ b/ckanext/ga_report/templates/ga_report/site/index.html @@ -6,6 +6,48 @@ <xi:include href="../ga_util.html" /> <py:def function="page_title">Site usage</py:def> + + <py:def function="optional_head"> + <link rel="stylesheet" type="text/css" href="/scripts/vendor/rickshaw.min.css"/> + <script type="text/javascript" src="/scripts/vendor/jquery.sparkline.modified.js"></script> + <script type="text/javascript" src="/scripts/vendor/d3.v2.js"></script> + <script type="text/javascript" src="/scripts/vendor/d3.layout.min.js"></script> + <script type="text/javascript" src="/scripts/vendor/rickshaw.min.js"></script> + <style type="text/css"> + .table-condensed td.sparkline-cell { + padding: 1px 0 0 0; + width: 108px; + text-align: center; + } + .chart_container { + position: relative; + height: 300px; + margin: 0 auto 20px auto; + } + .chart { + position: absolute; + left: 40px; + width: 500px; + top: 0; + bottom: 0; + } + .legend { + position: absolute; + right: 0; + top: 0; + margin-left: 15px; + background: transparent; + max-width: 150px; + overflow: hidden; + } + .y_axis { + position: absolute; + top: 0; + bottom: 0; + width: 40px; + } + </style> + </py:def> <py:match path="primarysidebar"> <li class="widget-container boxed widget_text"> @@ -24,13 +66,9 @@ <form class="form-inline" action="${h.url_for(controller='ckanext.ga_report.controller:GaReport',action='index')}" method="get"> <div class="controls"> - <select name="month"> - <option value='' py:attrs="{'selected': 'selected' if not c.month else None}">All months</option> - <py:for each="val,desc in c.months"> - <option value='${val}' py:attrs="{'selected': 'selected' if c.month == val else None}">${desc}</option> - </py:for> - </select> + ${month_selector(c.month, c.months, c.day)} + <input class="btn button btn-primary" type='submit' value="Update"/> </div> </form> @@ -73,26 +111,36 @@ <tr> <th>Name</th> <th>Value</th> + <th>History</th> </tr> - <py:for each="name, value in c.global_totals"> + <py:for each="name, value, graph in c.global_totals"> <tr> <td>${name}</td> <td>${value}</td> + <td class="sparkline-cell"> + <span class="sparkline" sparkTooltips="${','.join([x for x,y in graph])}"> + ${','.join([y for x,y in graph])} + </span> + </td> </tr> </py:for> </table> </div> <div class="tab-pane" id="browsers_versions"> + ${rickshaw_graph(c.browser_versions_graph,'browser-versions')} <p>Note: Where a browser has a large number of versions, these have been grouped together.</p> ${stat_table(c.browser_versions)} </div> <div class="tab-pane" id="browsers_names"> + ${rickshaw_graph(c.browsers_graph,'browsers')} ${stat_table(c.browsers)} </div> <div class="tab-pane" id="os"> + ${rickshaw_graph(c.os_graph,'os')} ${stat_table(c.os)} </div> <div class="tab-pane" id="os_versions"> + ${rickshaw_graph(c.os_versions_graph,'os_versions')} ${stat_table(c.os_versions)} </div> <div class="tab-pane" id="social_referrals_totals"> @@ -100,14 +148,16 @@ ${social_table(c.social_referrer_totals)} </div> <div class="tab-pane" id="social_networks"> + ${rickshaw_graph(c.social_networks_graph, 'social_networks')} <p>Percentage of visits that were referred from these social networks</p> - ${stat_table(c.social_networks, 'Visits')} </div> <div class="tab-pane" id="languages"> + ${rickshaw_graph(c.languages_graph,'languages')} ${stat_table(c.languages)} </div> <div class="tab-pane" id="country"> + ${rickshaw_graph(c.country_graph,'country')} ${stat_table(c.country)} </div> @@ -119,18 +169,29 @@ </div> - <xi:include href="../../layout.html" /> <py:def function="optional_footer"> - <script type='text/javascript'> - $('.dropdown-toggle').dropdown(); - $('.nav-tabs li a').click(function (e) { - e.preventDefault(); - $(this).tab('show'); - }) - alert(window.location.hash); + <script type="text/javascript"> + $(function() { + var sparkOptions = { + enableTagOptions: true, + type: 'line', + width: 100, + height: 26, + chartRangeMin: 0, + spotColor: '', + maxSpotColor: '', + minSpotColor: '', + highlightSpotColor: '000000', + lineColor: '3F8E6D', + fillColor: 'B7E66B' + }; + $('.sparkline').sparkline('html',sparkOptions); + }); </script> </py:def> + + <xi:include href="../../layout.html" /> </html>