mirror of
https://github.com/lucaspalomodevelop/eventcally.git
synced 2026-03-13 00:07:22 +00:00
Umkreissuche (nur akt. Pos.)
This commit is contained in:
parent
905d849490
commit
9ec9dc9068
@ -1,3 +1,4 @@
|
||||
from flask import request
|
||||
from flask_babelex import lazy_gettext, gettext
|
||||
from flask_wtf import FlaskForm
|
||||
from flask_wtf.file import FileField, FileAllowed
|
||||
@ -150,4 +151,7 @@ class FindEventForm(FlaskForm):
|
||||
|
||||
organizer_id = SelectField(lazy_gettext('Organizer'), validators=[Optional()], coerce=int)
|
||||
|
||||
submit = SubmitField(lazy_gettext("Find events"))
|
||||
submit = SubmitField(lazy_gettext("Find events"))
|
||||
|
||||
def is_submitted(self):
|
||||
return 'submit' in request.args
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
from flask import request
|
||||
from flask_babelex import lazy_gettext, gettext
|
||||
from flask_wtf import FlaskForm
|
||||
from flask_wtf.file import FileField, FileAllowed
|
||||
from wtforms import SelectMultipleField, FieldList, RadioField, DateTimeField, StringField, SubmitField, TextAreaField, SelectField, BooleanField, IntegerField, FormField
|
||||
from wtforms import HiddenField, SelectMultipleField, FieldList, RadioField, DateTimeField, StringField, SubmitField, TextAreaField, SelectField, BooleanField, IntegerField, FormField
|
||||
from wtforms.fields.html5 import DateTimeLocalField, EmailField
|
||||
from wtforms.validators import DataRequired, Optional
|
||||
from wtforms.widgets import html_params, HTMLString
|
||||
@ -16,7 +17,12 @@ class FindEventDateForm(FlaskForm):
|
||||
date_from = CustomDateField(lazy_gettext('From'), validators=[Optional()])
|
||||
date_to = CustomDateField(lazy_gettext('to'), validators=[Optional()])
|
||||
keyword = StringField(lazy_gettext('Keyword'), validators=[Optional()])
|
||||
|
||||
category_id = SelectField(lazy_gettext('Category'), validators=[Optional()], coerce=int)
|
||||
coordinate = HiddenField(validators=[Optional()])
|
||||
location = StringField(lazy_gettext('Location'), validators=[Optional()])
|
||||
distance = IntegerField(lazy_gettext('Distance'), validators=[Optional()])
|
||||
|
||||
submit = SubmitField(lazy_gettext("Find"))
|
||||
submit = SubmitField(lazy_gettext("Find"))
|
||||
|
||||
def is_submitted(self):
|
||||
return 'submit' in request.args
|
||||
@ -9,6 +9,7 @@ class EventSearchParams(object):
|
||||
self._date_to = None
|
||||
self._date_from_str = None
|
||||
self._date_to_str = None
|
||||
self._coordinate = None
|
||||
self.admin_unit_id = None
|
||||
self.keyword = None
|
||||
self.latitude = None
|
||||
@ -53,6 +54,19 @@ class EventSearchParams(object):
|
||||
self._date_to_str = value
|
||||
self._date_to = form_input_to_date(value)
|
||||
|
||||
@property
|
||||
def coordinate(self):
|
||||
return self._coordinate
|
||||
|
||||
@coordinate.setter
|
||||
def coordinate(self, value):
|
||||
self._coordinate = value
|
||||
if value is not None and len(value) > 0:
|
||||
(self.latitude, self.longitude) = value.split(",")
|
||||
else:
|
||||
self.latitude = None
|
||||
self.longitude = None
|
||||
|
||||
def set_default_date_range(self):
|
||||
self.date_from = today
|
||||
self.date_to = date_set_end_of_day(today + relativedelta(months=12))
|
||||
@ -68,9 +82,7 @@ class EventSearchParams(object):
|
||||
self.keyword = request.args['keyword']
|
||||
|
||||
if "coordinate" in request.args:
|
||||
coordinate = request.args['coordinate']
|
||||
if coordinate is not None and len(coordinate) > 0:
|
||||
(self.latitude, self.longitude) = coordinate.split(",")
|
||||
self.coordinate = request.args['coordinate']
|
||||
|
||||
if "distance" in request.args:
|
||||
self.distance = request.args['distance']
|
||||
|
||||
@ -166,4 +166,45 @@ $( function() {
|
||||
$('.datepicker').each(function (index, element){
|
||||
start_datepicker($(element));
|
||||
});
|
||||
|
||||
$("#clear_location_btn").click(function () {
|
||||
$("#coordinate").val("");
|
||||
$("#location").val("");
|
||||
$("#distance").val("");
|
||||
});
|
||||
|
||||
$("#geolocation_btn").click(function () {
|
||||
if ("geolocation" in navigator){
|
||||
navigator.geolocation.getCurrentPosition(function(position){
|
||||
$("#coordinate").val(position.coords.latitude+","+position.coords.longitude);
|
||||
$("#location").val("Aktuelle Position");
|
||||
$("#postcode").val("");
|
||||
$("#location").removeClass("is-invalid");
|
||||
|
||||
if ($("#distance").val() == "") {
|
||||
$("#distance").val("500");
|
||||
}
|
||||
}, handleError);
|
||||
|
||||
function handleError(error){
|
||||
//Handle Errors
|
||||
switch(error.code) {
|
||||
case error.PERMISSION_DENIED:
|
||||
alert("User denied the request for Geolocation.");
|
||||
break;
|
||||
case error.POSITION_UNAVAILABLE:
|
||||
alert("Location information is unavailable.");
|
||||
break;
|
||||
case error.TIMEOUT:
|
||||
alert("The request to get user location timed out.");
|
||||
break;
|
||||
case error.UNKNOWN_ERROR:
|
||||
alert("An unknown error occurred.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
alert("Browser doesn't support geolocation!");
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -567,49 +567,63 @@ $( function() {
|
||||
{% endmacro %}
|
||||
|
||||
{% macro render_event_dates_filter_form(form) %}
|
||||
<form action="" class="form-inline mb-4" method="GET" autocomplete="off">
|
||||
<form action="" class="form" method="GET" autocomplete="off">
|
||||
{{ form.hidden_tag() }}
|
||||
|
||||
<div class="input-group mb-2 mr-sm-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">{{ form.date_from.label.text }}</span>
|
||||
</div>
|
||||
{{ form.date_from(class="form-control datepicker")|safe }}
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-2 mr-sm-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">{{ form.date_to.label.text }}</span>
|
||||
</div>
|
||||
{{ form.date_to(class="form-control datepicker")|safe }}
|
||||
</div>
|
||||
|
||||
{% if form.category_id %}
|
||||
<div class="input-group mb-2 mr-sm-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">{{ form.category_id.label.text }}</span>
|
||||
</div>
|
||||
{{ form.category_id(class="form-control")|safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{{ render_field_with_errors(form.keyword) }}
|
||||
|
||||
{% if form.organizer_id %}
|
||||
<div class="input-group mb-2 mr-sm-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">{{ form.organizer_id.label.text }}</span>
|
||||
{{ render_field_with_errors(form.organizer_id) }}
|
||||
{% endif %}
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label">{{ _('Date') }}</label>
|
||||
<div class="col-sm-5 mb-1">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">{{ form.date_from.label.text }}</span>
|
||||
</div>
|
||||
{{ form.date_from(class="form-control datepicker")|safe }}
|
||||
</div>
|
||||
{{ form.organizer_id(class="form-control")|safe }}
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">{{ form.date_to.label.text }}</span>
|
||||
</div>
|
||||
{{ form.date_to(class="form-control datepicker")|safe }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if form.location %}
|
||||
<div class="form-group row">
|
||||
<label for="location" class="col-sm-2 col-form-label">{{ _('Radius') }}</label>
|
||||
<div class="col-sm-7 mb-1">
|
||||
<div class="input-group">
|
||||
{{ form.location(class="form-control", disabled="disabled", placeholder=form.location.label.text, autocomplete="off")|safe }}
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" id="clear_location_btn">
|
||||
<i class="fa fa-times"></i>
|
||||
</button>
|
||||
<button class="btn btn-outline-primary" type="button" id="geolocation_btn">
|
||||
<i class="fa fa-location-arrow"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<div class="input-group">
|
||||
{{ form.distance(class="form-control")|safe }}
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">m</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="input-group mb-2 mr-sm-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">{{ form.keyword.label.text }}</span>
|
||||
</div>
|
||||
{{ form.keyword(class="form-control")|safe }}
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary mb-2">{{ _('Find') }}</button>
|
||||
{{ render_field(form.submit) }}
|
||||
</form>
|
||||
{% endmacro %}
|
||||
|
||||
|
||||
@ -5,9 +5,11 @@
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<h1>{{ _('Event Dates') }}</h1>
|
||||
<h1>{{ _('Event Dates') }} <button type="button" class="btn btn-outline-secondary mx-2" data-toggle="collapse" data-target="#search_form" aria-expanded="{% if form.is_submitted() %}true{% else %}false{% endif %}"><i class="fa fa-filter"></i></button></h1>
|
||||
|
||||
{{ render_event_dates_filter_form(form) }}
|
||||
<div class="{% if form.is_submitted() %}{% else %}collapse{% endif %}" id="search_form">
|
||||
{{ render_event_dates_filter_form(form) }}
|
||||
</div>
|
||||
|
||||
{% for date in dates %}
|
||||
<div class="card mb-3" style="max-width: 768px;">
|
||||
|
||||
@ -6,16 +6,16 @@
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<h1>{{ _('Events') }}</h1>
|
||||
|
||||
<div class="my-4">
|
||||
{{ render_event_dates_filter_form(form) }}
|
||||
</div>
|
||||
<h1>{{ _('Events') }} <button type="button" class="btn btn-outline-secondary mx-2" data-toggle="collapse" data-target="#search_form" aria-expanded="{% if form.is_submitted() %}true{% else %}false{% endif %}"><i class="fa fa-filter"></i></button></h1>
|
||||
|
||||
<div class="my-4">
|
||||
<a class="btn btn-outline-secondary my-1" href="{{ url_for('event_create_for_admin_unit_id', id=admin_unit.id) }}" role="button"><i class="fa fa-plus"></i> {{ _('Create event') }}</a>
|
||||
</div>
|
||||
|
||||
<div class="my-4 {% if form.is_submitted() %}{% else %}collapse{% endif %}" id="search_form">
|
||||
{{ render_event_dates_filter_form(form) }}
|
||||
</div>
|
||||
|
||||
<ul class="list-group">
|
||||
{% for event in events %}
|
||||
<li class="list-group-item">
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{% extends "layout.html" %}
|
||||
{% from "_macros.html" import render_event_dates_filter_form, render_pagination, render_event_status_pill, render_event_status_pill, render_place, render_events_sub_menu %}
|
||||
{% from "_macros.html" import render_pagination, render_event_status_pill, render_event_status_pill, render_place, render_events_sub_menu %}
|
||||
{% block title %}
|
||||
{{ _('Widget') }}
|
||||
{% endblock %}
|
||||
@ -10,7 +10,41 @@
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
{{ render_event_dates_filter_form(form) }}
|
||||
<form action="" class="form-inline mb-4" method="GET" autocomplete="off">
|
||||
{{ form.hidden_tag() }}
|
||||
|
||||
<div class="input-group mb-2 mr-sm-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">{{ form.date_from.label.text }}</span>
|
||||
</div>
|
||||
{{ form.date_from(class="form-control datepicker")|safe }}
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-2 mr-sm-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">{{ form.date_to.label.text }}</span>
|
||||
</div>
|
||||
{{ form.date_to(class="form-control datepicker")|safe }}
|
||||
</div>
|
||||
|
||||
{% if form.category_id %}
|
||||
<div class="input-group mb-2 mr-sm-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">{{ form.category_id.label.text }}</span>
|
||||
</div>
|
||||
{{ form.category_id(class="form-control")|safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="input-group mb-2 mr-sm-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">{{ form.keyword.label.text }}</span>
|
||||
</div>
|
||||
{{ form.keyword(class="form-control")|safe }}
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary mb-2">{{ _('Find') }}</button>
|
||||
</form>
|
||||
|
||||
{% for date in dates %}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user