Bläddra i källkod

WIP - add filter form to tables pages

Daniel Sheffield 1 år sedan
förälder
incheckning
b680a2ff42
3 ändrade filer med 10 tillägg och 10 borttagningar
  1. 7 6
      app/rest/form.py
  2. 3 3
      app/rest/pyapi.py
  3. 0 1
      app/rest/templates/trend.tpl

+ 7 - 6
app/rest/form.py

@@ -14,18 +14,19 @@ def get_option_groups(
     data: DataFrame, filter_data: Dict[str, Tuple[set, set]],
     k: str, g: str, _type: str
 ):
-    if k in data or (k == 'tag' and 'tags' in data):
-        k_data_in_chart = chain(*data["tags"]) if k == "tag" else data[k]
+    in_chart = data['$/unit'].apply(lambda x: (x or False) and True)
+    if k in data:
+        k_data_in_chart = chain(*data[in_chart]["tags"]) if k == "tag" else data[in_chart][k]
     else:
         k_data_in_chart = []
-    
+
     groups = sorted(set(data[g] if g is not None and g in data else []))
     groups.append(None)
     if _type == "exclude":
         prefix = "!"
     else:
         prefix = ""
-    
+
     for group in groups:
         selected = []
         unselected = []
@@ -45,7 +46,7 @@ def get_option_groups(
                     filter_data[k][0] - set(k_data_in_chart) - filter_data[k][1]
                 ))
         else:
-            k_grouped_data_in_chart = set(data[data[g].apply(lambda x,axis=None: x == group)][k]) if k in data else set()
+            k_grouped_data_in_chart = set(data[in_chart & (data[g].apply(lambda x,axis=None: x == group))][k]) if k in data else set()
             if _type == "include":
                 selected.extend(filter_data[k][0] & set(k_grouped_data_in_chart))
                 unselected.extend(k_grouped_data_in_chart - filter_data[k][0])
@@ -55,7 +56,7 @@ def get_option_groups(
         options = sorted(map(lambda x: {
             "selected": x[0],
             "value": f"{prefix}{x[1]}",
-            "display": x[1]  
+            "display": x[1]
         }, chain(
             map(lambda x: (True, x), set(selected)),
             map(lambda x: (False, x), set(unselected)),

+ 3 - 3
app/rest/pyapi.py

@@ -53,7 +53,7 @@ def trend(key: Tuple[str, int], cache: PageCache):
     if page is None:
         form = key_to_form(key)
         page = cache.add(key, CachedLoadingPage([], trend_thread(conn, path, form)))
-    
+
     for i in iter_page(page):
         yield i
 
@@ -76,14 +76,14 @@ def iter_page(page):
     resp = list(page.value)
     pos = len(resp)
     yield ''.join(resp)
-    
+
     while not page.loaded:
         page.update()
         # all changes since last yield
         resp = list(page.value[pos:])
         pos = pos + len(resp)
         yield ''.join(resp)
-    
+
     # possibly have not yielded the entire page
     if pos < len(page.value):
         yield ''.join(page.value[pos:])

+ 0 - 1
app/rest/templates/trend.tpl

@@ -56,7 +56,6 @@ div.progress:not(:has(+ .done)) {
 }
 .progress:not(:last-child) {
   display: none;
-}
     </style>
   </head>
   <body>