From c9b804a9aba04dcd64bb40d5560f7bf8f857d91c Mon Sep 17 00:00:00 2001 From: Shemy Gan Date: Tue, 17 Dec 2024 11:24:01 -0500 Subject: [PATCH] - Update getStatusPageByUrl to match BE - Change layout to use the one that has vertical line - Update name to CreateStatusContext instead of TabContext to make it clearer - Handle errors to land on the respective page tab --- .../TabPanels/Status/ContentPanel.jsx | 11 +++++---- .../TabPanels/Status/GeneralSettingsPanel.jsx | 4 ++-- .../src/Pages/Status/CreateStatus/index.jsx | 24 ++++++++++++++++--- .../index.jsx | 2 +- Client/src/Utils/NetworkService.js | 10 ++++---- 5 files changed, 34 insertions(+), 17 deletions(-) rename Client/src/Pages/Status/{TabContext => CreateStatusContext}/index.jsx (87%) diff --git a/Client/src/Components/TabPanels/Status/ContentPanel.jsx b/Client/src/Components/TabPanels/Status/ContentPanel.jsx index 42f369d11..64307520e 100644 --- a/Client/src/Components/TabPanels/Status/ContentPanel.jsx +++ b/Client/src/Components/TabPanels/Status/ContentPanel.jsx @@ -1,6 +1,6 @@ import { useState, useCallback, useContext } from "react"; import { Button, Box, Stack, Typography } from "@mui/material"; -import { ConfigBox } from "../../../Pages/Settings/styled"; +import { ConfigBox } from "../../../Pages/Uptime/styled"; import { useTheme } from "@emotion/react"; import TabPanel from "@mui/lab/TabPanel"; import { publicPageGeneralSettingsValidation } from "../../../Validation/validation"; @@ -8,7 +8,7 @@ import { buildErrors } from "../../../Validation/error"; import Card from "./Card"; import update from "immutability-helper"; import Checkbox from "../../Inputs/Checkbox"; -import { StatusFormContext } from "../../../Pages/Status/TabContext"; +import { StatusFormContext } from "../../../Pages/Status/CreateStatusContext"; const ContentPanel = () => { const theme = useTheme(); @@ -100,11 +100,12 @@ const ContentPanel = () => { { Show more details on the status page - { const theme = useTheme(); diff --git a/Client/src/Pages/Status/CreateStatus/index.jsx b/Client/src/Pages/Status/CreateStatus/index.jsx index dfada37d2..297603015 100644 --- a/Client/src/Pages/Status/CreateStatus/index.jsx +++ b/Client/src/Pages/Status/CreateStatus/index.jsx @@ -8,7 +8,7 @@ import { capitalizeFirstLetter } from "../../../Utils/stringUtils"; import ContentPanel from "../../../Components/TabPanels/Status/ContentPanel"; import { publicPageGeneralSettingsValidation } from "../../../Validation/validation"; import { hasValidationErrors } from "../../../Validation/error"; -import { StatusFormProvider } from "../TabContext"; +import { StatusFormProvider } from "../CreateStatusContext"; /** * CreateStatus page renders a page with tabs for general settings and contents. * @param {string} [props.open] - Specifies the initially open tab: 'general settings' or 'content'. @@ -19,6 +19,8 @@ const CreateStatus = ({ open = "general-settings", initForm }) => { const theme = useTheme(); let tabList = ["General Settings", "Contents"]; const [errors, setErrors] = useState({}); + const error_tab_maping = [["companyName","url","timezone","color","publish","logo"],["monitors", + "showUptimePercentage", "showBarcode"]] const [form, setForm] = useState({ companyName: "", url: "", @@ -39,6 +41,7 @@ const CreateStatus = ({ open = "general-settings", initForm }) => { const [tabIdx, setTabIdx] = useState(tabList.indexOf(tab)); const handleTabChange = (event, newTab) => { + setTabIdx(tabList.indexOf(newTab)); }; @@ -57,9 +60,24 @@ const CreateStatus = ({ open = "general-settings", initForm }) => { form.logo = { ...logo, size: formatBytes(logo?.size) }; }; - useEffect(() => { + useEffect(() => { + let newIdx = -1; + Object.keys(errors).map(id=>{ + console.log("errors id") + console.log(id) + error_tab_maping.map((val, idx) => { + let anyMatch = val.some(vl=> vl==id ) + if(anyMatch){ + newIdx = idx; + } + }) + }) + console.log("newIdx") + console.log(newIdx) + if(newIdx!==-1) + setTabIdx(newIdx) setTabIdx(tabList.indexOf(tab)); - }, [tab]); + }, [tab,errors]); return (