initial plumbing for iD validation errors

ref #remote-presets
This commit is contained in:
Max Grossman
2018-07-31 14:22:34 -04:00
parent db78df55c8
commit 2bf5eaf6e7
8 changed files with 55 additions and 33 deletions
+23 -14
View File
@@ -7,9 +7,16 @@ import _isObject from 'lodash-es/isObject';
import _isString from 'lodash-es/isString';
import { dispatch as d3_dispatch } from 'd3-dispatch';
import { json as d3_json } from 'd3-request';
import {
json as d3_json,
text as d3_text
} from 'd3-request';
import { select as d3_select } from 'd3-selection';
import mapcssParse from 'mapcss-parse/source/index';
import {
t,
currentLocale,
@@ -24,6 +31,7 @@ import {
dataEn
} from '../../data';
import { geoRawMercator } from '../geo/raw_mercator';
import { modeSelect } from '../modes/select';
import { presetIndex } from '../presets';
@@ -40,13 +48,13 @@ import { utilDetect } from '../util/detect';
import {
utilCallWhenIdle,
utilRebind,
utilExternalPresets,
utilExternalValidationRules
utilExternalValidationRules,
utilMapCSSRule,
utilRebind,
utilStringQs
} from '../util';
import { validationCollection } from '../validations';
export var areaKeys = {};
export function setAreaKeys(value) {
@@ -448,6 +456,15 @@ export function coreContext() {
locale = locale.split('-')[0];
}
if (utilExternalValidationRules()) {
var validationsUrl = utilStringQs(window.location.hash)['validations'];
d3_text(validationsUrl, function (err, mapcss) {
if (err) return;
var validations = _map(mapcssParse(mapcss), function(mapcssConfig) { return utilMapCSSRule(mapcsS) });
context.validationRules = function() { return validations; };
});
}
history = coreHistory(context);
context.graph = history.graph;
context.changes = history.changes;
@@ -497,20 +514,12 @@ export function coreContext() {
background.init();
features.init();
// get external data if directed by query parameters
if (utilExternalPresets()) {
presets.fromExternal();
} else {
presets.init();
}
if (utilExternalValidationRules()) {
var validations = validationCollection();
validations.init(function(rules) {
context.validationRules = function() { return rules; };
});
}
areaKeys = presets.areaKeys();