@@ -15,7 +15,7 @@ import { getAvatarURL } from '../../api/api';
1515import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank' ;
1616import CheckBoxIcon from '@mui/icons-material/CheckBox' ;
1717import SkeletonLoader from '../skeleton_loader/SkeletonLoader' ;
18- import ReportProblemOutlinedIcon from '@mui/icons-material/ReportProblemOutlined' ; // Import the caution icon
18+ import ReportProblemOutlinedIcon from '@mui/icons-material/ReportProblemOutlined' ;
1919
2020import './ViewFeedbackResponses.css' ;
2121
@@ -46,15 +46,13 @@ const Root = styled('div')({
4646 marginRight : '3em' ,
4747 width : '350px' ,
4848 [ '@media (max-width: 800px)' ] : {
49- // eslint-disable-line no-useless-computed-key
5049 marginRight : 0 ,
5150 width : '100%'
5251 }
5352 } ,
5453 [ `& .${ classes . responderField } ` ] : {
5554 minWidth : '500px' ,
5655 [ '@media (max-width: 800px)' ] : {
57- // eslint-disable-line no-useless-computed-key
5856 minWidth : 0 ,
5957 width : '100%'
6058 }
@@ -71,8 +69,7 @@ const ViewFeedbackResponses = () => {
7169 const [ searchText , setSearchText ] = useState ( '' ) ;
7270 const [ responderOptions , setResponderOptions ] = useState ( [ ] ) ;
7371 const [ selectedResponders , setSelectedResponders ] = useState ( [ ] ) ;
74- const [ filteredQuestionsAndAnswers , setFilteredQuestionsAndAnswers ] =
75- useState ( [ ] ) ;
72+ const [ filteredQuestionsAndAnswers , setFilteredQuestionsAndAnswers ] = useState ( [ ] ) ;
7673 const [ isLoading , setIsLoading ] = useState ( true ) ;
7774
7875 useEffect ( ( ) => {
@@ -93,7 +90,8 @@ const ViewFeedbackResponses = () => {
9390 ...question ,
9491 answers : question . answers . map ( answer => ( {
9592 ...answer ,
96- answer : isEmptyOrWhitespace ( answer . answer ) ? ' ⚠️ No response submitted' : String ( answer . answer )
93+ // Ensure blank, null, undefined, or non-string answers are handled
94+ answer : isEmptyOrWhitespace ( answer . answer ) ? ' ⚠️ No response submitted' : String ( answer . answer ) ,
9795 } ) )
9896 } ) ) ;
9997
@@ -161,35 +159,24 @@ const ViewFeedbackResponses = () => {
161159 let responsesToDisplay = [ ...questionsAndAnswers ] ;
162160
163161 responsesToDisplay = responsesToDisplay . map ( response => {
164- // Filter based on selected responders
165162 let filteredAnswers = response . answers . filter ( answer =>
166163 selectedResponders . includes ( answer . responder )
167164 ) ;
168165 if ( searchText . trim ( ) ) {
169- // Filter based on search text
170166 filteredAnswers = filteredAnswers . filter (
171167 ( { answer } ) =>
172168 answer &&
173169 answer . toLowerCase ( ) . includes ( searchText . trim ( ) . toLowerCase ( ) )
174170 ) ;
175171 }
176172
177- // Ensure blank, null, undefined, or non-string answers are handled
178- filteredAnswers = filteredAnswers . map ( answer => ( {
179- ...answer ,
180- answer : isEmptyOrWhitespace ( answer . answer ) ? ' ⚠️ No response submitted' : String ( answer . answer )
181- } ) ) ;
182-
183173 return { ...response , answers : filteredAnswers } ;
184174 } ) ;
185175
186176 setFilteredQuestionsAndAnswers ( responsesToDisplay ) ;
187177 } , [ searchText , selectedResponders ] ) ; // eslint-disable-line react-hooks/exhaustive-deps
188178
189- useEffect ( ( ) => {
190- console . log ( "CSRF Token:" , csrf ) ;
191- } , [ csrf , state ] ) ;
192-
179+ // Add "No input" for questions with inputType "NONE"
193180 useEffect ( ( ) => {
194181 if ( isLoading && filteredQuestionsAndAnswers . length > 0 ) {
195182 setIsLoading ( false ) ;
@@ -200,7 +187,6 @@ const ViewFeedbackResponses = () => {
200187 setSelectedResponders ( responderOptions ) ;
201188 } ;
202189
203- // Updated isEmptyOrWhitespace function to handle non-string values
204190 const isEmptyOrWhitespace = ( text ) => {
205191 return typeof text !== 'string' || ! text . trim ( ) ;
206192 } ;
@@ -319,24 +305,34 @@ const ViewFeedbackResponses = () => {
319305 { questionText }
320306 </ Typography >
321307
322- { ! hasResponses && (
308+ { /* If the question has no answers or inputType is "NONE" */ }
309+ { ! hasResponses || question . inputType === 'NONE' ? (
323310 < div className = "no-responses-found" >
324- < Typography variant = "body1" style = { { color : 'gray' , display : 'flex' , alignItems : 'center' } } >
325- < ReportProblemOutlinedIcon style = { { marginRight : '0.5em' } } />
326- ⚠️ No response submitted
311+ < Typography
312+ variant = "body1"
313+ style = { {
314+ color : 'gray' ,
315+ display : 'flex' ,
316+ alignItems : 'center'
317+ } }
318+ >
319+ < ReportProblemOutlinedIcon
320+ style = { { marginRight : '0.5em' } }
321+ />
322+ { question . inputType === 'NONE' ? 'No input available for this question.' : '⚠️ No response submitted' }
327323 </ Typography >
328324 </ div >
325+ ) : (
326+ question . answers . map ( answer => (
327+ < FeedbackResponseCard
328+ key = { answer . id || answer . responder }
329+ responderId = { answer . responder }
330+ answer = { isEmptyOrWhitespace ( answer . answer ) ? ' ⚠️ No response submitted' : String ( answer . answer ) }
331+ inputType = { question . inputType }
332+ sentiment = { answer . sentiment }
333+ />
334+ ) )
329335 ) }
330-
331- { hasResponses && question . answers . map ( answer => (
332- < FeedbackResponseCard
333- key = { answer . id || answer . responder }
334- responderId = { answer . responder }
335- answer = { isEmptyOrWhitespace ( answer . answer ) ? ' ⚠️ No response submitted' : String ( answer . answer ) }
336- inputType = { question . inputType }
337- sentiment = { answer . sentiment }
338- />
339- ) ) }
340336 </ div >
341337 ) ;
342338 } ) }
0 commit comments