Files
iD/modules/validations/issueManager.js

49 lines
1.3 KiB
JavaScript

import * as d3 from 'd3';
import _filter from 'lodash-es/filter';
import { utilRebind } from '../util/rebind';
export function IssueManager(context) {
var dispatch = d3.dispatch('reload'),
self = {},
issues = [];
self.featureApplicabilityOptions = ['edited', 'all'];
var featureApplicability = context.storage('issue-features') || 'edited';
self.getFeatureApplicability = function() {
return featureApplicability;
};
self.setFeatureApplicability = function(applicability) {
featureApplicability = applicability;
context.storage('issue-features', applicability);
};
self.getIssues = function() {
return issues;
};
self.getIssuesForEntityWithID = function(entityID) {
var issues = self.getIssues();
return _filter(issues, function(issue) {
for (var i = 0; i < issue.entities.length; i++) {
if (issue.entities[i].id === entityID) {
return true;
}
}
return false;
});
};
self.validate = function() {
var changes = context.history().changes();
issues = context.history().validate(changes);
dispatch.call('reload', self, issues);
};
return utilRebind(self, dispatch, 'on');
}