Combine identical mistakes to save space
This commit is contained in:
@@ -348,8 +348,53 @@ export default withRouter(class GroupStats extends Component {
|
|||||||
this.state.filteredIncorrectAnswers
|
this.state.filteredIncorrectAnswers
|
||||||
.filter((vocabItem) => vocabItem.answers && vocabItem.answers.length > 0)
|
.filter((vocabItem) => vocabItem.answers && vocabItem.answers.length > 0)
|
||||||
.map((vocabItem, index) => {
|
.map((vocabItem, index) => {
|
||||||
const sortedAnswers = vocabItem.answers
|
let [switchedAnswersDict, notSwitchedAnswersDict] = [{}, {}];
|
||||||
|
|
||||||
|
vocabItem.answers
|
||||||
|
.map((answerItem) => {
|
||||||
|
if (answerItem.switchLanguage) {
|
||||||
|
if (switchedAnswersDict.hasOwnProperty(answerItem.answer)) {
|
||||||
|
switchedAnswersDict[answerItem.answer].count++;
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
switchedAnswersDict[answerItem.answer] = {
|
||||||
|
...answerItem,
|
||||||
|
count: 1,
|
||||||
|
};
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (notSwitchedAnswersDict.hasOwnProperty(answerItem.answer)) {
|
||||||
|
notSwitchedAnswersDict[answerItem.answer].count++;
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
notSwitchedAnswersDict[answerItem.answer] = {
|
||||||
|
...answerItem,
|
||||||
|
count: 1,
|
||||||
|
};
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const switchedAnswers = Object.keys(switchedAnswersDict)
|
||||||
|
.map((answerItem) => switchedAnswersDict[answerItem])
|
||||||
|
.sort((a,b) => {
|
||||||
|
const countDifference = b.count - a.count;
|
||||||
|
if (countDifference !== 0) return countDifference;
|
||||||
|
if (a.answer < b.answer) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (a.answer > b.answer) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
const notSwitchedAnswers = Object.keys(notSwitchedAnswersDict)
|
||||||
|
.map((answerItem) => notSwitchedAnswersDict[answerItem])
|
||||||
.sort((a, b) => {
|
.sort((a, b) => {
|
||||||
|
const countDifference = b.count - a.count;
|
||||||
|
if (countDifference !== 0) return countDifference;
|
||||||
if (a.answer < b.answer) {
|
if (a.answer < b.answer) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -371,10 +416,10 @@ export default withRouter(class GroupStats extends Component {
|
|||||||
vocabItem.switchedCount > 0 &&
|
vocabItem.switchedCount > 0 &&
|
||||||
<div>
|
<div>
|
||||||
{
|
{
|
||||||
sortedAnswers
|
switchedAnswers
|
||||||
.map((answerItem, index) => answerItem.switchLanguage && (
|
.map((answerItem, index) =>
|
||||||
<p key={index}>{answerItem.answer === "" ? <i>skipped</i> : answerItem.answer}</p>
|
<p key={index}>{answerItem.answer === "" ? <i>skipped</i> : answerItem.answer}{answerItem.count > 1 && <i> (x{answerItem.count})</i>}</p>
|
||||||
))
|
)
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
@@ -393,10 +438,10 @@ export default withRouter(class GroupStats extends Component {
|
|||||||
vocabItem.count > 0 &&
|
vocabItem.count > 0 &&
|
||||||
<div>
|
<div>
|
||||||
{
|
{
|
||||||
sortedAnswers
|
notSwitchedAnswers
|
||||||
.map((answerItem, index) => !answerItem.switchLanguage && (
|
.map((answerItem, index) =>
|
||||||
<p key={index}>{answerItem.answer === "" ? <i>skipped</i> : answerItem.answer}</p>
|
<p key={index}>{answerItem.answer === "" ? <i>skipped</i> : answerItem.answer}{answerItem.count > 1 && <i> (x{answerItem.count})</i>}</p>
|
||||||
))
|
)
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -381,8 +381,53 @@ export default class IncorrectHistory extends Component {
|
|||||||
this.state.filteredIncorrectAnswers
|
this.state.filteredIncorrectAnswers
|
||||||
.filter((vocabItem) => vocabItem.answers && vocabItem.answers.length > 0)
|
.filter((vocabItem) => vocabItem.answers && vocabItem.answers.length > 0)
|
||||||
.map((vocabItem, index) => {
|
.map((vocabItem, index) => {
|
||||||
const sortedAnswers = vocabItem.answers
|
let [switchedAnswersDict, notSwitchedAnswersDict] = [{}, {}];
|
||||||
|
|
||||||
|
vocabItem.answers
|
||||||
|
.map((answerItem) => {
|
||||||
|
if (answerItem.switchLanguage) {
|
||||||
|
if (switchedAnswersDict.hasOwnProperty(answerItem.answer)) {
|
||||||
|
switchedAnswersDict[answerItem.answer].count++;
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
switchedAnswersDict[answerItem.answer] = {
|
||||||
|
...answerItem,
|
||||||
|
count: 1,
|
||||||
|
};
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (notSwitchedAnswersDict.hasOwnProperty(answerItem.answer)) {
|
||||||
|
notSwitchedAnswersDict[answerItem.answer].count++;
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
notSwitchedAnswersDict[answerItem.answer] = {
|
||||||
|
...answerItem,
|
||||||
|
count: 1,
|
||||||
|
};
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const switchedAnswers = Object.keys(switchedAnswersDict)
|
||||||
|
.map((answerItem) => switchedAnswersDict[answerItem])
|
||||||
.sort((a, b) => {
|
.sort((a, b) => {
|
||||||
|
const countDifference = b.count - a.count;
|
||||||
|
if (countDifference !== 0) return countDifference;
|
||||||
|
if (a.answer < b.answer) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (a.answer > b.answer) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
const notSwitchedAnswers = Object.keys(notSwitchedAnswersDict)
|
||||||
|
.map((answerItem) => notSwitchedAnswersDict[answerItem])
|
||||||
|
.sort((a, b) => {
|
||||||
|
const countDifference = b.count - a.count;
|
||||||
|
if (countDifference !== 0) return countDifference;
|
||||||
if (a.answer < b.answer) {
|
if (a.answer < b.answer) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -404,10 +449,10 @@ export default class IncorrectHistory extends Component {
|
|||||||
vocabItem.switchedCount > 0 &&
|
vocabItem.switchedCount > 0 &&
|
||||||
<div>
|
<div>
|
||||||
{
|
{
|
||||||
sortedAnswers
|
switchedAnswers
|
||||||
.map((answerItem, index) => answerItem.switchLanguage && (
|
.map((answerItem, index) =>
|
||||||
<p key={index}>{answerItem.answer === "" ? <i>skipped</i> : answerItem.answer}</p>
|
<p key={index}>{answerItem.answer === "" ? <i>skipped</i> : answerItem.answer}{answerItem.count > 1 && <i> (x{answerItem.count})</i>}</p>
|
||||||
))
|
)
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
@@ -426,10 +471,10 @@ export default class IncorrectHistory extends Component {
|
|||||||
vocabItem.count > 0 &&
|
vocabItem.count > 0 &&
|
||||||
<div>
|
<div>
|
||||||
{
|
{
|
||||||
sortedAnswers
|
notSwitchedAnswers
|
||||||
.map((answerItem, index) => !answerItem.switchLanguage && (
|
.map((answerItem, index) =>
|
||||||
<p key={index}>{answerItem.answer === "" ? <i>skipped</i> : answerItem.answer}</p>
|
<p key={index}>{answerItem.answer === "" ? <i>skipped</i> : answerItem.answer}{answerItem.count > 1 && <i> (x{answerItem.count})</i>}</p>
|
||||||
))
|
)
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user