[cig-commits] r11989 - in cs/portal/trunk/northridge/SeismoWebPortal: . static/images templates/SeismoWebPortal
leif at geodynamics.org
leif at geodynamics.org
Tue May 20 20:35:33 PDT 2008
Author: leif
Date: 2008-05-20 20:35:33 -0700 (Tue, 20 May 2008)
New Revision: 11989
Added:
cs/portal/trunk/northridge/SeismoWebPortal/static/images/rocket.gif
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_confirm_delete.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_detail.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_form.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_list.html
Modified:
cs/portal/trunk/northridge/SeismoWebPortal/forms.py
cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py
cs/portal/trunk/northridge/SeismoWebPortal/models.py
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_detail.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_map.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mesh_form_base.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_form.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodel_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_form.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/pluggable.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/source_map.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobemesh_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_form.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/style.css
Log:
Sketched 'Run' pages. Use 'User.message_set' once again (but threw
out Django's messages because they sound robotic). New, consistent
look for buttons/menus. Added 'onclick' to table rows. Gave all
objects names once again, abandoning my plan to create an anonymous
UI.
Modified: cs/portal/trunk/northridge/SeismoWebPortal/forms.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/forms.py 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/forms.py 2008-05-21 03:35:33 UTC (rev 11989)
@@ -2,6 +2,7 @@
from django import forms
from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User
+from django.contrib.contenttypes.models import ContentType
from django.core import validators
import cmt
@@ -84,6 +85,81 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class RunManipulator(forms.Manipulator):
+
+ def __init__(self, objId=None):
+ from django.db.models import BLANK_CHOICE_DASH as blank
+
+ super(RunManipulator, self).__init__()
+ if objId:
+ self.obj = models.Run.objects.get(id = objId)
+ else:
+ self.obj = None
+
+ self.selectFields = [
+ ('event', blank + [(x.id, str(x)) for x in models.Event.objects.all()]),
+ ('stationList', blank + [(x.id, str(x)) for x in models.StationList.objects.all()]),
+ ]
+
+ parametersChoices = list(blank)
+ for ModelClass in [models.Specfem3DGlobeParameters, models.MineosParameters]:
+ ctype = ContentType.objects.get_for_model(ModelClass)
+ for obj in ModelClass.objects.all():
+ value = "%d,%d" % (ctype.id, obj.id)
+ title = str(obj)
+ parametersChoices.append((value, title))
+ self.selectFields.append(
+ ('parameters', parametersChoices)
+ )
+
+ self.fields = [
+ forms.SelectField(fieldName, is_required=True, choices=choices)
+ for fieldName, choices in self.selectFields
+ ]
+
+ return
+
+ def flatten_data(self):
+ data = {}
+ obj = self.obj
+ if obj:
+ for fieldName, choices in self.selectFields:
+ value = getattr(obj, fieldName)
+ if fieldName == 'parameters':
+ ctype = ContentType.objects.get_for_model(value.__class__)
+ value = "%d,%d" % (ctype.id, value.id)
+ else:
+ value = value.id
+ data[fieldName] = value
+ else:
+ for fieldName, choices in self.selectFields:
+ if len(choices) == 2:
+ data[fieldName] = choices[1][0]
+ return data
+
+ def save(self, new_data):
+ event = models.Event.objects.get(id = int(new_data['event']))
+ stationList = models.StationList.objects.get(id = int(new_data['stationList']))
+ parametersType, parametersId = map(int, new_data['parameters'].split(','))
+ parametersType = ContentType.objects.get(id = parametersType)
+
+ obj = self.obj
+ if obj:
+ obj.event = event
+ obj.stationList = stationList
+ obj.parametersType = parametersType
+ obj.parametersId = parametersId
+ obj.save()
+ else:
+ obj = models.Run.objects.create(
+ event = event,
+ stationList = stationList,
+ parametersType = parametersType,
+ parametersId = parametersId,
+ )
+ return obj
+
+
class RunStatusManipulator(forms.Manipulator):
def __init__(self):
Modified: cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py 2008-05-21 03:35:33 UTC (rev 11989)
@@ -1,14 +1,12 @@
-from django.template import loader, RequestContext
from django import oldforms
from django.db.models import FileField
from django.contrib.auth.views import redirect_to_login
-from django.template import RequestContext
+from django.template import loader, Context
from django.http import HttpResponse, HttpResponseRedirect, Http404
from django.core.exceptions import ObjectDoesNotExist
from django.core.paginator import ObjectPaginator, InvalidPage
-from django.utils.translation import gettext
from HTMLParser import HTMLParser
import cmt
@@ -30,7 +28,7 @@
@classmethod
def create(cls, request, template_name=None,
template_loader=loader, extra_context=None, post_save_redirect=None,
- login_required=False, follow=None, context_processors=None):
+ login_required=False):
"""
Generic object-creation function.
@@ -44,7 +42,7 @@
if login_required and not request.user.is_authenticated():
return redirect_to_login(request.path)
- manipulator = model.AddManipulator(follow=follow)
+ manipulator = cls.addManipulator()
if request.POST:
# If data was POSTed, we're trying to create a new object
new_data = request.POST.copy()
@@ -61,7 +59,7 @@
new_object = manipulator.save(new_data)
if request.user.is_authenticated():
- request.user.message_set.create(message=gettext("The %(verbose_name)s was created successfully.") % {"verbose_name": model._meta.verbose_name})
+ request.user.message_set.create(message = 'Created "%s".' % new_object)
# Redirect to the new object: first by trying post_save_redirect,
# then by obj.get_absolute_url; fail if neither works.
@@ -81,11 +79,11 @@
if not template_name:
template_name = "%s/%s_form.html" % (model._meta.app_label, model._meta.object_name.lower())
t = template_loader.get_template(template_name)
- c = RequestContext(request, {
+ c = Context({
'form': form,
'action': request.path,
'root': request.root,
- }, context_processors)
+ })
for key, value in extra_context.items():
if callable(value):
c[key] = value()
@@ -96,7 +94,7 @@
def update(self, request,
template_name=None, template_loader=loader,
extra_context=None, post_save_redirect=None,
- login_required=False, follow=None, context_processors=None,
+ login_required=False,
template_object_name='object'):
"""
Generic object-update function.
@@ -115,7 +113,7 @@
model = self.Model
object = self.obj
- manipulator = model.ChangeManipulator(getattr(object, object._meta.pk.attname), follow=follow)
+ manipulator = self.changeManipulator()
if request.POST:
new_data = request.POST.copy()
@@ -127,7 +125,7 @@
object = manipulator.save(new_data)
if request.user.is_authenticated():
- request.user.message_set.create(message=gettext("The %(verbose_name)s was updated successfully.") % {"verbose_name": model._meta.verbose_name})
+ request.user.message_set.create(message = 'Saved "%s".' % object)
# Do a post-after-redirect so that reload works, etc.
if post_save_redirect:
@@ -145,12 +143,12 @@
if not template_name:
template_name = "%s/%s_form.html" % (model._meta.app_label, model._meta.object_name.lower())
t = template_loader.get_template(template_name)
- c = RequestContext(request, {
+ c = Context({
'form': form,
template_object_name: object,
'action': request.path,
'root': request.root,
- }, context_processors)
+ })
for key, value in extra_context.items():
if callable(value):
c[key] = value()
@@ -161,7 +159,7 @@
def delete(self, request, post_delete_redirect=None,
object_id=None, slug=None, slug_field=None, template_name=None,
template_loader=loader, extra_context=None,
- login_required=False, context_processors=None, template_object_name='object'):
+ login_required=False, template_object_name='object'):
"""
Generic object-delete function.
@@ -182,9 +180,10 @@
object = self.obj
if request.method == 'POST':
+ message = 'Deleted "%s".' % object
object.delete()
if request.user.is_authenticated():
- request.user.message_set.create(message=gettext("The %(verbose_name)s was deleted.") % {"verbose_name": model._meta.verbose_name})
+ request.user.message_set.create(message = message)
if post_delete_redirect:
return HttpResponseRedirect(post_delete_redirect)
else:
@@ -193,11 +192,11 @@
if not template_name:
template_name = "%s/%s_confirm_delete.html" % (model._meta.app_label, model._meta.object_name.lower())
t = template_loader.get_template(template_name)
- c = RequestContext(request, {
+ c = Context({
template_object_name: object,
'action': request.path,
'root': request.root,
- }, context_processors)
+ })
for key, value in extra_context.items():
if callable(value):
c[key] = value()
@@ -208,7 +207,7 @@
@classmethod
def list(cls, request, paginate_by=None, page=None,
allow_empty=True, template_name=None, template_loader=loader,
- extra_context=None, context_processors=None, template_object_name='object',
+ extra_context=None, template_object_name='object',
):
"""
Generic list of objects.
@@ -258,7 +257,7 @@
object_list = []
else:
raise Http404
- c = RequestContext(request, {
+ c = Context({
'%s_list' % template_object_name: object_list,
'is_paginated': paginator.pages > 1,
'results_per_page': paginate_by,
@@ -272,13 +271,13 @@
'pages': paginator.pages,
'hits' : paginator.hits,
'root': request.root,
- }, context_processors)
+ })
else:
- c = RequestContext(request, {
+ c = Context({
'%s_list' % template_object_name: queryset,
'is_paginated': False,
'root': request.root,
- }, context_processors)
+ })
if not allow_empty and len(queryset) == 0:
raise Http404
for key, value in extra_context.items():
@@ -295,7 +294,7 @@
def detail(self, request, view,
template_name=None, template_name_field=None,
template_loader=loader, extra_context=None,
- context_processors=None, template_object_name='object',
+ template_object_name='object',
):
"""
Generic detail of an object.
@@ -315,10 +314,10 @@
t = template_loader.select_template(template_name_list)
else:
t = template_loader.get_template(template_name)
- c = RequestContext(request, {
+ c = Context({
template_object_name: obj,
'root': request.root,
- }, context_processors)
+ })
for key, value in extra_context.items():
if callable(value):
c[key] = value()
@@ -328,12 +327,17 @@
def duplicate(self, request):
dup = self._duplicate()
+ if request.user.is_authenticated():
+ request.user.message_set.create(message = 'Editing a new copy of "%s".' % self.obj)
return HttpResponseRedirect(self.urlForObject(dup, request.root, action = 'edit'))
def _duplicate(self):
from copy import copy
- dup = copy(self.obj)
+ obj = self.obj
+ dup = copy(obj)
dup.id = None
+ if hasattr(obj, 'name'):
+ dup.name = "copy of %s" % obj.name
dup.save()
return dup
@@ -374,6 +378,8 @@
if not errors:
manipulator.do_html2python(new_data)
new_object = manipulator.save(new_data)
+ if request.user.is_authenticated():
+ request.user.message_set.create(message = 'Uploaded "%s".' % new_object)
if post_save_redirect:
return HttpResponseRedirect(post_save_redirect % new_object.__dict__)
elif hasattr(new_object, 'get_absolute_url'):
@@ -386,7 +392,7 @@
form = oldforms.FormWrapper(manipulator, new_data, errors)
template_name = "%s/%s_upload.html" % (ModelClass._meta.app_label, ModelClass._meta.object_name.lower())
t = template_loader.get_template(template_name)
- c = RequestContext(request, {
+ c = Context({
'form': form,
'action': request.path,
'root': request.root,
@@ -404,8 +410,15 @@
def postDeleteRedirect(self, root):
return "%s/?class=%s" % (root, self.__class__.__name__)
+ @classmethod
+ def addManipulator(cls):
+ return cls.Model.AddManipulator()
+ def changeManipulator(self):
+ object = self.obj
+ return self.Model.ChangeManipulator(getattr(object, object._meta.pk.attname))
+
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Events
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -425,17 +438,17 @@
@classmethod
def create(cls, request):
from forms import SingleSourceEventAddManipulator
- return cls._manipulate(request, SingleSourceEventAddManipulator())
+ return cls._manipulate(request, SingleSourceEventAddManipulator(), 'Created "%s".')
def update(self, request):
from forms import SingleSourceEventChangeManipulator
event = self.obj
if not event.singleSource:
return super(Event, self).update(request)
- return self._manipulate(request, SingleSourceEventChangeManipulator(event), event)
+ return self._manipulate(request, SingleSourceEventChangeManipulator(event), 'Saved "%s".', event)
@classmethod
- def _manipulate(cls, request, manipulator, event=None):
+ def _manipulate(cls, request, manipulator, messageFormat, event=None):
if request.method == 'POST':
new_data = request.POST.copy()
errors = manipulator.get_validation_errors(new_data)
@@ -445,6 +458,8 @@
new_data['object'] = None; del new_data['object']
new_data['action'] = None; del new_data['action']
obj = manipulator.save(new_data)
+ if request.user.is_authenticated():
+ request.user.message_set.create(message = messageFormat % obj)
return HttpResponseRedirect(cls.urlForObject(obj, request.root))
else:
new_data = manipulator.flatten_data()
@@ -452,7 +467,7 @@
form = oldforms.FormWrapper(manipulator, new_data, errors)
t = loader.get_template('SeismoWebPortal/single_source_event_form.html')
- c = RequestContext(request, dict(
+ c = Context(dict(
form = form,
action = request.path,
object = event,
@@ -476,7 +491,7 @@
if not request.GET.get('itype'):
t = loader.get_template('SeismoWebPortal/event_search.html')
- c = RequestContext(request, dict(action = request.path, root = request.root))
+ c = Context(dict(action = request.path, root = request.root))
return t.render(c)
# Simply forward the search request to globalcmt.org.
@@ -508,12 +523,10 @@
r.save()
t = loader.get_template('SeismoWebPortal/event_search_results.html')
- c = RequestContext(request,
- {'event_list': parser.cmtList,
- 'error': parser.error,
- 'root': request.root,
- }
- )
+ c = Context({'event_list': parser.cmtList,
+ 'error': parser.error,
+ 'root': request.root,
+ })
return t.render(c)
def downloadAsText(self, request):
@@ -669,16 +682,16 @@
nchunks = int(nchunks)
except ValueError:
raise Http404
- return cls._manipulate(request, nchunks, MeshAddManipulator(nchunks))
+ return cls._manipulate(request, nchunks, MeshAddManipulator(nchunks), 'Created "%s".')
def update(self, request):
from forms import MeshChangeManipulator
mesh = self.obj
nchunks = mesh.nchunks
- return self._manipulate(request, nchunks, MeshChangeManipulator(nchunks, mesh.id), mesh)
+ return self._manipulate(request, nchunks, MeshChangeManipulator(nchunks, mesh.id), 'Saved "%s".', mesh)
@classmethod
- def _manipulate(cls, request, nchunks, manipulator, mesh=None):
+ def _manipulate(cls, request, nchunks, manipulator, messageFormat, mesh=None):
if nchunks == 1:
template = 'SeismoWebPortal/mesh_form_1chunk.html'
@@ -697,6 +710,8 @@
if not errors:
manipulator.do_html2python(new_data)
new_object = manipulator.save(new_data)
+ if request.user.is_authenticated():
+ request.user.message_set.create(message = messageFormat % new_object)
return HttpResponseRedirect(cls.urlForObject(new_object, request.root))
else:
# Populate new_data with a 'flattened' version of the current data.
@@ -706,7 +721,7 @@
# Populate the FormWrapper.
form = oldforms.FormWrapper(manipulator, new_data, errors)
t = loader.get_template(template)
- c = RequestContext(request, dict(
+ c = Context(dict(
form = form,
nchunks = nchunks,
object = mesh,
@@ -739,8 +754,9 @@
downloadableAsText = True
duplicatable = False
- def update(self, request):
- return super(MineosModel, self).update(request, follow = dict(data = False))
+ def changeManipulator(self):
+ object = self.obj
+ return self.Model.ChangeManipulator(getattr(object, object._meta.pk.attname), follow = dict(data = False))
def downloadAsText(self, request):
response = HttpResponse(mimetype='text/plain')
@@ -755,6 +771,24 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Runs
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+class Run(Object):
+ Model = models.Run
+
+ @classmethod
+ def addManipulator(cls):
+ from forms import RunManipulator
+ return RunManipulator()
+
+ def changeManipulator(self):
+ from forms import RunManipulator
+ return RunManipulator(self.obj.id)
+
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# support code
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Modified: cs/portal/trunk/northridge/SeismoWebPortal/models.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/models.py 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/models.py 2008-05-21 03:35:33 UTC (rev 11989)
@@ -1,6 +1,7 @@
from django.db import models
from django.contrib.auth.models import User
+from django.contrib.contenttypes.models import ContentType
from django.core import validators
@@ -243,6 +244,8 @@
class Specfem3DGlobeMesh(models.Model):
+ name = models.CharField(maxlength=100)
+
nchunks = models.IntegerField(core=True, choices=NCHUNKS_CHOICES, default=1)
nproc_xi = models.IntegerField(core=True, choices=NPROC_CHOICES, default=5)
nproc_eta = models.IntegerField(core=True, choices=NPROC_CHOICES, default=5)
@@ -258,6 +261,8 @@
center_longitude = models.FloatField(max_digits=19, decimal_places=10, core=True)
gamma_rotation_azimuth = models.FloatField(max_digits=19, decimal_places=10, core=True)
+ def __str__(self): return self.name
+
def shortestPeriod(self):
if self.nchunks == 6:
return (256.0 / float(self.nex_xi())) * 17.0
@@ -275,8 +280,10 @@
class Specfem3DGlobeParameters(models.Model):
+
+ name = models.CharField(maxlength=100)
+
mesh = models.ForeignKey(Specfem3DGlobeMesh)
-
model = models.IntegerField(choices=MODEL_TYPES, core=True, default=2)
oceans = models.BooleanField(core=True, default=True)
gravity = models.BooleanField(core=True, default=True)
@@ -285,6 +292,8 @@
rotation = models.BooleanField(core=True, default=True)
ellipticity = models.BooleanField(core=True, default=True)
+ def __str__(self): return self.name
+
def nodes(self):
"""Return the number of processors required for this simulation."""
mesh = self.mesh
@@ -311,6 +320,8 @@
class MineosModeCatalog(models.Model):
+ name = models.CharField(maxlength=100)
+
#------------------------------------------------------------------------
# minos_bran
@@ -335,7 +346,9 @@
max_depth = models.FloatField(max_digits=19, decimal_places=10, default=1000.0) # km
+ def __str__(self): return self.name
+
class MineosModel(models.Model):
name = models.CharField(maxlength=100)
@@ -348,6 +361,8 @@
class MineosParameters(models.Model):
+ name = models.CharField(maxlength=100)
+
catalog = models.ForeignKey(MineosModeCatalog)
model = models.ForeignKey(MineosModel)
@@ -368,25 +383,31 @@
step = models.FloatField(max_digits=19, decimal_places=10, default=1.0) # seconds
+ def __str__(self): return self.name
+
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Runs, Jobs
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Run(models.Model):
- # each simulation may have multiple runs
- #simulation = models.ForeignKey(Simulation)
+ event = models.ForeignKey(Event)
+ stationList = models.ForeignKey(StationList)
+ parametersType = models.ForeignKey(ContentType, db_index=True)
+ parametersId = models.PositiveIntegerField(db_index=True)
+ parameters = models.GenericForeignKey(ct_field='parametersType', fk_field='parametersId')
+
status = models.CharField(maxlength=100)
started = models.DateTimeField(auto_now_add=True, editable=False)
- finished = models.DateTimeField(null=True, blank=True)
+ finished = models.DateTimeField(null=True)
class Admin:
list_display = ('status', 'started', 'finished')
def __str__(self):
- return "%s r%d" % (self.simulation.name, self.id)
+ return "run %04d" % self.id
class Job(models.Model):
Added: cs/portal/trunk/northridge/SeismoWebPortal/static/images/rocket.gif
===================================================================
(Binary files differ)
Property changes on: cs/portal/trunk/northridge/SeismoWebPortal/static/images/rocket.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_detail.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_detail.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_detail.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -1,5 +1,5 @@
-<h2>{{ object.name }}</h2>
+<h2>{{ object }}</h2>
{% if object.singleSource %}
@@ -17,7 +17,7 @@
<p class=infobar>{{ object.source_set.count }} source{{ object.source_set.count|pluralize }}
{% if object.source_set.count %}
- <table rules=cols>
+ <table rules=cols class="clickable">
<colgroup><col class=odd><col class=even><col class=odd><col class=even><col class=odd><col class=even><col class=odd></colgroup>
<thead>
@@ -34,7 +34,7 @@
<tbody>
{% for source in object.sources %}
- <tr class="{% cycle odd,even %}" id="s{{source.id}}">
+ <tr class="{% cycle odd,even %}" id="s{{source.id}}" onclick="location.href='{{root}}/?class=Source&object={{source.id}}'">
<td><a href="{{root}}/?class=Source&object={{source.id}}">{{ source.eventName }}</a></td>
<td class=float>{{ source.timeShift|stringformat:".4f" }}</td>
<td class=float>{{ source.halfDuration|stringformat:".4f" }}</td>
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_list.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_list.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -1,6 +1,6 @@
{% if object_list %}
- <table rules=cols>
+ <table rules=cols class="clickable">
<thead>
<tr>
<th>name</th>
@@ -15,7 +15,7 @@
<tbody>
{% for object in object_list %}
- <tr class="{% cycle odd,even %}" id="o{{object.id}}">
+ <tr class="{% cycle odd,even %}" id="o{{object.id}}" onclick="location.href='{{root}}/?class=Event&object={{object.id}}'">
<td><a href="{{root}}/?class=Event&object={{object.id}}">{{ object.name }}</a></td>
{% if object.singleSource %}
<td>point-source</td>
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_map.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_map.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_map.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -1,4 +1,6 @@
+<h2>{{ object }}</h2>
+
{% if object.singleSource %}
<center><p><img src="{{root}}/maps/events/{{object.singleSource.id}}/global/event.jpg">
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mesh_form_base.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mesh_form_base.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mesh_form_base.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -16,6 +16,12 @@
<div class=tab30ex>
+ <div>
+ <label for="id_name" class=before>name</label>
+ {{ form.name }}
+ {% if form.name.errors %}<span class=error>{{ form.name.errors|join:", " }}</span>{% endif %}
+ </div>
+
<fieldset><legend>chunks</legend>
<p>Nchunks = {{ nchunks }}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_form.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_form.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_form.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -17,6 +17,12 @@
<div class=tab30ex>
<div>
+ <label for="id_name" class=before>name</label>
+ {{ form.name }}
+ {% if form.name.errors %}<span class=error>{{ form.name.errors|join:", " }}</span>{% endif %}
+ </div>
+
+ <div>
<label for="id_eps" class=before>eps</label>
{{ form.eps }}
{% if form.eps.errors %}<span class=error>{{ form.eps.errors|join:", " }}</span>{% endif %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_list.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_list.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -1,7 +1,7 @@
{% if object_list %}
-<table rules=cols class=cool width="100%">
+<table rules=cols class="clickable">
<thead>
<tr>
<th rowspan=2></th>
@@ -23,8 +23,8 @@
<tbody>
{% for object in object_list %}
- <tr class="{% cycle odd,even %}" id="o{{object.id}}">
- <td><a href="{{root}}/?class=MineosModeCatalog&object={{object.id}}">xxx</a></td>
+ <tr class="{% cycle odd,even %}" id="o{{object.id}}" onclick="location.href='{{root}}/?class=MineosModeCatalog&object={{object.id}}'">
+ <td><a href="{{root}}/?class=MineosModeCatalog&object={{object.id}}">{{ object }}</a></td>
<td>{{ object.eps }}</td>
<td>{{ object.wgrav }}</td>
<td>{{ object.lmin }}</td>
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodel_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodel_list.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodel_list.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -1,7 +1,7 @@
{% if object_list %}
-<table rules=cols>
+<table rules=cols class="clickable">
<thead>
<tr>
<th>name</th>
@@ -10,7 +10,7 @@
<tbody>
{% for object in object_list %}
- <tr class="{% cycle odd,even %}" id="o{{object.id}}">
+ <tr class="{% cycle odd,even %}" id="o{{object.id}}" onclick="location.href='{{root}}/?class=MineosModel&object={{object.id}}'">
<td><a href="{{root}}/?class=MineosModel&object={{object.id}}">{{ object }}</a></td>
</tr>
{% endfor %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_form.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_form.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_form.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -17,6 +17,12 @@
<div class=tab30ex>
<div>
+ <label for="id_name" class=before>name</label>
+ {{ form.name }}
+ {% if form.name.errors %}<span class=error>{{ form.name.errors|join:", " }}</span>{% endif %}
+ </div>
+
+ <div>
<label for="id_catalog" class=before>catalog</label>
{{ form.catalog }}
{% if form.catalog.errors %}<span class=error>{{ form.catalog.errors|join:", " }}</span>{% endif %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_list.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_list.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -1,7 +1,7 @@
{% if object_list %}
-<table rules=cols class=cool width="100%">
+<table rules=cols class="clickable">
<thead>
<tr>
<th rowspan=3></th>
@@ -25,8 +25,8 @@
<tbody>
{% for object in object_list %}
- <tr class="{% cycle odd,even %}" id="o{{object.id}}">
- <td><a href="{{root}}/?class=MineosParameters&object={{object.id}}">xxx</a></td>
+ <tr class="{% cycle odd,even %}" id="o{{object.id}}" onclick="location.href='{{root}}/?class=MineosParameters&object={{object.id}}'">
+ <td><a href="{{root}}/?class=MineosParameters&object={{object.id}}">{{ object }}</a></td>
<td>{{ object.model }}</td>
<td>{{ object.catalog }}</td>
<td><img src="{{root}}/pics/icon-{% if object.radial %}yes{% else %}no{% endif %}.gif" alt="{{ object.radial }}"></td>
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/pluggable.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/pluggable.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/pluggable.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -28,6 +28,10 @@
Home</a>
</td>
<td align=center>
+ <a href="{{root}}/?class=Run"><img src="{{root}}/images/rocket.gif" width=32 height=32><br>
+ Runs</a>
+ </td>
+ <td align=center>
<a href="{{root}}/?class=Event"><img src="{{root}}/icons/events.gif" width=32 height=32><br>
Events</a>
</td>
@@ -104,6 +108,13 @@
</td>
<td>
{% if object %}
+ <a class="actionButton" href="{{root}}/?class={{klass}}&object={{object.id}}">View</a>
+ {% else %}
+ <span class="actionButton disabled">View</span>
+ {% endif %}
+ </td>
+ <td>
+ {% if object %}
<a class="actionButton" href="{{root}}/?class={{klass}}&object={{object.id}}&action=edit">Edit</a>
{% else %}
<span class="actionButton disabled">Edit</span>
@@ -154,9 +165,6 @@
<span class="actionButton disabled">Download</span>
{% endif %}
</td>
- <td>
- <a class="actionButton" href="{{root}}/run/">Run Simulation</a>
- </td>
</tr>
</table>
</td>
@@ -198,7 +206,17 @@
</tr>
</table>
-<div class="content">
+{% if messages %}
+<div id="messages">
+ <ul>
+ {% for message in messages %}
+ <li>{{ message }}</li>
+ {% endfor %}
+ </ul>
+</div>
+{% endif %}
+
+<div id="content">
{{content}}
</div>
Added: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_confirm_delete.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_confirm_delete.html (rev 0)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_confirm_delete.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -0,0 +1,10 @@
+
+<h2>delete run</h2>
+
+<form method="post" action="{{action}}">
+ <input type="hidden" name="class" value="Run">
+ <input type="hidden" name="object" value="{{object.id}}">
+ <input type="hidden" name="action" value="delete">
+ <p>Are you sure you want to delete {{ object }}?
+ <p><input type="submit" value="Delete" />
+</form>
Added: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_detail.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_detail.html (rev 0)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_detail.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -0,0 +1,12 @@
+
+<h2>{{ object }}</h2>
+
+<dl class=parameters>
+ <dt>id</dt><dd>{{ object.id|stringformat:"04d" }}</dd>
+ <dt>event</dt><dd>{{ object.event }}</dd>
+ <dt>stationList</dt><dd>{{ object.stationList }}</dd>
+ <dt>parameters</dt><dd>{{ object.parameters }}</dd>
+ <dt>started</dt><dd>{{ object.started|date }} {{ object.started|time }}</dd>
+ <dt>finished</dt><dd>{{ object.finshed|date }} {{ object.finished|time }}</dd>
+ <dt>status</dt><dd>{{ object.status }}</dd>
+</dl>
Added: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_form.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_form.html (rev 0)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_form.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -0,0 +1,57 @@
+
+<h2>{% if object %}edit {{object}}{% else %}new run{% endif %}</h2>
+
+<form method="post" action="{{action}}">
+ <input type="hidden" name="class" value="Run">
+ {% if object %}
+ <input type="hidden" name="object" value="{{object.id}}">
+ <input type="hidden" name="action" value="edit">
+ {% else %}
+ <input type="hidden" name="action" value="new">
+ {% endif %}
+
+ {% if form.has_errors %}
+ <p><span class=error>Please correct the following error{{ form.error_dict|pluralize }}.</span>
+ {% endif %}
+
+{% if form.has_errors %}
+<dl class=error>
+ {% for f in form.error_dict.iteritems %}
+ <dt>{{ f.0 }}</dt>
+ <dd>
+ <ul class=error>
+ {% for e in f.1 %}
+ <li>{{ e }}</li>
+ {% endfor %}
+ </ul>
+ </dd>
+ {% endfor %}
+</dl>
+{% endif %}
+
+ <div class=tab30ex>
+
+ <div>
+ <label for="id_event" class=before>event</label>
+ {{ form.event }}
+ {% if form.event.errors %}<span class=error>{{ form.event.errors|join:", " }}</span>{% endif %}
+ </div>
+
+ <div>
+ <label for="id_stationList" class=before>station list</label>
+ {{ form.stationList }}
+ {% if form.stationList.errors %}<span class=error>{{ form.stationList.errors|join:", " }}</span>{% endif %}
+ </div>
+
+ <div>
+ <label for="id_parameters" class=before>parameters</label>
+ {{ form.parameters }}
+ {% if form.parameters.errors %}<span class=error>{{ form.parameters.errors|join:", " }}</span>{% endif %}
+ </div>
+
+ <div><input class=submit type="submit" name="save" value="Save" />
+ </div>
+
+ </div> <!-- tab30ex -->
+
+</form>
Added: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_list.html (rev 0)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/run_list.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -0,0 +1,33 @@
+
+{% if object_list %}
+ <table rules=cols class="clickable">
+ <thead>
+ <tr>
+ <th>id</th>
+ <th>event</th>
+ <th>stations</th>
+ <th>parameters</th>
+ <th>started</th>
+ <th>finished</th>
+ <th>status</th>
+ </tr>
+ </thead>
+
+ <tbody>
+ {% for object in object_list %}
+ <tr class="{% cycle odd,even %}" id="o{{object.id}}" onclick="location.href='{{root}}/?class=Run&object={{object.id}}'">
+ <td><a href="{{root}}/?class=Run&object={{object.id}}">{{ object.id|stringformat:"04d" }}</a></td>
+ <td>{{ object.event }}</td>
+ <td>{{ object.stationList }}</td>
+ <td>{{ object.parameters }}</td>
+ <td>{{ object.started|date }} {{ object.started|time }}</td>
+ <td>{{ object.finshed|date }} {{ object.finished|time }}</td>
+ <td>{{ object.status }}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+
+ </table>
+{% else %}
+ <p>You have no runs.
+{% endif %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/source_map.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/source_map.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/source_map.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -1,3 +1,5 @@
+<h2>{{ object }}</h2>
+
<center><p><img src="{{root}}/maps/events/{{object.id}}/global/event.jpg">
<img src="{{root}}/maps/events/{{object.id}}/global/antipode.jpg"></p></center>
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobemesh_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobemesh_list.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobemesh_list.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -1,6 +1,6 @@
{% if object_list %}
- <table border=1 rules=groups>
+ <table rules=cols class="clickable">
<colgroup><col class=odd></colgroup>
<colgroup><col class=even></colgroup>
<colgroup><col class=odd><col class=even></colgroup>
@@ -40,8 +40,8 @@
<tbody>
{% for object in object_list %}
- <tr class="{% cycle odd,even %}" id="o{{object.id}}">
- <td><a href="{{root}}/?class=Specfem3DGlobeMesh&object={{object.id}}">xxx</a></td>
+ <tr class="{% cycle odd,even %}" id="o{{object.id}}" onclick="location.href='{{root}}/?class=Specfem3DGlobeMesh&object={{object.id}}'">
+ <td><a href="{{root}}/?class=Specfem3DGlobeMesh&object={{object.id}}">{{ object }}</a></td>
<td class=int>{{ object.nchunks }}</td>
<td class=int>{{ object.nproc_eta }}</td>
<td class=int>{{ object.nproc_xi }}</td>
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_form.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_form.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_form.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -14,6 +14,7 @@
<p><span class=error>Please correct the following error{{ form.error_dict|pluralize }}.</span>
{% endif %}
+{% if 0 %}
{% if form.has_errors %}
<dl class=error>
{% for f in form.error_dict.iteritems %}
@@ -28,10 +29,17 @@
{% endfor %}
</dl>
{% endif %}
+{% endif %}
<div class=tab30ex>
<div>
+ <label for="id_name" class=before>name</label>
+ {{ form.name }}
+ {% if form.name.errors %}<span class=error>{{ form.name.errors|join:", " }}</span>{% endif %}
+ </div>
+
+ <div>
<label for="id_mesh" class=before>mesh</label>
{{ form.mesh }}
{% if form.mesh.errors %}<span class=error>{{ form.mesh.errors|join:", " }}</span>{% endif %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_list.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_list.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -1,6 +1,6 @@
{% if object_list %}
- <table rules=cols>
+ <table rules=cols class="clickable">
<thead>
<tr>
<th></th>
@@ -17,8 +17,8 @@
<tbody>
{% for object in object_list %}
- <tr class="{% cycle odd,even %}" id="o{{object.id}}">
- <td><a href="{{root}}/?class=Specfem3DGlobeParameters&object={{object.id}}">xxx</a></td>
+ <tr class="{% cycle odd,even %}" id="o{{object.id}}" onclick="location.href='{{root}}/?class=Specfem3DGlobeParameters&object={{object.id}}'">
+ <td><a href="{{root}}/?class=Specfem3DGlobeParameters&object={{object.id}}">{{ object }}</a></td>
<td>{{ object.mesh }}<br>
<span class=inlineInfo>shortest period ≅ {{ object.mesh.shortestPeriod|stringformat:".0f" }}s</span></td>
<td>{{ object.get_model_display }}</td>
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_list.html 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_list.html 2008-05-21 03:35:33 UTC (rev 11989)
@@ -1,6 +1,6 @@
{% if object_list %}
- <table rules=cols>
+ <table rules=cols class="clickable">
<thead>
<tr>
<th>name</th>
@@ -10,7 +10,7 @@
<tbody>
{% for object in object_list %}
- <tr class="{% cycle odd,even %}" id="o{{object.id}}">
+ <tr class="{% cycle odd,even %}" id="o{{object.id}}" onclick="location.href='{{root}}/?class=StationList&object={{object.id}}'">
<td><a href="{{root}}/?class=StationList&object={{object.id}}">{{ object.name }}</a></td>
<td>{{ object.station_set.count }}</td>
</tr>
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/style.css
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/style.css 2008-05-20 15:01:36 UTC (rev 11988)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/style.css 2008-05-21 03:35:33 UTC (rev 11989)
@@ -23,6 +23,27 @@
margin-bottom: 1em;
}
+#messages {
+ position: relative;
+}
+
+#messages ul {
+ position: absolute;
+ top: -3ex;
+ right: 1ex;
+ font-weight: bold;
+ background-color: yellow;
+ border: medium double black;
+ padding-top: .5ex;
+ padding-bottom: .5ex;
+ padding-left: 1ex;
+ padding-right: 1ex;
+}
+
+#messages li {
+ list-style: none;
+}
+
#login {
font-size: small;
}
@@ -86,6 +107,7 @@
.actionMenu .actionMenuHeader {
border: 1px solid black;
+ background: white url({{root}}/images/input_background.gif) repeat-x;
}
.actionMenu .actionMenuHeader a {
@@ -93,10 +115,6 @@
padding-right: 1ex;
}
-.actionMenu.deactivated .actionMenuHeader a:hover {
- background-color: #cde2a7;
-}
-
.actionMenu .actionMenuContent {
display: none;
position: absolute;
@@ -126,6 +144,7 @@
.actionMenu.activated .actionMenuHeader {
color: white;
background-color: black;
+ background-image: none;
}
.actionMenu.activated .actionMenuHeader a {
@@ -134,6 +153,7 @@
.actionMenu.activated .actionMenuContent {
display: block;
+ z-index: 1;
border: 1px solid black;
}
@@ -164,13 +184,9 @@
padding-right: 1ex;
text-decoration: none;
color: black;
+ background: white url({{root}}/images/input_background.gif) repeat-x;
}
-a.actionButton:hover {
- color: white;
- background-color: black;
-}
-
.disabled {
color: silver;
}
@@ -190,12 +206,12 @@
tables
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-.content table {
+#content table {
border: 1px solid black;
width: 100%;
}
-.content thead {
+#content thead {
border-bottom: 1px solid black;
}
@@ -207,17 +223,17 @@
background-color: #ff9;
}
-.content th {
+#content th {
text-align: left;
padding-left: 1ex;
padding-right: 1ex;
}
-.content th.colgroup {
+#content th.colgroup {
text-align: center;
}
-.content td {
+#content td {
padding-left: 1ex;
padding-right: 1ex;
}
@@ -239,7 +255,11 @@
font-size: small;
}
+table.clickable tbody tr {
+ cursor: pointer;
+}
+
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
forms
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
@@ -285,7 +305,7 @@
.computed {
font-weight: bold;
background-color: #fcc;
- border: thin solid red;
+ border: 1px solid red;
}
label.before {
@@ -347,28 +367,34 @@
.tab30ex select.vSelectField {
float: left;
margin-bottom: 1em;
+ margin-left: .5ex;
+ margin-right: .5ex;
}
+input {
+ font-family: "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif;
+ border: 1px solid #8cacbb;
+ background: white url({{root}}/images/input_background.gif) repeat-x;
+ margin-left: .5ex;
+ margin-right: .5ex;
+}
+
input.reset {
float: right;
+ border: 1px solid black;
}
input.submit {
margin-top: 2em;
margin-bottom: 2em;
+ border: 1px solid black;
}
.tab30ex input.submit {
margin-left: 30ex;
}
-input {
- font-family: "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif;
- border: 1px solid #8cacbb;
- background: White url({{root}}/images/input_background.gif) repeat-x;
-}
-
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
collapsible help
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
More information about the cig-commits
mailing list