Skip to content
This repository has been archived by the owner on May 8, 2022. It is now read-only.

Commit

Permalink
Add date range filtering
Browse files Browse the repository at this point in the history
  • Loading branch information
julienr committed Mar 3, 2013
1 parent 86c6405 commit 24c570a
Show file tree
Hide file tree
Showing 12 changed files with 994 additions and 6 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -2,6 +2,7 @@ _data/
env/
*.pyc
*.mo
*~
zividb
ziviweb/static/
tunnel_sentry.sh
1 change: 0 additions & 1 deletion zivimap/import_items.py
Expand Up @@ -56,7 +56,6 @@ def process_item(item):
# Update available dates for this workspec. First remove all previous
# available dates
for dr in ws.daterange_set.all():
print dr
dr.delete()

for daterange in item['available_dates']:
Expand Down
11 changes: 11 additions & 0 deletions zivimap/models.py
@@ -1,5 +1,7 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.core.cache import cache
from django.db.models import Min, Max

class Address(models.Model):
canton = models.CharField(max_length=50)
Expand Down Expand Up @@ -49,3 +51,12 @@ class DateRange(models.Model):
workspec = models.ForeignKey(WorkSpec)
start = models.DateField(db_index=True)
end = models.DateField(db_index=True)

@classmethod
def get_min_max(cls):
CACHE_KEY = 'daterange_min_max'
m = cache.get(CACHE_KEY)
if m is None:
m = DateRange.objects.all().aggregate(Min('start'), Max('end'))
cache.set(CACHE_KEY, m)
return m['start__min'], m['end__max']
195 changes: 195 additions & 0 deletions zivimap/static/css/daterangepicker.css
@@ -0,0 +1,195 @@
.daterangepicker.dropdown-menu {
max-width: none;
}

.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar {
float: left;
margin: 4px;
}

.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar {
float: right;
margin: 4px;
}

.daterangepicker .ranges {
width: 160px;
text-align: left;
}

.daterangepicker .ranges .range_inputs>div {
float: left;
}

.daterangepicker .ranges .range_inputs>div:nth-child(2) {
padding-left: 11px;
}

.daterangepicker .calendar {
display: none;
max-width: 230px;
}

.daterangepicker .calendar th, .daterangepicker .calendar td {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
white-space: nowrap;
text-align: center;
}

.daterangepicker .ranges label {
color: #333;
font-size: 11px;
margin-bottom: 2px;
text-transform: uppercase;
text-shadow: 1px 1px 0 #fff;
}

.daterangepicker .ranges input {
font-size: 11px;
}

.daterangepicker .ranges ul {
list-style: none;
margin: 0;
padding: 0;
}

.daterangepicker .ranges li {
font-size: 13px;
background: #f5f5f5;
border: 1px solid #f5f5f5;
color: #08c;
padding: 3px 12px;
margin-bottom: 8px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
cursor: pointer;
}

.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover {
background: #08c;
border: 1px solid #08c;
color: #fff;
}

.daterangepicker .calendar {
border: 1px solid #ddd;
padding: 4px;
border-radius: 4px;
background: #fff;
}

.daterangepicker {
position: absolute;
background: #fff;
top: 100px;
left: 20px;
padding: 4px;
margin-top: 1px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}

.daterangepicker.opensleft:before {
position: absolute;
top: -7px;
right: 9px;
display: inline-block;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-left: 7px solid transparent;
border-bottom-color: rgba(0, 0, 0, 0.2);
content: '';
}

.daterangepicker.opensleft:after {
position: absolute;
top: -6px;
right: 10px;
display: inline-block;
border-right: 6px solid transparent;
border-bottom: 6px solid #fff;
border-left: 6px solid transparent;
content: '';
}

.daterangepicker.opensright:before {
position: absolute;
top: -7px;
left: 9px;
display: inline-block;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-left: 7px solid transparent;
border-bottom-color: rgba(0, 0, 0, 0.2);
content: '';
}

.daterangepicker.opensright:after {
position: absolute;
top: -6px;
left: 10px;
display: inline-block;
border-right: 6px solid transparent;
border-bottom: 6px solid #fff;
border-left: 6px solid transparent;
content: '';
}

.daterangepicker table {
width: 100%;
margin: 0;
}

.daterangepicker td, .daterangepicker th {
text-align: center;
width: 20px;
height: 20px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
cursor: pointer;
white-space: nowrap;
}

.daterangepicker td.off {
color: #999;
}
.daterangepicker td.disabled {
color: #999;
}

.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background: #eee;
}

.daterangepicker td.in-range {
background: #ebf4f8;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}

.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #006dcc;
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
background-image: linear-gradient(top, #0088cc, #0044cc);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
border-color: #0044cc #0044cc #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}

.daterangepicker td.week, .daterangepicker th.week {
font-size: 80%;
color: #ccc;
}
2 changes: 1 addition & 1 deletion zivimap/static/css/main.css
Expand Up @@ -71,7 +71,7 @@ ul#search_form {
margin-bottom: 5px;
}

ul#search_form li {
ul#search_form li ul li {
display: inline-block;
padding-right: 10px;
}
Expand Down

0 comments on commit 24c570a

Please sign in to comment.