[llvm-commits] [zorg] r130210 - in /zorg/trunk: llvmlab/llvmlab/ui/templates/index.html lnt/lnt/server/ui/app.py lnt/lnt/server/ui/filters.py lnt/lnt/server/ui/static/style.css lnt/lnt/server/ui/templates/index.html lnt/lnt/server/ui/templates/layout.html lnt/lnt/server/ui/views.py
Daniel Dunbar
daniel at zuster.org
Tue Apr 26 10:47:43 PDT 2011
Author: ddunbar
Date: Tue Apr 26 12:47:43 2011
New Revision: 130210
URL: http://llvm.org/viewvc/llvm-project?rev=130210&view=rev
Log:
LNT/Flask: Migrate header, footer, and index.
Added:
zorg/trunk/lnt/lnt/server/ui/filters.py
Modified:
zorg/trunk/llvmlab/llvmlab/ui/templates/index.html
zorg/trunk/lnt/lnt/server/ui/app.py
zorg/trunk/lnt/lnt/server/ui/static/style.css
zorg/trunk/lnt/lnt/server/ui/templates/index.html
zorg/trunk/lnt/lnt/server/ui/templates/layout.html
zorg/trunk/lnt/lnt/server/ui/views.py
Modified: zorg/trunk/llvmlab/llvmlab/ui/templates/index.html
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/llvmlab/llvmlab/ui/templates/index.html?rev=130210&r1=130209&r2=130210&view=diff
==============================================================================
--- zorg/trunk/llvmlab/llvmlab/ui/templates/index.html (original)
+++ zorg/trunk/llvmlab/llvmlab/ui/templates/index.html Tue Apr 26 12:47:43 2011
@@ -1,4 +1,5 @@
{% extends "layout.html" %}
+{% set components = [] %}
{% block title %}home{% endblock %}
{% block body %}
Modified: zorg/trunk/lnt/lnt/server/ui/app.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/app.py?rev=130210&r1=130209&r2=130210&view=diff
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/app.py (original)
+++ zorg/trunk/lnt/lnt/server/ui/app.py Tue Apr 26 12:47:43 2011
@@ -1,20 +1,36 @@
import logging
import logging.handlers
import os
+import time
import flask
+from flask import current_app
+import lnt
+import lnt.server.ui.filters
import lnt.server.ui.views
# FIXME: Redesign this.
import lnt.viewer.Config
+class Request(flask.Request):
+ def __init__(self, *args, **kwargs):
+ super(Request, self).__init__(*args, **kwargs)
+
+ self.request_time = time.time()
+
+ def elapsed_time(self):
+ return time.time() - self.request_time
+
class App(flask.Flask):
@staticmethod
def create_standalone(config_path):
# Construct the application.
app = App(__name__)
+ # Register additional filters.
+ lnt.server.ui.filters.register(app)
+
# Load the application configuration.
app.load_config(config_path)
@@ -25,6 +41,13 @@
def __init__(self, name):
super(App, self).__init__(name)
+ self.start_time = time.time()
+
+ # Override the request class.
+ self.request_class = Request
+
+ # Store a few global things we want available to templates.
+ self.version = lnt.__version__
def load_config(self, config_path):
config_data = {}
@@ -32,3 +55,7 @@
self.old_config = lnt.viewer.Config.Config.fromData(
config_path, config_data)
+
+ self.jinja_env.globals.update(
+ app=current_app,
+ old_config=self.old_config)
Added: zorg/trunk/lnt/lnt/server/ui/filters.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/filters.py?rev=130210&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/filters.py (added)
+++ zorg/trunk/lnt/lnt/server/ui/filters.py Tue Apr 26 12:47:43 2011
@@ -0,0 +1,11 @@
+import datetime
+
+def filter_asusertime(time):
+ # FIXME: Support alternate timezones?
+ ts = datetime.datetime.fromtimestamp(time)
+ return ts.strftime('%Y-%m-%d %H:%M:%S %Z PST')
+
+def register(app):
+ for name,object in globals().items():
+ if name.startswith('filter_'):
+ app.jinja_env.filters[name[7:]] = object
Modified: zorg/trunk/lnt/lnt/server/ui/static/style.css
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/static/style.css?rev=130210&r1=130209&r2=130210&view=diff
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/static/style.css (original)
+++ zorg/trunk/lnt/lnt/server/ui/static/style.css Tue Apr 26 12:47:43 2011
@@ -1,6 +1,79 @@
+.zorg_navheader {
+ background-color: #cccccc;
+}
+
+body {
+ color:#000000;
+ background-color:#ffffff
+}
+
body {
- background-color: #FFFFFF;
- font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, Verdana,
- Helvetica, sans-serif;
- font-size: small;
+ font-family: Helvetica, sans-serif;
+ font-size:9pt
+}
+
+h1 {
+ font-size: 14pt;
+}
+
+h2 {
+ font-size: 12pt;
+}
+
+table {
+ font-size:9pt
+}
+
+table {
+ border-spacing: 0px;
+ border: 1px solid black
+}
+
+th, table thead {
+ background-color:#eee;
+ color:#666666;
+ font-weight: bold;
+ cursor: default;
+ text-align:center;
+ font-weight: bold;
+ font-family: Verdana;
+}
+
+.W {
+ font-size:0px
+}
+
+th, td {
+ padding:5px;
+ padding-left:8px;
+}
+
+tbody.scrollContent {
+ overflow:auto
+}
+
+.hideable {
+ border-width:thin;
+ border-color:background;
+ border-style:solid;
+ background: #F8F8FF;
+ padding:8px;
+}
+
+/* Nested popups */
+
+.hideable_1 {
+ border-width:thin;
+ border-color:background;
+ border-style:solid;
+ background: #F8F8FF;
+ padding:8px;
+}
+
+.hideable_2 {
+ border-width:thin;
+ border-color:background;
+ border-style:solid;
+ background: #E8E8E8;
+ padding:8px;
}
Modified: zorg/trunk/lnt/lnt/server/ui/templates/index.html
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/templates/index.html?rev=130210&r1=130209&r2=130210&view=diff
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/templates/index.html (original)
+++ zorg/trunk/lnt/lnt/server/ui/templates/index.html Tue Apr 26 12:47:43 2011
@@ -1,6 +1,14 @@
{% extends "layout.html" %}
-{% block title %}LNT{% endblock %}
+{% set components = [] %}
+{% block title %}Overview{% endblock %}
{% block body %}
-WIP
-{% endblock %}
+{% if db_info.showGeneral %}
+<hr>
+
+<h3>General Database Access</h3>
+<p><a href="{{url_for('browse')}}">Browse DB</a>
+<p><a href="{{url_for('submit_run')}}">Submit Run</a>
+{% endif %}
+
+{% endblock %}
Modified: zorg/trunk/lnt/lnt/server/ui/templates/layout.html
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/templates/layout.html?rev=130210&r1=130209&r2=130210&view=diff
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/templates/layout.html (original)
+++ zorg/trunk/lnt/lnt/server/ui/templates/layout.html Tue Apr 26 12:47:43 2011
@@ -3,11 +3,76 @@
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>{{ self.title() }}</title>
+ <link rel="icon" type="image/png"
+ href="{{ url_for('.static', filename='favicon.ico') }}">
+ <title>{{old_config.name}}{%
+ for short_name,_ in components
+ %} : {{short_name}}{% endfor %} - {{ self.title() }}</title>
<link rel="stylesheet" type="text/css"{#
#} href="{{ url_for('.static', filename='style.css') }}">
+ {% block head %}{% endblock %}
+ <script type='text/javascript'>
+ {% block javascript %}{% endblock %}
+ </script>
</head>
+{% if self.onload %}
+<body onload="{{ self.onload() }}">
+{% else %}
<body>
- <div class="body">{% block body %}{% endblock %}</div>
+{% endif %}
+
+{# Header #}
+
+{# Database selection header. #}
+<div class="zorg_navheader">
+<form method="get" action="{{ url_for('select_db') }}">
+<table style="padding:0.1em;" width="100%%">
+<tr>
+ <td>
+ <strong>
+ [{{ db_name }}]
+ </strong>
+ </td>
+ <td style="text-align:right;">
+ <input type="hidden" name="path" value="{{ request.path }}"/>
+ <strong>Database:</strong>
+ <select name="db" onchange="submit()">
+{% for name in old_config.databases.keys()|sort %}
+ <option{{" selected" if FIXME_is_selected}}>{{ name }}</option>
+{% endfor %}
+ </select>
+ <input type="submit" value="Go"/>
+ </td>
+</tr>
+</table>
+</form>
+</div>
+
+{# Component links #}
+<h2><a href="{{url_for('index')}}">{{old_config.name}}</a>
+{% for short_name,path in components %}
+ : <a href="{{ path }}">{{short_name}}</a>
+{% endfor %}
+ - {{ self.title() }}</h2>
+
+{# Actual body #}
+<div class="body">{%
+ block body %}{% endblock %}
+</div>
+
+{# Include any database log, if present. #}
+{% if g.db_log %}
+<hr>
+
+<h3>SQL Log</h3>
+<pre>{{g.db_log}}</pre>
+{% endif %}
+
+{# Footer #}
+<hr>
+LNT Version: {{ app.version }}<br>
+Server Started: {{ app.start_time|asusertime }}<br>
+Generated: {{ request.request_time|asusertime }}<br>
+Render Time: {{ "%.2fs" % request.elapsed_time() }}<br>
</body>
</html>
Modified: zorg/trunk/lnt/lnt/server/ui/views.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/server/ui/views.py?rev=130210&r1=130209&r2=130210&view=diff
==============================================================================
--- zorg/trunk/lnt/lnt/server/ui/views.py (original)
+++ zorg/trunk/lnt/lnt/server/ui/views.py Tue Apr 26 12:47:43 2011
@@ -1,14 +1,62 @@
+import os
+
import flask
+from flask import abort
+from flask import current_app
from flask import redirect
from flask import render_template
+from flask import request
from flask import url_for
frontend = flask.Module(__name__)
- at frontend.route('/')
-def index():
- return render_template("index.html")
+###
+# Root-Only Routes
@frontend.route('/favicon.ico')
def favicon_ico():
return redirect(url_for('.static', filename='favicon.ico'))
+
+ at frontend.route('/select_db')
+def select_db():
+ path = request.args.get('path')
+ db = request.args.get('db')
+ if path is None:
+ abort(400)
+ if db not in current_app.old_config.databases:
+ abort(404)
+
+ # Rewrite the path.
+ new_path = "/db_%s" % db
+ if not path.startswith("/db_"):
+ new_path += path
+ else:
+ if '/' in path[1:]:
+ new_path += "/" + path.split("/", 2)[2]
+ return redirect(request.script_root + new_path)
+
+#####
+# Per-Database Routes
+
+ at frontend.route('/')
+ at frontend.route('/db_<name>')
+ at frontend.route('/db_<name>/')
+def index(name = None):
+ name = name or "default"
+ db_info = current_app.old_config.databases.get(name)
+ return render_template("index.html", db_name=name, db_info=db_info)
+
+###
+# Database Actions
+
+ at frontend.route('/browse')
+def browse(name = None):
+ name = name or "default"
+ db_info = current_app.old_config.databases.get(name)
+ raise NotImplementedError
+
+ at frontend.route('/submitRun')
+def submit_run(name = None):
+ name = name or "default"
+ db_info = current_app.old_config.databases.get(name)
+ raise NotImplementedError
More information about the llvm-commits
mailing list