progress on the structure of this little app

This commit is contained in:
Noah Levitt 2015-09-25 22:19:29 +00:00
parent 51732d0d49
commit 05e15b9667
7 changed files with 114 additions and 80 deletions

View File

@ -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)

View File

@ -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;
});
}]);

View File

@ -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>

View 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"
});
}]);

View 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;
});
}]);

View 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>

View 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>