fix(sorting-grade): add a value to make sorting grade easier

pull/73/head
Clement G 4 years ago
parent cd0fae0c2c
commit 38b35fed4c

@ -1,33 +1,45 @@
import i18n from './i18n.jsx';
const colors = [
'#6f0214',
'#b20616',
'#ff5d00',
'#ffb200',
'#6bca24',
'#019812',
'#015411',
'#019812',
'#6bca24',
'#ffb200',
'#ff5d00',
'#b20616',
'#6f0214',
];
const gradeNames = [
'To reject',
'Insufficient',
'Passable',
'Fair',
'Good',
'Very good',
'Excellent',
'Very good',
'Good',
'Fair',
'Passable',
'Insufficient',
'To reject',
];
const gradeValues = [
6,
5,
4,
3,
2,
1,
0
];
export const grades = gradeNames.map((name, i) => ({
label: name,
color: colors[i],
value: gradeValues[i]
}));
export const i18nGrades = () => {
return gradeNames.map((name, i) => ({
label: i18n.t(name),
color: colors[i],
value: gradeValues[i]
}));
};

@ -11,7 +11,7 @@ import {
CardBody,
Table,
} from 'reactstrap';
import {i18nGrades} from '../../Util';
import {grades, i18nGrades} from '../../Util';
import {AppContext} from '../../AppContext';
import {errorMessage, Error} from '../../Errors';
@ -166,7 +166,9 @@ class Result extends Component {
render() {
const {errorMessage, candidates, electionGrades} = this.state;
const {t} = this.props;
const grades = i18nGrades();
const offsetGrade = grades.length-(this.state.numGrades);
const i18nGradesObject = i18nGrades();
if (errorMessage && errorMessage !== '') {
return <Error value={errorMessage} />;
@ -207,10 +209,10 @@ class Result extends Component {
<span
className="badge badge-light ml-2 mt-2"
style={{
backgroundColor: electionGrades[candidate.grade].color,
backgroundColor: electionGrades.slice(0).reverse()[(candidate.grade)].color,
color: '#fff',
}}>
{grades[candidate.grade].label}
{i18nGradesObject.slice(0).reverse()[candidate.grade+offsetGrade].label}
</span>
{/* <span className="badge badge-dark mt-2 ml-2">
{(100 * candidate.score).toFixed(1)}%
@ -252,7 +254,7 @@ class Result extends Component {
<table style={{width: '100%'}}>
<tbody>
<tr>
{gradeIds.map((id, i) => {
{gradeIds.slice(0).reverse().map((id, i) => {
const value = candidate.profile[id];
if (value > 0) {
let percent =
@ -359,7 +361,7 @@ class Result extends Component {
return (
<tr key={i}>
<td>{i + 1}</td>
{gradeIds.map((id, i) => {
{gradeIds.slice(0).reverse().map((id, i) => {
const value = candidate.profile[id];
const percent = (
(value / numVotes) *

@ -6,7 +6,7 @@ import {toast, ToastContainer} from 'react-toastify';
import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
import {faCheck} from '@fortawesome/free-solid-svg-icons';
import {resolve} from 'url';
import {i18nGrades} from '../../Util';
import {i18nGrades,grades} from '../../Util';
import {AppContext} from '../../AppContext';
import {errorMessage} from '../../Errors';
@ -169,6 +169,7 @@ class Vote extends Component {
render() {
const {t} = this.props;
const {redirectTo, candidates, electionGrades} = this.state;
const offsetGrade = grades.length-this.state.numGrades;
if (redirectTo) {
return <Redirect to={redirectTo} />;
@ -220,7 +221,7 @@ class Vote extends Component {
<hr className="d-lg-none" />
</Col>
{this.state.electionGrades.map((grade, gradeId) => {
console.assert(gradeId < this.state.numGrades)
console.assert(gradeId < this.state.numGrades)
return (
<Col
xs={this.state.colSizeGradeXs}
@ -229,7 +230,7 @@ class Vote extends Component {
key={gradeId}
className="text-lg-center">
<label
htmlFor={'candidateGrade' + candidateId + '-' + gradeId}
htmlFor={'candidateGrade' + candidateId + '-' + (grade.value-offsetGrade)}
className="check">
<small
className="nowrap d-lg-none ml-2 bold badge"
@ -239,7 +240,7 @@ class Vote extends Component {
) {
return (
JSON.stringify(ratedCandidat) ===
JSON.stringify({id: candidate.id, value: gradeId})
JSON.stringify({id: candidate.id, value: (grade.value-offsetGrade)})
);
})
? {backgroundColor: grade.color, color: '#fff'}
@ -253,16 +254,16 @@ class Vote extends Component {
<input
type="radio"
name={'candidate' + candidateId}
id={'candidateGrade' + candidateId + '-' + gradeId}
id={'candidateGrade' + candidateId + '-' + (grade.value-offsetGrade)}
data-index={candidateId}
data-id={candidate.id}
value={gradeId}
value={grade.value-offsetGrade}
onClick={this.handleGradeClick}
defaultChecked={this.state.ratedCandidates.find(
function(element) {
return (
JSON.stringify(element) ===
JSON.stringify({id: candidate.id, value: gradeId})
JSON.stringify({id: candidate.id, value: grade.value-offsetGrade})
);
},
)}
@ -275,7 +276,7 @@ class Vote extends Component {
) {
return (
JSON.stringify(ratedCandidat) ===
JSON.stringify({id: candidate.id, value: gradeId})
JSON.stringify({id: candidate.id, value: (grade.value-offsetGrade)})
);
})
? {backgroundColor: grade.color, color: '#fff'}

Loading…
Cancel
Save