Skip to content

Commit

Permalink
Merge pull request #1 from kaiCu/master
Browse files Browse the repository at this point in the history
User Interface changes
  • Loading branch information
olt committed Mar 1, 2013
2 parents ef81ec4 + cd532f8 commit 4845fb8
Show file tree
Hide file tree
Showing 15 changed files with 319 additions and 332 deletions.
2 changes: 2 additions & 0 deletions app/gbi_server/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,9 @@ class DefaultConfig(object):
TEMP_PG_PORT = "5432"

USER_READONLY_LAYER = "florlp"
USER_READONLY_LAYER_TITLE = "FLOrlp"
USER_WORKON_LAYER = "baselayer"
USER_WORKON_LAYER_TITLE ="Basis Layer"

COUCH_DB_URL = "http://127.0.0.1:5984"
# user name and password for db admin that is allowed to
Expand Down
4 changes: 1 addition & 3 deletions app/gbi_server/forms/wfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,5 @@ class WFSAddLayerForm(Form):
def is_submitted(self):
return request and request.method in ("PUT", "POST") and request.form.get('add_form')

new_layer = TextField(_l('wfs_new_layer_name'), validators=[
validators.Regexp(regex='^[a-z0-9]+$', message=_l('Only alphanummeric lowercase characters are allowed!')),
])
new_layer = TextField(_l('wfs_new_layer_name'), validators=[validators.Required(),])
add_form = HiddenField()
12 changes: 6 additions & 6 deletions app/gbi_server/lib/couchdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,8 +215,7 @@ def update_layer_view_doc(self):
"map": "function(doc) { if (doc.layer) emit(doc.layer, {'_rev': doc._rev}) }"
},
"distinct": {
"map": "function(doc) { if (doc.layer) emit(doc.layer); }",
"reduce": "function(keys, values) { return true; }"
"map": "function(doc) { if (doc._id.indexOf('schema_') == 0 && doc.title) { emit(doc.layer, doc.title); } else if (doc._id.indexOf('schema_') == 0) { emit(doc.layer, doc.layer); } }"
}
}
}
Expand All @@ -225,7 +224,8 @@ def update_layer_view_doc(self):
design_doc['_rev'] = existing_design_doc['_rev']
self.put('_design/layers', design_doc)

def store_layer_schema(self, layer, schema, extend_schema=True):
def store_layer_schema(self, layer, schema, extend_schema=True, title=None):
title = title if title else layer
existing_doc = self.get('schema_' + layer)

if extend_schema and existing_doc:
Expand All @@ -238,6 +238,7 @@ def store_layer_schema(self, layer, schema, extend_schema=True):
new_doc = schema

new_doc['layer'] = layer
new_doc['title'] = title
self.put('schema_' + layer, new_doc)

def iter_layer_features(self, layer):
Expand All @@ -250,11 +251,10 @@ def iter_layer_features(self, layer):
yield geocouch_feature_to_geojson(feature)

def get_layer_names(self):
resp = self.session.get(self.couchdb_url + '/_design/layers/_view/distinct?group=true')
resp = self.session.get(self.couchdb_url + '/_design/layers/_view/distinct')
data = resp.json()

for row in data.get('rows', []):
yield row['key']
yield (row['key'], row['value'])

def layer_extent(self, layer=None):
"""
Expand Down
2 changes: 1 addition & 1 deletion app/gbi_server/lib/postgis.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ def insert_features(self, features):
cur = self.connection.cursor()

feature_ids = []
schema_properties = set(self.schema.keys())
schema_properties = set(self.schema.get('properties', {}).keys())
for feature in features:
feature_id = feature['properties'].get('_id')

Expand Down
7 changes: 4 additions & 3 deletions app/gbi_server/model/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,17 +106,18 @@ def init_couchdb(config):
user = model.User.by_email('landwirt@example.org')
init_user_boxes(user, config.get('COUCH_DB_URL'))
couch = CouchDBBox(config.get('COUCH_DB_URL'), '%s_%s' % (SystemConfig.AREA_BOX_NAME, user.id))
layers = [config.get('USER_READONLY_LAYER'), config.get('USER_WORKON_LAYER')]
layers = [(config.get('USER_READONLY_LAYER'), config.get('USER_READONLY_LAYER_TITLE')), (config.get('USER_WORKON_LAYER'), config.get('USER_WORKON_LAYER_TITLE'))]
print layers
florlp_session = create_florlp_session("demo", "demo")
try:
schema, feature_collection = latest_flursteuck_features(florlp_session)
finally:
remove_florlp_session(florlp_session)

feature_collection = transform_geojson(from_srs=config.get('FLORLP_SHP_SRS'), to_srs=3857, geojson=feature_collection)
for layer in layers:
for layer, title in layers:
couch.clear_layer(layer)
couch.store_layer_schema(layer, schema)
couch.store_layer_schema(layer, schema, title=title)
couch.store_features(layer, feature_collection['features'])

user = model.User.by_email('dienstleister@example.org')
Expand Down
7 changes: 7 additions & 0 deletions app/gbi_server/static/js/admin/create_user.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,11 @@ $(document).ready(function() {
}
});
$('#activate').attr('disabled', 'disabled');
$('#type').change(function() {
if($(this).val() != 0) {
$('#florlp_name').parents('div.control-group:first').hide();
} else {
$('#florlp_name').parents('div.control-group:first').show();
}
});
});
11 changes: 6 additions & 5 deletions app/gbi_server/static/js/map_base.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,16 @@ var rw_symbolizer = {
"Polygon": {
strokeWidth: 1,
strokeOpacity: 0.5,
strokeColor: "#31D61E",
fillColor: "#31D61E",
fillOpacity: 0.5
strokeColor: "blue",
fillColor: "blue",
fillOpacity: 0.4
}
};

var select_symbolizer = {
strokeColor: "blue",
strokeWidth: 2
strokeColor: "black",
strokeWidth: 2,
strokeOpacity: 1
};

var ro_style = new OpenLayers.Style();
Expand Down
49 changes: 32 additions & 17 deletions app/gbi_server/static/js/map_wfs.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
var selected_feature = false;
var selected_features = [];
var draw_controls = false;

function zoom_to_data_extent() {
Expand Down Expand Up @@ -97,12 +98,15 @@ function create_attribute_input(read_only_layer) {
}

function unselect_features() {
draw_controls['select'].unselectAll();
if(draw_controls['edit'].feature) {
draw_controls['edit'].unselectFeature(selected_feature);
if(selected_feature || selected_features.length) {
if(draw_controls['edit'].feature) {
draw_controls['edit'].unselectFeature(selected_feature);
}
$('#edit_feature').removeClass('btn-success');
selected_feature = false;
selected_features = [];
draw_controls['select'].unselectAll();
}
$('#edit_feature').removeClass('btn-success');
selected_feature = false;
}

function update_feature_attributes(map) {
Expand Down Expand Up @@ -135,20 +139,26 @@ function edit_feature(map) {

function delete_feature(map) {
var write_layer = map.getLayersByName(write_layer_name)[0];
var to_delete = selected_feature;
draw_controls['del'].deleteFeature(to_delete);
var to_delete = selected_features;
$.each(to_delete, function(idx, feature) {
draw_controls['del'].deleteFeature(feature);
});
}

function copy_feature(map) {
var write_layer = map.getLayersByName(write_layer_name)[0];
var geometry = selected_feature.geometry.clone();
var new_feature = new OpenLayers.Feature.Vector(geometry);
new_feature.state = OpenLayers.State.INSERT;
$.each(selected_feature.attributes, function(k, v) {
new_feature.attributes[k] = v;
})
var new_features = [];
$.each(selected_features, function(idx, feature) {
var geometry = feature.geometry.clone();
var new_feature = new OpenLayers.Feature.Vector(geometry);
new_feature.state = OpenLayers.State.INSERT;
$.each(feature.attributes, function(k, v) {
new_feature.attributes[k] = v;
});
new_features.push(new_feature);
});
unselect_features();
write_layer.addFeatures([new_feature]);
write_layer.addFeatures(new_features);
}

function save_changes(map) {
Expand Down Expand Up @@ -210,8 +220,7 @@ function init_draw_controls(map, layers, write_layer) {

var edit = new OpenLayers.Control.ModifyFeature(write_layer, {
standalone: true,
mode: OpenLayers.Control.ModifyFeature.RESHAPE |
OpenLayers.Control.ModifyFeature.DRAG
mode: OpenLayers.Control.ModifyFeature.RESHAPE
});
edit.setMap(map)

Expand All @@ -220,6 +229,7 @@ function init_draw_controls(map, layers, write_layer) {
var select = new OpenLayers.Control.SelectFeature(layers, {
title: "Select Feature",
displayClass: "olControlSelectFeature",
multiple: true,
onSelect: function (feature) {
var target = $('#feature_attributes');
target.empty().append(feature.layer.attributes_input);
Expand All @@ -235,11 +245,16 @@ function init_draw_controls(map, layers, write_layer) {
}
});
selected_feature = feature;
selected_features.push(feature);
if(feature.layer != write_layer) {
$('#copy_feature').removeAttr('disabled');
} else {
$('#delete_feature').removeAttr('disabled');
$('#edit_feature').removeAttr('disabled');
if(selected_features.length == 1) {
$('#edit_feature').removeAttr('disabled');
} else {
$('#edit_feature').attr('disabled', 'disabled');
}
}
$.each(feature.attributes, function(name, value) {
$('#feature_attributes #'+name).val(value);
Expand Down
5 changes: 3 additions & 2 deletions app/gbi_server/templates/macros/map.html
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
saveStrategy{{ wfs_layer['id'] }}.events.register("success", '', wfs_save_success);
saveStrategy{{ wfs_layer['id'] }}.events.register("fail", '', wfs_save_fail);

wfs_sources.push(new OpenLayers.Layer.Vector("{{ wfs_layer['name'] }}", {
wfs_sources.push(new OpenLayers.Layer.Vector({{ wfs_layer['name']|tojson|safe }}, {
strategies: [
{% if wfs_layer['display_in_layerswitcher'] %}
new OpenLayers.Strategy.BBOX({ratio: 1})
Expand All @@ -66,6 +66,7 @@
styleMap: ro_style_map,
writable: false,
{% endif %}
layer: '{{ wfs_layer['layer'] }}',
visibility: false,
displayInLayerSwitcher: {{ wfs_layer['display_in_layerswitcher']|tojson|safe}},
projection: new OpenLayers.Projection("EPSG:3857"),
Expand All @@ -91,7 +92,7 @@
var geojson_format = new OpenLayers.Format.GeoJSON();
{% for layer in layers %}
geojson_sources.push(
new OpenLayers.Layer.Vector("{{ layer.name}}", {
new OpenLayers.Layer.Vector({{ layer.name|tojson|safe}}, {
styleMap: {% if layer.readonly %}ro_style_map{%else%}rw_style_map{%endif%},
displayInLayerSwitcher: true,
read_only: {{ layer.readonly|tojson|safe }}
Expand Down
8 changes: 4 additions & 4 deletions app/gbi_server/templates/maps/wfs.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,20 @@
{{ add_wfs_layers(wfs) }}
var SAVE_FAILED_MSG = "{{ _('save feautre not possible') }}"
var SAVE_SUCCESSFULL_MSG = "{{ _('save feature successfull') }}"
var read_only_layer_name = "{{read_only_layer_name}}";
var read_only_layer_name = {{read_only_layer_name|tojson|safe}};
var featurecollection = {
"type": "FeatureCollection",
"features":{{read_only_features|tojson|safe}}
};
var read_only_schema = {{read_only_schema|tojson|safe}};
var write_back_url = "{{ url_for('maps.write_back', layer=editable_layer_name) }}";
var write_layer_name = "{{editable_layer_name}}";
var write_back_url = "{{ url_for('maps.write_back', layer=editable_layer) }}";
var write_layer_name = {{editable_layer_name|tojson|safe}};
var search_layer_name = "{{ search_layer_name }}";
var search_property = "{{search_property}}";
var search_min_length = {{search_min_length}};
var search_prefix = "{{search_prefix}}";
$(document).ready(function() {
var base_map = init_map();
base_map = init_map();
init_wfs(base_map);
base_map.zoomToExtent(new OpenLayers.Bounds{{data_extent}});
});
Expand Down
Binary file modified app/gbi_server/translations/de/LC_MESSAGES/messages.mo
Binary file not shown.
Loading

0 comments on commit 4845fb8

Please sign in to comment.