Combine identical mistakes to save space

This commit is contained in:
2021-10-21 21:07:39 +01:00
parent 62c9fb9847
commit d5c6850f49
2 changed files with 108 additions and 18 deletions

View File

@@ -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>
} }

View File

@@ -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>
} }