{status === "nodata" && (
@@ -158,14 +114,10 @@ function CsvOutputComponent({
className={`${dark ? "ag-theme-balham-dark" : "ag-theme-balham"}`}
style={{ height: "100%", width: "100%" }}
>
-
diff --git a/src/frontend/src/components/dateReaderComponent/index.tsx b/src/frontend/src/components/dateReaderComponent/index.tsx
new file mode 100644
index 000000000..81c352f5a
--- /dev/null
+++ b/src/frontend/src/components/dateReaderComponent/index.tsx
@@ -0,0 +1,21 @@
+export default function DateReader({
+ date: dateString,
+}: {
+ date: string;
+}): JSX.Element {
+ const date = new Date(dateString);
+
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, "0"); // Months are 0-indexed in JavaScript
+ const day = String(date.getDate()).padStart(2, "0");
+
+ const hours = date.getHours();
+ const minutes = String(date.getMinutes()).padStart(2, "0");
+
+ const ampm = hours >= 12 ? "PM" : "AM";
+ const hours12 = hours > 12 ? hours - 12 : hours === 0 ? 12 : hours; // Convert to 12-hour format
+
+ const formattedDate = `${year}-${month}-${day} ${hours12}:${minutes} ${ampm}`;
+
+ return
{formattedDate};
+}
diff --git a/src/frontend/src/components/genericIconComponent/index.tsx b/src/frontend/src/components/genericIconComponent/index.tsx
index f4e6a49d6..9f7c687a1 100644
--- a/src/frontend/src/components/genericIconComponent/index.tsx
+++ b/src/frontend/src/components/genericIconComponent/index.tsx
@@ -7,7 +7,7 @@ import Loading from "../ui/loading";
import { useEffect, useState } from "react";
-const ForwardedIconComponent = memo(
+export const ForwardedIconComponent = memo(
forwardRef(
(
{
@@ -18,7 +18,7 @@ const ForwardedIconComponent = memo(
strokeWidth,
id = "",
}: IconComponentProps,
- ref
+ ref,
) => {
const [showFallback, setShowFallback] = useState(false);
@@ -65,8 +65,8 @@ const ForwardedIconComponent = memo(
/>
);
- }
- )
+ },
+ ),
);
export default ForwardedIconComponent;
diff --git a/src/frontend/src/components/headerComponent/components/menuBar/index.tsx b/src/frontend/src/components/headerComponent/components/menuBar/index.tsx
index 85a586b16..b5a115e1e 100644
--- a/src/frontend/src/components/headerComponent/components/menuBar/index.tsx
+++ b/src/frontend/src/components/headerComponent/components/menuBar/index.tsx
@@ -12,6 +12,7 @@ import { Node } from "reactflow";
import { UPLOAD_ERROR_ALERT } from "../../../../constants/alerts_constants";
import { SAVED_HOVER } from "../../../../constants/constants";
import ExportModal from "../../../../modals/exportModal";
+import FlowLogsModal from "../../../../modals/flowLogsModal";
import FlowSettingsModal from "../../../../modals/flowSettingsModal";
import useAlertStore from "../../../../stores/alertStore";
import useFlowStore from "../../../../stores/flowStore";
@@ -34,6 +35,7 @@ export const MenuBar = ({
const redo = useFlowsManagerStore((state) => state.redo);
const saveLoading = useFlowsManagerStore((state) => state.saveLoading);
const [openSettings, setOpenSettings] = useState(false);
+ const [openLogs, setOpenLogs] = useState(false);
const nodes = useFlowStore((state) => state.nodes);
const uploadFlow = useFlowsManagerStore((state) => state.uploadFlow);
const navigate = useNavigate();
@@ -123,6 +125,18 @@ export const MenuBar = ({
/>
Settings
+
{
+ setOpenLogs(true);
+ }}
+ className="cursor-pointer"
+ >
+
+ Logs
+
{
@@ -132,7 +146,7 @@ export const MenuBar = ({
title: UPLOAD_ERROR_ALERT,
list: [error],
});
- }
+ },
);
}}
>
@@ -194,6 +208,7 @@ export const MenuBar = ({
open={openSettings}
setOpen={setOpenSettings}
>
+
{(currentFlow.updated_at || saveLoading) && (