Skip to content
Snippets Groups Projects
Commit 61f61b4f authored by Reinder Kraaij's avatar Reinder Kraaij :eye:
Browse files

Improve filtering and grouping of reservations

parent ef998942
No related branches found
No related tags found
1 merge request!1213Resolve TMSS-2717 "Refactor details summary + ui tweaks"
......@@ -167,6 +167,7 @@ export default function WeekView() {
const [items, setItems] = useState({
schedulingUnitItems: [],
schedulingAdditionalGroupingItems: [],
reservationAdditionalGroupingItems:[],
reservationItems: [],
sunTimingsItems: []
})
......@@ -323,18 +324,26 @@ export default function WeekView() {
// when the data update, has updatet the items, we have all the groups in expect station grouping
// this is due to the fact that this is a LARGE amount of data
function refreshGrouping(grouper = grouping, schedulingUnitItems = items.schedulingUnitItems) {
const groupsplittedItems = expandTimeLineRowsForGrouping(schedulingUnitItems, grouper);
let combinedItems = [...schedulingUnitItems, ...groupsplittedItems]
function refreshGrouping(grouper = grouping, schedulingUnitItems = items.schedulingUnitItems, reserVationUnitItems = items.reservationItems) {
const groupsplittedItemsScheduling = expandTimeLineRowsForGrouping(schedulingUnitItems, grouper);
const groupsplittedItemsReservations = expandTimeLineRowsForGrouping(reserVationUnitItems, grouper);
let combinedItems = [...schedulingUnitItems, ...groupsplittedItemsScheduling, ...groupsplittedItemsReservations]
let groupupdates = getGroups(grouper, startTime, combinedItems);
setGroups(groupupdates.groups);
refreshSunsettings(groupupdates.groups, groupupdates.itemGroupKey);
if (groupsplittedItems?.length > 0) {
if (groupsplittedItemsScheduling?.length > 0) {
setItems(prevData => ({
...prevData,
schedulingAdditionalGroupingItems: groupsplittedItems
schedulingAdditionalGroupingItems: groupsplittedItemsScheduling
}));
}
if (groupsplittedItemsReservations?.length > 0) {
setItems(prevData => ({
...prevData,
reservationAdditionalGroupingItems: groupsplittedItemsReservations
}));
}
......@@ -425,7 +434,7 @@ export default function WeekView() {
className={timelineClassName}
groups={groups}
keys={keys}
items={[...items.sunTimingsItems, ...items.schedulingUnitItems, ...items.schedulingAdditionalGroupingItems, ...items.reservationItems]}
items={[...items.sunTimingsItems, ...items.schedulingUnitItems, ...items.schedulingAdditionalGroupingItems, ...items.reservationItems, ...items.reservationAdditionalGroupingItems]}
defaultTimeStart={startTime}
defaultTimeEnd={endTime}
visibleTimeStart={visibleTime.start.valueOf()}
......
......@@ -37,16 +37,23 @@ function Toggle(props) { //TODO: extract to separate class
}
function filterReservations(reservations, visibleStartTime, reservationFilter, projectFilter,endTime,startTime) {
let reservationItems = reservations.flatMap(reservation => splitObjectIfSpanIsMultipleDays(reservation, false,startTime,endTime))
.map((reservation, index) => getReservationItem(reservation, index, moment(visibleStartTime).format(UIConstants.CALENDAR_DEFAULTDATE_FORMAT)))
.filter(reservationItem => reservationFilter.includes(reservationItem.reason))
if (projectFilter.length) {
reservationItems = reservationItems.filter(reservationItem => reservationItem.project === null || projectFilter.includes(reservationItem.project))
} else { //only show items that don't have a project
reservationItems = reservationItems.filter(reservationItem => reservationItem.project === null)
}
return reservationItems;
let datefiltered_reservationItems = reservationItems.filter(reservationItem => reservationItem.reservation_start_time>=startTime)
datefiltered_reservationItems = datefiltered_reservationItems.filter(reservationItem => reservationItem.reservation_start_time<=endTime)
return datefiltered_reservationItems;
}
......
......@@ -143,6 +143,7 @@ export function getTimelineItem(suBlueprint, displayDate, includeStationsInfo, i
suId: suBlueprint.id,
project: suBlueprint.project,
project_group: suBlueprint.project + '#' + currentGrouping,
project_task_group : suBlueprint.project + '#' + currentGrouping + "#tasks",
name: suBlueprint.name,
name_group: suBlueprint.name + '#' + currentGrouping,
antenna_set: suBlueprint.antenna_set,
......@@ -222,6 +223,7 @@ export function getReservationItem(reservation, index, displayDate) {
const stations = getStationsInfo(specificationsDoc?.resources?.stations);
const currentGroup = moment(reservation.start_time).format(UIConstants.CALENDAR_GROUP_FORMAT)
const currentGrouping = moment(reservation.start_time).format(UIConstants.CALENDAR_DEFAULTDATE_FORMAT)
let timeLineRow = {
id: reservation.id + "~" + index,
reservationId: reservation.id,
......@@ -230,7 +232,7 @@ export function getReservationItem(reservation, index, displayDate) {
group: currentGroup,
name: reservation.name,
project: reservation.project_id,
reservation_start_time : moment(reservation.start_time),
type: 'RESERVATION',
activity_type: `${type}${reservation.project_id ? (" - " + reservation.project_id) : ""}`,
reason: type,
......@@ -246,11 +248,16 @@ export function getReservationItem(reservation, index, displayDate) {
selectedBgColor: blockColor.bgColor,
color: blockColor.color
};
timeLineRow.specified_stations = reservation.stations;
timeLineRow.specified_stations = specificationsDoc?.resources?.stations;
timeLineRow.name_group = timeLineRow.name + '#' + currentGrouping
timeLineRow.project_group = timeLineRow.project + '#' + currentGrouping
timeLineRow.project_task_group = timeLineRow.project + '#' + currentGrouping ; // we do not have tasks, but we need to be visible.
timeLineRow.stationsgroups = stations.stationsgroups;
timeLineRow.groupingSuffix = '#' + currentGrouping;
......
......@@ -255,7 +255,7 @@ export async function getSunTimingItems(startTime, groups, groupkey) {
const sunTimingItems = []
for (const group of groups) {
const groupDay = moment(group.date);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment