#24 : added calendar class for mootools from http://www.electricprism.com/aeron/calendar/.

- some css stuff as well.
- selector view implementation for stats plugin (from admin menu)
This commit is contained in:
Florent Dionisi
2009-11-27 17:45:59 +01:00
parent 81fb5a4358
commit 02d45cc843
6 changed files with 1517 additions and 5 deletions
+23 -3
View File
@@ -7,6 +7,7 @@ This module provides rrdtool support to retreive statistics
from postfix log : sent, received, bounced, rejected
"""
import calendar
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _
from django.conf.urls.defaults import *
@@ -89,6 +90,8 @@ def graph_display(request,dom_id,graph_t=graph_types):
@login_required
@user_passes_test(lambda u: u.is_superuser)
def adminindex(request):
CH = calendar.HTMLCalendar(calendar.MONDAY)
CH_print = CH.formatmonth(2009,11)
period = request.GET.has_key("period") and request.GET["period"] or "day"
domain = request.GET.has_key("domain") and request.GET["domain"] or "global"
if domain != "global":
@@ -100,8 +103,25 @@ def adminindex(request):
"graphs" : [{"name" : "traffic", "label" : _("Average normal traffic")},
{"name" : "badtraffic", "label" : _("Average bad traffic")},
{"name" : "size", "label" : _("Average normal traffic size")}],
"periods" : ["day", "week", "month", "year"],
"period" : period
"periods" : ["day", "week", "month", "year","Custom"],
"period" : period, "cal" : CH_print
})
@login_required
@user_passes_test(lambda u: u.is_superuser)
def custom_period(request):
print "[stats] json get"
start = request.GET.has_key("start")
if not start:
print "[stats] no start selected"
return
end = request.GET.has_key("end")
return _render(request, 'stats/graphs.html', {
"domain" : domain,
"graphs" : [{"name" : "traffic", "label" : _("Average normal traffic")},
{"name" : "badtraffic", "label" : _("Average bad traffic")},
{"name" : "size", "label" : _("Average normal traffic size")}],
"period" : "%s_%s" %(start,end)
})
@login_required
@@ -118,6 +138,6 @@ def index(request, dom_id=None):
"graphs" : [{"name" : "traffic", "label" : _("Average normal traffic")},
{"name" : "badtraffic", "label" : _("Average bad traffic")},
{"name" : "size", "label" : _("Average normal traffic size")}],
"periods" : ["day", "week", "month", "year"],
"periods" : ["day", "week", "month", "year","Custom"],
"period" : period
})
+12 -2
View File
@@ -4,6 +4,7 @@
{% block html_head %}
<script src="/static/js/mootools-more.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="/static/stylesheets/box.css" />
<link rel="stylesheet" type="text/css" href="/static/stylesheets/calendar.css" />
<style type="text/css">
#graphcontent {
margin: 25px auto 10px;
@@ -11,7 +12,7 @@
}
#selectors {
float: right;
float: none;
}
</style>
@@ -27,6 +28,7 @@ window.addEvent("domready", function() {
});
});
</script>
<script type="text/javascript" src="/static/js/calendar.js"></script>
{% endblock %}
{% block middletitle %}{% trans "Global statistics" %}{% endblock %}
{% block content %}
@@ -46,7 +48,15 @@ window.addEvent("domready", function() {
<option value="{{ p }}" {% ifequal p period %}selected{% endifequal %}>{% getLabel p %}</option>
{% endfor %}
</select>
{% ifequal period "Custom" %}
{% include "stats/calendar.html" %}
{% url extensions.stats.main.adminindex as c_stats_url %}
{% endifequal %}
</div>
{% include "stats/graphs.html" %}
<!--
<h2>
{% trans "Period " %}{% trans period %}
</h2>-->
{% include "stats/graphs.html" %}</div>
</div>
{% endblock %}
+38
View File
@@ -0,0 +1,38 @@
{% load i18n %}
<div id="periodSelector" style="border:1px solid #dddddd;float:right;padding:3px;margin-top:-3px;">
<form class="calendarForm" method="post" action="" name="" onSubmit="change()">
{% trans "Start" %}: <input id="dateTravelStart" value="" type="text"/>
{% trans "End" %}: <input id="dateTravelEnd" value="" type="text" />
<input TYPE=SUBMIT VALUE="ok">
</form>
</div>
<script type="text/javascript">
function change() {
alert("New period : start = " + $("dateTravelStart").value + " end = " + $("dateTravelEnd").value);
{% url extensions.stats.main.custom_period as c_stats_url %}
alert("url for json : {{ c_stats_url}} ");
js = new Request.JSON({url: "{{ c_stats_url }}", onSuccess: function(resp) {
alert("html", resp.content);
}}).get({"start" : $("dateTravelStart").value, "end" : $("dateTravelEnd").value});
};
myCal = new Calendar(
{
dateTravelStart: 'D, d/m/Y',
dateTravelEnd : 'D, d/m/Y'
},
{
direction: 0, // -1 past, 0 past + future, 1 future
pad:1,
offset: 1, // first day of the week: 0 = sunday, 1 = monday, etc..
tweak: {x: -147, y: 18}, // tweak calendar positioning
}
);
</script>
<!--
<form name="calendar">
<textarea type="text" rows="0" cols="5">{{ sdate }}</textarea>
<textarea type="text" rows="0" cols="5">{{ edate }}</textarea>
</select>
-->
+1
View File
@@ -2,6 +2,7 @@ from django.conf.urls.defaults import *
urlpatterns = patterns('mailng.extensions.stats.main',
url(r'^$', 'adminindex', name='fullindex'),
url(r'^custom_period$', 'custom_period'),
url(r'^(?P<dom_id>\d+)/$', 'index', name='domindex'),
(r'^display/(?P<dom_id>\d+)/(?P<graph_t>\w+)/$', 'graph_display'),
(r'^domain/(?P<dom_id>\d+)/$', 'domain'),
File diff suppressed because it is too large Load Diff
+99
View File
@@ -0,0 +1,99 @@
/*
Document : calendar.css
Created on : 29.07.2009
Author : jens klose
Description:
example styles for calendar
*/
.calendarForm{
float:right;
}
.calendar{
font-family:verdana,sans-serif;
font-size:10px;
float:None;
}
button.calendar{
position:relative;
top:-3px;
left:1px;
background-color:transparent;
background-image:url(../pics/calendar.gif);
border:none;
margin: 0px;
padding:0px;
margin-right:3px;
cursor:pointer;
width:16px;
height:16px;
}
input.calendar{
cursor:pointer;
border: 1px solid #87847F;
height:12px;
width:100px;
color: #87847F;
}
div.calendar{
background:white;
border: 1px solid #87847F;
width:180px
}
a.footer{
color:#474747;
padding:2px;
}
.calendar table{
width:100%;
}
.calendar th,
.calendar td{
text-align:center;
font-size:10px;
padding: 0.1em 0.25em 0.1em 0.3em;
}
.calendar tbody td,
.calendar .invalid{
color:silver;
}
.calendar .valid{
color:blue;
font-weight:bold;
}
.calendar .valid.hover{
background:#FFFF77;
cursor:pointer;
font-weight:bold;
}
.calendar caption a,
.calendar .next{
color:blue;
font-weight:bold;
padding:2px;
}
.calendar .next.hover{
background:#FFFF77;
cursor:pointer;
font-weight:bold;
}
.calendar .prev{
color:blue;
font-weight:bold;
padding:2px;
}
.calendar .prev.hover{
background:#FFFF77;
cursor:pointer;
font-weight:bold;
}
.calendar .active,
.calendar .hilite,
.calendar .inactive{
color:white;
background-color:#BE3916;
font-weight:bold;
}
.calendar .active,
.calendar .inactive{
background-color:red;
}