cabana: fix race bug where changing signal name could duplicate signal

main
Andy Haden 2017-08-10 16:23:12 -07:00
parent d0dad40cbe
commit cc3cc4fb39
3 changed files with 6 additions and 11 deletions

View File

@ -331,7 +331,6 @@ export default class CanExplorer extends Component {
onConfirmedSignalChange(message, signals) {
const {dbc, dbcFilename, route} = this.state;
dbc.setSignals(message.address, {...signals});
this.updateMessageFrame(message.id, dbc.messages.get(message.address));

View File

@ -472,9 +472,11 @@ export default class AddSignals extends Component {
onSignalChange(signal, oldSignal) {
const {signals} = this.state;
if(oldSignal.name !== signal.name) {
// name change, erase the old signal
delete signals[oldSignal.name];
for(let signalName in signals) {
if(signals[signalName].uid === signal.uid) {
delete signals[signalName];
}
}
signals[signal.name] = signal;

View File

@ -148,7 +148,6 @@ export default class SignalLegendEntry extends Component {
this.toggleEditing = this.toggleEditing.bind(this);
this.updateField = this.updateField.bind(this);
this.onNameChange = this.onNameChange.bind(this);
this.toggleSignalPlot = this.toggleSignalPlot.bind(this);
}
@ -277,7 +276,7 @@ export default class SignalLegendEntry extends Component {
toggleEditing(e) {
let {isEditing, signalEdited, nameEdited} = this.state;
let {isEditing, signalEdited} = this.state;
const {signal} = this.props;
const signalCopy = Object.assign(Object.create(signal), signal);
@ -293,7 +292,6 @@ export default class SignalLegendEntry extends Component {
signalCopy[field] = value;
});
signalCopy['name'] = nameEdited;
this.props.onSignalChange(signalCopy, signal);
} else {
signalEdited = signalCopy;
@ -310,10 +308,6 @@ export default class SignalLegendEntry extends Component {
}
onNameChange(e) {
this.setState({nameEdited: e.target.value});
}
renderSignalForm(signal) {
return (
<div className='signals-legend-entry-form'>