draw new geometries
This commit is contained in:
parent
c2e59c2b94
commit
3206ca50a4
4 changed files with 48 additions and 25 deletions
|
@ -61,7 +61,7 @@ class MapitemFormMixin(ModelForm):
|
|||
|
||||
|
||||
def create_editor_form(editor_model):
|
||||
possible_fields = ['section', 'space', 'name', 'altitude', 'can_search', 'can_describe', 'color', 'public',
|
||||
possible_fields = ['name', 'altitude', 'can_search', 'can_describe', 'color', 'public',
|
||||
'groups', 'geometry', 'level', 'category', 'outside', 'stuffed', 'width']
|
||||
existing_fields = [field.name for field in editor_model._meta.get_fields() if field.name in possible_fields]
|
||||
|
||||
|
|
|
@ -144,7 +144,6 @@ editor = {
|
|||
$('body').removeClass('map-enabled').removeClass('show-map');
|
||||
editor._section_control.hide();
|
||||
}
|
||||
editor._check_start_editing();
|
||||
},
|
||||
_sidebar_error: function(data) {
|
||||
$('#sidebar').removeClass('loading').find('.content').html('<h3>Error '+data.status+'</h3>'+data.statusText);
|
||||
|
@ -227,9 +226,7 @@ editor = {
|
|||
editor._geometries_layer.addTo(editor.map);
|
||||
editor._highlight_layer.addTo(editor.map);
|
||||
editor._loading_geometry = false;
|
||||
if (editor._editing_layer !== null) {
|
||||
editor._editing_layer.enableEdit();
|
||||
}
|
||||
editor._check_start_editing();
|
||||
});
|
||||
},
|
||||
_line_draw_geometry_style: function(style) {
|
||||
|
@ -346,30 +343,37 @@ editor = {
|
|||
// edit and create geometries
|
||||
_check_start_editing: function() {
|
||||
// called on sidebar load. start editing or creating depending on how the sidebar may require it
|
||||
|
||||
var sidebarcontent = $('#sidebar').find('.content');
|
||||
|
||||
var geometry_field = sidebarcontent.find('input[name=geometry]');
|
||||
if (geometry_field.length) {
|
||||
var form = geometry_field.closest('form');
|
||||
var mapitem_type = form.attr('data-mapitem-type');
|
||||
if (geometry_field.val() !== '') {
|
||||
|
||||
} else if (form.is('[data-geomtype]')) {
|
||||
var mapitem_type = form.attr('data-new');
|
||||
if (editor._editing_layer !== null) {
|
||||
editor._editing_layer.enableEdit();
|
||||
} else if (form.is('[data-new]')) {
|
||||
// create new geometry
|
||||
form.addClass('creation-lock');
|
||||
var geomtype = form.attr('data-geomtype');
|
||||
|
||||
var options = editor._get_mapitem_type_style(mapitem_type);
|
||||
if (geomtype === 'polygon') {
|
||||
editor.map.editTools.startPolygon(null, options);
|
||||
} else if (geomtype === 'polyline') {
|
||||
options = editor._line_draw_geometry_style(options);
|
||||
editor.map.editTools.startPolyline(null, options);
|
||||
if (geometry_field.val() === '') {
|
||||
form.addClass('creation-lock');
|
||||
var geomtype = form.attr('data-geomtype');
|
||||
if (geomtype === 'polygon') {
|
||||
editor.map.editTools.startPolygon(null, options);
|
||||
} else if (geomtype === 'polyline') {
|
||||
options = editor._line_draw_geometry_style(options);
|
||||
editor.map.editTools.startPolyline(null, options);
|
||||
}
|
||||
editor._creating = true;
|
||||
} else {
|
||||
editor._editing_layer = L.geoJSON({
|
||||
"type": "Feature",
|
||||
"geometry": JSON.parse(geometry_field.val())
|
||||
}, {
|
||||
style: function() {
|
||||
return options;
|
||||
}
|
||||
}).getLayers()[0].addTo(editor.map);
|
||||
editor._editing_layer.enableEdit();
|
||||
}
|
||||
editor._creating = true;
|
||||
$('#id_level').val(editor._level);
|
||||
$('#id_levels').find('option[value='+editor._level+']').prop('selected', true);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -379,6 +383,10 @@ editor = {
|
|||
editor._creating = false;
|
||||
editor.map.editTools.stopDrawing();
|
||||
}
|
||||
if (editor._editing_layer !== null) {
|
||||
editor._editing_layer.remove();
|
||||
editor._editing_layer = null;
|
||||
}
|
||||
},
|
||||
_canceled_creating: function (e) {
|
||||
// called after we canceled creating so we can remove the temporary layer.
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
{% else %}
|
||||
<h3>{% blocktrans %}Edit {{ model_title }}{% endblocktrans %}</h3>
|
||||
{% endif %}
|
||||
<form action="{{ path }}" method="post" data-onbeforeunload data-editing="{{ model_name }}-{{ pk }}">
|
||||
<form action="{{ path }}" method="post" data-onbeforeunload {% if new %}data-new="{{ model_name }}" data-geomtype="{{ geomtype }}"{% else %}data-editing="{{ model_name }}-{{ pk }}"{% endif %}>
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
{% buttons %}
|
||||
|
|
|
@ -102,6 +102,7 @@ def edit(request, pk=None, model=None, section=None, space=None, explicit_edit=F
|
|||
'pk': pk,
|
||||
'model_name': model.__name__.lower(),
|
||||
'model_title': model._meta.verbose_name,
|
||||
'geomtype': model._meta.get_field('geometry').geomtype,
|
||||
'new': new,
|
||||
'title': obj.title if obj else None,
|
||||
}
|
||||
|
@ -118,6 +119,12 @@ def edit(request, pk=None, model=None, section=None, space=None, explicit_edit=F
|
|||
'back_url': reverse('editor.spaces.detail', kwargs={'section': obj.section.pk, 'pk': pk}),
|
||||
'geometry_url': '/api/editor/geometries/?space='+pk,
|
||||
})
|
||||
elif model == Space and new:
|
||||
ctx.update({
|
||||
'section': section,
|
||||
'back_url': reverse('editor.spaces.list', kwargs={'section': section.pk}),
|
||||
'geometry_url': '/api/editor/geometries/?section='+str(section.pk),
|
||||
})
|
||||
elif hasattr(model, 'section'):
|
||||
if obj:
|
||||
section = obj.section
|
||||
|
@ -154,8 +161,10 @@ def edit(request, pk=None, model=None, section=None, space=None, explicit_edit=F
|
|||
raise NotImplementedError
|
||||
obj.delete()
|
||||
if model == Section:
|
||||
ctx.update({'target': reverse('editor.index')})
|
||||
return redirect(reverse('editor.index') if model == Section else ctx['back_url'])
|
||||
return redirect(reverse('editor.index'))
|
||||
elif model == Space:
|
||||
return redirect(reverse('editor.spaces.list', kwargs={'section': obj.section.pk}))
|
||||
return redirect(ctx['back_url'])
|
||||
return render(request, 'editor/delete.html', ctx)
|
||||
|
||||
form = model.EditorForm(instance=obj, data=request.POST, request=request)
|
||||
|
@ -173,6 +182,12 @@ def edit(request, pk=None, model=None, section=None, space=None, explicit_edit=F
|
|||
# todo: suggest changes
|
||||
raise NotImplementedError
|
||||
|
||||
if section is not None:
|
||||
obj.section = section
|
||||
|
||||
if space is not None:
|
||||
obj.space = space
|
||||
|
||||
obj.save()
|
||||
form.save_m2m()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue