add AreaOfInterest and GroupOfInterest

This commit is contained in:
Laura Klünder 2016-12-12 13:21:09 +01:00
parent 52958ec5fc
commit 9c202ab6cd
11 changed files with 194 additions and 13 deletions

View file

@ -61,6 +61,10 @@ class MapitemFormMixin(ModelForm):
# set field_name
self.fields['levels'].to_field_name = 'name'
if 'groups' in self.fields:
# set field_name
self.fields['groups'].to_field_name = 'name'
if 'geometry' in self.fields:
# hide geometry widget
self.fields['geometry'].widget = HiddenInput()
@ -94,12 +98,17 @@ class MapitemFormMixin(ModelForm):
if 'geometry' in self.fields:
if not self.cleaned_data.get('geometry'):
raise ValidationError('Missing geometry.')
if hasattr(self.instance, 'titles') and not any(self.titles.values()):
raise ValidationError(
_('You have to select a title in at least one language.')
)
super().clean()
def create_editor_form(mapitemtype):
possible_fields = ['name', 'package', 'altitude', 'level', 'intermediate', 'levels', 'geometry',
'elevator', 'button', 'crop_to_level', 'width']
'elevator', 'button', 'crop_to_level', 'width', 'groups']
existing_fields = [field for field in possible_fields if hasattr(mapitemtype, field)]
class EditorForm(MapitemFormMixin, ModelForm):

View file

@ -29,7 +29,7 @@ form button.invisiblesubmit {
display: block;
}
.leaflet-control-layers-toggle {
.leaflet-container .leaflet-control-layers-toggle {
color:#000000 !important;
font-size:14px;
text-align:center;
@ -38,7 +38,7 @@ form button.invisiblesubmit {
background-image:none;
padding:0 8px;
}
.leaflet-control-layers-expanded {
.leaflet-container .leaflet-control-layers-expanded {
min-width:75px;
}
.leaflet-levels {

View file

@ -281,7 +281,8 @@ editor = {
'elevatorlevel': '#9EF8FB',
'levelconnector': '#FFFF00',
'shadow': '#000000',
'stair': '#FF0000'
'stair': '#FF0000',
'areaofinterest': '#0099FF'
},
_line_draw_geometry_style: function(style) {
style.stroke = true;
@ -300,12 +301,19 @@ editor = {
},
_get_mapitem_type_style: function (mapitem_type) {
// get styles for a specific mapitem
return {
var result = {
stroke: false,
fillColor: editor._geometry_colors[mapitem_type],
fillOpacity: 0.6,
fillOpacity: (mapitem_type == 'areaofinterest') ? 0.2 : 0.6,
smoothFactor: 0
};
if (mapitem_type == 'areaofinterest') {
result.fillOpacity = 0.02;
result.color = result.fillColor;
result.stroke = true;
result.weight = 1;
}
return result;
},
_register_geojson_feature: function (feature, layer) {
// onEachFeature callback for GeoJSON loader register all needed events

View file

@ -13,7 +13,8 @@
</tr>
{% endif %}
<tr data-name="{{ item.name }}">
<td>{{ item.name }}</td>
<td>{% if item.title != item.name %}{{ item.title }} <small>{{ item.name }}</small>{% else %}{{ item.name }}{% endif %}</td>
{% if has_elevator %}
<td><a href="{% url 'editor.mapitems.edit' mapitem_type='elevator' name=item.elevator.name %}">{{ item.elevator }}</a></td>
{% endif %}