Skip to content

Commit 5a1ca08

Browse files
committed
Merge branch 'show_search_results_in_a_popup' into 'develop'
Show parks search results in a popup See merge request gtt/redmine_gtt!41
2 parents 24e0bb9 + c00b364 commit 5a1ca08

File tree

7 files changed

+68
-15
lines changed

7 files changed

+68
-15
lines changed

app/overrides/issues.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,11 @@
2929
:insert_after => "erb[loud]:contains('PDF')",
3030
:partial => "issues/show/geojson"
3131
)
32+
33+
Deface::Override.new(
34+
:virtual_path => "issues/show",
35+
:name => "deface_view_handle_geocoder_options",
36+
:original => "f8b29d3fa9c4998090a16b8392242cafbc8cbbcf",
37+
:insert_after => "div.attributes",
38+
:partial => "issues/geocoder/geocoder_options"
39+
)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<%= hidden_field_tag "default_geocoder_address_field_name", "#{Setting.plugin_redmine_gtt['default_geocoder_address_field_name']}" %>
2+
<%= hidden_field_tag "default_park_search_field_name", "#{Setting.plugin_redmine_gtt['default_park_search_field_name']}" %>
3+
<%= hidden_field_tag "default_geocoder_url", "#{Setting.plugin_redmine_gtt['default_geocoder_url']}" %>

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,13 @@
6161
<div class="box tabular settings">
6262
<h3><%= l(:select_default_geocoder_settings) %></h3>
6363

64+
<p>
65+
<%= content_tag(:label, l(:geocoder_url)) %>
66+
<%= text_field_tag('settings[default_geocoder_url]',
67+
@settings['default_geocoder_url'],
68+
:size => 50) %>
69+
</p>
70+
6471
<p>
6572
<%= content_tag(:label, l(:gtt_settings_geocoder_address_field_name)) %>
6673
<%= text_field_tag('settings[default_geocoder_address_field_name]',
@@ -74,6 +81,13 @@
7481
@settings['default_geocoder_district_field_name'],
7582
:size => 10) %>
7683
</p>
84+
85+
<p>
86+
<%= content_tag(:label, l(:gtt_park_search_field_name)) %>
87+
<%= text_field_tag('settings[default_park_search_field_name]',
88+
@settings['default_park_search_field_name'],
89+
:size => 10) %>
90+
</p>
7791
</div>
7892

7993
<%= javascript_tag do %>

assets/javascripts/app.js

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -626,18 +626,21 @@ var App = (function ($, publ) {
626626
*/
627627
publ.setGeocoding = function (){
628628

629+
var default_park_search_field_name = $("input#default_park_search_field_name").val()
630+
var default_geocoder_url = $("input#default_geocoder_url").val()
631+
var default_geocoder_address_field_name = $("input#default_geocoder_address_field_name").val()
629632
// Hack to add Geocoding buttons to text fields
630633
// There should be a better way to do this
631634
if ( $("#issue-form #attributes button.btn-geocode").length == 0 ) {
632-
$("#issue-form #attributes label:contains('" + defaults.geocoderAddress + "')").parent("p").append(
633-
'<button name="button" type="button" class="btn-geocode">住所検索</button>'
635+
$("#issue-form #attributes label:contains('" + default_geocoder_address_field_name + "')").parent("p").append(
636+
'<button name="button" type="button" class="btn-geocode">' + default_geocoder_address_field_name + '</button>'
634637
);
635638

636639
$("button.btn-geocode").on("click", function(evt) {
637640
// Geocode address and add/update icon on map
638641
if ($("button.btn-geocode").prev("input").val() != "") {
639642
var address = $("button.btn-geocode").prev("input").val()
640-
$.getJSON("https://***REMOVED***/geocode/json/" + encodeURIComponent(address), function(data) {
643+
$.getJSON(default_geocoder_url+"/geocode/json/" + encodeURIComponent(address), function(data) {
641644
if (data.result.code >= 0 && data.result.coordinates) {
642645
var coords = [data.result.coordinates.x, data.result.coordinates.y];
643646
var geom = new ol.geom.Point(
@@ -673,10 +676,10 @@ var App = (function ($, publ) {
673676
}
674677
});
675678
}
676-
679+
677680
if ( $("#issue-form #attributes button.btn-parksearch").length == 0 ) {
678-
$("#issue-form #attributes label:contains('公園検索')").parent("p").append(
679-
'<button name="button" type="button" class="btn-parksearch">公園検索</button>'
681+
$("#issue-form #attributes label:contains(" + default_park_search_field_name + ")").parent("p").append(
682+
'<button name="button" type="button" class="btn-parksearch">' + default_park_search_field_name + '</button>'
680683
);
681684

682685
$("button.btn-parksearch").on("click", function(evt) {
@@ -687,14 +690,30 @@ var App = (function ($, publ) {
687690
coords = feature.getGeometry().getCoordinates();
688691
});
689692
coords = ol.proj.transform(coords,'EPSG:3857','EPSG:4326')
690-
$.getJSON("https://***REMOVED***/geocoder/service/reversegeocode/json/" + coords.join(",") + ",500?useaddr=true&owner=***REMOVED***&details=true", function(data) {
691-
if (data.result.address && data.result.details.id ) {
692-
$("#issue-form #attributes label:contains('公園検索')").parent("p").children("input").val(
693-
"[" + data.result.details.id + "] " + data.result.address
693+
694+
$.getJSON(default_geocoder_url + "/reversegeocode/json_arr/" + coords.join(",") + ",500?useaddr=true&owner=***REMOVED***&details=true&category=park", function(data) {
695+
if (data.length){
696+
$('#ajax-modal').html(
697+
"<h3 class='title'>Park results </h3>" +
698+
"<div id='parks'></div>" +
699+
"<p class='buttons'><input type='submit' value='select' onclick='hideModal(this)'/></p>"
694700
);
695-
}
696-
else {
697-
$("#issue-form #attributes label:contains('公園検索')").parent("p").children("input").val("---");
701+
$('#ajax-modal').addClass('park_search_results');
702+
data.forEach(function(parkData){
703+
if (parkData.result.address && parkData.result.details.id ) {
704+
$("div#parks").append('<input type="radio" name="parks" value="[' + parkData.result.details.id + ']' + parkData.result.address + '">'
705+
+ parkData.result.address
706+
+'<br>')
707+
}
708+
})
709+
showModal('ajax-modal', '400px');
710+
$("p.buttons input[type='submit']").click(function(){
711+
$("#issue-form #attributes label:contains('" + default_park_search_field_name + "')").parent("p").children("input").val(
712+
$("div#parks input[type='radio']:checked").val()
713+
);
714+
})
715+
}else{
716+
$("#issue-form #attributes label:contains('" + default_park_search_field_name + "')").parent("p").children("input").val("---");
698717
}
699718
});
700719
}
@@ -885,7 +904,8 @@ var App = (function ($, publ) {
885904
// Todo: only works with point geometries for now for the last geometry
886905
var coords = features[features.length - 1].getGeometry().getCoordinates();
887906
coords = ol.proj.transform(coords,'EPSG:3857','EPSG:4326')
888-
$.getJSON("https://***REMOVED***/reversegeocode/json/" + coords.join(",") + ",1000", function(data) {
907+
var default_geocoder_url = $("input#default_geocoder_url").val()
908+
$.getJSON(default_geocoder_url + "/reversegeocode/json/" + coords.join(",") + ",1000", function(data) {
889909
var districtInput = $("#issue-form #attributes label:contains('" + defaults.geocoderDistrict + "')").parent("p").children("input");
890910
var foundDistrict = false;
891911
if (data.result.code >= 0 && data.result.address) {

config/locales/en.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ en:
3737
label_tab_geocoder: "Geocoder"
3838
label_tab_map: "Tile Sources"
3939

40+
geocoder_url: "Geocoder URL"
41+
4042
gtt_tile_sources_info: Select the tile sources that should be available in this project.
4143

4244
gtt_settings_general_center_lon: "Default map center longitude"
@@ -53,6 +55,7 @@ en:
5355
gtt_settings_geocoder_apikey: "API Key"
5456
gtt_settings_geocoder_address_field_name: "Address field name"
5557
gtt_settings_geocoder_district_field_name: "District field name"
58+
gtt_park_search_field_name: "Park search field name"
5659

5760
select_default_tracker_icon: "Select default tracker icon:"
5861
select_default_status_color: "Select default status color:"

config/locales/ja.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ ja:
3737
label_tab_geocoder: "ジオコーダー"
3838
label_tab_map: "タイルソース"
3939

40+
geocoder_url: "ジオコーダのURL"
41+
4042
gtt_tile_sources_info: このプロジェクトで使用できるタイルソースを選択します。
4143

4244
gtt_settings_general_center_lon: "既定の地図中心経度"
@@ -53,6 +55,7 @@ ja:
5355
gtt_settings_geocoder_apikey: "ジオコーダAPIキー"
5456
gtt_settings_geocoder_address_field_name: "住所フィールド名"
5557
gtt_settings_geocoder_district_field_name: "区フィールド名"
58+
gtt_park_search_field_name: "公園検索フィールド名"
5659

5760
select_default_tracker_icon: "レポートの分野アイコンを選択:"
5861
select_default_status_color: "ステータス色を選択:"

init.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
'default_map_maxzoom_level' => 19,
2424
'default_map_fit_maxzoom_level' => 17,
2525
'default_geocoder_address_field_name' => '現地住所',
26-
'default_geocoder_district_field_name' => '区名'
26+
'default_geocoder_district_field_name' => '区名',
27+
'default_park_search_field_name' => '公園検索',
28+
'default_geocoder_url' => "https://***REMOVED***/"
2729
},
2830
partial: 'settings/gtt/settings'
2931
)

0 commit comments

Comments
 (0)