diff --git a/interface/package.json b/interface/package.json index 8f70f3b96..7e765214d 100644 --- a/interface/package.json +++ b/interface/package.json @@ -25,9 +25,9 @@ "@mui/icons-material": "^5.11.11", "@mui/material": "^5.11.11", "@remix-run/router": "^1.3.3", - "@table-library/react-table-library": "4.0.28", + "@table-library/react-table-library": "4.0.29", "@types/lodash-es": "^4.17.6", - "@types/node": "^18.14.2", + "@types/node": "^18.14.4", "@types/react": "^18.0.28", "@types/react-dom": "^18.0.11", "@types/react-router-dom": "^5.3.3", diff --git a/interface/src/project/SettingsScheduler.tsx b/interface/src/project/SettingsScheduler.tsx index f9508da90..d346a5047 100644 --- a/interface/src/project/SettingsScheduler.tsx +++ b/interface/src/project/SettingsScheduler.tsx @@ -51,7 +51,6 @@ import { ScheduleItem, ScheduleFlag } from './types'; import { useI18nContext } from 'i18n/i18n-react'; import * as EMSESP from './api'; -export const APIURL = window.location.origin + '/api/'; const SettingsScheduler: FC = () => { const { LL, locale } = useI18nContext(); @@ -69,7 +68,8 @@ const SettingsScheduler: FC = () => { time: '12:00', cmd: '', value: '', - description: '' + description: '', + o_id: '' }; const [schedule, setSchedule] = useState([emptySchedule]); const [scheduleItem, setScheduleItem] = useState(); @@ -97,7 +97,7 @@ const SettingsScheduler: FC = () => { const schedule_theme = useTheme({ Table: ` - --data-table-library_grid-template-columns: 140px 48px 324px 72px 240px repeat(1, minmax(100px, 1fr)); + --data-table-library_grid-template-columns: 152px 36px 324px 72px 240px repeat(1, minmax(100px, 1fr)); `, BaseRow: ` font-size: 14px; @@ -106,22 +106,18 @@ const SettingsScheduler: FC = () => { } `, BaseCell: ` + &:nth-of-type(1) { + padding: 8px; + } &:nth-of-type(2) { text-align: center; - }, - &:nth-of-type(3) { - text-align: center; - }, - &:nth-of-type(4) { - text-align: center; - }, + } `, HeaderRow: ` text-transform: uppercase; background-color: black; color: #90CAF9; .th { - padding: 8px; border-bottom: 1px solid #565656; font-weight: 500; height: 36px; @@ -132,7 +128,6 @@ const SettingsScheduler: FC = () => { position: relative; cursor: pointer; .td { - padding: 8px; border-top: 1px solid #565656; border-bottom: 1px solid #565656; } @@ -325,13 +320,8 @@ const SettingsScheduler: FC = () => { }; const updateScheduleItem = () => { - if (scheduleItem) { - const new_schedule = [...schedule.filter((si) => si.id !== scheduleItem.id), scheduleItem].sort((a, b) => - a.time.localeCompare(b.time) - ); - setSchedule(new_schedule); - setScheduleItem(undefined); - } + setSchedule([...schedule.filter((si) => creating || si.o_id !== scheduleItem.o_id), scheduleItem]); + setScheduleItem(undefined); }; const renderSchedule = () => { @@ -340,7 +330,11 @@ const SettingsScheduler: FC = () => { } return ( - !si.deleted) }} theme={schedule_theme} layout={{ custom: true }}> +
!si.deleted).sort((a, b) => a.time.localeCompare(b.time)) }} + theme={schedule_theme} + layout={{ custom: true }} + > {(tableList: any) => ( <>
@@ -414,7 +408,7 @@ const SettingsScheduler: FC = () => { if (scheduleItem) { try { setFieldErrors(undefined); - await validate(schedulerItemValidation(schedule, creating), scheduleItem); + await validate(schedulerItemValidation(schedule, scheduleItem.o_id), scheduleItem); updateScheduleItem(); } catch (errors: any) { setFieldErrors(errors); @@ -422,44 +416,47 @@ const SettingsScheduler: FC = () => { } }; + const closeDialog = () => { + setScheduleItem(undefined); + setFieldErrors(); + }; + const renderEditSchedule = () => { if (scheduleItem) { return ( - setScheduleItem(undefined)}> + closeDialog()}> {creating ? LL.ADD(0) + ' ' + LL.NEW() + ' ' + LL.SCHEDULE() : LL.EDIT() + " '" + scheduleItem.id + "'"} + {creating ? ( - <> - - { - if ((event.target as HTMLInputElement).value === 't') { - scheduleItem.flags = ScheduleFlag.SCHEDULE_TIMER; - scheduleItem.time = '01:00'; - } else { - scheduleItem.flags = 0; - } - updateValue(setScheduleItem); - setFlags(['']); // refresh screen - }} - > - } label={LL.WEEKLY()} /> - } label={LL.TIMER()} /> - - + { + if ((event.target as HTMLInputElement).value === 't') { + scheduleItem.flags = ScheduleFlag.SCHEDULE_TIMER; + scheduleItem.time = '01:00'; + } else { + scheduleItem.flags = 0; + } + updateValue(setScheduleItem); + setFlags(['']); // refresh screen + }} + > + } label={LL.WEEKLY()} /> + } label={LL.TIMER()} /> + ) : ( {LL.TYPE()}: {scheduleItem.flags & ScheduleFlag.SCHEDULE_TIMER ? LL.TIMER() : LL.WEEKLY()} @@ -536,16 +533,11 @@ const SettingsScheduler: FC = () => { )} -