Skip to content

Commit

Permalink
Don't do init steps on all dataset changes.
Browse files Browse the repository at this point in the history
Take more care with undefined vs. falsy
  • Loading branch information
bgoldowsky committed Sep 19, 2024
1 parent eed9fec commit c9a5a94
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
19 changes: 11 additions & 8 deletions src/plugins/data-card/data-card-content.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ export const DataCardContentModel = TileContentModel
}))
.views(self => ({
get caseId() {
return self.caseIndex ? self.dataSet.caseIDFromIndex(self.caseIndex) : undefined;
return self.caseIndex !== undefined ? self.dataSet.caseIDFromIndex(self.caseIndex) : undefined;
}
}))
.views(self => ({
Expand Down Expand Up @@ -260,13 +260,16 @@ export const DataCardContentModel = TileContentModel
updateAfterSharedModelChanges(sharedModel?: SharedModelType) {
const dataSet = self.dataSet;
if (!dataSet) return;
// Select the card of the first selected case
const selectedCaseId = dataSet.firstSelectedCaseId
? dataSet.firstSelectedCaseId : dataSet.firstSelectedCell?.caseId;
if (selectedCaseId && dataSet.caseIndexFromID(selectedCaseId) !== self.caseIndex) {
self.setCaseIndex(dataSet.caseIndexFromID(selectedCaseId));
} else if (self.caseIndex === undefined) {
self.setCaseIndex(0);
// At initialization, caseIndex will be undefined.
// Set it to the first selected case, or the first card if there's no selection.
if (self.caseIndex === undefined) {
const selectedCaseId = dataSet.firstSelectedCaseId !== undefined
? dataSet.firstSelectedCaseId : dataSet.firstSelectedCell?.caseId;
if (selectedCaseId !== undefined) {
self.setCaseIndex(dataSet.caseIndexFromID(selectedCaseId));
} else {

Check warning on line 270 in src/plugins/data-card/data-card-content.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/data-card/data-card-content.ts#L269-L270

Added lines #L269 - L270 were not covered by tests
self.setCaseIndex(0);
}
} else if (self.caseIndex >= self.totalCases && self.totalCases > 0) {
// Make sure case index is in range if number of cases has changed
self.setCaseIndex(self.totalCases - 1);

Check warning on line 275 in src/plugins/data-card/data-card-content.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/data-card/data-card-content.ts#L275

Added line #L275 was not covered by tests
Expand Down
5 changes: 3 additions & 2 deletions src/plugins/data-card/data-card-tile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,11 @@ export const DataCardToolComponent: React.FC<ITileProps> = observer(function Dat
const cardOf = `Card ${content.caseIndexNumber + 1 } of `;

// When a highlighted case or cell is set, show it
const selectedCaseId = dataSet.firstSelectedCaseId ? dataSet.firstSelectedCaseId : dataSet.firstSelectedCell?.caseId;
const selectedCaseId = dataSet.firstSelectedCaseId !== undefined
? dataSet.firstSelectedCaseId : dataSet.firstSelectedCell?.caseId;
useEffect(() => {
if (content.caseIndex === undefined) return;
if (selectedCaseId && dataSet.caseIndexFromID(selectedCaseId) !== content.caseIndex) {
if (selectedCaseId !== undefined && dataSet.caseIndexFromID(selectedCaseId) !== content.caseIndex) {
content.setCaseIndex(dataSet.caseIndexFromID(selectedCaseId));
}
}, [content, dataSet, selectedCaseId]);
Expand Down

0 comments on commit c9a5a94

Please sign in to comment.