Fix location store for tag.

This commit is contained in:
James Cole 2020-01-02 19:25:42 +01:00
parent e1577a4a76
commit c55ef9c77b
No known key found for this signature in database
GPG Key ID: C16961E655E74B5E
4 changed files with 31 additions and 34 deletions

View File

@ -355,20 +355,21 @@ class Request extends FormRequest
*/ */
protected function appendLocationData(array $data, ?string $prefix): array protected function appendLocationData(array $data, ?string $prefix): array
{ {
Log::debug(sprintf('Now in appendLocationData(%s)', $prefix), $data); Log::debug(sprintf('Now in appendLocationData("%s")', $prefix), $data);
$data['store_location'] = false; $data['store_location'] = false;
$data['update_location'] = false; $data['update_location'] = false;
$data['longitude'] = null; $data['longitude'] = null;
$data['latitude'] = null; $data['latitude'] = null;
$data['zoom_level'] = null; $data['zoom_level'] = null;
$longitudeKey = null === $prefix ? 'longitude' : sprintf('%s_longitude', $prefix); $longitudeKey = null === $prefix ? 'longitude' : sprintf('%s_longitude', $prefix);
$latitudeKey = null === $prefix ? 'latitude' : sprintf('%s_latitude', $prefix); $latitudeKey = null === $prefix ? 'latitude' : sprintf('%s_latitude', $prefix);
$zoomLevelKey = null === $prefix ? 'zoom_level' : sprintf('%s_zoom_level', $prefix); $zoomLevelKey = null === $prefix ? 'zoom_level' : sprintf('%s_zoom_level', $prefix);
// for a POST (store, all fields must be present and accounted for: // for a POST (store, all fields must be present and accounted for:
if ( if (
('POST' === $this->method() && ($this->routeIs('accounts.store') || $this->routeIs('api.v1.accounts.store'))) ('POST' === $this->method() && $this->routeIs('*.store'))
&& ($this->has($longitudeKey) && $this->has($latitudeKey) && $this->has($zoomLevelKey)) && ($this->has($longitudeKey) && $this->has($latitudeKey) && $this->has($zoomLevelKey))
) { ) {
Log::debug('Method is POST and all fields present.'); Log::debug('Method is POST and all fields present.');
@ -380,8 +381,8 @@ class Request extends FormRequest
if ( if (
($this->has($longitudeKey) && $this->has($latitudeKey) && $this->has($zoomLevelKey)) ($this->has($longitudeKey) && $this->has($latitudeKey) && $this->has($zoomLevelKey))
&& ( && (
('PUT' === $this->method() && $this->routeIs('api.v1.accounts.update')) ('PUT' === $this->method() && $this->routeIs('*.update'))
|| ('POST' === $this->method() && $this->routeIs('accounts.update')) || ('POST' === $this->method() && $this->routeIs('*.update'))
) )
) { ) {
Log::debug('Method is PUT and all fields present.'); Log::debug('Method is PUT and all fields present.');

View File

@ -48,26 +48,13 @@ class TagFormRequest extends Request
*/ */
public function collectTagData(): array public function collectTagData(): array
{ {
$latitude = null; $data = [
$longitude = null; 'tag' => $this->string('tag'),
$zoomLevel = null; 'date' => $this->date('date'),
$hasLocation = false; 'description' => $this->string('description'),
if (true === $this->boolean('location_has_location')) {
$latitude = $this->string('location_latitude');
$longitude = $this->string('location_longitude');
$zoomLevel = $this->integer('location_zoom_level');
$hasLocation = true;
}
return [
'tag' => $this->string('tag'),
'date' => $this->date('date'),
'description' => $this->string('description'),
'latitude' => $latitude,
'longitude' => $longitude,
'zoom_level' => $zoomLevel,
'has_location' => $hasLocation,
]; ];
return $this->appendLocationData($data, 'location');
} }
/** /**

View File

@ -399,13 +399,13 @@ class TagRepository implements TagRepositoryInterface
$tag->tag = $data['tag']; $tag->tag = $data['tag'];
$tag->date = $data['date']; $tag->date = $data['date'];
$tag->description = $data['description']; $tag->description = $data['description'];
$tag->latitude = $data['latitude']; $tag->latitude = null;
$tag->longitude = $data['longitude']; $tag->longitude = null;
$tag->zoomLevel = $data['zoom_level']; $tag->zoomLevel = null;
$tag->save(); $tag->save();
// update, delete or create location: // update, delete or create location:
$updateLocation = $data['has_location'] ?? false; $updateLocation = $data['update_location'] ?? false;
// location must be updated? // location must be updated?
if (true === $updateLocation) { if (true === $updateLocation) {

View File

@ -79,20 +79,28 @@
}); });
}; };
// set location thing: // set location thing:
function setObjectLocation(e) { function setObjectLocation(e) {
console.log('Set object location: lat(' + e.latlng.lat + '), long(' + e.latlng.lng + '), zoom (' + mymap.getZoom() + ')'); if (typeof e.latlng !== 'undefined') {
$('input[name="{{ latitudevar }}"]').val(e.latlng.lat); console.log('Set object location: lat(' + e.latlng.lat + '), long(' + e.latlng.lng + '), zoom (' + mymap.getZoom() + ')');
$('input[name="{{ longitudevar }}"]').val(e.latlng.lng); $('input[name="{{ latitudevar }}"]').val(e.latlng.lat);
$('input[name="{{ longitudevar }}"]').val(e.latlng.lng);
}
if (typeof e.latlng === 'undefined') {
console.log('Set object zoom level to ' + mymap.getZoom());
}
$('input[name="{{ zoomlevelvar }}"]').val(mymap.getZoom()); $('input[name="{{ zoomlevelvar }}"]').val(mymap.getZoom());
$('input[name="{{ haslocationvar }}"]').val('true');
// remove existing marker: // remove existing marker:
if (typeof marker !== 'undefined') { if (typeof marker !== 'undefined' && typeof e.latlng !== 'undefined') {
marker.remove(); marker.remove();
} }
// new marker if (typeof e.latlng !== 'undefined') {
marker = L.marker({lat: e.latlng.lat, lng: e.latlng.lng}).addTo(mymap); // new marker
marker = L.marker({lat: e.latlng.lat, lng: e.latlng.lng}).addTo(mymap);
}
} }
@ -110,6 +118,7 @@
}).addTo(mymap); }).addTo(mymap);
mymap.on('contextmenu', setObjectLocation); mymap.on('contextmenu', setObjectLocation);
mymap.on('zoomend', setObjectLocation);
// add marker // add marker
if (typeof locations.{{ name }}.has_location !== 'undefined' && locations.{{ name }}.has_location === true) { if (typeof locations.{{ name }}.has_location !== 'undefined' && locations.{{ name }}.has_location === true) {