mirror of
https://github.com/internetarchive/brozzler.git
synced 2025-02-24 16:49:56 -05:00
progress on the structure of this little app
This commit is contained in:
parent
51732d0d49
commit
05e15b9667
@ -12,15 +12,25 @@ app = flask.Flask(__name__, static_url_path="")
|
|||||||
r = rethinkstuff.Rethinker(["wbgrp-svc020", "wbgrp-svc035", "wbgrp-svc036"],
|
r = rethinkstuff.Rethinker(["wbgrp-svc020", "wbgrp-svc035", "wbgrp-svc036"],
|
||||||
db="archiveit_brozzler")
|
db="archiveit_brozzler")
|
||||||
|
|
||||||
|
@app.route("/api/jobs/<int:job_id>/sites")
|
||||||
|
def sites(job_id):
|
||||||
|
sites_ = r.table("sites").get_all(job_id, index="job_id").run()
|
||||||
|
return flask.jsonify(sites=sites_)
|
||||||
|
|
||||||
|
@app.route("/api/jobs/<int:job_id>")
|
||||||
|
def job(job_id):
|
||||||
|
job_ = r.table("jobs").get(job_id).run()
|
||||||
|
return flask.jsonify(job_)
|
||||||
|
|
||||||
@app.route("/api/jobs")
|
@app.route("/api/jobs")
|
||||||
def jobs():
|
def jobs():
|
||||||
return flask.jsonify(jobs=list(r.table("jobs").run()))
|
jobs_ = list(r.table("jobs").run())
|
||||||
|
return flask.jsonify(jobs=jobs_)
|
||||||
|
|
||||||
@app.route("/")
|
@app.route("/")
|
||||||
def root():
|
def root():
|
||||||
return app.send_static_file("index.html")
|
return app.send_static_file("index.html")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app.run(host="0.0.0.0", port=8081, debug=True)
|
app.run(host="0.0.0.0", port=8081, debug=True)
|
||||||
|
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
var brozzlerConsoleApp = angular.module("brozzlerConsoleApp", []);
|
|
||||||
|
|
||||||
brozzlerConsoleApp.controller("JobsAppController", ["$scope", "$http", function($scope, $http) {
|
|
||||||
$http.get("api/jobs").success(function(data) {
|
|
||||||
console.log(data);
|
|
||||||
$scope.jobs = data.jobs;
|
|
||||||
});
|
|
||||||
}]);
|
|
||||||
|
|
@ -1,70 +1,21 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en" ng-app="brozzlerConsoleApp">
|
<html lang="en" ng-app="brozzlerConsoleApp">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<title>Brozzler Console: Jobs</title>
|
<title>Brozzler Console: Jobs</title>
|
||||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.css">
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.css">
|
||||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.css">
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap-theme.css">
|
||||||
<style>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.js"></script>
|
||||||
body {
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular-route.js"></script>
|
||||||
padding-top: 70px;
|
<script src="js/app.js"></script>
|
||||||
padding-bottom: 30px;
|
<script src="js/controllers.js"></script>
|
||||||
}
|
</head>
|
||||||
</style>
|
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.6/angular.js"></script>
|
|
||||||
<script src="controllers.js"></script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body role="document">
|
<body role="document">
|
||||||
<!-- Fixed navbar -->
|
<div class="container" role="main">
|
||||||
<nav class="navbar navbar-inverse navbar-fixed-top">
|
<div ng-view></div>
|
||||||
<div class="container">
|
</div>
|
||||||
<div class="navbar-header">
|
</body>
|
||||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
</html>
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="/">Brozzler Console</a>
|
|
||||||
</div>
|
|
||||||
<div id="navbar" class="navbar-collapse collapse">
|
|
||||||
<ul class="nav navbar-nav">
|
|
||||||
<li><a href="/">Jobs</a></li>
|
|
||||||
<li><a href="/workers">Workers</a></li>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div><!--/.nav-collapse -->
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="container" role="main">
|
|
||||||
<div ng-controller="JobsAppController">
|
|
||||||
<div class="page-header">
|
|
||||||
<h1>Jobs</h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
|
|
||||||
<div class="col-sm-6" ng-repeat="job in jobs">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title">Job {{job.id}}: {{job.status}}</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<h4> Seeds </h4>
|
|
||||||
<ul>
|
|
||||||
<li ng-repeat="seed in job.conf.seeds"> {{seed.url}} </li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
22
webconsole/static/js/app.js
Normal file
22
webconsole/static/js/app.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
var brozzlerConsoleApp = angular.module("brozzlerConsoleApp", [
|
||||||
|
"ngRoute",
|
||||||
|
"brozzlerControllers",
|
||||||
|
]);
|
||||||
|
|
||||||
|
brozzlerConsoleApp.config(["$routeProvider",
|
||||||
|
function($routeProvider) {
|
||||||
|
$routeProvider.
|
||||||
|
when("/jobs", {
|
||||||
|
templateUrl: "partials/jobs.html",
|
||||||
|
controller: "JobsListController"
|
||||||
|
}).
|
||||||
|
when("/jobs/:id", {
|
||||||
|
templateUrl: "partials/job.html",
|
||||||
|
controller: "JobController"
|
||||||
|
}).
|
||||||
|
otherwise({
|
||||||
|
redirectTo: "/jobs"
|
||||||
|
});
|
||||||
|
}]);
|
21
webconsole/static/js/controllers.js
Normal file
21
webconsole/static/js/controllers.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
var brozzlerControllers = angular.module("brozzlerControllers", []);
|
||||||
|
|
||||||
|
brozzlerControllers.controller("JobsListController", ["$scope", "$http",
|
||||||
|
function($scope, $http) {
|
||||||
|
$http.get("api/jobs").success(function(data) {
|
||||||
|
console.log(data);
|
||||||
|
$scope.jobs = data.jobs;
|
||||||
|
});
|
||||||
|
}]);
|
||||||
|
|
||||||
|
brozzlerControllers.controller("JobController", ["$scope", "$routeParams", "$http",
|
||||||
|
function($scope, $routeParams, $http) {
|
||||||
|
$scope.phoneId = $routeParams.phoneId;
|
||||||
|
$http.get("api/jobs/" + $routeParams.id).success(function(data) {
|
||||||
|
console.log(data);
|
||||||
|
$scope.job = data;
|
||||||
|
});
|
||||||
|
}]);
|
||||||
|
|
11
webconsole/static/partials/job.html
Normal file
11
webconsole/static/partials/job.html
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<div>
|
||||||
|
<div class="page-header">
|
||||||
|
<h1>Job {{job.id}}</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
Job {{job.id}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
30
webconsole/static/partials/jobs.html
Normal file
30
webconsole/static/partials/jobs.html
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<div>
|
||||||
|
<div class="page-header">
|
||||||
|
<h1>Jobs</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<table class="table table-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>id</th>
|
||||||
|
<th>status</th>
|
||||||
|
<th>started</th>
|
||||||
|
<th>finished</th>
|
||||||
|
<th># of seeds</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr ng-repeat="job in jobs">
|
||||||
|
<td><a href="#/jobs/{{job.id}}">{{job.id}}</a></td>
|
||||||
|
<td>{{job.status}}</td>
|
||||||
|
<td>{{job.started}}</td>
|
||||||
|
<td>{{job.finished}}</td>
|
||||||
|
<td>{{job.conf.seeds.length}}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
Loading…
x
Reference in New Issue
Block a user