Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8">
- <title>Finagle metrics charts</title>
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta name="description" content="">
- <meta name="author" content="">
- <!--link rel="stylesheet/less" href="less/bootstrap.less" type="text/css" /-->
- <!--link rel="stylesheet/less" href="less/responsive.less" type="text/css" /-->
- <!--script src="js/less-1.3.3.min.js"></script-->
- <!--append β#!watchβ to the browser URL, then refresh the page. -->
- <link href="css/bootstrap.min.css" rel="stylesheet">
- <link href="css/style.css" rel="stylesheet">
- <link href="css/bootstrap-combobox.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery.min.js"></script>
- <script type="text/javascript" src="js/bootstrap.min.js"></script>
- <script type="text/javascript" src="js/scripts.js"></script>
- <script type="text/javascript" src="js/Chart.js"></script>
- <script type="text/javascript" src="js/legend.js"></script>
- <script type="text/javascript" src="js/bootstrap-combobox.js"></script>
- </head>
- <body>
- <br>
- <br>
- <br>
- <div class="container">
- <div class="row clearfix">
- <div class="col-md-8 column">
- <p>
- <!-- <h2>Title</h2> -->
- <!-- <canvas id="uptimeChart" height="500" width="1000"></canvas> -->
- <h2>Requests</h2>
- <canvas id="requestsChart" height="500" width="1"></canvas>
- <div id="requestsLegend"></div>
- </p>
- </div>
- <div class="col-md-4 column">
- <!-- Interval(seconds): <input id="intervalInput" type="number" name="interval" min="1" max="120" value="5"> -->
- <!-- <button onclick="changeInterval()">OK</button> -->
- <select class="combobox">
- <option value="PA">Pennsylvania</option>
- <option value="CT">Connecticut</option>
- <option value="NY">New York</option>
- <option value="MD">Maryland</option>
- <option value="VA">Virginia</option>
- </select>
- </div>
- </div>
- </div>
- <script>
- var requestsCountChartData = {
- labels : [],
- datasets : [
- {
- label: "all requests",
- title: "All Requests",
- fillColor : "rgba(151,187,205,0.2)",
- strokeColor : "rgba(151,187,205,1)",
- pointColor : "rgba(151,187,205,1)",
- pointStrokeColor : "#fff",
- pointHighlightFill : "#fff",
- pointHighlightStroke : "rgba(151,187,205,1)",
- data : []
- },
- {
- label: "Success",
- title: "Success requests",
- fillColor : "rgba(50,230,0,0.2)",
- strokeColor : "rgba(50,230,0,0.2)",
- pointColor : "rgba(50,230,0,0.2)",
- pointStrokeColor : "#fff",
- pointHighlightFill : "#fff",
- pointHighlightStroke : "rgba(151,187,205,1)",
- data : []
- },
- // {
- // label: "Failures",
- // fillColor : "rgba(255,187,150,0.2)",
- // strokeColor : "rgba(255,187,150,0.2)",
- // pointColor : "rgba(255,187,150,0.2)",
- // pointStrokeColor : "#fff",
- // pointHighlightFill : "#fff",
- // pointHighlightStroke : "rgba(151,187,205,1)",
- // data : []
- // },
- ]
- }
- var myUsername = "developer";
- var myPassword = "MRbEVLKnw4";
- function changeInterval() {
- interval = document.getElementById("intervalInput").value;
- }
- function getMetrics() {
- var metrics;
- $.ajax({
- type: "GET",
- url: "http://api-admin.konfettin.ru/admin/metrics.json",
- dataType: "json",
- async: false,
- beforeSend: function(xhr){
- xhr.setRequestHeader("Authorization",
- "Basic " + btoa(myUsername + ":" + myPassword));
- },
- success:function(data) {
- metrics = data;
- },
- error:function(x, status, error) {
- },
- }).responseText;
- return metrics;
- }
- window.chartOptions = {
- segmentShowStroke: false,
- percentageInnerCutout: 75,
- animation: false,
- datasetFill : true,
- };
- // seconds
- var interval = 5;
- var chartsUpdate = function() {
- var metrics = getMetrics();
- // $('#uptimeChart').replaceWith('<canvas id="uptimeChart" height="500" width="1000"></canvas>');
- // Draw the chart
- // value += 1;
- // uptimeData.push(value);
- // lineChartData.labels.push(value.toString());
- // console.log("update");
- // console.log(uptimeData);
- // var ctx = $('#uptimeChart').get(0).getContext("2d");
- // new Chart(ctx).Line(lineChartData, window.chartOptions);
- updateRequestsCount(metrics);
- // Schedule next chart update tick
- setTimeout (function() { chartsUpdate(); }, interval * 1000);
- }
- function balance() {
- console.log(requestsCountChartData.labels.lenght);
- console.log(requestsCountChartData.labels.count);
- if (requestsCountChartData.labels.lenght > 3) {
- requestsCountChartData.labels = requestsCountChartData.labels.splice(0, 1);
- requestsCountChartData.datasets[0] = requestsCountChartData.datasets[0].splice(0, 1);
- requestsCountChartData.datasets[1] = requestsCountChartData.datasets[1].splice(0, 1);
- }
- }
- function nextValue(prev_value, curr_value) {
- if (prev_value == undefined) {
- return 0;
- }
- var diff = curr_value - prev_value;
- return diff;
- }
- var requests_all_prev;
- var requests_saccess_prev;
- function updateRequestsCount(metrics) {
- var reqs = metrics['api-backend-1/requests'];
- var s = metrics['api-backend-1/success'];
- balance();
- requestsCountChartData.datasets[0].data.push(nextValue(requests_all_prev, reqs));
- requestsCountChartData.datasets[0].data.push(nextValue(requests_all_prev, reqs));
- requests_all_prev = reqs;
- requestsCountChartData.datasets[1].data.push(nextValue(requests_saccess_prev, s));
- requestsCountChartData.datasets[1].data.push(nextValue(requests_saccess_prev, s));
- requests_saccess_prev = s;
- var now = new Date();
- var timeString = now.getHours() + ":" +
- (now.getMinutes() < 10 ? "0":"") + now.getMinutes();
- requestsCountChartData.labels.push(timeString);
- $('#requestsChart').replaceWith('<canvas id="requestsChart" height="550" width="1000"></canvas>');
- var ctx = $('#requestsChart').get(0).getContext("2d");
- new Chart(ctx).Line(requestsCountChartData, window.chartOptions);
- }
- $(document).ready(function() {
- setTimeout (chartsUpdate(), interval * 1000);
- legend(document.getElementById("requestsLegend"), requestsCountChartData);
- })
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement