1
0
mirror of https://github.com/krateng/maloja.git synced 2023-08-10 21:12:55 +03:00

Further DRYed selectors

This commit is contained in:
Krateng
2019-06-26 17:59:23 +02:00
parent 728c4fed54
commit c3c10170bc

View File

@ -569,6 +569,7 @@ def module_paginate(page,pages,perpage,**keys):
def module_filterselection(keys,time=True,delimit=False): def module_filterselection(keys,time=True,delimit=False):
filterkeys, timekeys, delimitkeys, extrakeys = uri_to_internal(keys) filterkeys, timekeys, delimitkeys, extrakeys = uri_to_internal(keys)
internalkeys = {**filterkeys,**timekeys,**delimitkeys,**extrakeys}
# drop keys that are not relevant so they don't clutter the URI # drop keys that are not relevant so they don't clutter the URI
if not time: timekeys = {} if not time: timekeys = {}
@ -581,7 +582,6 @@ def module_filterselection(keys,time=True,delimit=False):
# all other keys that will not be changed by clicking another filter # all other keys that will not be changed by clicking another filter
unchangedkeys = internal_to_uri({**filterkeys,**delimitkeys,**extrakeys}) unchangedkeys = internal_to_uri({**filterkeys,**delimitkeys,**extrakeys})
# wonky selector for precise date range # wonky selector for precise date range
# fromdate = start_of_scrobbling() # fromdate = start_of_scrobbling()
@ -616,82 +616,56 @@ def module_filterselection(keys,time=True,delimit=False):
nextrange = timekeys.get("timerange").next(1) nextrange = timekeys.get("timerange").next(1)
html += "<a href='?" + compose_querystring(unchangedkeys,internal_to_uri({"timerange":nextrange})) + "'><span class='stat_selector'>" + nextrange.desc() + "</span></a>" html += "<a href='?" + compose_querystring(unchangedkeys,internal_to_uri({"timerange":nextrange})) + "'><span class='stat_selector'>" + nextrange.desc() + "</span></a>"
html += "</div>"
categories = [
# predefined ranges {
delimit_ranges = { "active":time,
"Today":today(), "options":{
"This Week":thisweek(), "Today":{"timerange":today()},
"This Month":thismonth(), "This Week":{"timerange":thisweek()},
"This Year":thisyear(), "This Month":{"timerange":thismonth()},
"All Time":alltime() "This Year":{"timerange":thisyear()},
"All Time":{"timerange":alltime()}
}
},
{
"active":delimit,
"options":{
"Daily":{"step":"day","stepn":1},
"Weekly":{"step":"week","stepn":1},
"Fortnightly":{"step":"week","stepn":2},
"Monthly":{"step":"month","stepn":1},
"Quarterly":{"step":"month","stepn":3},
"Yearly":{"step":"year","stepn":1}
}
},
{
"active":delimit,
"options":{
"Standard":{"trail":1},
"Trailing":{"trail":2},
"Long Trailing":{"trail":3},
"Inert":{"trail":10},
"Cumulative":{"trail":math.inf}
}
} }
optionlist = [] ]
for option in delimit_ranges:
value = delimit_ranges[option]
link = "?" + compose_querystring(unchangedkeys,internal_to_uri({"timerange":value}))
if timekeys.get("timerange") == value: for c in categories:
optionlist.append("<span class='stat_selector' style='opacity:0.5;'>" + option + "</span>")
else:
optionlist.append("<a href='" + link + "'><span class='stat_selector'>" + option + "</span></a>")
html += "<div>" + " | ".join(optionlist) + "</div>" if c["active"]:
optionlist = []
for option in c["options"]:
values = c["options"][option]
link = "?" + compose_querystring(internal_to_uri({**internalkeys,**values}))
if delimit: if all(internalkeys.get(k) == values[k] for k in values):
optionlist.append("<span class='stat_selector' style='opacity:0.5;'>" + option + "</span>")
else:
optionlist.append("<a href='" + link + "'><span class='stat_selector'>" + option + "</span></a>")
unchangedkeys = internal_to_uri({**filterkeys,**timekeys,**extrakeys}) html += "<div>" + " | ".join(optionlist) + "</div>"
# STEP
# only for this element (delimit selector consists of more than one)
unchangedkeys_sub = internal_to_uri({k:delimitkeys[k] for k in delimitkeys if k not in ["step","stepn"]})
delimit_steps = {
"Daily":{"step":"day","stepn":1},
"Weekly":{"step":"week","stepn":1},
"Fortnightly":{"step":"week","stepn":2},
"Monthly":{"step":"month","stepn":1},
"Quarterly":{"step":"month","stepn":3},
"Yearly":{"step":"year","stepn":1}
}
optionlist = []
for option in delimit_steps:
values = delimit_steps[option]
link = "?" + compose_querystring(unchangedkeys,unchangedkeys_sub,internal_to_uri(values))
if delimitkeys.get("step") == values["step"] and delimitkeys.get("stepn") == values["stepn"]:
optionlist.append("<span class='stat_selector' style='opacity:0.5;'>" + option + "</span>")
else:
optionlist.append("<a href='" + link + "'><span class='stat_selector'>" + option + "</span></a>")
html += "<div>" + " | ".join(optionlist) + "</div>"
# TRAIL
unchangedkeys_sub = internal_to_uri({k:delimitkeys[k] for k in delimitkeys if k != "trail"})
delimit_trails = {
"Standard":1,
"Trailing":2,
"Long Trailing":3,
"Inert":10,
"Cumulative":math.inf
}
optionlist = []
for option in delimit_trails:
value = delimit_trails[option]
link = "?" + compose_querystring(unchangedkeys,unchangedkeys_sub,internal_to_uri({"trail":value}))
if delimitkeys.get("trail") == value:
optionlist.append("<span class='stat_selector' style='opacity:0.5;'>" + option + "</span>")
else:
optionlist.append("<a href='" + link + "'><span class='stat_selector'>" + option + "</span></a>")
html += "<div>" + " | ".join(optionlist) + "</div>"
return html return html