decidim-navigation_maps 1.1.1 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +25 -5
- data/Rakefile +18 -0
- data/app/cells/decidim/navigation_maps/content_blocks/groups_navigation_map_cell.rb +21 -0
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map/_tabs_content.erb +1 -1
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map/show.erb +6 -6
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map_cell.rb +31 -0
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map_settings_form/_form.erb +4 -4
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map_settings_form/_tabs_content.erb +0 -1
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map_settings_form/show.erb +7 -3
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map_settings_form_cell.rb +10 -1
- data/app/commands/decidim/navigation_maps/save_blueprints.rb +7 -1
- data/app/controllers/decidim/navigation_maps/admin/blueprints_controller.rb +3 -3
- data/app/forms/decidim/navigation_maps/area_form.rb +1 -1
- data/app/forms/decidim/navigation_maps/blueprint_form.rb +1 -0
- data/app/forms/decidim/navigation_maps/blueprint_forms.rb +1 -0
- data/app/jobs/decidim/navigation_maps/migrate_legacy_images_job.rb +32 -0
- data/app/models/decidim/navigation_maps/blueprint.rb +5 -3
- data/app/packs/entrypoints/decidim_admin_navigation_maps.js +4 -0
- data/app/packs/entrypoints/decidim_admin_navigation_maps.scss +1 -0
- data/app/packs/entrypoints/decidim_navigation_maps.js +7 -0
- data/app/packs/entrypoints/decidim_navigation_maps.scss +1 -0
- data/app/packs/src/decidim/navigation_maps/admin/map_editor.js +83 -0
- data/app/packs/src/decidim/navigation_maps/admin/navigation_maps.js +154 -0
- data/app/packs/src/decidim/navigation_maps/map_view.js +125 -0
- data/app/packs/src/decidim/navigation_maps/navigation_maps.js +43 -0
- data/app/{assets → packs}/stylesheets/decidim/navigation_maps/_variables.scss +0 -0
- data/app/{assets → packs}/stylesheets/decidim/navigation_maps/admin/navigation_maps.scss +4 -4
- data/app/{assets → packs}/stylesheets/decidim/navigation_maps/navigation_maps.scss +1 -2
- data/app/queries/decidim/navigation_maps/content_block_blueprints.rb +20 -0
- data/app/uploaders/decidim/navigation_maps/blueprint_uploader.rb +4 -12
- data/app/uploaders/decidim/navigation_maps/cw/blueprint_uploader.rb +24 -0
- data/config/assets.rb +41 -0
- data/config/locales/ca.yml +1 -0
- data/config/locales/cs.yml +2 -1
- data/config/locales/en.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/db/migrate/20201105130724_add_reference_to_content_block_to_blueprints_table.rb +12 -0
- data/db/seeds/pla-cerda.jpg +0 -0
- data/db/seeds.rb +62 -11
- data/lib/decidim/navigation_maps/admin_engine.rb +0 -4
- data/lib/decidim/navigation_maps/engine.rb +16 -4
- data/lib/decidim/navigation_maps/navigation_map_cell_helpers.rb +4 -4
- data/lib/decidim/navigation_maps/test/factories.rb +1 -0
- data/lib/decidim/navigation_maps/version.rb +2 -2
- data/lib/decidim/navigation_maps.rb +0 -2
- data/lib/tasks/custom_seeds.rake +8 -0
- data/lib/tasks/decidim_navigation_maps_webpacker_tasks.rake +58 -0
- data/lib/tasks/navigation_maps_active_storage_migration_tasks.rake +37 -0
- data/package.json +197 -0
- metadata +39 -48
- data/app/assets/config/admin/decidim_navigation_maps_manifest.css +0 -3
- data/app/assets/config/admin/decidim_navigation_maps_manifest.js +0 -3
- data/app/assets/config/decidim_navigation_maps_manifest.css +0 -3
- data/app/assets/config/decidim_navigation_maps_manifest.js +0 -1
- data/app/assets/images/decidim/navigation_maps/icon.svg +0 -1
- data/app/assets/javascripts/decidim/navigation_maps/admin/map_editor.js +0 -88
- data/app/assets/javascripts/decidim/navigation_maps/admin/navigation_maps.js +0 -143
- data/app/assets/javascripts/decidim/navigation_maps/map_view.js +0 -123
- data/app/assets/javascripts/decidim/navigation_maps/navigation_maps.js +0 -44
- data/vendor/assets/images/draw/layers-2x.png +0 -0
- data/vendor/assets/images/draw/layers.png +0 -0
- data/vendor/assets/images/draw/marker-icon-2x.png +0 -0
- data/vendor/assets/images/draw/marker-icon.png +0 -0
- data/vendor/assets/images/draw/marker-shadow.png +0 -0
- data/vendor/assets/images/draw/spritesheet-2x.png +0 -0
- data/vendor/assets/images/draw/spritesheet.png +0 -0
- data/vendor/assets/images/draw/spritesheet.svg +0 -156
- data/vendor/assets/images/images/layers-2x.png +0 -0
- data/vendor/assets/images/images/layers.png +0 -0
- data/vendor/assets/images/images/marker-icon-2x.png +0 -0
- data/vendor/assets/images/images/marker-icon.png +0 -0
- data/vendor/assets/images/images/marker-shadow.png +0 -0
- data/vendor/assets/javascripts/jquery.form.js +0 -1277
- data/vendor/assets/javascripts/jsrender.min.js +0 -4
- data/vendor/assets/javascripts/jsrender.min.js.map +0 -1
- data/vendor/assets/javascripts/leaflet-geoman.min.js +0 -1
- data/vendor/assets/javascripts/leaflet.js +0 -5
- data/vendor/assets/stylesheets/leaflet-geoman.css +0 -164
@@ -1,88 +0,0 @@
|
|
1
|
-
// Creates a map
|
2
|
-
//= require decidim/navigation_maps/map_view
|
3
|
-
|
4
|
-
function NavigationMapEditor(map_object, table_object) {
|
5
|
-
var self = this;
|
6
|
-
// Call constructor of superclass to initialize superclass-derived members.
|
7
|
-
NavigationMapView.call(self, map_object, function() {
|
8
|
-
self.createControls();
|
9
|
-
if(self.blueprint) {
|
10
|
-
self.createAreas();
|
11
|
-
}
|
12
|
-
});
|
13
|
-
self.table_object = table_object;
|
14
|
-
this.createAreaCallback = function () {};
|
15
|
-
this.editAreaCallback = function () {};
|
16
|
-
this.removeAreaCallback = function () {};
|
17
|
-
}
|
18
|
-
|
19
|
-
// NavigationMapEditor derives from NavigationMapView
|
20
|
-
NavigationMapEditor.prototype = Object.create(NavigationMapView.prototype);
|
21
|
-
NavigationMapEditor.prototype.constructor = NavigationMapEditor;
|
22
|
-
|
23
|
-
NavigationMapEditor.prototype.createControls = function() {
|
24
|
-
var self = this;
|
25
|
-
self.map.pm.addControls({
|
26
|
-
position: 'topleft',
|
27
|
-
drawCircle: false,
|
28
|
-
drawMarker: false,
|
29
|
-
drawCircleMarker: false,
|
30
|
-
drawPolyline: false,
|
31
|
-
cutPolygon: false
|
32
|
-
});
|
33
|
-
|
34
|
-
self.map.on('pm:create', function(e) {
|
35
|
-
var geojson = e.layer.toGeoJSON();
|
36
|
-
self.blueprint[e.layer._leaflet_id] = geojson;
|
37
|
-
self.attachEditorEvents(e.layer);
|
38
|
-
self.createAreaCallback(e.layer._leaflet_id, e.layer, self);
|
39
|
-
});
|
40
|
-
|
41
|
-
self.map.on('pm:remove', function(e) {
|
42
|
-
delete self.blueprint[e.layer._leaflet_id];
|
43
|
-
self.removeAreaCallback(e.layer._leaflet_id, e.layer, self);
|
44
|
-
});
|
45
|
-
};
|
46
|
-
|
47
|
-
NavigationMapEditor.prototype.editing = function() {
|
48
|
-
var pm = this.map.pm;
|
49
|
-
return pm.globalRemovalEnabled() || pm.globalDragModeEnabled() || pm.globalEditEnabled();
|
50
|
-
};
|
51
|
-
|
52
|
-
// register callback to handle area edits,removals and creations
|
53
|
-
NavigationMapView.prototype.onCreateArea = function(callback) {
|
54
|
-
this.createAreaCallback = callback;
|
55
|
-
};
|
56
|
-
NavigationMapView.prototype.onEditArea = function(callback) {
|
57
|
-
this.editAreaCallback = callback;
|
58
|
-
};
|
59
|
-
NavigationMapView.prototype.onRemoveArea = function(callback) {
|
60
|
-
this.removeCreateCallback = callback;
|
61
|
-
};
|
62
|
-
|
63
|
-
NavigationMapEditor.prototype.attachEditorEvents = function (layer) {
|
64
|
-
var self = this;
|
65
|
-
|
66
|
-
layer.on('mouseover', function(e) {
|
67
|
-
e.target.getElement().classList.add('selected')
|
68
|
-
});
|
69
|
-
|
70
|
-
layer.on('mouseout', function(e) {
|
71
|
-
e.target.getElement().classList.remove('selected')
|
72
|
-
});
|
73
|
-
|
74
|
-
layer.on('pm:edit', function(e) {
|
75
|
-
self.blueprint[e.target._leaflet_id] = e.target.toGeoJSON();
|
76
|
-
self.editAreaCallback(e.target._leaflet_id, e.target, self);
|
77
|
-
});
|
78
|
-
|
79
|
-
layer.on('click', function(e) {
|
80
|
-
if(!self.editing()) {
|
81
|
-
self.clickAreaCallback(e.target._leaflet_id, e.target, self);
|
82
|
-
}
|
83
|
-
});
|
84
|
-
};
|
85
|
-
|
86
|
-
NavigationMapEditor.prototype.getBlueprint = function () {
|
87
|
-
return this.blueprint;
|
88
|
-
};
|
@@ -1,143 +0,0 @@
|
|
1
|
-
// Place all the behaviors and hooks related to the matching controller here.
|
2
|
-
// All this logic will automatically be available in application.js.
|
3
|
-
//= require jquery.form
|
4
|
-
//= require decidim/navigation_maps/admin/map_editor
|
5
|
-
//= require_self
|
6
|
-
|
7
|
-
$(function() {
|
8
|
-
|
9
|
-
var $maps = $('.navigation_maps.admin .map');
|
10
|
-
var $progress = $('.navigation_maps.admin .progress');
|
11
|
-
var $bar = $('.navigation_maps.admin .progress-meter');
|
12
|
-
var $loading = $('.navigation_maps.admin .loading');
|
13
|
-
var $callout = $('.navigation_maps.admin .callout');
|
14
|
-
var $modal = $('#mapEditModal');
|
15
|
-
var $form = $('form');
|
16
|
-
var $tabs = $('#navigation_maps-tabs');
|
17
|
-
var $accordion = $('.navigation_maps.admin .accordion');
|
18
|
-
var editors = {};
|
19
|
-
var new_areas = {};
|
20
|
-
|
21
|
-
$maps.each(function() {
|
22
|
-
var id = $(this).data('id');
|
23
|
-
var table = document.getElementById("navigation_maps-table-" + id);
|
24
|
-
editors[id] = new NavigationMapEditor(this, table);
|
25
|
-
editors[id].onCreateArea(function(area_id) {
|
26
|
-
new_areas[area_id] = true;
|
27
|
-
});
|
28
|
-
|
29
|
-
editors[id].onClickArea(function(area_id, area) {
|
30
|
-
$modal.find('.modal-content').html('');
|
31
|
-
$modal.addClass('loading').foundation('open');
|
32
|
-
$callout.hide();
|
33
|
-
$callout.removeClass('alert success');
|
34
|
-
// "new" form insted of editing
|
35
|
-
var rel = new_areas[area_id] ? 'new' : area_id;
|
36
|
-
$modal.find('.modal-content').load(`/admin/navigation_maps/blueprints/${id}/areas/${rel}`, function() {
|
37
|
-
var $input1 = $modal.find('input[name="blueprint_area[area_id]"]');
|
38
|
-
var $input2 = $modal.find('input[name="blueprint_area[area_type]"]');
|
39
|
-
var $input3 = $modal.find('input[name="blueprint_area[area]"]');
|
40
|
-
var a = area.toGeoJSON();
|
41
|
-
$modal.removeClass('loading');
|
42
|
-
if($input1.length) $input1.val(area_id);
|
43
|
-
if($input2.length) $input2.val(a.type);
|
44
|
-
if($input3.length) $input3.val(JSON.stringify(a));
|
45
|
-
$modal.find('ul[data-tabs=true]').each(function() {
|
46
|
-
new Foundation.Tabs($(this));
|
47
|
-
});
|
48
|
-
});
|
49
|
-
});
|
50
|
-
});
|
51
|
-
|
52
|
-
// Rails AJAX events
|
53
|
-
document.body.addEventListener('ajax:error', function(responseText) {
|
54
|
-
$callout.contents('p').html(responseText.detail[0].message + ": <strong>" + responseText.detail[0].error + "</strong>");
|
55
|
-
$callout.addClass('alert');
|
56
|
-
});
|
57
|
-
|
58
|
-
document.body.addEventListener('ajax:success', function(responseText) {
|
59
|
-
if(new_areas[responseText.detail[0].area]) {
|
60
|
-
delete new_areas[responseText.detail[0].area]
|
61
|
-
}
|
62
|
-
var blueprint_id = responseText.detail[0].blueprint_id;
|
63
|
-
var area_id = responseText.detail[0].area_id;
|
64
|
-
var area = responseText.detail[0].area;
|
65
|
-
editors[blueprint_id].setLayerProperties(editors[blueprint_id].map._layers[area_id], area);
|
66
|
-
editors[blueprint_id].blueprint[area_id] = area;
|
67
|
-
$callout.contents('p').html(responseText.detail[0].message);
|
68
|
-
$callout.addClass('success');
|
69
|
-
});
|
70
|
-
|
71
|
-
document.body.addEventListener('ajax:complete', function() {
|
72
|
-
$callout.show();
|
73
|
-
$modal.foundation('close');
|
74
|
-
})
|
75
|
-
|
76
|
-
$tabs.on('change.zf.tabs', function(e, $tab, $content) {
|
77
|
-
var id = $content.find('.map').data('id');
|
78
|
-
if(id) {
|
79
|
-
editors[id].reload();
|
80
|
-
}
|
81
|
-
});
|
82
|
-
|
83
|
-
$accordion.on('down.zf.accordion', function(e, $accordion) {
|
84
|
-
var id = $accordion.find('.map').data('id');
|
85
|
-
if(id) {
|
86
|
-
editors[id].reload();
|
87
|
-
}
|
88
|
-
});
|
89
|
-
|
90
|
-
// If a new item si going to be created o the image is changed a reload is needed
|
91
|
-
var needsReload = function() {
|
92
|
-
var reload = false;
|
93
|
-
if($form.find('#map-new input:checked').length) return true;
|
94
|
-
if($form.find('.delete-tab input[type=checkbox]:checked').length) return true;
|
95
|
-
|
96
|
-
$form.find('input[type=file],input[tabs_id=blueprints___title]').each(function() {
|
97
|
-
if($(this).val()) {
|
98
|
-
reload = true;
|
99
|
-
return false;
|
100
|
-
}
|
101
|
-
});
|
102
|
-
return reload;
|
103
|
-
};
|
104
|
-
|
105
|
-
$form.ajaxForm({
|
106
|
-
url: $form.find('[name=action]').val(),
|
107
|
-
beforeSerialize: function() {
|
108
|
-
Object.keys(editors).forEach(function(key) {
|
109
|
-
var editor = editors[key];
|
110
|
-
$(`#blueprints_${editor.id}_blueprint`).val(JSON.stringify(editor.getBlueprint()));
|
111
|
-
});
|
112
|
-
},
|
113
|
-
beforeSend: function() {
|
114
|
-
var percentVal = '0%';
|
115
|
-
$bar.width(percentVal).html(percentVal);
|
116
|
-
$progress.show();
|
117
|
-
$callout.hide();
|
118
|
-
$callout.removeClass('alert success');
|
119
|
-
$loading.show();
|
120
|
-
},
|
121
|
-
uploadProgress: function(event, position, total, percentComplete) {
|
122
|
-
var percentVal = percentComplete + '%';
|
123
|
-
$bar.width(percentVal).html(percentVal);
|
124
|
-
},
|
125
|
-
success: function(responseText) {
|
126
|
-
$callout.show();
|
127
|
-
$progress.hide();
|
128
|
-
$callout.contents('p').html(responseText);
|
129
|
-
$callout.addClass('success');
|
130
|
-
$loading.hide();
|
131
|
-
if(needsReload()) {
|
132
|
-
$loading.show();
|
133
|
-
location.reload();
|
134
|
-
}
|
135
|
-
},
|
136
|
-
error: function(xhr) {
|
137
|
-
$loading.hide();
|
138
|
-
$callout.show();
|
139
|
-
$callout.contents('p').html(xhr.responseText);
|
140
|
-
$callout.addClass('alert');
|
141
|
-
}
|
142
|
-
});
|
143
|
-
});
|
@@ -1,123 +0,0 @@
|
|
1
|
-
// Creates a map view
|
2
|
-
//= require leaflet
|
3
|
-
//= require leaflet-geoman.min
|
4
|
-
|
5
|
-
function NavigationMapView(map_object, callback) {
|
6
|
-
var self = this;
|
7
|
-
self.features = {};
|
8
|
-
self.map_object = map_object;
|
9
|
-
self.id = map_object.dataset.id;
|
10
|
-
self.image_path = map_object.dataset.image;
|
11
|
-
self.blueprint = map_object.dataset.blueprint ? JSON.parse(map_object.dataset.blueprint) : {};
|
12
|
-
self.image = new Image();
|
13
|
-
self.image.onload = function() {
|
14
|
-
self.createMap();
|
15
|
-
if(typeof callback === "function") {
|
16
|
-
callback(self);
|
17
|
-
} else {
|
18
|
-
if(self.blueprint) {
|
19
|
-
self.createAreas();
|
20
|
-
}
|
21
|
-
}
|
22
|
-
};
|
23
|
-
self.image.src = self.image_path;
|
24
|
-
this.clickAreaCallback = function () {};
|
25
|
-
this.setLayerPropertiesCallback = function () {};
|
26
|
-
}
|
27
|
-
|
28
|
-
NavigationMapView.prototype.createMap = function() {
|
29
|
-
var bounds = [[0,0], [this.image.height,this.image.width]];
|
30
|
-
|
31
|
-
this.map = L.map(this.map_object, {
|
32
|
-
minZoom: -1,
|
33
|
-
maxZoom: 2,
|
34
|
-
crs: L.CRS.Simple,
|
35
|
-
noWrap: true,
|
36
|
-
zoomSnap: 0,
|
37
|
-
// zoomDelta: 0.1,
|
38
|
-
maxBounds: [[0,0], [this.image.height,this.image.width]],
|
39
|
-
center: [this.image.height/2, this.image.width/2],
|
40
|
-
zoom: -1,
|
41
|
-
scrollWheelZoom: false
|
42
|
-
});
|
43
|
-
|
44
|
-
L.imageOverlay(this.image.src, bounds).addTo(this.map);
|
45
|
-
this.fitBounds();
|
46
|
-
};
|
47
|
-
|
48
|
-
NavigationMapView.prototype.fitBounds = function() {
|
49
|
-
var image_ratio = this.image.height / this.image.width;
|
50
|
-
var map_ratio = this.map_object.offsetHeight / this.map_object.offsetWidth;
|
51
|
-
|
52
|
-
if(image_ratio > map_ratio) {
|
53
|
-
this.map.fitBounds([[0,0], [0,this.image.width]]);
|
54
|
-
}
|
55
|
-
else {
|
56
|
-
this.map.fitBounds([[0,0], [this.image.height,0]]);
|
57
|
-
}
|
58
|
-
this.map.setView([this.image.height/2, this.image.width/2]);
|
59
|
-
};
|
60
|
-
|
61
|
-
NavigationMapView.prototype.createAreas = function() {
|
62
|
-
var self = this;
|
63
|
-
self.forEachBlueprint(function(id, geoarea) {
|
64
|
-
new L.GeoJSON(geoarea, {
|
65
|
-
onEachFeature: function(feature, layer) {
|
66
|
-
layer._leaflet_id = id;
|
67
|
-
self.setLayerProperties(layer, geoarea);
|
68
|
-
self.attachEditorEvents(layer);
|
69
|
-
}
|
70
|
-
}).addTo(self.map);
|
71
|
-
});
|
72
|
-
};
|
73
|
-
|
74
|
-
NavigationMapView.prototype.setLayerProperties = function (layer, area) {
|
75
|
-
var props = area.properties;
|
76
|
-
if(props) {
|
77
|
-
if(props.color) {
|
78
|
-
layer.setStyle({fillColor: props.color, color: props.color});
|
79
|
-
}
|
80
|
-
this.setLayerPropertiesCallback(layer, props);
|
81
|
-
}
|
82
|
-
};
|
83
|
-
|
84
|
-
NavigationMapView.prototype.attachEditorEvents = function (layer) {
|
85
|
-
var self = this;
|
86
|
-
|
87
|
-
layer.on('mouseover', function(e) {
|
88
|
-
e.target.getElement().classList.add('selected')
|
89
|
-
});
|
90
|
-
|
91
|
-
layer.on('mouseout', function(e) {
|
92
|
-
e.target.getElement().classList.remove('selected')
|
93
|
-
});
|
94
|
-
|
95
|
-
layer.on('click', function(e) {
|
96
|
-
self.clickAreaCallback(e.target, self);
|
97
|
-
});
|
98
|
-
};
|
99
|
-
|
100
|
-
// register callback to handle area clicks
|
101
|
-
NavigationMapView.prototype.onClickArea = function(callback) {
|
102
|
-
this.clickAreaCallback = callback;
|
103
|
-
};
|
104
|
-
|
105
|
-
NavigationMapView.prototype.onSetLayerProperties = function(callback) {
|
106
|
-
this.setLayerPropertiesCallback = callback;
|
107
|
-
};
|
108
|
-
|
109
|
-
NavigationMapView.prototype.forEachBlueprint = function (callback) {
|
110
|
-
for (var id in this.blueprint) {
|
111
|
-
var geoarea = this.blueprint[id];
|
112
|
-
// avoid non-polygons for the moment
|
113
|
-
if(!geoarea.geometry || geoarea.geometry.type !== 'Polygon') continue;
|
114
|
-
callback(id, geoarea);
|
115
|
-
}
|
116
|
-
};
|
117
|
-
|
118
|
-
NavigationMapView.prototype.reload = function () {
|
119
|
-
if(this.map) {
|
120
|
-
this.map.invalidateSize(true);
|
121
|
-
this.fitBounds();
|
122
|
-
}
|
123
|
-
};
|
@@ -1,44 +0,0 @@
|
|
1
|
-
// Place all the behaviors and hooks related to the matching controller here.
|
2
|
-
// All this logic will automatically be available in application.js.
|
3
|
-
//= require decidim/navigation_maps/map_view
|
4
|
-
//= require jsrender.min
|
5
|
-
//= require_self
|
6
|
-
|
7
|
-
$(function() {
|
8
|
-
|
9
|
-
var $maps = $('.navigation_maps .map');
|
10
|
-
var $tabs = $('#navigation_maps-tabs');
|
11
|
-
var maps = {};
|
12
|
-
var tmpl = $.templates("#navigation_maps-popup");
|
13
|
-
|
14
|
-
$maps.each(function() {
|
15
|
-
var id = $(this).data('id');
|
16
|
-
maps[id] = new NavigationMapView(this);
|
17
|
-
maps[id].onSetLayerProperties(function(layer, props) {
|
18
|
-
if(!props.popup) {
|
19
|
-
var node = document.createElement("div");
|
20
|
-
var html = tmpl.render(props);
|
21
|
-
$(node).html(html);
|
22
|
-
|
23
|
-
layer.bindPopup(node, {
|
24
|
-
maxHeight: 400,
|
25
|
-
// autoPan: false,
|
26
|
-
maxWidth: 640,
|
27
|
-
minWidth: 200,
|
28
|
-
keepInView: true,
|
29
|
-
className: `navigation_map-info map-info-${id}-${layer._leaflet_id}`
|
30
|
-
});
|
31
|
-
}
|
32
|
-
});
|
33
|
-
maps[id].onClickArea(function(area) {
|
34
|
-
var popup = area.feature.properties && area.feature.properties.link && area.feature.properties.popup;
|
35
|
-
if(popup) location = area.feature.properties.link;
|
36
|
-
});
|
37
|
-
});
|
38
|
-
|
39
|
-
$tabs.on('change.zf.tabs', function(e, $tab, $content) {
|
40
|
-
var id = $content.find('.map').data('id');
|
41
|
-
maps[id].reload();
|
42
|
-
});
|
43
|
-
|
44
|
-
});
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,156 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
-
<svg
|
3
|
-
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
4
|
-
xmlns:cc="http://creativecommons.org/ns#"
|
5
|
-
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
6
|
-
xmlns:svg="http://www.w3.org/2000/svg"
|
7
|
-
xmlns="http://www.w3.org/2000/svg"
|
8
|
-
xmlns:xlink="http://www.w3.org/1999/xlink"
|
9
|
-
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
10
|
-
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
11
|
-
viewBox="0 0 600 60"
|
12
|
-
height="60"
|
13
|
-
width="600"
|
14
|
-
id="svg4225"
|
15
|
-
version="1.1"
|
16
|
-
inkscape:version="0.91 r13725"
|
17
|
-
sodipodi:docname="spritesheet.svg"
|
18
|
-
inkscape:export-filename="/home/fpuga/development/upstream/icarto.Leaflet.draw/src/images/spritesheet-2x.png"
|
19
|
-
inkscape:export-xdpi="90"
|
20
|
-
inkscape:export-ydpi="90">
|
21
|
-
<metadata
|
22
|
-
id="metadata4258">
|
23
|
-
<rdf:RDF>
|
24
|
-
<cc:Work
|
25
|
-
rdf:about="">
|
26
|
-
<dc:format>image/svg+xml</dc:format>
|
27
|
-
<dc:type
|
28
|
-
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
29
|
-
<dc:title />
|
30
|
-
</cc:Work>
|
31
|
-
</rdf:RDF>
|
32
|
-
</metadata>
|
33
|
-
<defs
|
34
|
-
id="defs4256" />
|
35
|
-
<sodipodi:namedview
|
36
|
-
pagecolor="#ffffff"
|
37
|
-
bordercolor="#666666"
|
38
|
-
borderopacity="1"
|
39
|
-
objecttolerance="10"
|
40
|
-
gridtolerance="10"
|
41
|
-
guidetolerance="10"
|
42
|
-
inkscape:pageopacity="0"
|
43
|
-
inkscape:pageshadow="2"
|
44
|
-
inkscape:window-width="1920"
|
45
|
-
inkscape:window-height="1056"
|
46
|
-
id="namedview4254"
|
47
|
-
showgrid="false"
|
48
|
-
inkscape:zoom="1.3101852"
|
49
|
-
inkscape:cx="237.56928"
|
50
|
-
inkscape:cy="7.2419621"
|
51
|
-
inkscape:window-x="1920"
|
52
|
-
inkscape:window-y="24"
|
53
|
-
inkscape:window-maximized="1"
|
54
|
-
inkscape:current-layer="svg4225" />
|
55
|
-
<g
|
56
|
-
id="enabled"
|
57
|
-
style="fill:#464646;fill-opacity:1">
|
58
|
-
<g
|
59
|
-
id="polyline"
|
60
|
-
style="fill:#464646;fill-opacity:1">
|
61
|
-
<path
|
62
|
-
d="m 18,36 0,6 6,0 0,-6 -6,0 z m 4,4 -2,0 0,-2 2,0 0,2 z"
|
63
|
-
id="path4229"
|
64
|
-
inkscape:connector-curvature="0"
|
65
|
-
style="fill:#464646;fill-opacity:1" />
|
66
|
-
<path
|
67
|
-
d="m 36,18 0,6 6,0 0,-6 -6,0 z m 4,4 -2,0 0,-2 2,0 0,2 z"
|
68
|
-
id="path4231"
|
69
|
-
inkscape:connector-curvature="0"
|
70
|
-
style="fill:#464646;fill-opacity:1" />
|
71
|
-
<path
|
72
|
-
d="m 23.142,39.145 -2.285,-2.29 16,-15.998 2.285,2.285 z"
|
73
|
-
id="path4233"
|
74
|
-
inkscape:connector-curvature="0"
|
75
|
-
style="fill:#464646;fill-opacity:1" />
|
76
|
-
</g>
|
77
|
-
<path
|
78
|
-
id="polygon"
|
79
|
-
d="M 100,24.565 97.904,39.395 83.07,42 76,28.773 86.463,18 Z"
|
80
|
-
inkscape:connector-curvature="0"
|
81
|
-
style="fill:#464646;fill-opacity:1" />
|
82
|
-
<path
|
83
|
-
id="rectangle"
|
84
|
-
d="m 140,20 20,0 0,20 -20,0 z"
|
85
|
-
inkscape:connector-curvature="0"
|
86
|
-
style="fill:#464646;fill-opacity:1" />
|
87
|
-
<path
|
88
|
-
id="circle"
|
89
|
-
d="m 221,30 c 0,6.078 -4.926,11 -11,11 -6.074,0 -11,-4.922 -11,-11 0,-6.074 4.926,-11 11,-11 6.074,0 11,4.926 11,11 z"
|
90
|
-
inkscape:connector-curvature="0"
|
91
|
-
style="fill:#464646;fill-opacity:1" />
|
92
|
-
<path
|
93
|
-
id="marker"
|
94
|
-
d="m 270,19 c -4.971,0 -9,4.029 -9,9 0,4.971 5.001,12 9,14 4.001,-2 9,-9.029 9,-14 0,-4.971 -4.029,-9 -9,-9 z m 0,12.5 c -2.484,0 -4.5,-2.014 -4.5,-4.5 0,-2.484 2.016,-4.5 4.5,-4.5 2.485,0 4.5,2.016 4.5,4.5 0,2.486 -2.015,4.5 -4.5,4.5 z"
|
95
|
-
inkscape:connector-curvature="0"
|
96
|
-
style="fill:#464646;fill-opacity:1" />
|
97
|
-
<g
|
98
|
-
id="edit"
|
99
|
-
style="fill:#464646;fill-opacity:1">
|
100
|
-
<path
|
101
|
-
d="m 337,30.156 0,0.407 0,5.604 c 0,1.658 -1.344,3 -3,3 l -10,0 c -1.655,0 -3,-1.342 -3,-3 l 0,-10 c 0,-1.657 1.345,-3 3,-3 l 6.345,0 3.19,-3.17 -9.535,0 c -3.313,0 -6,2.687 -6,6 l 0,10 c 0,3.313 2.687,6 6,6 l 10,0 c 3.314,0 6,-2.687 6,-6 l 0,-8.809 -3,2.968"
|
102
|
-
id="path4240"
|
103
|
-
inkscape:connector-curvature="0"
|
104
|
-
style="fill:#464646;fill-opacity:1" />
|
105
|
-
<path
|
106
|
-
d="m 338.72,24.637 -8.892,8.892 -2.828,0 0,-2.829 8.89,-8.89 z"
|
107
|
-
id="path4242"
|
108
|
-
inkscape:connector-curvature="0"
|
109
|
-
style="fill:#464646;fill-opacity:1" />
|
110
|
-
<path
|
111
|
-
d="m 338.697,17.826 4,0 0,4 -4,0 z"
|
112
|
-
transform="matrix(-0.70698336,-0.70723018,0.70723018,-0.70698336,567.55917,274.78273)"
|
113
|
-
id="path4244"
|
114
|
-
inkscape:connector-curvature="0"
|
115
|
-
style="fill:#464646;fill-opacity:1" />
|
116
|
-
</g>
|
117
|
-
<g
|
118
|
-
id="remove"
|
119
|
-
style="fill:#464646;fill-opacity:1">
|
120
|
-
<path
|
121
|
-
d="m 381,42 18,0 0,-18 -18,0 0,18 z m 14,-16 2,0 0,14 -2,0 0,-14 z m -4,0 2,0 0,14 -2,0 0,-14 z m -4,0 2,0 0,14 -2,0 0,-14 z m -4,0 2,0 0,14 -2,0 0,-14 z"
|
122
|
-
id="path4247"
|
123
|
-
inkscape:connector-curvature="0"
|
124
|
-
style="fill:#464646;fill-opacity:1" />
|
125
|
-
<path
|
126
|
-
d="m 395,20 0,-4 -10,0 0,4 -6,0 0,2 22,0 0,-2 -6,0 z m -2,0 -6,0 0,-2 6,0 0,2 z"
|
127
|
-
id="path4249"
|
128
|
-
inkscape:connector-curvature="0"
|
129
|
-
style="fill:#464646;fill-opacity:1" />
|
130
|
-
</g>
|
131
|
-
</g>
|
132
|
-
<g
|
133
|
-
id="disabled"
|
134
|
-
transform="translate(120,0)"
|
135
|
-
style="fill:#bbbbbb">
|
136
|
-
<use
|
137
|
-
xlink:href="#edit"
|
138
|
-
id="edit-disabled"
|
139
|
-
x="0"
|
140
|
-
y="0"
|
141
|
-
width="100%"
|
142
|
-
height="100%" />
|
143
|
-
<use
|
144
|
-
xlink:href="#remove"
|
145
|
-
id="remove-disabled"
|
146
|
-
x="0"
|
147
|
-
y="0"
|
148
|
-
width="100%"
|
149
|
-
height="100%" />
|
150
|
-
</g>
|
151
|
-
<path
|
152
|
-
style="fill:none;stroke:#464646;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
153
|
-
id="circle-3"
|
154
|
-
d="m 581.65725,30 c 0,6.078 -4.926,11 -11,11 -6.074,0 -11,-4.922 -11,-11 0,-6.074 4.926,-11 11,-11 6.074,0 11,4.926 11,11 z"
|
155
|
-
inkscape:connector-curvature="0" />
|
156
|
-
</svg>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|