From 28704a6a1f583e5238bd85437eb5402257f395ac Mon Sep 17 00:00:00 2001 From: rishabhtc Date: Mon, 29 Sep 2025 20:23:32 +0530 Subject: [PATCH] Fixed error message and default phase selection --- .../ChallengeReviewer-Field.module.scss | 7 +++ .../ChallengeReviewer-Field/index.js | 54 +++++++++++++------ 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/src/components/ChallengeEditor/ChallengeReviewer-Field/ChallengeReviewer-Field.module.scss b/src/components/ChallengeEditor/ChallengeReviewer-Field/ChallengeReviewer-Field.module.scss index 33b54f77..98c5d72d 100644 --- a/src/components/ChallengeEditor/ChallengeReviewer-Field/ChallengeReviewer-Field.module.scss +++ b/src/components/ChallengeEditor/ChallengeReviewer-Field/ChallengeReviewer-Field.module.scss @@ -211,6 +211,13 @@ margin-bottom: 0; } +.fieldError { + color: #DC3545; + font-size: 12px; + margin-top: 4px; + display: block; +} + // Responsive adjustments @media (max-width: 768px) { .formRow { diff --git a/src/components/ChallengeEditor/ChallengeReviewer-Field/index.js b/src/components/ChallengeEditor/ChallengeReviewer-Field/index.js index 822e58e6..175fcc3b 100644 --- a/src/components/ChallengeEditor/ChallengeReviewer-Field/index.js +++ b/src/components/ChallengeEditor/ChallengeReviewer-Field/index.js @@ -102,6 +102,11 @@ class ChallengeReviewerField extends Component { ) const firstReviewPhase = reviewPhases && reviewPhases.length > 0 ? reviewPhases[0] : null + // If no review phases, get the first available phase as fallback + const fallbackPhase = !firstReviewPhase && challenge.phases && challenge.phases.length > 0 + ? challenge.phases[0] + : null + const isAIReviewer = this.isAIReviewer(defaultReviewer) // For AI reviewers, get scorecardId from the workflow if available @@ -120,10 +125,20 @@ class ChallengeReviewerField extends Component { scorecardId = (defaultReviewer && defaultReviewer.scorecardId) || '' } + // Determine the default phase ID + let defaultPhaseId = '' + if (defaultReviewer && defaultReviewer.phaseId) { + defaultPhaseId = defaultReviewer.phaseId + } else if (firstReviewPhase) { + defaultPhaseId = firstReviewPhase.phaseId || firstReviewPhase.id + } else if (fallbackPhase) { + defaultPhaseId = fallbackPhase.phaseId || fallbackPhase.id + } + const newReviewer = { scorecardId, isMemberReview: !isAIReviewer, - phaseId: (defaultReviewer && defaultReviewer.phaseId) || (firstReviewPhase ? (firstReviewPhase.id || firstReviewPhase.phaseId) : ''), + phaseId: defaultPhaseId, basePayment: (defaultReviewer && defaultReviewer.basePayment) || '0', incrementalPayment: (defaultReviewer && defaultReviewer.incrementalPayment) || 0, type: isAIReviewer ? undefined : ((defaultReviewer && defaultReviewer.opportunityType) || REVIEW_OPPORTUNITY_TYPES.REGULAR_REVIEW) @@ -185,31 +200,31 @@ class ChallengeReviewerField extends Component { } validateReviewer (reviewer) { - const errors = [] + const errors = {} const isAI = this.isAIReviewer(reviewer) if (isAI) { if (!reviewer.aiWorkflowId || reviewer.aiWorkflowId.trim() === '') { - errors.push('AI Workflow is required') + errors.aiWorkflowId = 'AI Workflow is required' } } else { if (!reviewer.scorecardId) { - errors.push('Scorecard is required') + errors.scorecardId = 'Scorecard is required' } const memberCount = parseInt(reviewer.memberReviewerCount) || 1 if (memberCount < 1 || !Number.isInteger(memberCount)) { - errors.push('Number of reviewers must be a positive integer') + errors.memberReviewerCount = 'Number of reviewers must be a positive integer' } const basePayment = convertDollarToInteger(reviewer.basePayment || '0', '') if (basePayment < 0) { - errors.push('Base payment must be non-negative') + errors.basePayment = 'Base payment must be non-negative' } } if (!reviewer.phaseId) { - errors.push('Phase is required') + errors.phaseId = 'Phase is required' } return errors @@ -240,14 +255,6 @@ class ChallengeReviewerField extends Component { )} - {validationErrors.length > 0 && ( -
- {validationErrors.map((error, i) => ( -
{error}
- ))} -
- )} -
@@ -330,6 +337,9 @@ class ChallengeReviewerField extends Component { ))} )} + {validationErrors.aiWorkflowId && ( +
{validationErrors.aiWorkflowId}
+ )}
) : (
@@ -354,6 +364,9 @@ class ChallengeReviewerField extends Component { ))} )} + {validationErrors.scorecardId && ( +
{validationErrors.scorecardId}
+ )}
)} @@ -370,7 +383,7 @@ class ChallengeReviewerField extends Component { ) : ( )} + {validationErrors.phaseId && ( +
{validationErrors.phaseId}
+ )}
@@ -417,6 +433,9 @@ class ChallengeReviewerField extends Component { }} /> )} + {validationErrors.memberReviewerCount && ( +
{validationErrors.memberReviewerCount}
+ )}
@@ -434,6 +453,9 @@ class ChallengeReviewerField extends Component { }} /> )} + {validationErrors.basePayment && ( +
{validationErrors.basePayment}
+ )}