diff --git a/src/page/Dashboard/Filters.js b/src/page/Dashboard/Filters.js index e6ca91f5..dd9919a6 100644 --- a/src/page/Dashboard/Filters.js +++ b/src/page/Dashboard/Filters.js @@ -1,229 +1,229 @@ -import { AdjustmentsIcon } from "@heroicons/react/outline"; -import Button from "../../components/Button"; -import Pill from "../../components/Pill"; -import { PillFilterList } from "./../../components/PillFilterList/index"; -import { Popover } from "@headlessui/react"; -import React from "react"; -import SearchableDropdown from "../../components/SearchableDropdown"; -import Searchbar from "./Searchbar"; -import { useEffect } from "react"; -import { useState } from "react"; - -export default function Filters({ - schema, - availableTags, - availableMeta, - removeTag, - removeMeta, - addTag, - addMeta, - addFilter, - removeFilter, - setSearchQuery, -}) { - const [columnValue, setColumnValue] = useState(); - const [operator, setOperator] = useState({ name: "Contains" }); - const [queryValue, setQueryValue] = useState(""); - const [filter, setFilters] = useState([]); - - useEffect(() => { - setFilters([]); - setColumnValue(); - setOperator({ name: "Contains" }); - setQueryValue(""); - }, [schema]); - - function removeTagOrMeta(type, val) { - setFilters([ - ...filter.filter( - (field) => !(field.type === type && field.value === val) - ), - ]); - } - - function removeGlobalFilter(column, contains, query) { - removeFilter(column, contains, query); - setFilters([ - ...filter.filter( - (item) => - !( - item.column === column && - item.contains === contains && - item.query === query - ) - ), - ]); - } - - return ( - - -
- - - Filter - {filter.length ? : null} - - - -
- -
-
- - field.name !== "p_metadata" && field.name !== "p_tags" - )} - label={"Column Filters"} - setValue={setColumnValue} - value={columnValue} - defaultValue={"Select column"} - /> -
- -
-
- setQueryValue(e.target.value)} - type="text" - className="input mt-7" - /> -
-
- -
-
- - {!!availableTags?.length && ( - <> -

- Filter Tags -

- filter.type === "Tag") - .reduce((prev, curr) => [...prev, curr.value], [])} - onAdd={(val) => { - addTag(val); - setFilters([ - ...filter, - { - type: "Tag", - value: val, - }, - ]); - }} - onRemove={(val) => { - removeTag(val); - removeTagOrMeta("Tag", val); - }} - /> - - )} - - {!!availableMeta?.length && ( - <> -

- Filter Metadata -

- filter.type === "Meta") - .reduce((prev, curr) => [...prev, curr.value], [])} - onAdd={(val) => { - addMeta(val); - setFilters([ - ...filter, - { - type: "Meta", - value: val, - }, - ]); - }} - onRemove={(val) => { - removeMeta(val); - removeTagOrMeta("Meta", val); - }} - /> - - )} - {filter.length ? ( -

Active Filter

- ) : null} -
- {filter.map((val) => { - if (val.type === "Column") { - return ( - - { - removeGlobalFilter(val.column, val.contains, val.query); - }} - /> - - ); - } else { - return ( - - { - if (val.type === "Tag") { - removeTag(val.value); - } else { - removeMeta(val.value); - } - removeTagOrMeta(val.type, val.value); - }} - /> - - ); - } - })} -
-
-
-
- Close -
-
-
-
- ); -} +import { AdjustmentsIcon } from "@heroicons/react/outline"; +import Button from "../../components/Button"; +import Pill from "../../components/Pill"; +import { PillFilterList } from "./../../components/PillFilterList/index"; +import { Popover } from "@headlessui/react"; +import React from "react"; +import SearchableDropdown from "../../components/SearchableDropdown"; +import Searchbar from "./Searchbar"; +import { useEffect } from "react"; +import { useState } from "react"; + +export default function Filters({ + schema, + availableTags, + availableMeta, + removeTag, + removeMeta, + addTag, + addMeta, + addFilter, + removeFilter, + setSearchQuery, +}) { + const [columnValue, setColumnValue] = useState(); + const [operator, setOperator] = useState({ name: "Contains" }); + const [queryValue, setQueryValue] = useState(""); + const [filter, setFilters] = useState([]); + + useEffect(() => { + setFilters([]); + setColumnValue(); + setOperator({ name: "Contains" }); + setQueryValue(""); + }, [schema]); + + function removeTagOrMeta(type, val) { + setFilters([ + ...filter.filter( + (field) => !(field.type === type && field.value === val) + ), + ]); + } + + function removeGlobalFilter(column, contains, query) { + removeFilter(column, contains, query); + setFilters([ + ...filter.filter( + (item) => + !( + item.column === column && + item.contains === contains && + item.query === query + ) + ), + ]); + } + + return ( + + +
+ + + Filter + {filter.length ? : null} + + + +
+ +
+
+ + field.name !== "p_metadata" && field.name !== "p_tags" + )} + label={"Column Filters"} + setValue={setColumnValue} + value={columnValue} + defaultValue={"Select column"} + /> +
+ +
+
+ setQueryValue(e.target.value)} + type="text" + className="input mt-7" + /> +
+
+ +
+
+ + {Boolean(availableTags?.length) && ( + <> +

+ Filter Tags +

+ filter.type === "Tag") + .reduce((prev, curr) => [...prev, curr.value], [])} + onAdd={(val) => { + addTag(val); + setFilters([ + ...filter, + { + type: "Tag", + value: val, + }, + ]); + }} + onRemove={(val) => { + removeTag(val); + removeTagOrMeta("Tag", val); + }} + /> + + )} + + {Boolean(availableMeta?.length) && ( + <> +

+ Filter Metadata +

+ filter.type === "Meta") + .reduce((prev, curr) => [...prev, curr.value], [])} + onAdd={(val) => { + addMeta(val); + setFilters([ + ...filter, + { + type: "Meta", + value: val, + }, + ]); + }} + onRemove={(val) => { + removeMeta(val); + removeTagOrMeta("Meta", val); + }} + /> + + )} + {filter.length ? ( +

Active Filter

+ ) : null} +
+ {filter.map((val) => { + if (val.type === "Column") { + return ( + + { + removeGlobalFilter(val.column, val.contains, val.query); + }} + /> + + ); + } else { + return ( + + { + if (val.type === "Tag") { + removeTag(val.value); + } else { + removeMeta(val.value); + } + removeTagOrMeta(val.type, val.value); + }} + /> + + ); + } + })} +
+
+
+
+ Close +
+
+
+
+ ); +} diff --git a/src/page/Dashboard/index.js b/src/page/Dashboard/index.js index 166dfe72..8f4f91e1 100644 --- a/src/page/Dashboard/index.js +++ b/src/page/Dashboard/index.js @@ -109,7 +109,7 @@ const Dashboard = () => { const logStreamSchema = useGetLogStreamSchema(selectedLogStream?.name, { retry: false, - enabled: !!(selectedLogStream?.name != null), + enabled: Boolean(selectedLogStream?.name != null), refetchOnWindowFocus: false, onSuccess: (data) => { const allFields = data.data.fields.map((field) => { @@ -141,11 +141,9 @@ const Dashboard = () => { { retry: false, enabled: - !!( - logStreamSchema?.data?.data?.fields?.map((field) => { + Boolean(logStreamSchema?.data?.data?.fields?.map((field) => { return field.name; - })?.length !== 0 - ) && !!(selectedLogStream?.name != null), + })?.length !== 0) && Boolean(selectedLogStream?.name != null), refetchOnWindowFocus: false, refetchInterval: interval === null || range === 7 ? false : interval * 1000,