Skip to content

Commit

Permalink
Adressensuche via Such-API geocodr realisiert
Browse files Browse the repository at this point in the history
  • Loading branch information
kvlahrogut committed Jun 26, 2018
1 parent 05d6aa6 commit 3631ea1
Show file tree
Hide file tree
Showing 21 changed files with 53 additions and 1,708 deletions.
37 changes: 22 additions & 15 deletions README.md
Expand Up @@ -73,8 +73,6 @@ Für die Konfigurationsdateien mit vertraulichem Inhalt gibt es versionierbare V

#### Block 'urls'
Zentrale Konfiguration von im Frontend genutzten URLs.
- `ks_frontend_search_url` (Pflichtfeld):
- URL zur Straßen- und Adresssuche
- `ks_server_url` (Pflichtfeld):
- URL zum Klarschiff-Frontend
- `ks_backend_vorgang_url` (Pflichtfeld):
Expand All @@ -92,13 +90,13 @@ Zentrale Konfiguration von im Frontend genutzten URLs.
Konfiguration des entsprechenden Clients, den Außendienst-Client (Prüf- und Protokoll-Client, PPC) oder mobilen Client:
- `animate_refresh` (Pflichtfeld):
- Zeitabstand (in Sekunden) zwischen der letzten und der nächsten Animation für den "Neue Meldung"-Marker
- `service_code` (Optional):
- `service_code` (optional):
- ID der Unterkategorie, auf die die Funktionalitäten des PC-Clients beschränkt werden sollen
- `key` (Pflichtfeld):
- Kurzwort für die zugehörige Stadt/Gemeinde (z.B. hro, hgw, sn)
- `login_required` (Pflichtfeld):
- wenn auf `true` gesetzt, wird der PPC konfiguriert, ansonsten der mobile Client
- `multi_requests_enabled` (Optional):
- `multi_requests_enabled` (optional):
- ermöglicht das Anlegen von Multimeldungen (Es werden einzelne "normale" Meldungen erzeugt, welche in den wesentlichen Eigenschaften identisch sind, allerdings unterschiedlichen Kategorien zugeordnet sind. Diese verbleiben nach der Erstellung vollständig eigentständig)
- `name` (Pflichtfeld):
- Name des Clients
Expand All @@ -112,37 +110,37 @@ Konfiguration des entsprechenden Clients, den Außendienst-Client (Prüf- und Pr
- Pfad in dem die automatisch generierten statischen Dateien der Vorgangslisten abgelegt wurden
- `logo_url` (Pflichtfeld):
- Pfad zum Gemeinde-Logo
- `show_email` (Optional):
- `show_email` (optional):
- steuert die Darstellung der e-Mail-Felder in den Formularen für Meldungen und interne Kommentare
- auf `true` gesetzt, wenn der mobile Client konfiguriert ist und der Parameter nicht mit einem Wert belegt wurde
- `show_abuses` (Optional):
- `show_abuses` (optional):
- steuert die Darstellung der `Missbrauch`-Schaltfläche für Meldungen
- auf `true` gesetzt, wenn der mobile Client konfiguriert ist und der Parameter nicht mit einem Wert belegt wurde
- `show_votes` (Optional):
- `show_votes` (optional):
- steuert die Darstellung der Schaltfläche zum Unterstützen einer Meldung sowie die Anzahl der bisherigen Unterstützungen der Meldung
- auf `true` gesetzt, wenn der mobile Client konfiguriert ist und der Parameter nicht mit einem Wert belegt wurde
- `show_create_comments` (Optional):
- `show_create_comments` (optional):
- steuert die Darstellung der Schaltfläche `Lob, Hinweise oder Kritik`
- auf `true` gesetzt, wenn der mobile Client konfiguriert ist und der Parameter nicht mit einem Wert belegt wurde
- `show_comments` (Optional):
- `show_comments` (optional):
- steuert die Darstellung der Kommentare einer Meldung
- auf `true` gesetzt, wenn der PPC konfiguriert ist und der Parameter nicht mit einem Wert belegt wurde
- `show_edit_request` (Optional):
- `show_edit_request` (optional):
- steuert die Darstellung der Bearbeiten-Schaltfläche einer Meldung
- auf `true` gesetzt, wenn der PPC konfiguriert ist und der Parameter nicht mit einem Wert belegt wurde
- `show_edit_status` (Optional):
- `show_edit_status` (optional):
- steuert die Darstellung der Schaltfläche zum Ändern des Status eines Auftrags
- auf `true` gesetzt, wenn der PPC konfiguriert ist und der Parameter nicht mit einem Wert belegt wurde
- `show_protocol` (Optional):
- `show_protocol` (optional):
- steuert die Darstellung der Schaltfäche zur Erstellung eines KOD-Protokolls einer Meldung
- auf `true` gesetzt, wenn der PPC konfiguriert ist und der Parameter nicht mit einem Wert belegt wurde
- `show_notes` (Optional):
- `show_notes` (optional):
- steuert die Dartsellung der Schaltfläche zur Erstellung und Anzeige von internen Kommentaren
- auf `true` gesetzt, wenn der PPC konfiguriert ist und der Parameter nicht mit einem Wert belegt wurde
- `show_trust` (Optional):
- `show_trust` (optional):
- steuert die Darstelling der Trust-Level-Sterne
- auf `true` gesetzt, wenn der PPC konfiguriert ist und der Parameter nicht mit einem Wert belegt wurde
- `show_d3_document_url` (Optional):
- `show_d3_document_url` (optional):
- steuert die Dartsellung der Schaltfläche zum Aufruf der Vorgangs-Akte im d.3-Client
- auf `true` gesetzt, wenn der PPC konfiguriert ist und der Parameter nicht mit einem Wert belegt wurde
- `additional_content` (Pflichtfeld):
Expand Down Expand Up @@ -184,6 +182,15 @@ Konfiguration des entsprechenden Clients, den Außendienst-Client (Prüf- und Pr
- `api_key`
- API-Key zur Authentifizierung des Clients

#### Block 'address_search'
Konfiguration der Adressensuche:
- `url` (Pflichtfeld):
- URL zur Adressensuche
- `api_key` (Pflichtfeld):
- API-Key für Adressensuche
- `localisator` (optional):
- String zur Voreingrenzung der Resultate der Adressensuche (z.B. `rostock`, um Resultate der Adressensuche auf Rostock voreinzugrenzen)

#### Block 'protocol_mail'
- `recipient` (Pflichtfeld für PPC):
- E-Mail-Empfänger der Protokoll-Benachrichtigungen
Expand Down
2 changes: 1 addition & 1 deletion app/assets/javascripts/autocomplete.coffee
Expand Up @@ -11,6 +11,6 @@ $ ->
)
minLength: 2
select: (event, ui) ->
$.get("/map?#{ ui.item.id.map( (obj) -> "bbox[]=#{ obj }").join('&') }",
$.get("/map?#{ ui.item.bbox.map( (obj) -> "bbox[]=#{ obj }").join('&') }",
null, null, 'script')
false
13 changes: 9 additions & 4 deletions app/controllers/places_controller.rb
Expand Up @@ -9,11 +9,16 @@ def index
return head(:ok) if params[:pattern]
else
require 'open-uri'
uri = URI(Settings::Url.ks_frontend_search_url)
uri.query = URI.encode_www_form(searchtext: @pattern)

uri = URI(Settings::AddressSearch.url)
if !(localisator = Settings::AddressSearch.localisator).blank?
query = Settings::AddressSearch.localisator + ' ' + @pattern
else
query = @pattern
end
uri.query = URI.encode_www_form(key: Settings::AddressSearch.api_key, query: query, type: 'search', class: 'address', shape: 'bbox', limit: '5')

if (res = open(uri, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE)) && res.status.include?('OK')
@places = Array.wrap(JSON.parse(res.read).try(:[], 'array')).map do |p|
@places = Array.wrap(JSON.parse(res.read).try(:[], 'features')).map do |p|
Place.new p
end
end
Expand Down
4 changes: 2 additions & 2 deletions app/models/place.rb
@@ -1,9 +1,9 @@
class Place
include ActiveModel::Model

attr_accessor :label, :bbox
attr_accessor :type, :properties, :geometry

def as_json(options = {})
{ id: bbox, label: label }
{ label: properties['objektgruppe'] == 'Gemeindeteil' ? properties['_title_'].split(', ')[-1] : properties['abkuerzung'].blank? ? properties['_title_'].split(', ')[-1] : properties['_title_'].split(', ')[-1] + ' (' + properties['abkuerzung'] + ')', bbox: geometry['type'] == 'Point' ? [geometry['coordinates'][0],geometry['coordinates'][1],geometry['coordinates'][0],geometry['coordinates'][1]] : [geometry['coordinates'][0][0][0],geometry['coordinates'][0][0][1],geometry['coordinates'][0][2][0],geometry['coordinates'][0][2][1]] }
end
end
16 changes: 14 additions & 2 deletions app/views/places/mobile/_index.html.erb
Expand Up @@ -21,8 +21,20 @@
<div class="panel-heading"><%= t('.results') %></div>
<div class="list-group">
<% @places.each do |place| -%>
<%= link_to(map_path(bbox: place.bbox, mobile: @mobile), remote: true, class: 'list-group-item') do %>
<%= place.label %><span class="badge"><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span></span>
<% if place.geometry['type'] == 'Point' %>
<% @bbox = [place.geometry['coordinates'][0],place.geometry['coordinates'][1],place.geometry['coordinates'][0],place.geometry['coordinates'][1]] -%>
<% else %>
<% @bbox = [place.geometry['coordinates'][0][0][0],place.geometry['coordinates'][0][0][1],place.geometry['coordinates'][0][2][0],place.geometry['coordinates'][0][2][1]] -%>
<% end %>
<%= link_to(map_path(bbox: @bbox, mobile: @mobile), remote: true, class: 'list-group-item') do %>
<% if place.properties['objektgruppe'] == 'Gemeindeteil' %>
<%= place.properties['_title_'].split(', ')[-1] %>
<% elsif not place.properties['abkuerzung'].blank? %>
<%= place.properties['_title_'].split(', ')[-1] + ' (' + place.properties['abkuerzung'] + ')' %>
<% else %>
<%= place.properties['_title_'].split(', ')[-1] %>
<% end %>
<span class="badge"><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span></span>
<% end %>
<% end -%>
</div>
Expand Down
5 changes: 5 additions & 0 deletions config/settings.sample.yml
Expand Up @@ -56,6 +56,11 @@ resource_servers:
format: :json
api_key: 1234567890abcdefghijklmnopqrstuv

address_search:
url: https://geo.sv.rostock.de/geocodr/query?
api_key: 1234567890abcdefghijklmnopqrstuv
localisator: rostock

protocol_mail:
recipient: recipient@klarschiff.de
sender: sender@klarschiff.de
Expand Down
143 changes: 0 additions & 143 deletions public/search/Search.php

This file was deleted.

25 changes: 0 additions & 25 deletions public/search/conf/config.sample.php

This file was deleted.

0 comments on commit 3631ea1

Please sign in to comment.