Feroze Mohideen 2 роки тому
батько
коміт
49dd38156a

+ 1 - 0
api/server/handlers/porter_app/get_logs_within_time_range.go

@@ -139,6 +139,7 @@ func (c *GetLogsWithinTimeRangeHandler) ServeHTTP(w http.ResponseWriter, r *http
 		PodSelector: podSelector,
 		Namespace:   request.Namespace,
 		Direction:   request.Direction,
+		SearchParam: request.SearchParam,
 	}
 
 	logs, err := porter_agent.GetHistoricalLogs(agent.Clientset, agentSvc, logRequest)

+ 1 - 1
dashboard/src/components/LogQueryModeSelectionToggle.tsx

@@ -6,7 +6,7 @@ import styled from "styled-components";
 
 interface LogQueryModeSelectionToggleProps {
   selectedDate?: Date;
-  setSelectedDate: React.Dispatch<React.SetStateAction<Date>>;
+  setSelectedDate: (date?: Date) => void;
   resetSearch: () => void;
 }
 

+ 7 - 0
dashboard/src/main/home/app-dashboard/expanded-app/ExpandedApp.tsx

@@ -671,6 +671,13 @@ const ExpandedApp: React.FC<Props> = ({ ...props }) => {
             </Button>
           </>
         );
+      case "activity":
+        return <ActivityFeed
+          chart={appData.chart}
+          stackName={appData?.app?.name}
+          appData={appData}
+          eventId={eventId}
+        />;
       case "logs":
         return <LogSection currentChart={appData.chart} services={services} />;
       case "metrics":

+ 17 - 16
dashboard/src/main/home/app-dashboard/expanded-app/activity-feed/ActivityFeed.tsx

@@ -96,6 +96,9 @@ const ActivityFeed: React.FC<Props> = ({ chart, stackName, appData, eventId }) =
 
   }, [currentProject, currentCluster, hasPorterAgent, page]);
 
+  useEffect(() => {
+    getEvents();
+  }, [eventId]);
 
   const installAgent = async () => {
     const project_id = currentProject?.id;
@@ -179,21 +182,6 @@ const ActivityFeed: React.FC<Props> = ({ chart, stackName, appData, eventId }) =
 
   return (
     <StyledActivityFeed>
-      <Container row spaced>
-        <Spacer inline x={1} />
-        <Button
-          onClick={getEvents}
-          height="20px"
-          color="fg"
-          withBorder
-        >
-          <Icon src={refresh} height="10px"></Icon>
-          <Spacer inline x={0.5} />
-          Refresh feed
-        </Button>
-      </Container>
-      <Spacer y={1} />
-
       {events.map((event, i) => {
         return (
           <EventWrapper isLast={i === events.length - 1} key={i}>
@@ -214,7 +202,20 @@ const ActivityFeed: React.FC<Props> = ({ chart, stackName, appData, eventId }) =
           <Pagination page={page} setPage={setPage} totalPages={numPages} />
         </>
       )}
-
+      <Spacer y={1} />
+      <Container row spaced>
+        <Spacer inline x={1} />
+        <Button
+          onClick={getEvents}
+          height="20px"
+          color="fg"
+          withBorder
+        >
+          <Icon src={refresh} height="10px"></Icon>
+          <Spacer inline x={0.5} />
+          Refresh feed
+        </Button>
+      </Container>
     </StyledActivityFeed>
   );
 };

+ 1 - 1
dashboard/src/main/home/app-dashboard/expanded-app/activity-feed/events/focus-views/PredeployEventFocusView.tsx

@@ -56,7 +56,7 @@ const PreDeployEventFocusView: React.FC<Props> = ({
       <LogSection
         currentChart={appData.releaseChart}
         timeRange={{
-          startTime: dayjs(event.metadata.start_time).subtract(1, 'minute'),
+          startTime: event.metadata.end_time != null ? dayjs(event.metadata.start_time).subtract(1, 'minute') : undefined,
           endTime: event.metadata.end_time != null ? dayjs(event.metadata.end_time).add(1, 'minute') : undefined,
         }}
         showFilter={false}

+ 3 - 5
dashboard/src/main/home/app-dashboard/expanded-app/logs/LogSection.tsx

@@ -34,9 +34,8 @@ import { Service } from "../../new-app-flow/serviceTypes";
 type Props = {
   currentChart?: ChartType;
   services?: Service[];
-  startTime?: string;
   timeRange?: {
-    startTime: Dayjs;
+    startTime?: Dayjs;
     endTime?: Dayjs;
   };
   showFilter?: boolean;
@@ -63,7 +62,7 @@ const LogSection: React.FC<Props> = ({
   const [scrollToBottomEnabled, setScrollToBottomEnabled] = useState(true);
   const [enteredSearchText, setEnteredSearchText] = useState("");
   const [searchText, setSearchText] = useState("");
-  const [selectedDate, setSelectedDate] = useState<Date | undefined>(undefined);
+  const [selectedDate, setSelectedDate] = useState<Date | undefined>(timeRange?.startTime != null ? timeRange.startTime.toDate() : undefined);
   const [notification, setNotification] = useState<string>();
 
   const [hasPorterAgent, setHasPorterAgent] = useState(true);
@@ -100,8 +99,7 @@ const LogSection: React.FC<Props> = ({
       const podList = services.map((service: Service) => {
         return {
           podName: service.name,
-          podType:
-            service.type.valueOf() == "worker" ? "wkr" : service.type.valueOf(),
+          podType: service.type == "worker" ? "wkr" : service.type,
         };
       });
       setPodFilterOpts(podList);

+ 4 - 4
dashboard/src/main/home/app-dashboard/expanded-app/logs/utils.ts

@@ -45,7 +45,7 @@ export const useLogs = (
   // if setDate is set, results are not live
   setDate?: Date,
   timeRange?: {
-    startTime: Dayjs,
+    startTime?: Dayjs,
     endTime?: Dayjs,
   }
 ) => {
@@ -190,8 +190,8 @@ export const useLogs = (
             const jsonLog = JSON.parse(data);
             newLogs.push(jsonLog)
           } catch (err) {
-            console.log(err)
-            console.log(evt.data)
+            // TODO: better error handling
+            // console.log(err)
           }
         });
         pushLogs(parseLogs(newLogs));
@@ -298,7 +298,7 @@ export const useLogs = (
     flushLogsBuffer(true);
     const websocketKey = `${currentPod}-${namespace}-websocket`;
     const endDate = timeRange?.endTime != null ? timeRange.endTime : dayjs(setDate);
-    const oneDayAgo = timeRange != null ? timeRange.startTime : endDate.subtract(1, "day");
+    const oneDayAgo = timeRange?.startTime != null ? timeRange.startTime : endDate.subtract(1, "day");
 
     const { logs: initialLogs, previousCursor, nextCursor } = await queryLogs(
       oneDayAgo.toISOString(),