Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/components/WeeklySummariesReport/FormattedReport.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,9 @@ function ReportDetails({
const ref = useRef(null);
const cantEditJaeRelatedRecord = cantUpdateDevAdminDetails(summary.email, loggedInUserEmail);

const hoursLogged = (summary.totalSeconds[weekIndex] || 0) / 3600;
const rawSeconds = summary.totalSeconds[weekIndex];
const hoursLogged = rawSeconds == null ? 0 : rawSeconds / 3600;

const isMeetCriteria =
canSeeBioHighlight &&
summary.totalTangibleHrs > 80 &&
Expand Down
186 changes: 94 additions & 92 deletions src/components/WeeklySummariesReport/WeeklySummariesReport.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -710,98 +710,100 @@ const WeeklySummariesReport = props => {
.filter(([, isSelected]) => isSelected)
.map(([color]) => color);

const temp = summaries.filter(summary => {
const { activeTab } = state;
const hoursLogged = (summary.totalSeconds[navItems.indexOf(activeTab)] || 0) / 3600;

// 🛑 Add this block at the very top inside the filter
// if (summary?.isActive === false) {
// const lastWeekStart = moment()
// .tz('America/Los_Angeles')
// .startOf('week')
// .subtract(1, 'week')
// .toDate();
// const lastWeekEnd = moment()
// .tz('America/Los_Angeles')
// .endOf('week')
// .subtract(1, 'week')
// .toDate();
// const summaryStart = new Date(summary.startDate);
// const summaryEnd = new Date(summary.endDate);
// const isLastWeek = summaryStart <= lastWeekEnd && summaryEnd >= lastWeekStart;

// if (!isLastWeek) {
// return false; // Skip inactive members unless their summary is from last week
// }
// }
if (
summary?.isActive === false &&
!doesSummaryBelongToWeek(summary.startDate, summary.endDate, weekIndex)
) {
return false;
}
const isMeetCriteria =
summary.totalTangibleHrs > 80 &&
summary.daysInTeam > 60 &&
summary.bioPosted !== 'posted';
const isBio = !selectedBioStatus || isMeetCriteria;
const isOverHours =
!selectedOverTime ||
(summary.weeklycommittedHours > 0 &&
hoursLogged > 0 &&
hoursLogged >= summary.promisedHoursByWeek[navItems.indexOf(activeTab)]);

// Add trophy filter logic
const summarySubmissionDate = moment()
.tz('America/Los_Angeles')
.endOf('week')
.subtract(weekIndex, 'week')
.format('YYYY-MM-DD');

const hasTrophy =
!selectedTrophies ||
showTrophyIcon(summarySubmissionDate, summary?.startDate?.split('T')[0]);

// Add special color filter logic
const matchesSpecialColor =
activeFilterColors.length === 0 || activeFilterColors.includes(summary.filterColor);

// Filtered by Team Code and Extra Members
const isInSelectedCode = selectedCodesArray.includes(summary.teamCode);
const isInSelectedExtraMember = selectedExtraMembersArray.includes(summary._id);
const noFilterSelected =
selectedCodesArray.length === 0 && selectedExtraMembersArray.length === 0;

let matchesLoggedHoursRange = true;
if (selectedLoggedHoursRange && selectedLoggedHoursRange.length > 0) {
matchesLoggedHoursRange = selectedLoggedHoursRange.some(range => {
switch (range.value) {
case '=0':
return hoursLogged === 0;
case '0-10':
return hoursLogged > 0 && hoursLogged <= 10;
case '10-20':
return hoursLogged > 10 && hoursLogged <= 20;
case '20-40':
return hoursLogged > 20 && hoursLogged <= 40;
case '>40':
return hoursLogged > 40;
default:
return true;
}
});
}
return (
(noFilterSelected || isInSelectedCode || isInSelectedExtraMember) &&
(selectedColorsArray.length === 0 ||
selectedColorsArray.includes(summary.weeklySummaryOption)) &&
matchesSpecialColor &&
isOverHours &&
isBio &&
hasTrophy &&
matchesLoggedHoursRange
);
});
const temp = summaries
.map(s => ({ ...s }))
.filter(summary => {
const { activeTab } = state;
const hoursLogged = (summary.totalSeconds[navItems.indexOf(activeTab)] || 0) / 3600;

// 🛑 Add this block at the very top inside the filter
// if (summary?.isActive === false) {
// const lastWeekStart = moment()
// .tz('America/Los_Angeles')
// .startOf('week')
// .subtract(1, 'week')
// .toDate();
// const lastWeekEnd = moment()
// .tz('America/Los_Angeles')
// .endOf('week')
// .subtract(1, 'week')
// .toDate();
// const summaryStart = new Date(summary.startDate);
// const summaryEnd = new Date(summary.endDate);
// const isLastWeek = summaryStart <= lastWeekEnd && summaryEnd >= lastWeekStart;

// if (!isLastWeek) {
// return false; // Skip inactive members unless their summary is from last week
// }
// }
if (
summary?.isActive === false &&
!doesSummaryBelongToWeek(summary.startDate, summary.endDate, weekIndex)
) {
return false;
}
const isMeetCriteria =
summary.totalTangibleHrs > 80 &&
summary.daysInTeam > 60 &&
summary.bioPosted !== 'posted';
const isBio = !selectedBioStatus || isMeetCriteria;
const isOverHours =
!selectedOverTime ||
(summary.weeklycommittedHours > 0 &&
hoursLogged > 0 &&
hoursLogged >= summary.promisedHoursByWeek[navItems.indexOf(activeTab)]);

// Add trophy filter logic
const summarySubmissionDate = moment()
.tz('America/Los_Angeles')
.endOf('week')
.subtract(weekIndex, 'week')
.format('YYYY-MM-DD');

const hasTrophy =
!selectedTrophies ||
showTrophyIcon(summarySubmissionDate, summary?.startDate?.split('T')[0]);

// Add special color filter logic
const matchesSpecialColor =
activeFilterColors.length === 0 || activeFilterColors.includes(summary.filterColor);

// Filtered by Team Code and Extra Members
const isInSelectedCode = selectedCodesArray.includes(summary.teamCode);
const isInSelectedExtraMember = selectedExtraMembersArray.includes(summary._id);
const noFilterSelected =
selectedCodesArray.length === 0 && selectedExtraMembersArray.length === 0;

let matchesLoggedHoursRange = true;
if (selectedLoggedHoursRange && selectedLoggedHoursRange.length > 0) {
matchesLoggedHoursRange = selectedLoggedHoursRange.some(range => {
switch (range.value) {
case '=0':
return hoursLogged === 0;
case '0-10':
return hoursLogged > 0 && hoursLogged <= 10;
case '10-20':
return hoursLogged > 10 && hoursLogged <= 20;
case '20-40':
return hoursLogged > 20 && hoursLogged <= 40;
case '>40':
return hoursLogged > 40;
default:
return true;
}
});
}
return (
(noFilterSelected || isInSelectedCode || isInSelectedExtraMember) &&
(selectedColorsArray.length === 0 ||
selectedColorsArray.includes(summary.weeklySummaryOption)) &&
matchesSpecialColor &&
isOverHours &&
isBio &&
hasTrophy &&
matchesLoggedHoursRange
);
});

// Use Dict and Set for quick access
const filteredTeamDict = {};
Expand Down
Loading