From 9e3df2c4aa342967addf1daf9585fd7f3eea6b8c Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 26 Aug 2021 16:04:51 -0400 Subject: [PATCH] Create an issue `key` property that changes when data needs refresh (closes #8655) --- modules/core/validation/models.js | 8 ++++++++ modules/ui/commit_warnings.js | 2 +- modules/ui/sections/entity_issues.js | 2 +- modules/ui/sections/validation_issues.js | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/core/validation/models.js b/modules/core/validation/models.js index b9819e060..d6215ba6d 100644 --- a/modules/core/validation/models.js +++ b/modules/core/validation/models.js @@ -14,6 +14,7 @@ export function validationIssue(attrs) { this.hash = attrs.hash; // optional - string to further differentiate the issue this.id = generateID.apply(this); // generated - see below + this.key = generateKey.apply(this); // generated - see below (call after generating this.id) this.autoFix = null; // generated - if autofix exists, will be set below // A unique, deterministic string hash. @@ -39,6 +40,13 @@ export function validationIssue(attrs) { return parts.join(':'); } + // An identifier suitable for use as the second argument to d3.selection#data(). + // (i.e. this should change whenever the data needs to be refreshed) + function generateKey() { + return this.id + ':' + Date.now().toString(); // include time of creation + } + + this.extent = function(resolver) { if (this.loc) { return geoExtent(this.loc); diff --git a/modules/ui/commit_warnings.js b/modules/ui/commit_warnings.js index e02656c2c..b83f528fc 100644 --- a/modules/ui/commit_warnings.js +++ b/modules/ui/commit_warnings.js @@ -43,7 +43,7 @@ export function uiCommitWarnings(context) { var items = container.select('ul').selectAll('li') - .data(issues, function(d) { return d.id; }); + .data(issues, function(d) { return d.key; }); items.exit() .remove(); diff --git a/modules/ui/sections/entity_issues.js b/modules/ui/sections/entity_issues.js index e3e8ebac1..5ca2d1de7 100644 --- a/modules/ui/sections/entity_issues.js +++ b/modules/ui/sections/entity_issues.js @@ -55,7 +55,7 @@ export function uiSectionEntityIssues(context) { _activeIssueID = _issues.length > 0 ? _issues[0].id : null; var containers = selection.selectAll('.issue-container') - .data(_issues, function(d) { return d.id; }); + .data(_issues, function(d) { return d.key; }); // Exit containers.exit() diff --git a/modules/ui/sections/validation_issues.js b/modules/ui/sections/validation_issues.js index b22625136..6b0ceeeac 100644 --- a/modules/ui/sections/validation_issues.js +++ b/modules/ui/sections/validation_issues.js @@ -73,7 +73,7 @@ export function uiSectionValidationIssues(id, severity, context) { var items = list.selectAll('li') - .data(issues, function(d) { return d.id; }); + .data(issues, function(d) { return d.key; }); // Exit items.exit()