Skip to content

Commit

Permalink
try fix pr comment
Browse files Browse the repository at this point in the history
  • Loading branch information
amDeimos666 committed Jun 11, 2023
1 parent f2847ea commit f868b19
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 20 deletions.
17 changes: 14 additions & 3 deletions src/renderer/components/ExplorationStatus/ExplorationStatus.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { FC } from 'react';
import React, { FC, useState } from 'react';
import { styled } from '@/renderer/globalStyles/styled';
import { ExplorationTimer } from './ExplorationTimer';
import {
Expand All @@ -9,12 +9,22 @@ import {
import { GoTelescope } from 'react-icons/go';

export const ExplorationStatus: FC = () => {
const [timerDisplay, setTimerDisplay] = useState('00:00');

const setTimerDisplayProps = (timerToDisplay: string) => {
setTimerDisplay(timerToDisplay);
};

const isShowTimerDisplay = () => {
return timerDisplay !== '00:00';
};

return (
<StyledPopup
trigger={
<StyledPopupContainer>
{isShowTimerDisplay() && timerDisplay}
<StyledGoTelescope />
<p>Exploration</p>
</StyledPopupContainer>
}
on="click"
Expand All @@ -23,7 +33,7 @@ export const ExplorationStatus: FC = () => {
repositionOnResize={true}
>
<StyledPopupContent>
<ExplorationTimer />
<ExplorationTimer setTimerDisplayProps={setTimerDisplayProps} />
</StyledPopupContent>
</StyledPopup>
);
Expand All @@ -32,4 +42,5 @@ export const ExplorationStatus: FC = () => {
const StyledGoTelescope = styled(GoTelescope)`
height: 1.25em;
width: 1.25em;
margin-left: 0.5em;
`;
62 changes: 46 additions & 16 deletions src/renderer/components/ExplorationStatus/ExplorationTimer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,21 @@ import React, { useEffect, FC, useState, ChangeEvent } from 'react';
import { LabeledInput } from '@/renderer/components/common/LabeledInput';
import { log } from '@/renderer/logger';
import { styled } from '@/renderer/globalStyles/styled';
import { toast } from 'react-toastify';

export const ExplorationTimer: FC = () => {
interface ExploationMsg {
message: string;
}

interface TimerDisplayProps {
setTimerDisplayProps: (timerDisplay: string) => void;
}

export const ExplorationTimer: FC<TimerDisplayProps> = ({
setTimerDisplayProps,
}) => {
const [duration, setDuration] = useState(2);
const [timeRemaining, setTimeRemaining] = useState(Number);
const [timeRemaining, setTimeRemaining] = useState(0);
const [isTimerActive, setIsTimerActive] = useState(false);
const [timerDisplay, setTimerDisplay] = useState('00:00');
const [countDownDate, setCountDownDate] = useState(Date.now());
Expand All @@ -16,24 +27,26 @@ export const ExplorationTimer: FC = () => {
setDuration(Number(e.target.value));
};

const startTimer = () => {
setIsTimerActive(false);
setCountDownDate(Date.now() + duration * 60 * 1000);
setIsTimerActive(true);
setRosExplorationTimer();
const startTimer = async () => {
if (duration > 0) {
setCountDownDate(Date.now() + duration * 60 * 1000);
await setRosExplorationTimer(duration);
}
};

const stopTimer = () => {
const stopTimer = async () => {
setIsTimerActive(false);
setDuration(0);
setRosExplorationTimer();
setTimeRemaining(0);
await setRosExplorationTimer(0);
};

useEffect(() => {
let interval: ReturnType<typeof setInterval> | undefined;
const intervalMs = 1000;
if (isTimerActive) {
if (isTimerActive && timeRemaining > 0) {
interval = setInterval(() => {
setTimerDisplayProps(getTimeRemaining());
setTimerDisplay(getTimeRemaining());
setTimeRemaining(timeRemaining - intervalMs);
}, intervalMs);
Expand All @@ -50,28 +63,45 @@ export const ExplorationTimer: FC = () => {
const minutes = Math.floor((total % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((total % (1000 * 60)) / 1000);

const minutesDiplay =
const minutesDisplay =
minutes < 10 ? '0' + minutes.toString() : minutes.toString();
const secondsDiplay =
const secondsDisplay =
seconds < 10 ? '0' + seconds.toString() : seconds.toString();

if (total < 0) {
setIsTimerActive(false);
}
return `${minutesDiplay}:${secondsDiplay}`;
return `${minutesDisplay}:${secondsDisplay}`;
};
return () => clearInterval(interval);
}, [isTimerActive, countDownDate, timeRemaining]);
}, [
isTimerActive,
countDownDate,
timeRemaining,
setTimerDisplayProps,
timerDisplay,
]);

const setRosExplorationTimer = () => {
const setRosExplorationTimer = async (timer: number) => {
rosClient
.callService(
{
name: `/start_exploration`,
},
{ timeout: duration * 60 }
{ timeout: timer * 60 }
)
.catch(log.error);

const result = (await rosClient.callService({
name: '/explore/get_loggers',
})) as ExploationMsg;

if (result && result.message === 'ERROR: unknown service') {
setIsTimerActive(false);
toast.error(result.message);
} else {
setIsTimerActive(true);
}
};

return (
Expand Down
1 change: 0 additions & 1 deletion src/renderer/components/GpioPinsStatus/GpioPinsStatus.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ const GpioPinsStatus = () => {
trigger={
<Container>
{isAGpioPinOn ? <StyledBsLightbulb /> : <StyledBsLightbulbOff />}
<p>GPIO</p>
</Container>
}
on="click"
Expand Down

0 comments on commit f868b19

Please sign in to comment.