Skip to content

Commit b435739

Browse files
authored
Merge pull request #2 from deepset-ai/master
merge latest update back to local repo
2 parents 3162e09 + 242d955 commit b435739

19 files changed

+3632
-132
lines changed

backend/controller/model.py

+4
Original file line numberDiff line numberDiff line change
@@ -180,4 +180,8 @@ def ask(model_id: int, request: Query):
180180
resp_time = round(time.time() - t1, 2)
181181
logger.info({"time": resp_time, "request": request.json(), "results": results})
182182

183+
# remember questions with result in the autocomplete
184+
if len(results) > 0:
185+
addQuestionToAutocomplete(question)
186+
183187
return {"results": results}

covid-frontend/src/components/Answers/index.js

+62-18
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,40 @@ class Answers extends PureComponent {
5050
return false;
5151
}
5252

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+
5387
renderTag = (probability) => {
5488
const value = probability * 100;
5589
const theme = value >= 80 ? Tag.themes.GREEN : value >= 30 ? Tag.themes.ORANGE : Tag.themes.RED;
@@ -181,16 +215,22 @@ class Answers extends PureComponent {
181215
}
182216
</div>
183217
<div className="feedback-buttons">
218+
184219
<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+
194234
</div>
195235
</div>
196236
</Col>
@@ -250,15 +290,19 @@ class Answers extends PureComponent {
250290
<div className="feedback-buttons">
251291
<span>Feedback</span>
252292

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+
262306
</div>
263307

264308
</div>

covid-frontend/src/components/Answers/styles.module.scss

+18-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
@import '../../assets/styles/_variables';
2-
@import '../../assets/styles/_mixins';
1+
@import "../../assets/styles/_variables";
2+
@import "../../assets/styles/_mixins";
33

44
.wrapper {
55
background-color: $white;
@@ -15,11 +15,13 @@
1515
background-color: $accent-light;
1616
border-color: $accent-light;
1717

18-
&::-webkit-input-placeholder { /* Edge */
18+
&::-webkit-input-placeholder {
19+
/* Edge */
1920
color: $accent;
2021
}
2122

22-
&:-ms-input-placeholder { /* Internet Explorer 10-11 */
23+
&:-ms-input-placeholder {
24+
/* Internet Explorer 10-11 */
2325
color: $accent;
2426
}
2527

@@ -112,3 +114,15 @@
112114
vertical-align: middle;
113115
}
114116
}
117+
118+
.answerDocLinkPositive {
119+
@extend .answerDocLink;
120+
121+
color: $success;
122+
}
123+
124+
.answerDocLinkNegative {
125+
@extend .answerDocLink;
126+
127+
color: $strong-emotion;
128+
}

covid-frontend/src/store/actions/activeAnswers.js

+11-2
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,18 @@ export const reset = () => ({
3030
export const markAsCorrectAnswer = (payload) => ({
3131
type: types.MARK_AS_CORRECT_ANSWER,
3232
payload
33-
})
33+
});
3434

3535
export const markAsWrongAnswer = (payload) => ({
3636
type: types.MARK_AS_WRONG_ANSWER,
3737
payload
38-
})
38+
});
39+
40+
export const markAsFeedbackGiven = (payload) => ({
41+
type: types.MARK_AS_FEEDBACK_GIVEN,
42+
payload
43+
});
44+
45+
export const clearFeedbackGiven = () => ({
46+
type: types.CLEAR_FEEDBACK_GIVEN
47+
});

covid-frontend/src/store/reducers/activeAnswers.js

+27-7
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ const initialState = {
99
userFeedbackPopup: {
1010
visible: false,
1111
answerDocumentId: null
12-
}
12+
},
13+
14+
// a list of answers which the user has already given his feedback to
15+
feedbackGiven: {}
1316
};
1417

1518
export default (state = initialState, action) => {
@@ -19,25 +22,42 @@ export default (state = initialState, action) => {
1922
...state,
2023
entries: action.payload
2124
};
25+
2226
case types.SET_LOADING_STATUS:
2327
return {
2428
...state,
2529
isLoading: action.status
2630
};
27-
case types.SHOW_USER_FEEDBACK_PANEL:
31+
32+
case types.SHOW_USER_FEEDBACK_PANEL:
2833
return {
2934
...state,
3035
userFeedbackPopup: { ...state.userFeedbackPopup, visible: true, answerDocumentId: action.payload }
3136
};
32-
case types.HIDE_USER_FEEDBACK_PANEL:
33-
return {
34-
...state,
35-
userFeedbackPopup: { ...initialState.userFeedbackPopup }
36-
};
37+
38+
case types.HIDE_USER_FEEDBACK_PANEL:
39+
return {
40+
...state,
41+
userFeedbackPopup: { ...initialState.userFeedbackPopup }
42+
};
43+
44+
case types.MARK_AS_FEEDBACK_GIVEN:
45+
return {
46+
...state,
47+
feedbackGiven: { ...state.feedbackGiven, ...action.payload }
48+
};
49+
50+
case types.CLEAR_FEEDBACK_GIVEN:
51+
return {
52+
...state,
53+
feedbackGiven: { ...initialState.feedbackGiven }
54+
};
55+
3756
case types.RESET:
3857
return {
3958
...initialState
4059
};
60+
4161
default:
4262
return state;
4363
};

covid-frontend/src/store/sagas/activeAnswers.js

+11
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ export function* get() {
3030
const answers = data.results[0].answers
3131
yield put(actions.set(answers));
3232

33+
// reset the feedbackGiven on each search
34+
yield put(actions.clearFeedbackGiven());
35+
3336
} catch (error) {
3437
message.error(error.message);
3538
}
@@ -53,6 +56,9 @@ export function* markAsCorrectAnswer({ question, answerDocumentId }) {
5356
} catch (error) {
5457
message.error(error.message);
5558
}
59+
60+
yield put(actions.markAsFeedbackGiven({ [answerDocumentId]: 'relevant' }));
61+
message.success('Thanks for giving us feedback.')
5662
}
5763

5864
export function* markAsWrongAnswer({ question, answerDocumentId, feedback }) {
@@ -74,6 +80,11 @@ export function* markAsWrongAnswer({ question, answerDocumentId, feedback }) {
7480
} catch (error) {
7581
message.error(error.message);
7682
}
83+
84+
yield put(actions.markAsFeedbackGiven({ [answerDocumentId]: feedback }));
85+
86+
// the popup did already say 'thank you'
87+
// message.success('Thanks for giving us feedback.')
7788
}
7889

7990
export default function* () {

covid-frontend/src/store/types/activeAnswers.js

+2
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@ export const RESET = activeAnswersPrefix('RESET');
1313

1414
export const MARK_AS_CORRECT_ANSWER = activeAnswersPrefix('MARK_AS_CORRECT_ANSWER');
1515
export const MARK_AS_WRONG_ANSWER = activeAnswersPrefix('MARK_AS_WRONG_ANSWER');
16+
export const MARK_AS_FEEDBACK_GIVEN = activeAnswersPrefix('MARK_AS_FEEDBACK_GIVEN');
17+
export const CLEAR_FEEDBACK_GIVEN = activeAnswersPrefix('CLEAR_FEEDBACK_GIVEN');

0 commit comments

Comments
 (0)