cabana: fix race bug where changing signal name could duplicate signal
parent
d0dad40cbe
commit
cc3cc4fb39
|
@ -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));
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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'>
|
||||
|
|
Loading…
Reference in New Issue