/* eslint-disable */ // @ts-nocheck import { Button, ButtonVariant, Divider, Form, InputGroup, PageSection, TextInput, Toolbar, ToolbarGroup, ToolbarItem, InputGroupItem, Select, MenuToggle, SelectList, SelectOption, } from "../../../../shared/@patternfly/react-core"; import { SearchIcon } from "../../../../shared/@patternfly/react-icons"; import { Table, Th, Thead, Tr } from "../../../../shared/@patternfly/react-table"; import { KeyboardEvent, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import type EvaluationResultRepresentation from "@keycloak/keycloak-admin-client/lib/defs/evaluationResultRepresentation"; import type PolicyEvaluationResponse from "@keycloak/keycloak-admin-client/lib/defs/policyEvaluationResponse"; import { FixedButtonsGroup } from "../../../components/form/FixedButtonGroup"; import { ListEmptyState } from "../../../../shared/keycloak-ui-shared"; import useToggle from "../../../utils/useToggle"; import { AuthorizationDataModal } from "../AuthorizationDataModal"; import { AuthorizationEvaluateResource } from "../AuthorizationEvaluateResource"; type ResultProps = { evaluateResult: PolicyEvaluationResponse; refresh: () => void; back: () => void; }; enum ResultsFilter { All = "ALL", StatusDenied = "STATUS_DENIED", StatusPermitted = "STATUS_PERMITTED", } function filterResults( results: EvaluationResultRepresentation[], filter: ResultsFilter, ) { switch (filter) { case ResultsFilter.StatusPermitted: return results.filter(({ status }) => status === "PERMIT"); case ResultsFilter.StatusDenied: return results.filter(({ status }) => status === "DENY"); default: return results; } } export const Results = ({ evaluateResult, refresh, back }: ResultProps) => { const { t } = useTranslation(); const [filterDropdownOpen, toggleFilterDropdown] = useToggle(); const [filter, setFilter] = useState(ResultsFilter.All); const [searchQuery, setSearchQuery] = useState(""); const [searchInput, setSearchInput] = useState(""); const confirmSearchQuery = () => { setSearchQuery(searchInput); }; const handleKeyDown = (e: KeyboardEvent) => { if (e.key === "Enter") { confirmSearchQuery(); } }; const filteredResources = useMemo( () => filterResults(evaluateResult.results!, filter).filter( ({ resource }) => resource?.name?.includes(searchQuery) ?? false, ), [evaluateResult.results, filter, searchQuery], ); const noEvaluatedData = evaluateResult.results!.length === 0; const noFilteredData = filteredResources.length === 0; return ( setSearchInput(val)} onKeyDown={handleKeyDown} /> {!noFilteredData && ( {filteredResources.map((resource, rowIndex) => ( ))}
{t("resource")} {t("overallResults")} {t("scopes")}
)} {(noFilteredData || noEvaluatedData) && ( <> )}
{" "} {" "}
); };