Fixed undefined ref error when setting a data validation that is a range of cells at the worksheet level #1480
+31
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixed undefined ref error when setting a data validation that is a range of cells at the worksheet level
Summary
In the case where a data validation is set at the worksheet level with a range of cells "A1:A100" the error
Cannot set property 'marked' of undefined
would occur.From what I could tell the original code would call
const addr = colCache.decodeAddress(dv.address);
this would return the value "A1" in the case of the following "A1:A100". Later on in the code it would try to mark "A1"dvMap[otherAddress].marked = true;
, but in the dvMap it would be "A1:A100" and the error occurs.I changed decodeAddress to decodeEx so that we can detect if the address is a single cell vs a range(dimension?). If a dimensions property exist on the return object from decodeEx, it will shortcircuit and use the range.
Test plan
I added a integration test demonstrating it now works with no error:
spec/integration/issues/issue-1027-sheet-defined-data-validate.spec.js