Skip to content

Commit

Permalink
Feature/scheduling month day (#765)
Browse files Browse the repository at this point in the history
* Show month and day view

Signed-off-by: Aaron Chong <[email protected]>

* Turn off auto refresh when viewing schedule

Signed-off-by: Aaron Chong <[email protected]>

* Format date correctly to match with the frontend format

Signed-off-by: angatupyry <[email protected]>

* Auto refresh to be determined in the interval creation effect

Signed-off-by: Aaron Chong <[email protected]>

* Changing name to be explicit for panel

Signed-off-by: Aaron Chong <[email protected]>

---------

Signed-off-by: Aaron Chong <[email protected]>
Signed-off-by: angatupyry <[email protected]>
Co-authored-by: angatupyry <[email protected]>
  • Loading branch information
aaronchongth and Angatupyry committed Sep 8, 2023
1 parent 0d352fe commit c885e3d
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,12 @@ class PostScheduledTaskRequest(BaseModel):


def datetime_to_date_format(date: datetime) -> str:
return date.date().strftime("%m/%d/%Y").lstrip("0")
# input 09/08/2023
formatted_date = date.date().strftime("%m/%d/%Y").lstrip("0")
parts = formatted_date.split("/")
parts[1] = parts[1].lstrip("0")
# output 9/8/2023
return "/".join(parts)


async def schedule_task(task: ttm.ScheduledTask, task_repo: TaskRepository):
Expand Down
47 changes: 35 additions & 12 deletions packages/dashboard/src/components/tasks/tasks-app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ export const TasksApp = React.memo(
ref: React.Ref<HTMLDivElement>,
) => {
const rmf = React.useContext(RmfAppContext);
const [autoRefresh, setAutoRefresh] = React.useState(true);
const [refreshTaskAppCount, setRefreshTaskAppCount] = React.useState(0);

const uploadFileInputRef = React.useRef<HTMLInputElement>(null);
Expand All @@ -211,7 +212,6 @@ export const TasksApp = React.memo(
);
const [currentEventId, setCurrentEventId] = React.useState<number>(-1);
const exceptDateRef = React.useRef<Date>(new Date());

const [tasksState, setTasksState] = React.useState<Tasks>({
isLoading: true,
data: [],
Expand All @@ -233,6 +233,10 @@ export const TasksApp = React.memo(
}, []);

React.useEffect(() => {
if (!autoRefresh) {
return;
}

const refreshTaskQueueTable = async () => {
AppEvents.refreshTaskApp.next();
};
Expand All @@ -243,7 +247,7 @@ export const TasksApp = React.memo(
return () => {
clearInterval(refreshInterval);
};
}, []);
}, [autoRefresh]);

// TODO: parameterize this variable
const GET_LIMIT = 10;
Expand Down Expand Up @@ -401,9 +405,16 @@ export const TasksApp = React.memo(
[rmf],
);

const [selectedTabIndex, setSelectedTabIndex] = React.useState(0);
const handleChange = (_: React.SyntheticEvent, newSelectedTabIndex: number) => {
setSelectedTabIndex(newSelectedTabIndex);
enum TaskTablePanel {
QueueTable = 0,
Schedule = 1,
}

const [selectedPanelIndex, setSelectedPanelIndex] = React.useState(TaskTablePanel.QueueTable);

const handlePanelChange = (_: React.SyntheticEvent, newSelectedTabIndex: number) => {
setSelectedPanelIndex(newSelectedTabIndex);
setAutoRefresh(newSelectedTabIndex === TaskTablePanel.QueueTable);
};

const handleSubmitDeleteSchedule: React.MouseEventHandler = async (ev) => {
Expand Down Expand Up @@ -500,11 +511,19 @@ export const TasksApp = React.memo(
}
{...otherProps}
>
<Tabs value={selectedTabIndex} onChange={handleChange} aria-label="Task App Tabs">
<Tab label="Queue" id={tabId(0)} aria-controls={tabPanelId(0)} />
<Tab label="Schedule" id={tabId(1)} aria-controls={tabPanelId(1)} />
<Tabs value={selectedPanelIndex} onChange={handlePanelChange} aria-label="Task App Tabs">
<Tab
label="Queue"
id={tabId(TaskTablePanel.QueueTable)}
aria-controls={tabPanelId(TaskTablePanel.QueueTable)}
/>
<Tab
label="Schedule"
id={tabId(TaskTablePanel.Schedule)}
aria-controls={tabPanelId(TaskTablePanel.Schedule)}
/>
</Tabs>
<TabPanel selectedTabIndex={selectedTabIndex} index={0}>
<TabPanel selectedTabIndex={selectedPanelIndex} index={TaskTablePanel.QueueTable}>
<TableContainer>
<TaskDataGridTable
tasks={tasksState}
Expand All @@ -523,7 +542,7 @@ export const TasksApp = React.memo(
/>
</TableContainer>
</TabPanel>
<TabPanel selectedTabIndex={selectedTabIndex} index={1}>
<TabPanel selectedTabIndex={selectedPanelIndex} index={TaskTablePanel.Schedule}>
<Scheduler
// react-scheduler does not support refreshing, workaround by mounting a new instance.
key={`scheduler-${refreshTaskAppCount}`}
Expand All @@ -533,9 +552,13 @@ export const TasksApp = React.memo(
weekStartOn: 1,
startHour: 0,
endHour: 23,
step: 120,
step: 60,
}}
day={{
startHour: 0,
endHour: 23,
step: 60,
}}
disableViewNavigator
draggable={false}
editable={false}
getRemoteEvents={getRemoteEvents}
Expand Down

0 comments on commit c885e3d

Please sign in to comment.