diff --git a/src/components/views/elements/PowerSelector.js b/src/components/views/elements/PowerSelector.js
index a0aaa12ff1..8dd848db00 100644
--- a/src/components/views/elements/PowerSelector.js
+++ b/src/components/views/elements/PowerSelector.js
@@ -20,9 +20,6 @@ import React from 'react';
import * as Roles from '../../../Roles';
import { _t } from '../../../languageHandler';
-let LEVEL_ROLE_MAP = {};
-const reverseRoles = {};
-
module.exports = React.createClass({
displayName: 'PowerSelector',
@@ -43,20 +40,22 @@ module.exports = React.createClass({
getInitialState: function() {
return {
- custom: (LEVEL_ROLE_MAP[this.props.value] === undefined),
+ levelRoleMap: {},
};
},
componentWillMount: function() {
- LEVEL_ROLE_MAP = Roles.levelRoleMap();
- Object.keys(LEVEL_ROLE_MAP).forEach(function(key) {
- reverseRoles[LEVEL_ROLE_MAP[key]] = key;
- });
+ // This needs to be done now because levelRoleMap has translated strings
+ const levelRoleMap = Roles.levelRoleMap();
+ this.setState({
+ levelRoleMap,
+ custom: levelRoleMap[this.props.value] === undefined,
+ });
},
onSelectChange: function(event) {
- this.setState({ custom: event.target.value === "Custom" });
- if (event.target.value !== "Custom") {
+ this.setState({ custom: event.target.value === "SELECT_VALUE_CUSTOM" });
+ if (event.target.value !== "SELECT_VALUE_CUSTOM") {
this.props.onChange(this.getValue());
}
},
@@ -74,7 +73,7 @@ module.exports = React.createClass({
getValue: function() {
let value;
if (this.refs.select) {
- value = reverseRoles[this.refs.select.value];
+ value = this.refs.select.value;
if (this.refs.custom) {
if (value === undefined) value = parseInt( this.refs.custom.value );
}
@@ -96,25 +95,26 @@ module.exports = React.createClass({
let selectValue;
if (this.state.custom) {
- selectValue = "Custom";
+ selectValue = "SELECT_VALUE_CUSTOM";
} else {
- selectValue = LEVEL_ROLE_MAP[this.props.value] || "Custom";
+ selectValue = this.state.levelRoleMap[selectValue] ?
+ this.props.value : "SELECT_VALUE_CUSTOM";
}
let select;
if (this.props.disabled) {
- select = { selectValue };
+ select = { this.state.levelRoleMap[selectValue] };
} else {
- // Each level must have a definition in LEVEL_ROLE_MAP
+ // Each level must have a definition in this.state.levelRoleMap
const levels = [0, 50, 100];
let options = levels.map((level) => {
return {
- value: LEVEL_ROLE_MAP[level],
+ value: level,
// Give a userDefault (users_default in the power event) of 0 but
// because level !== undefined, this should never be used.
text: Roles.textualPowerLevel(level, 0),
};
});
- options.push({ value: "Custom", text: _t("Custom level") });
+ options.push({ value: "SELECT_VALUE_CUSTOM", text: _t("Custom level") });
options = options.map((op) => {
return ;
});