위젯:인기있는 문서

최근 편집: 2019년 11월 3일 (일) 11:18
<html> <head> <style> #chart_div { margin: 0; height: 100%; min-height: 38em; overflow: hidden; } #chart_div .tab { margin: 0; padding: 0; display: block; overflow: hidden; } #chart_div .tab li { display: block; float: left; width: 50%; text-align: center; background-color: #aca6e4; } #chart_div .tab a { color: white; } #chart_div .tab a.selected { font-weight: bold; cursor: text; } #chart_div .tab a.selected:hover { text-decoration: none; } #chart_div table { width: 100%; border-collapse: collapse; border-spacing: 0; margin: 1rem 0; } #chart_div .time { width: 3rem; } #chart_div .pageview { width: 2.5rem; } #chart_div td.time { text-align: right; font-size: 0.8rem; } #chart_div td.pageview { text-align: right; font-size: 0.8rem; } #chart_div td.page { text-overflow: ellipsis; max-width: 0; overflow: hidden; white-space: nowrap; } #chart_div th, #chart_div td { border: 1px solid #ddd; } #chart_div th.selectable { cursor: pointer; } #chart_div th.selected { background-image: url("/resources/src/jquery.tablesorter.styles/images/sort_down.png"); cursor: auto; background-repeat: no-repeat; background-position: center right 0.2rem; } </style> <!--Load the AJAX API--> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js" ></script> <script type="text/javascript"> var period = "daily", orderBy = "time"; prepareChart(); function prepareChart() { var sheetName = period + " " + (orderBy == "time" ? "longest time spent" : "most viewed"); var url = "https://docs.google.com/spreadsheets/d/1X3m2r7n6Gww8ZaCiKvYxgH1oPKSmbi2zArwEsZ1jCxQ/gviz/tq?sheet=" + sheetName + "&headers=15"; google.charts.load("current", { packages: ["corechart"] }); google.charts.setOnLoadCallback(drawChart); function drawChart() { var query = new google.visualization.Query(url); query.send(handleQueryResponse); } function handleQueryResponse(response) { var data = response.getDataTable(); var rows = data.getNumberOfRows(); var html = [ '<ul class="tab">' + '<li><a id="hourly" class="' + (period == "hourly" ? "selected" : "") + '" href="javascript: void(0);">실시간</a></li>' + '<li><a id="daily" class="' + (period == "daily" ? "selected" : "") + '" href="javascript: void(0);">일간</a></li>' + "</ul>" + "<table><thead><tr>" + '<th id="header-time" class="time selectable ' + (orderBy == "time" ? "selected" : "") + '">시간</th>' + '<th id="header-pageview" class="pageview selectable ' + (orderBy == "pageview" ? "selected" : "") + '">조회</th>' + "<th>문서</th>" + "</tr></thead><tbody>" ]; for (var i = 0; i < rows; i++) { try { var title = data.getValue(i, 0).replace(" - 페미위키", ""); var time = Math.round(data.getValue(i, 1) / 60) + "분"; var pageview = data.getValue(i, 2); var url = "/w/" + encodeTitle(title); var anchor = '<a href="' + url + '" target="_parent" title="' + title + '">' + title + "</a>"; html.push( "<tr>" + '<td class="time">' + time + "</td>" + '<td class="pageview">' + pageview + "</td>" + '<td class="page">' + anchor + "</td>" + "</tr>" ); } catch (e) { console.log([i, e]); } } html.push("</tbody></table>"); document.querySelector("#chart_div").innerHTML = html.join("\n"); document .getElementById("hourly") .addEventListener("click", function() { if (period == "hourly") return; period = "hourly"; prepareChart(); }); document .getElementById("daily") .addEventListener("click", function() { if (period == "daily") return; period = "daily"; prepareChart(); }); document .getElementById("header-time") .addEventListener("click", function() { if (orderBy == "time") return; orderBy = "time"; prepareChart(); }); document .getElementById("header-pageview") .addEventListener("click", function() { if (orderBy == "pageview") return; orderBy = "pageview"; prepareChart(); }); } } function encodeTitle(title) { return title .split("/") .map(function(path) { return encodeURIComponent(path); }) .join("/"); } </script> </head> <body> <div id="chart_div"></div> </body> </html>