We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 3958ca0 commit 899eb30Copy full SHA for 899eb30
app/helpers/gtt_map_helper.rb
@@ -11,7 +11,8 @@ def map_form_field(form, map, field: :geojson, bounds: nil, edit_mode: nil, uplo
11
12
def map_tag(map: nil, layers: map&.layers,
13
geom: map.json, bounds: map.bounds,
14
- edit: nil, popup: nil, upload: true)
+ edit: nil, popup: nil, upload: true,
15
+ collapsed: false)
16
17
data = {
18
geom: geom.is_a?(String) ? geom : geom.to_json
@@ -28,11 +29,13 @@ def map_tag(map: nil, layers: map&.layers,
28
29
data[:edit] = edit if edit
30
data[:popup] = popup if popup
31
data[:upload] = upload
32
+ data[:collapsed] = collapsed if collapsed
33
34
uid = "ol-" + rand(36**8).to_s(36)
35
36
safe_join [
- content_tag(:div, "", data: data, id: uid, class: 'ol-map'),
37
+ content_tag(:div, "", data: data, id: uid, class: 'ol-map',
38
+ style: (collapsed ? "display: none" : "display: block")),
39
javascript_tag("
40
document.addEventListener('DOMContentLoaded', function(){
41
var target = document.getElementById('#{uid}');
app/views/issues/index/_map.html.erb
@@ -1,9 +1,10 @@
1
<% if @project and @project.module_enabled?(:gtt) %>
2
+ <% collapsed = Setting.plugin_redmine_gtt['default_collapsed_issues_page_map'] == 'true' %>
3
+ <fieldset id="location" class="<%= "collapsible" + (collapsed ? " collapsed" : "") %>">
4
+ <legend class="<%= "icon " + (collapsed ? "icon-collapsed" : "icon-expended") %>"><%= l(:field_location) %></legend>
5
-<fieldset id="location" class="collapsible">
- <legend class="icon icon-expended"><%= l(:field_location) %></legend>
-
6
- <%= map_tag map: @project.map, geom: (Issue.array_to_geojson(@issues, include_properties: { only: %i(id subject tracker_id status_id) }) if @issues), popup: { href: '/issues/[id]' } %>
7
-</fieldset>
+ <%= map_tag map: @project.map, geom: (Issue.array_to_geojson(@issues, include_properties: { only: %i(id subject tracker_id status_id) }) if @issues),
+ popup: { href: '/issues/[id]' }, collapsed: collapsed %>
8
+ </fieldset>
9
10
<% end %>
app/views/settings/gtt/_settings.html.erb
@@ -22,6 +22,11 @@
22
<div class="box tabular settings">
23
<h3><%= l(:select_default_map_settings) %></h3>
24
25
+<p>
26
+ <%= content_tag(:label, l(:label_default_collapsed_issues_page_map)) %>
27
+ <%= check_box_tag 'settings[default_collapsed_issues_page_map]', true, @settings[:default_collapsed_issues_page_map] %>
+</p>
+
<p>
<%= content_tag(:label, l(:gtt_settings_general_center_lon)) %>
<%= text_field_tag('settings[default_map_center_longitude]',
config/locales/en.yml
@@ -58,6 +58,7 @@ en:
58
# gtt_settings_geocoder_district_field_name: "District field name"
59
# gtt_park_search_field_name: "Park search field name"
60
61
+ label_default_collapsed_issues_page_map: "Default collapsed issues page map"
62
label_gtt_point: "Point"
63
label_gtt_linestring: "LineString"
64
label_gtt_polygon: "Polygon"
config/locales/ja.yml
@@ -58,6 +58,7 @@ ja:
# gtt_settings_geocoder_district_field_name: "区フィールド名"
# gtt_park_search_field_name: "公園検索フィールド名"
+ label_default_collapsed_issues_page_map: "チケット一覧の地図を既定で非表示"
label_gtt_point: "ポイント"
label_gtt_linestring: "ライン"
label_gtt_polygon: "ポリゴン"
init.rb
@@ -18,6 +18,7 @@
19
settings(
20
:default => {
21
+ 'default_collapsed_issues_page_map' => false,
'default_map_center_longitude' => 139.691706,
'default_map_center_latitude' => 35.689524,
'default_map_zoom_level' => 13,
src/components/gtt-client.ts
@@ -265,6 +265,25 @@ export class GttClient {
265
this.setPopover()
266
}
267
268
+ // Zoom to extent when map collapsed => expended
269
+ if (this.contents.collapsed) {
270
+ const self = this
271
+ const collapsedObserver = new MutationObserver((mutations) => {
272
+ // const currentMap = this.map
273
+ mutations.forEach(function(mutation) {
274
+ if (mutation.attributeName !== 'style') {
275
+ return
276
+ }
277
+ const mapDiv = mutation.target as HTMLDivElement
278
+ if (mapDiv && mapDiv.style.display === 'block') {
279
+ self.zoomToExtent(true)
280
+ collapsedObserver.disconnect()
281
282
+ })
283
284
+ collapsedObserver.observe(self.map.getTargetElement(), { attributes: true, attributeFilter: ['style'] })
285
286
287
// Sidebar hack
288
const resizeObserver = new ResizeObserver((entries, observer) => {
289
this.maps.forEach(m => {
src/stylesheets/app.scss
@@ -33,11 +33,6 @@ div.usermap h3 {
padding-left: 20px;
-/* hide Map on issues list by default */
-//fieldset#location > div.ol-map{
-// display: none;
-//}
i[id^='icon_settings_tracker_'] {
42
font-size: 1.5em;
43
vertical-align: middle;
0 commit comments