This is an automated email from the ASF dual-hosted git repository.

bbovenzi pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new c1cffb4aadc Added a default detailed view option in user settings 
(#47879)
c1cffb4aadc is described below

commit c1cffb4aadcbcf661a87a290934a3367f1ee29d1
Author: Aritra Basu <[email protected]>
AuthorDate: Tue Mar 18 23:11:46 2025 +0530

    Added a default detailed view option in user settings (#47879)
    
    * Added a default detailed view option in user settings
    
    Added an additional option under user settings for
    the default view for detailed view. This should
    ideally go under a settings page or some other full
    user settings page. But since that isn't there today
    put it here. We could move it later.
    
    * Added styling to User default view button
---
 airflow/ui/src/layouts/Details/DetailsLayout.tsx  |  4 ++--
 airflow/ui/src/layouts/Nav/UserSettingsButton.tsx | 21 ++++++++++++++++++++-
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/airflow/ui/src/layouts/Details/DetailsLayout.tsx 
b/airflow/ui/src/layouts/Details/DetailsLayout.tsx
index 1eafd7cf107..7902278af94 100644
--- a/airflow/ui/src/layouts/Details/DetailsLayout.tsx
+++ b/airflow/ui/src/layouts/Details/DetailsLayout.tsx
@@ -50,8 +50,8 @@ export const DetailsLayout = ({ children, error, isLoading, 
tabs }: Props) => {
   const { dagId = "" } = useParams();
 
   const { data: dag } = useDagServiceGetDag({ dagId });
-
-  const [dagView, setDagView] = useLocalStorage<"graph" | 
"grid">(`dag_view-${dagId}`, "grid");
+  const [defaultDagView] = useLocalStorage<"graph" | 
"grid">("default_dag_view", "grid");
+  const [dagView, setDagView] = useLocalStorage<"graph" | 
"grid">(`dag_view-${dagId}`, defaultDagView);
 
   const { fitView, getZoom } = useReactFlow();
 
diff --git a/airflow/ui/src/layouts/Nav/UserSettingsButton.tsx 
b/airflow/ui/src/layouts/Nav/UserSettingsButton.tsx
index b7defe8af73..2d79d43629c 100644
--- a/airflow/ui/src/layouts/Nav/UserSettingsButton.tsx
+++ b/airflow/ui/src/layouts/Nav/UserSettingsButton.tsx
@@ -20,7 +20,9 @@ import { useDisclosure } from "@chakra-ui/react";
 import dayjs from "dayjs";
 import timezone from "dayjs/plugin/timezone";
 import utc from "dayjs/plugin/utc";
-import { FiClock, FiLogOut, FiMoon, FiSun, FiUser } from "react-icons/fi";
+import { FiClock, FiGrid, FiLogOut, FiMoon, FiSun, FiUser } from 
"react-icons/fi";
+import { MdOutlineAccountTree } from "react-icons/md";
+import { useLocalStorage } from "usehooks-ts";
 
 import { Menu } from "src/components/ui";
 import { useColorMode } from "src/context/colorMode/useColorMode";
@@ -38,6 +40,7 @@ export const UserSettingsButton = () => {
   const { onClose: onCloseTimezone, onOpen: onOpenTimezone, open: 
isOpenTimezone } = useDisclosure();
   const { onClose: onCloseLogout, onOpen: onOpenLogout, open: isOpenLogout } = 
useDisclosure();
   const { selectedTimezone } = useTimezone();
+  const [dagView, setDagView] = useLocalStorage<"graph" | 
"grid">("default_dag_view", "grid");
 
   return (
     <Menu.Root positioning={{ placement: "right" }}>
@@ -58,6 +61,22 @@ export const UserSettingsButton = () => {
             </>
           )}
         </Menu.Item>
+        <Menu.Item
+          onClick={() => (dagView === "grid" ? setDagView("graph") : 
setDagView("grid"))}
+          value={dagView}
+        >
+          {dagView === "grid" ? (
+            <>
+              <MdOutlineAccountTree size="1.25rem" style={{ marginRight: "8px" 
}} />
+              Default to graph view
+            </>
+          ) : (
+            <>
+              <FiGrid size="1.25rem" style={{ marginRight: "8px" }} />
+              Default to grid view
+            </>
+          )}
+        </Menu.Item>
         <Menu.Item onClick={onOpenTimezone} value="timezone">
           <FiClock size="1.25rem" style={{ marginRight: "8px" }} />
           {dayjs().tz(selectedTimezone).format("HH:mm z (Z)")}

Reply via email to