diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/Calendar/lib/items/Item.js b/SAS/TMSS/frontend/tmss_webapp/src/components/Calendar/lib/items/Item.js index 358e6decb83504340c0f1574a06e12bfb127c751..6a1c2dd0ac65566f35c6ac6873d61978a615f4d2 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/components/Calendar/lib/items/Item.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/components/Calendar/lib/items/Item.js @@ -515,7 +515,6 @@ export default class Item extends Component { getDragRightRef = el => (this.dragRight = el) getItemProps = (props = {}) => { - //TODO: maybe shouldnt include all of these classes const classNames = 'rct-item' + (this.props.item.className ? ` ${this.props.item.className}` : '') @@ -531,7 +530,7 @@ export default class Item extends Component { onTouchEnd: composeEvents(this.onTouchEnd, props.onTouchEnd), onDoubleClick: composeEvents(this.handleDoubleClick, props.onDoubleClick), onContextMenu: composeEvents(this.handleContextMenu, props.onContextMenu), - style: Object.assign({}, this.getItemStyle(props)) + style: { ...this.getItemStyle(props)} } } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.js index 0313270a57c34fc29fa259734cf6aed71be31da4..aa7cfaf01ba72a7634902b3655fb3834bb99a7e3 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.js @@ -18,7 +18,7 @@ function DateSelector(props) { //TODO: extract to separate class setStartAndEndTimeCallback, } = props - const DayorWeekOptions = ["Showing Day At", "Showing Week From"]; + const DayorWeekOptions = ["Showing Day At", "Showing Week From","Showing Month From","Quarter From","Year From"]; const [selectedDayWeekOptions, setSelectedDayWeekOptions] = useState("Showing Week From") const options = { @@ -41,6 +41,17 @@ function DateSelector(props) { //TODO: extract to separate class if (selectedDayWeekOptions == DayorWeekOptions[0]) { numberDays = 0 } + if (selectedDayWeekOptions == DayorWeekOptions[2]) { + numberDays = 31 + } + if (selectedDayWeekOptions == DayorWeekOptions[3]) { + numberDays = 90 + } + if (selectedDayWeekOptions == DayorWeekOptions[4]) { + numberDays = 365 + } + + const newEndTime = currentStartTime.clone().add(numberDays, 'days').endOf('day') setStartAndEndTimeCallback(currentStartTime, newEndTime) } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/toolbar/filters.helper.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/toolbar/filters.helper.js index f65d44285b1b1a86d43fde86f2b1fdf52e4de780..a698d5a8549e627d778bf282b019ebca6b0c940c 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/toolbar/filters.helper.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/toolbar/filters.helper.js @@ -25,8 +25,8 @@ function splitElementPerDay(element, spanInDays, shouldShowOnSkyTimes, viewStart const startTime = (shouldShowOnSkyTimes ? (element.on_sky_start_time ?? element.process_start_time) : element.process_start_time) ?? element.start_time const endTime = (shouldShowOnSkyTimes ? (element.on_sky_stop_time ?? element.process_stop_time) : element.process_stop_time) ?? element.stop_time const { formattedStart, formattedEnd, start, end } = determineNewStartAndEnd(startTime, day, spanInDays, endTime); - - if (start.isSameOrAfter(viewStartTime) && end.isSameOrBefore(viewEndTime)) { + + if ((!startTime || start.isSameOrAfter(viewStartTime)) && ( !endTime || end.isSameOrBefore(viewEndTime)) ) { if (shouldShowOnSkyTimes) { newElement.on_sky_start_time = formattedStart newElement.on_sky_stop_time = formattedEnd @@ -52,9 +52,6 @@ function splitElementPerDay(element, spanInDays, shouldShowOnSkyTimes, viewStart export function splitObjectIfSpanIsMultipleDays(element, shouldShowOnSkyTimes, viewStartTime, viewEndTime) { let startTime = (shouldShowOnSkyTimes ? (element.on_sky_start_time ?? element.process_start_time) : element.process_start_time) ?? element.start_time let stopTime = (shouldShowOnSkyTimes ? (element.on_sky_stop_time ?? element.process_stop_time) : element.process_stop_time) ?? element.stop_time - - - if (!startTime) { throw new ReferenceError("(On Sky) start time is not defined for:\n" + JSON.stringify(element)) } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/toolbar/filters.helper.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/toolbar/filters.helper.test.js index 841e616510749dfb66458481ae05b30b357d599a..3aff39a5c6ae6ec3303f2c2c5ee31da7d485da60 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/toolbar/filters.helper.test.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/helpers/toolbar/filters.helper.test.js @@ -23,7 +23,7 @@ describe("splitObjectIfSpanIsMultipleDays", () => { start_time: "2023-09-01T11:00:00", stop_time: "2023-09-03T10:00:00", }; - const newElements = splitObjectIfSpanIsMultipleDays(element, false); + const newElements = splitObjectIfSpanIsMultipleDays(element, false,moment( "2023-09-01T11:00:00"), moment("2023-09-08T11:00:00")); expect(newElements).toHaveLength(3); @@ -45,7 +45,7 @@ describe("splitObjectIfSpanIsMultipleDays", () => { process_start_time: "2023-09-01T11:00:00", process_stop_time: "2023-09-03T10:00:00", }; - const newElements = splitObjectIfSpanIsMultipleDays(element, false); + const newElements = splitObjectIfSpanIsMultipleDays(element, false,moment( "2023-09-01T10:00:00"), moment( "2023-09-08T11:00:00")); expect(newElements).toHaveLength(3); @@ -67,7 +67,7 @@ describe("splitObjectIfSpanIsMultipleDays", () => { on_sky_start_time: "2023-09-01T11:00:00", on_sky_stop_time: "2023-09-03T10:00:00", }; - const newElements = splitObjectIfSpanIsMultipleDays(element, true); + const newElements = splitObjectIfSpanIsMultipleDays(element, true,moment( "2023-09-01T11:00:00"), moment( "2023-09-09T11:00:00")); expect(newElements).toHaveLength(3); @@ -91,7 +91,7 @@ describe("splitObjectIfSpanIsMultipleDays", () => { on_sky_start_time: null, on_sky_stop_time: null, }; - const newElements = splitObjectIfSpanIsMultipleDays(element, true); + const newElements = splitObjectIfSpanIsMultipleDays(element, true,moment( "2023-09-01T11:00:00"), moment( "2023-09-09T11:00:00")); expect(newElements).toHaveLength(3); @@ -113,7 +113,7 @@ describe("splitObjectIfSpanIsMultipleDays", () => { process_start_time: "2023-09-01T11:00:00", process_stop_time: null, }; - const newElements = splitObjectIfSpanIsMultipleDays(element); + const newElements = splitObjectIfSpanIsMultipleDays(element,false, moment( "2023-09-01T11:00:00"), moment( "2023-09-121T11:00:00")); expect(newElements).toHaveLength(8); @@ -306,7 +306,7 @@ describe('getReservationItem', () => { start_time: '2023-08-08 10:00:00', stop_time: '2023-08-08 12:00:00', duration: 7200, - project_id: '123', + projects_ids: ['123'], description: 'with a grass mower' };