blob: b17f0cef49306b6b7bae4e2c04e0b5e2ebe13e21 [file]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { useState, useEffect } from "react";
import { useNavigate } from "react-router-dom";
import errorIcon from "/img/error-404-icon.png";
import { Stack, Typography } from "@mui/material";
import { CustomButton } from "@components/muiComponents";
export const ErrorPage = (props: { errorCode: string }) => {
let navigate = useNavigate();
const [errorCode, setErrorCode] = useState<string | null>(null);
const [errorInfo, setErrorInfo] = useState<any>(null);
useEffect(() => {
if (props.errorCode == "checkSSOTrue") {
setErrorCode("Sign Out Is Not Complete!");
setErrorInfo(
<Typography>
Authentication to this instance of Ranger is managed externally(for
example,Apache Knox). You can still open this instance of Ranger from
the same web browser without re-authentication.To prevent
additionalPage not found (404). access to Ranger,
<strong>close all browser windows and exit the browser</strong>.
</Typography>
);
}
if (props.errorCode == "404") {
setErrorCode("Page not found (404).");
setErrorInfo("Sorry, this page isn't here or has moved.");
}
});
return (
<Stack
data-id="pageNotFoundPage"
className="new-error-page"
spacing={2}
alignItems="center"
>
<Stack className="new-error-box" spacing={2}>
<Stack
className="error-white-bg"
direction="row"
spacing={2}
gap="1rem"
padding="1rem"
alignItems="center"
>
<Stack className="new-icon-box" padding="0">
<img src={errorIcon} alt="Error Icon" />
</Stack>
<Stack className="new-description-box" spacing={1}>
<Typography fontSize="1.5rem" data-id="msg">
{errorCode}
</Typography>
<Typography fontSize="1rem" data-id="moreInfo">
{errorInfo}
</Typography>
</Stack>
</Stack>
<Stack direction="row" spacing={2} className="mt-2">
{props.errorCode !== "checkSSOTrue" && (
<CustomButton
size="small"
variant="contained"
color="primary"
onClick={() => navigate("/search")}
>
Return to Dashboard
</CustomButton>
)}
</Stack>
</Stack>
</Stack>
);
};
export default ErrorPage;