Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
64cfc53
Merge pull request #1641 from topcoder-platform/develop
kkartunov Apr 24, 2025
ed41222
Merge pull request #1648 from topcoder-platform/develop
kkartunov May 13, 2025
fdb4db8
Merge pull request #1653 from topcoder-platform/develop
kkartunov Jun 18, 2025
999eca4
Merge pull request #1662 from topcoder-platform/develop
kkartunov Aug 4, 2025
5adc461
Merge pull request #1665 from topcoder-platform/develop
jmgasper Aug 11, 2025
1b79e45
Merge pull request #1671 from topcoder-platform/develop
jmgasper Aug 13, 2025
eac06e0
Merge pull request #1702 from topcoder-platform/develop
kkartunov Nov 2, 2025
2dc7055
Merge pull request #1703 from topcoder-platform/develop
jmgasper Nov 2, 2025
2596dce
Merge pull request #1705 from topcoder-platform/develop
jmgasper Nov 4, 2025
f064d2b
Merge pull request #1706 from topcoder-platform/develop
jmgasper Nov 4, 2025
711bab7
Merge pull request #1709 from topcoder-platform/develop
kkartunov Dec 2, 2025
65e7035
Merge pull request #1712 from topcoder-platform/develop
jmgasper Dec 9, 2025
bde72e3
Merge pull request #1723 from topcoder-platform/develop
jmgasper Feb 4, 2026
dacf8b1
Turn down the chunk size when doing the bulk group creation
jmgasper Feb 9, 2026
5a10a6c
Chunk size tweak to help with timeouts when there's lots of bad data
jmgasper Feb 10, 2026
ca3b234
Engagements updates for v2
jmgasper Feb 11, 2026
2989706
Further v2 engagement updates
jmgasper Feb 11, 2026
5aa2478
Checkbox alignment
jmgasper Feb 11, 2026
7d1d959
Merge branch 'develop' into chunk_size
jmgasper Feb 11, 2026
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
26 changes: 22 additions & 4 deletions src/components/ApplicationsList/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import DateInput from '../DateInput'
import Handle from '../Handle'
import styles from './ApplicationsList.module.scss'
import { PROFILE_URL } from '../../config/constants'
import { serializeTentativeAssignmentDate } from '../../util/assignmentDates'

const STATUS_OPTIONS = [
{ label: 'All', value: 'all' },
Expand Down Expand Up @@ -99,6 +100,21 @@ const getApplicationName = (application) => {
return fullName || application.name || application.email || null
}

const getApplicationMobileNumber = (application) => {
if (!application) {
return null
}

const value = [
application.mobileNumber,
application.mobile_number,
application.phoneNumber,
application.phone
].find((phoneNumber) => phoneNumber != null && `${phoneNumber}`.trim() !== '')

return value ? `${value}`.trim() : null
}

const getApplicationRating = (application) => {
if (!application) {
return undefined
Expand Down Expand Up @@ -303,9 +319,11 @@ const ApplicationsList = ({

setIsAccepting(true)
try {
const startDate = serializeTentativeAssignmentDate(parsedStart)
const endDate = serializeTentativeAssignmentDate(parsedEnd)
await onUpdateStatus(acceptApplication.id, 'SELECTED', {
startDate: parsedStart.toISOString(),
endDate: parsedEnd.toISOString(),
startDate,
endDate,
agreementRate: normalizedRate,
...(normalizedOtherRemarks ? { otherRemarks: normalizedOtherRemarks } : {})
})
Expand Down Expand Up @@ -500,7 +518,7 @@ const ApplicationsList = ({
<th>Email</th>
<th>Applied Date</th>
<th>Years of Experience</th>
<th>Availability</th>
<th>Phone Number</th>
<th>Status</th>
<th>Actions</th>
</tr>
Expand Down Expand Up @@ -541,7 +559,7 @@ const ApplicationsList = ({
<td>{application.email || '-'}</td>
<td>{formatDateTime(application.createdAt)}</td>
<td>{application.yearsOfExperience != null ? application.yearsOfExperience : '-'}</td>
<td>{application.availability || '-'}</td>
<td>{getApplicationMobileNumber(application) || '-'}</td>
<td>
<span className={`${styles.status} ${statusClass}`}>
{statusLabel}
Expand Down
17 changes: 17 additions & 0 deletions src/components/EngagementEditor/EngagementEditor.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,18 @@
}
}
}

.privateEngagementRow {
.field {
&.col2.privateEngagementField {
width: 100%;
max-width: none;
min-width: 0;
align-items: flex-start;
justify-content: flex-start;
}
}
}
}
}

Expand Down Expand Up @@ -227,6 +239,11 @@
color: $tc-blue-40;
}

.privateEngagementCheckbox {
align-self: flex-start;
margin: 0;
}

.assignmentDetails {
display: flex;
flex-wrap: wrap;
Expand Down
10 changes: 6 additions & 4 deletions src/components/EngagementEditor/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import Handle from '../Handle'
import { JOB_ROLE_OPTIONS, JOB_WORKLOAD_OPTIONS } from '../../config/constants'
import { suggestProfiles } from '../../services/user'
import { getCountableAssignments } from '../../util/engagements'
import { serializeTentativeAssignmentDate } from '../../util/assignmentDates'
import { formatTimeZoneLabel, formatTimeZoneList } from '../../util/timezones'
import styles from './EngagementEditor.module.scss'

Expand Down Expand Up @@ -406,8 +407,8 @@ const EngagementEditor = ({
nextAssignedMemberHandles[assignModal.index] = assignModal.handle
nextAssignmentDetails[assignModal.index] = {
memberHandle: assignModal.handle,
startDate: parsedStart.toISOString(),
endDate: parsedEnd.toISOString(),
startDate: serializeTentativeAssignmentDate(parsedStart),
endDate: serializeTentativeAssignmentDate(parsedEnd),
agreementRate: normalizedRate,
otherRemarks: normalizedOtherRemarks
}
Expand Down Expand Up @@ -930,12 +931,13 @@ const EngagementEditor = ({
)}

{canEdit && (
<div className={styles.row}>
<div className={cn(styles.row, styles.privateEngagementRow)}>
<div className={cn(styles.field, styles.col1)}>
<label htmlFor='isPrivate'>Private Engagement :</label>
</div>
<div className={cn(styles.field, styles.col2)}>
<div className={cn(styles.field, styles.col2, styles.privateEngagementField)}>
<input
className={styles.privateEngagementCheckbox}
id='isPrivate'
name='isPrivate'
type='checkbox'
Expand Down
Loading
Loading