Skip to content

Commit 899eb30

Browse files
committed
Supported collapsible state of issues map
Signed-off-by: Ko Nagase <[email protected]>
1 parent 3958ca0 commit 899eb30

File tree

8 files changed

+38
-12
lines changed

8 files changed

+38
-12
lines changed

app/helpers/gtt_map_helper.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ def map_form_field(form, map, field: :geojson, bounds: nil, edit_mode: nil, uplo
1111

1212
def map_tag(map: nil, layers: map&.layers,
1313
geom: map.json, bounds: map.bounds,
14-
edit: nil, popup: nil, upload: true)
14+
edit: nil, popup: nil, upload: true,
15+
collapsed: false)
1516

1617
data = {
1718
geom: geom.is_a?(String) ? geom : geom.to_json
@@ -28,11 +29,13 @@ def map_tag(map: nil, layers: map&.layers,
2829
data[:edit] = edit if edit
2930
data[:popup] = popup if popup
3031
data[:upload] = upload
32+
data[:collapsed] = collapsed if collapsed
3133

3234
uid = "ol-" + rand(36**8).to_s(36)
3335

3436
safe_join [
35-
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")),
3639
javascript_tag("
3740
document.addEventListener('DOMContentLoaded', function(){
3841
var target = document.getElementById('#{uid}');
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
<% 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>
25

3-
<fieldset id="location" class="collapsible">
4-
<legend class="icon icon-expended"><%= l(:field_location) %></legend>
5-
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>
6+
<%= map_tag map: @project.map, geom: (Issue.array_to_geojson(@issues, include_properties: { only: %i(id subject tracker_id status_id) }) if @issues),
7+
popup: { href: '/issues/[id]' }, collapsed: collapsed %>
8+
</fieldset>
89

910
<% end %>

app/views/settings/gtt/_settings.html.erb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@
2222
<div class="box tabular settings">
2323
<h3><%= l(:select_default_map_settings) %></h3>
2424

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] %>
28+
</p>
29+
2530
<p>
2631
<%= content_tag(:label, l(:gtt_settings_general_center_lon)) %>
2732
<%= text_field_tag('settings[default_map_center_longitude]',

config/locales/en.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ en:
5858
# gtt_settings_geocoder_district_field_name: "District field name"
5959
# gtt_park_search_field_name: "Park search field name"
6060

61+
label_default_collapsed_issues_page_map: "Default collapsed issues page map"
6162
label_gtt_point: "Point"
6263
label_gtt_linestring: "LineString"
6364
label_gtt_polygon: "Polygon"

config/locales/ja.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ ja:
5858
# gtt_settings_geocoder_district_field_name: "区フィールド名"
5959
# gtt_park_search_field_name: "公園検索フィールド名"
6060

61+
label_default_collapsed_issues_page_map: "チケット一覧の地図を既定で非表示"
6162
label_gtt_point: "ポイント"
6263
label_gtt_linestring: "ライン"
6364
label_gtt_polygon: "ポリゴン"

init.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
settings(
2020
:default => {
21+
'default_collapsed_issues_page_map' => false,
2122
'default_map_center_longitude' => 139.691706,
2223
'default_map_center_latitude' => 35.689524,
2324
'default_map_zoom_level' => 13,

src/components/gtt-client.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,25 @@ export class GttClient {
265265
this.setPopover()
266266
}
267267

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+
268287
// Sidebar hack
269288
const resizeObserver = new ResizeObserver((entries, observer) => {
270289
this.maps.forEach(m => {

src/stylesheets/app.scss

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,6 @@ div.usermap h3 {
3333
padding-left: 20px;
3434
}
3535

36-
/* hide Map on issues list by default */
37-
//fieldset#location > div.ol-map{
38-
// display: none;
39-
//}
40-
4136
i[id^='icon_settings_tracker_'] {
4237
font-size: 1.5em;
4338
vertical-align: middle;

0 commit comments

Comments
 (0)