Widget Optimierungen #343

This commit is contained in:
Daniel Grams 2021-12-10 10:51:24 +01:00
parent ef3e3772e8
commit 04e5e2d793
4 changed files with 51 additions and 10 deletions

View File

@ -29,6 +29,10 @@ class FindEventDateForm(FlaskForm):
choices=distance_choices,
)
event_list_id = HiddenField(validators=[Optional()])
s_ft = HiddenField(validators=[Optional()])
s_bg = HiddenField(validators=[Optional()])
s_pr = HiddenField(validators=[Optional()])
s_li = HiddenField(validators=[Optional()])
submit = SubmitField(lazy_gettext("Find"))

View File

@ -33,9 +33,16 @@
style += "min-width:100%;max-width:100%;";
}
var src = baseUrl + "/" + shortName + "/widget/eventdates?";
src = addParamToQuery(element, src, 'event-list', 'event_list_id');
src = addParamToQuery(element, src, 'font', 's_ft');
src = addParamToQuery(element, src, 'background', 's_bg');
src = addParamToQuery(element, src, 'primary', 's_pr');
src = addParamToQuery(element, src, 'link', 's_li');
var iFrame = d.createElement("iframe");
iFrame.class = "oveda-widget-iframe";
iFrame.src = baseUrl + "/" + shortName + "/widget/eventdates";
iFrame.src = src;
iFrame.style = style;
iFrame.frameborder = "0";
iFrame.allowtransparency = "true";
@ -48,6 +55,17 @@
iFrameElements.push(element);
}
function addParamToQuery(element, url, attr, param)
{
var value = getWidgetData(element, attr);
if (value != null) {
url += param + "=" + encodeURIComponent(value) + "&";
}
return url;
}
function getWidgetData(element, name, defaultValue = null) {
var attribute = 'data-widget-' + name;

View File

@ -52,7 +52,8 @@ def widget_event_dates(au_short_name):
if form.validate():
form.populate_obj(params)
params.admin_unit_id = admin_unit.id
if not params.event_list_id:
params.admin_unit_id = admin_unit.id
dates = get_event_dates_query(params).paginate()
return render_template(
@ -188,16 +189,24 @@ def event_suggestion_create_for_admin_unit(au_short_name):
def get_styles(admin_unit):
styles = dict()
if admin_unit.widget_font:
if request.args.get("s_ft", None):
styles["font"] = request.args["s_ft"]
elif admin_unit.widget_font:
styles["font"] = admin_unit.widget_font
if admin_unit.widget_background_color:
if request.args.get("s_bg", None):
styles["background"] = request.args["s_bg"]
elif admin_unit.widget_background_color:
styles["background"] = admin_unit.widget_background_color.hex
if admin_unit.widget_primary_color:
if request.args.get("s_pr", None):
styles["primary"] = request.args["s_pr"]
elif admin_unit.widget_primary_color:
styles["primary"] = admin_unit.widget_primary_color.hex
if admin_unit.widget_link_color:
if request.args.get("s_li", None):
styles["link"] = request.args["s_li"]
elif admin_unit.widget_link_color:
styles["link"] = admin_unit.widget_link_color.hex
return styles

View File

@ -43,6 +43,16 @@ def test_event_dates(client, seeder, utils):
)
utils.get_ok(url)
url = utils.get_url(
"widget_event_dates",
au_short_name=au_short_name,
s_ft="Verdana",
s_bg="#eceef0",
s_pr="#b09641",
s_li="#7b2424",
)
utils.get_ok(url)
# Unverified
au_short_name = "unverifiedcrew"
_, _, unverified_id = seeder.create_event_unverified()
@ -88,10 +98,10 @@ def test_event_date(client, seeder, utils, app, db):
from project.models import AdminUnit
admin_unit = AdminUnit.query.get(admin_unit_id)
admin_unit.widget_font = "Arial"
admin_unit.widget_background_color = Color("#F5F5F5")
admin_unit.widget_primary_color = Color("#000000")
admin_unit.widget_link_color = Color("#FF0000")
admin_unit.widget_font = "Verdana"
admin_unit.widget_background_color = Color("#eceef0")
admin_unit.widget_primary_color = Color("#b09641")
admin_unit.widget_link_color = Color("#7b2424")
db.session.commit()
url = utils.get_url("widget_event_date", au_short_name=au_short_name, id=1)