From d8b96ad66e59db49ef1c7d086859133531283f12 Mon Sep 17 00:00:00 2001 From: Mark Veidemanis Date: Wed, 3 Aug 2022 07:20:30 +0100 Subject: [PATCH] Implement date picker --- core/lib/opensearch.py | 48 ++++- core/templates/base.html | 2 + core/templates/ui/drilldown/drilldown.html | 193 +++++++++++++-------- docker-compose.yml | 16 +- 4 files changed, 174 insertions(+), 85 deletions(-) diff --git a/core/lib/opensearch.py b/core/lib/opensearch.py index 64bd8b4..b72c270 100644 --- a/core/lib/opensearch.py +++ b/core/lib/opensearch.py @@ -152,6 +152,8 @@ def query_results(request, size=None): message = None message_class = None add_bool = [] + add_top = [] + sort = None if request.user.is_anonymous: sizes = settings.OPENSEARCH_MAIN_SIZES_ANON else: @@ -172,6 +174,40 @@ def query_results(request, size=None): if source != "all": add_bool.append({"src": source}) + if "dates" in request.POST: + dates = request.POST["dates"] + spl = dates.split(" - ") + if all(spl): + spl = [f"{x.replace(' ', 'T')}Z" for x in spl] + if not len(spl) == 2: + message = "Invalid dates" + message_class = "danger" + return {"message": message, "class": message_class} + from_ts, to_ts = spl + range_query = { + "range": { + "ts": { + "gt": from_ts, + "lt": to_ts, + } + } + } + add_top.append(range_query) + if "sorting" in request.POST: + sorting = request.POST["sorting"] + if sorting not in ("asc", "desc", "none"): + message = "Invalid sort" + message_class = "danger" + return {"message": message, "class": message_class} + if sorting in ("asc", "desc"): + sort = [ + { + "ts": { + "order": sorting, + } + } + ] + if "check-sentiment" in request.POST: if "sentiment" in request.POST: sentiment = request.POST["sentiment"] @@ -188,6 +224,11 @@ def query_results(request, size=None): if add_bool: for item in add_bool: search_query["query"]["bool"]["must"].append({"match": item}) + if add_top: + for item in add_top: + search_query["query"]["bool"]["must"].append(item) + if sort: + search_query["sort"] = sort results = run_main_query( client, request.user, # passed through run_main_query to filter_blacklisted @@ -280,12 +321,5 @@ def construct_query(query, size): ] } }, - "sort": [ - { - "ts": { - "order": "desc", - } - } - ], } return query diff --git a/core/templates/base.html b/core/templates/base.html index 0c511ab..f8cd44f 100644 --- a/core/templates/base.html +++ b/core/templates/base.html @@ -13,6 +13,8 @@ + + diff --git a/core/templates/ui/drilldown/drilldown.html b/core/templates/ui/drilldown/drilldown.html index 4f89739..91033c1 100644 --- a/core/templates/ui/drilldown/drilldown.html +++ b/core/templates/ui/drilldown/drilldown.html @@ -77,89 +77,142 @@ - -