@@ -50,6 +50,40 @@ class Answers extends PureComponent {
50
50
return false ;
51
51
}
52
52
53
+ feedbackGiven = ( answerDocumentId , feedbackPositive ) => {
54
+ const feedback = feedbackPositive ? [ 'relevant' ] : [ 'irrelevant' , 'outdated' , 'fake' ]
55
+ return feedback . indexOf ( this . props . answers . feedbackGiven [ answerDocumentId ] ) >= 0 ;
56
+ }
57
+
58
+ renderFeedbackLink = ( { document_id} , feedbackPositive ) => {
59
+ const contraryFeedbackAlreadyGiven = this . feedbackGiven ( document_id , ! feedbackPositive ) ;
60
+
61
+ // hide the button if the contrary feedback has been given
62
+ if ( contraryFeedbackAlreadyGiven ) {
63
+ return '' ;
64
+ }
65
+
66
+ const feedbackAlreadyGiven = this . feedbackGiven ( document_id , feedbackPositive ) ;
67
+ const theme = feedbackAlreadyGiven ? 'filled' : 'outlined' ;
68
+ const clazz = feedbackPositive ? styles . answerDocLinkPositive : styles . answerDocLinkNegative ;
69
+ const className = feedbackAlreadyGiven ? clazz : styles . answerDocLink ;
70
+ const icon = feedbackPositive ? 'like' : 'dislike'
71
+ let onClickHandler = ( e ) => e . preventDefault ( ) ;
72
+
73
+ if ( ! feedbackAlreadyGiven ) {
74
+ onClickHandler = feedbackPositive
75
+ ? this . onFeedbackPositive . bind ( this , document_id )
76
+ : this . onFeedbackNegative . bind ( this , document_id ) ;
77
+ }
78
+
79
+ return (
80
+ < a href = '#upvote' rel = "noopener noreferrer" className = { className }
81
+ onClick = { onClickHandler } >
82
+ < Icon type = { icon } theme = { theme } />
83
+ </ a >
84
+ ) ;
85
+ }
86
+
53
87
renderTag = ( probability ) => {
54
88
const value = probability * 100 ;
55
89
const theme = value >= 80 ? Tag . themes . GREEN : value >= 30 ? Tag . themes . ORANGE : Tag . themes . RED ;
@@ -181,16 +215,22 @@ class Answers extends PureComponent {
181
215
}
182
216
</ div >
183
217
< div className = "feedback-buttons" >
218
+
184
219
< span > Feedback</ span >
185
- < a href = '#upvote' rel = "noopener noreferrer" className = { styles . answerDocLink }
186
- onClick = { this . onFeedbackPositive . bind ( this , topAnswerMeta . document_id ) } >
187
- < Icon type = "like" />
188
- </ a >
189
- { ! showUserFeedbackPanel &&
190
- < a href = '#downvote' rel = "noopener noreferrer" className = { styles . answerDocLink }
191
- onClick = { this . onFeedbackNegative . bind ( this , topAnswerMeta . document_id ) } >
192
- < Icon type = "dislike" />
193
- </ a > }
220
+
221
+ { this . renderFeedbackLink ( topAnswerMeta , true ) }
222
+ { this . renderFeedbackLink ( topAnswerMeta , false ) }
223
+
224
+ // < a href = '#upvote' rel = "noopener noreferrer" className = { styles . answerDocLink }
225
+ // onClick={this.onFeedbackPositive.bind(this, topAnswerMeta.document_id)}>
226
+ // <Icon type="like" />
227
+ // </a>
228
+ // { !showUserFeedbackPanel &&
229
+ // <a href='#downvote' rel="noopener noreferrer" className={styles.answerDocLink}
230
+ // onClick={this.onFeedbackNegative.bind(this, topAnswerMeta.document_id)}>
231
+ // <Icon type="dislike" />
232
+ // </a>}
233
+
194
234
</div >
195
235
</ div >
196
236
</ Col >
@@ -250,15 +290,19 @@ class Answers extends PureComponent {
250
290
< div className = "feedback-buttons" >
251
291
< span > Feedback</ span >
252
292
253
- < a href = '#upvote' target = "_blank" rel = "noopener noreferrer" className = { styles . answerDocLink }
254
- onClick = { this . onFeedbackPositive . bind ( this , itemMeta . document_id ) } >
255
- < Icon type = "like" />
256
- </ a >
257
- { ! showUserFeedbackPanel &&
258
- < a href = '#downvote' rel = "noopener noreferrer" className = { styles . answerDocLink }
259
- onClick = { this . onFeedbackNegative . bind ( this , itemMeta . document_id ) } >
260
- < Icon type = "dislike" />
261
- </ a > }
293
+ { this . renderFeedbackLink ( itemMeta , true ) }
294
+ { this . renderFeedbackLink ( itemMeta , false ) }
295
+
296
+ // < a href = '#upvote' target = "_blank" rel = "noopener noreferrer" className = { styles . answerDocLink }
297
+ // onClick={this.onFeedbackPositive.bind(this, itemMeta.document_id)}>
298
+ // <Icon type="like" />
299
+ // </a>
300
+ // { !showUserFeedbackPanel &&
301
+ // <a href='#downvote' rel="noopener noreferrer" className={styles.answerDocLink}
302
+ // onClick={this.onFeedbackNegative.bind(this, itemMeta.document_id)}>
303
+ // <Icon type="dislike" />
304
+ // </a>}
305
+
262
306
</div >
263
307
264
308
</ div >
0 commit comments