summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_context_records/admin.py2
-rw-r--r--ishtar_common/admin.py9
-rw-r--r--ishtar_common/context_processors.py2
-rw-r--r--ishtar_common/migrations/0085_auto_20190204_1149.py26
-rw-r--r--ishtar_common/models.py5
-rw-r--r--ishtar_common/static/js/ishtar-map.js64
-rw-r--r--ishtar_common/templates/base.html8
7 files changed, 101 insertions, 15 deletions
diff --git a/archaeological_context_records/admin.py b/archaeological_context_records/admin.py
index bfa859c48..f79bf1d7b 100644
--- a/archaeological_context_records/admin.py
+++ b/archaeological_context_records/admin.py
@@ -47,7 +47,7 @@ class AdminContextRecordForm(forms.ModelForm):
model = models.ContextRecord
exclude = []
point_2d = PointField(label=_(u"Point"), required=False,
- widget=OSMWidget)
+ widget=OSMWidget)
multi_polygon = MultiPolygonField(label=_(u"Multi polygon"), required=False,
widget=OSMWidget)
operation = AutoCompleteSelectField('operation')
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 3786870d2..f64f04ad5 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -175,10 +175,19 @@ admin_site.register(Group, MyGroupAdmin)
admin_site.register(Site, SiteAdmin)
+class AdminIshtarSiteProfileForm(forms.ModelForm):
+ class Meta:
+ model = models.IshtarSiteProfile
+ exclude = []
+ default_center = PointField(label=_(u"Maps - default center"),
+ widget=OSMWidget)
+
+
class IshtarSiteProfileAdmin(admin.ModelAdmin):
list_display = ('label', 'slug', 'active', 'files', 'context_record',
'find', 'warehouse', 'mapping', 'preservation')
model = models.IshtarSiteProfile
+ form = AdminIshtarSiteProfileForm
admin_site.register(models.IshtarSiteProfile, IshtarSiteProfileAdmin)
diff --git a/ishtar_common/context_processors.py b/ishtar_common/context_processors.py
index 12e7bc9be..786d3f5b5 100644
--- a/ishtar_common/context_processors.py
+++ b/ishtar_common/context_processors.py
@@ -50,6 +50,8 @@ def get_base_context(request):
current_action = dct['CURRENT_ACTION']
dct['CURRENT_PATH'] = request.path
+ dct['SITE_PROFILE'] = get_current_profile()
+
# messages
dct['MESSAGES'] = []
if not request.is_ajax() and 'messages' in request.session and \
diff --git a/ishtar_common/migrations/0085_auto_20190204_1149.py b/ishtar_common/migrations/0085_auto_20190204_1149.py
new file mode 100644
index 000000000..d89a8ac94
--- /dev/null
+++ b/ishtar_common/migrations/0085_auto_20190204_1149.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.10 on 2019-02-04 11:49
+from __future__ import unicode_literals
+
+import django.contrib.gis.db.models.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0084_ishtarsiteprofile_use_town_for_geo'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='ishtarsiteprofile',
+ name='default_center',
+ field=django.contrib.gis.db.models.fields.PointField(default=b'SRID=4326;POINT(2.4397 46.5528)', srid=4326, verbose_name='Maps - default center'),
+ ),
+ migrations.AddField(
+ model_name='ishtarsiteprofile',
+ name='default_zoom',
+ field=models.IntegerField(default=6, verbose_name='Maps - default zoom'),
+ ),
+ ]
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 76e415368..ea6bd3bf0 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -2241,6 +2241,11 @@ class IshtarSiteProfile(models.Model, Cached):
default=True)
currency = models.CharField(_(u"Currency"), default=u"€",
choices=CURRENCY, max_length=5)
+ default_center = models.PointField(
+ _(u"Maps - default center"),
+ default='SRID=4326;POINT(2.4397 46.5528)')
+ default_zoom = models.IntegerField(
+ _(u"Maps - default zoom"), default=6)
class Meta:
verbose_name = _(u"Ishtar site profile")
diff --git a/ishtar_common/static/js/ishtar-map.js b/ishtar_common/static/js/ishtar-map.js
index a8e1a4fa5..ce8f9b616 100644
--- a/ishtar_common/static/js/ishtar-map.js
+++ b/ishtar_common/static/js/ishtar-map.js
@@ -4,6 +4,9 @@ var default_pointer = "../media/images/default-pointer.png";
var view_projection = 'EPSG:3857';
+var map_default_center = 'SRID=4326;POINT (2.4397 46.5528)';
+var map_default_zoom = '7';
+
var source_osm = function(options){
return new ol.layer.Tile({
source: new ol.source.OSM()
@@ -11,7 +14,7 @@ var source_osm = function(options){
};
-var map_layers = {
+var default_map_layers = {
'osm': source_osm
};
@@ -23,7 +26,7 @@ var get_layers = function(layers){
for (idx in layers){
var layer_attr = layers[idx];
ol_layers.push(
- map_layers[layer_attr['type']](layer_attr['options'])
+ default_map_layers[layer_attr['type']](layer_attr['options'])
);
}
return ol_layers;
@@ -67,17 +70,25 @@ var get_style = function(feature){
/* display map */
var vector_source;
var vector_layer;
-var map_layers;
+var center;
var map;
-var geojson_format = new ol.format.GeoJSON(
- {dataProjection:'EPSG:4326', featureProjection: view_projection});
+var map_view;
+var map_layers;
+var proj_options = {
+ dataProjection:'EPSG:4326', featureProjection: view_projection
+}
+var geojson_format = new ol.format.GeoJSON(proj_options);
+var wkt_format = new ol.format.WKT(proj_options);
+var initialize_map = function(map_id, layers){
+ center = wkt_format.readGeometry(map_default_center).getCoordinates();
-var display_map = function(map_id, points, layers){
+ /*
vector_source = new ol.source.Vector({
features: geojson_format.readFeatures(points)
});
-
+ */
+ vector_source = new ol.source.Vector();
vector_layer = new ol.layer.Vector({
source: vector_source,
style: get_style
@@ -85,15 +96,44 @@ var display_map = function(map_id, points, layers){
map_layers = get_layers(layers);
map_layers.push(vector_layer);
+
+ map_view = new ol.View({
+ projection: view_projection,
+ center: ol.proj.fromLonLat([center[0], center[1]]),
+ zoom: map_default_zoom
+ });
+
map = new ol.Map({
target: map_id,
layers: map_layers,
- view: new ol.View({
- projection: view_projection,
- center: ol.proj.fromLonLat([37.41, 8.82]),
- zoom: 4
- })
+ view: map_view
});
}
+var redraw_map = function(map_id, layers){
+ map.setTarget(null);
+ map = null;
+ initialize_map(map_id, layers);
+};
+
+
+var display_map = function(map_id, points, layers){
+ if (map){
+ redraw_map(map_id, layers);
+ } else {
+ initialize_map(map_id, layers);
+ }
+ vector_source.clear();
+ vector_source.addFeatures(geojson_format.readFeatures(points));
+
+ map.updateSize();
+ if (points.features.length){
+ map_view.fit(vector_source.getExtent());
+ if (map_view.getZoom() > 12){
+ map_view.setZoom(12);
+ }
+ }
+
+}
+
diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html
index 86b4c8b58..0a4f58e24 100644
--- a/ishtar_common/templates/base.html
+++ b/ishtar_common/templates/base.html
@@ -79,9 +79,13 @@
{% endcompress %}
{% block extra_head %}
{% endblock %}
- {% if DEBUG %}<script type='text/javascript'>
+ <script type='text/javascript'>
+ map_default_center = '{{SITE_PROFILE.default_center.wkt}}';
+ map_default_zoom = '{{SITE_PROFILE.default_zoom}}';
+ {% if DEBUG %}
debug = true;
- </script>{% endif %}
+ {% endif %}
+ </script>
</head>
<body data-spy="scroll" data-target="#window-fixed-menu"{% if current_theme%} id='{{current_theme}}'{%endif%}>
{% include "navbar.html" %}