1- import React , { useEffect , useRef , useState } from "react" ;
1+ import React , { useEffect , useRef , useState , useMemo } from "react" ;
22import PT from "prop-types" ;
33import ProgressBar from "./ProgressBar" ;
44import Ribbon from "../../../../components/Ribbon" ;
55import Button from "../../../../components/Button" ;
66import IconChevronDown from "assets/icons/button-chevron-down.svg" ;
77import ProgressTooltip from "./tooltips/ProgressTooltip" ;
88import NoteTooltip from "./tooltips/NoteTooltip" ;
9+ import EarnTooltip from "./tooltips/EarnTooltip" ;
910import {
1011 MY_GIG_PHASE_LABEL ,
1112 MY_GIG_PHASE_ACTION ,
1213 MY_GIGS_JOB_STATUS ,
1314 PHASES_FOR_JOB_STATUS ,
15+ MY_GIGS_STATUS_REMARK_TEXT ,
1416} from "../../../../constants" ;
1517import { formatMoneyValue } from "../../../../utils" ;
18+ import { getDateRange } from "../../../../utils/myGig" ;
1619import IconNote from "../../../../assets/icons/note.svg" ;
20+ import IconInfo from "../../../../assets/icons/ribbon-icon.svg" ;
1721
1822import "./styles.scss" ;
1923
@@ -30,12 +34,34 @@ const JobCard = ({ job }) => {
3034 setFooterHeight ( footerRef . current . offsetHeight ) ;
3135 } , [ expanded ] ) ;
3236
37+ const paymentInfo = useMemo ( ( ) => {
38+ if ( job . paymentRangeFrom && job . paymentRangeTo && job . currency ) {
39+ return `${ job . currency }
40+ ${ formatMoneyValue ( job . paymentRangeFrom , "" ) }
41+ ${ " - " }
42+ ${ formatMoneyValue ( job . paymentRangeTo , "" ) }
43+ ${ " (USD)" }
44+ ${ " / " }
45+ ${ job . paymentRangeRateType } ` ;
46+ }
47+ return "" ;
48+ } , [
49+ job . paymentRangeFrom ,
50+ job . paymentRangeTo ,
51+ job . currency ,
52+ job . paymentRangeRateType ,
53+ ] ) ;
54+
3355 return (
3456 < div
3557 styleName = { `card job-card ${
3658 job . label === MY_GIG_PHASE_LABEL . SELECTED ? "label-selected" : ""
3759 } ${ job . label === MY_GIG_PHASE_LABEL . OFFERED ? "label-offered" : "" } ${
3860 job . label === MY_GIG_PHASE_LABEL . PLACED ? "label-placed" : ""
61+ } ${
62+ job . label === MY_GIG_PHASE_LABEL . WITHDRAWN ? "label-withdrawn" : ""
63+ } ${
64+ job . label === MY_GIG_PHASE_LABEL . COMPLETED ? "label-completed" : ""
3965 } ${
4066 job . label === MY_GIG_PHASE_LABEL . NOT_SELECTED
4167 ? "label-not-selected"
@@ -65,38 +91,55 @@ const JobCard = ({ job }) => {
6591 < ul styleName = "job-items" >
6692 < li >
6793 < div styleName = "job-item" >
68- < div styleName = "caption" > Payment Range</ div >
69- < div styleName = "text" >
70- { job . paymentRangeFrom &&
71- job . paymentRangeTo &&
72- job . currency && (
73- < >
74- { job . currency }
75- { formatMoneyValue ( job . paymentRangeFrom , "" ) }
76- { " - " }
77- { formatMoneyValue ( job . paymentRangeTo , "" ) }
78- { " (USD)" }
79- { " / " }
80- { job . paymentRangeRateType }
81- </ >
82- ) }
83- </ div >
94+ { MY_GIGS_JOB_STATUS . COMPLETED === job . status && (
95+ < >
96+ < div styleName = "caption" > Duration</ div >
97+ < div styleName = "text" >
98+ { getDateRange ( job . rbStartDate , job . rbEndDate ) }
99+ </ div >
100+ </ >
101+ ) }
102+ { MY_GIGS_JOB_STATUS . COMPLETED !== job . status && (
103+ < >
104+ < div styleName = "caption" > Payment Range</ div >
105+ < div styleName = "text" > { paymentInfo } </ div >
106+ </ >
107+ ) }
84108 </ div >
85109 </ li >
86110 < li >
87111 < div styleName = "job-item" >
88- < div styleName = "caption" > Location</ div >
89- < div styleName = "text" > { job . location } </ div >
112+ { MY_GIGS_JOB_STATUS . COMPLETED === job . status && (
113+ < >
114+ < div styleName = "caption" >
115+ < span > Total Earnings</ span >
116+ < span styleName = "earn-tip" >
117+ < EarnTooltip >
118+ < IconInfo />
119+ </ EarnTooltip >
120+ </ span >
121+ </ div >
122+ < div styleName = "text" > { `${ job . currency } ${ job . paymentTotal } ` } </ div >
123+ </ >
124+ ) }
125+ { MY_GIGS_JOB_STATUS . COMPLETED !== job . status && (
126+ < >
127+ < div styleName = "caption" > Location</ div >
128+ < div styleName = "text" > { job . location } </ div >
129+ </ >
130+ ) }
90131 </ div >
91132 </ li >
92- < li >
93- < div styleName = "job-item" >
94- < div styleName = "caption" > Duration</ div >
95- < div styleName = "text" >
96- { job . duration && `${ job . duration } Weeks` }
133+ { MY_GIGS_JOB_STATUS . COMPLETED !== job . status && (
134+ < li >
135+ < div styleName = "job-item" >
136+ < div styleName = "caption" > Duration</ div >
137+ < div styleName = "text" >
138+ { job . duration && `${ job . duration } Weeks` }
139+ </ div >
97140 </ div >
98- </ div >
99- </ li >
141+ </ li >
142+ ) }
100143 < li >
101144 < div styleName = "job-item" >
102145 < div styleName = "caption" > Hours</ div >
@@ -124,14 +167,27 @@ const JobCard = ({ job }) => {
124167 </ div >
125168 < div styleName = "card-footer job-card-footer" ref = { footerRef } >
126169 < div styleName = "note-container" >
127- { job . remark && (
170+ { ( job . remark ||
171+ [
172+ MY_GIGS_JOB_STATUS . WITHDRAWN ,
173+ MY_GIGS_JOB_STATUS . WITHDRAWN_PRESCREEN ,
174+ MY_GIGS_JOB_STATUS . COMPLETED ,
175+ ] . includes ( job . status ) ) && (
128176 < NoteTooltip >
129177 < i styleName = "icon" >
130178 < IconNote />
131179 </ i >
132180 </ NoteTooltip >
133181 ) }
134- < span styleName = "note" > { job . remark } </ span >
182+ < span styleName = "note" >
183+ { [
184+ MY_GIGS_JOB_STATUS . WITHDRAWN ,
185+ MY_GIGS_JOB_STATUS . WITHDRAWN_PRESCREEN ,
186+ MY_GIGS_JOB_STATUS . COMPLETED ,
187+ ] . includes ( job . status )
188+ ? MY_GIGS_STATUS_REMARK_TEXT [ job . status ]
189+ : job . remark }
190+ </ span >
135191 { ! [
136192 MY_GIGS_JOB_STATUS . JOB_CLOSED ,
137193 MY_GIGS_JOB_STATUS . REJECTED_OTHER ,
0 commit comments