diff --git a/modules/core/context.js b/modules/core/context.js index 984c6ce0a..58ed89731 100644 --- a/modules/core/context.js +++ b/modules/core/context.js @@ -41,9 +41,11 @@ import { utilDetect } from '../util/detect'; import { utilCallWhenIdle, utilRebind, - utilExternalPresets + utilExternalPresets, + utilExternalValidationRules } from '../util'; +import { validationCollection } from '../validations'; export var areaKeys = {}; @@ -494,11 +496,21 @@ 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(); diff --git a/modules/presets/index.js b/modules/presets/index.js index 75553e7c5..a21a0dee3 100644 --- a/modules/presets/index.js +++ b/modules/presets/index.js @@ -182,7 +182,7 @@ export function presetIndex() { }; - all.fromExternal = function(callback) { + all.fromExternal = function() { var presetsUrl = utilStringQs(window.location.hash)['presets']; d3_json(presetsUrl, function(err, presets) { if (err) all.init(); diff --git a/modules/ui/entity_editor.js b/modules/ui/entity_editor.js index 7d6c8c1c7..465892a28 100644 --- a/modules/ui/entity_editor.js +++ b/modules/ui/entity_editor.js @@ -38,11 +38,11 @@ export function uiEntityEditor(context) { var rawTagEditor = uiRawTagEditor(context) .on('change', changeTags); - function entityEditor(selection) { var entity = context.entity(_entityID); var tags = _clone(entity.tags); + console.log(context.validationRules()); // Header var header = selection.selectAll('.header') .data([0]); diff --git a/modules/util/index.js b/modules/util/index.js index 9725ab41f..efd132175 100644 --- a/modules/util/index.js +++ b/modules/util/index.js @@ -8,6 +8,7 @@ export { utilEditDistance } from './util'; export { utilEntitySelector } from './util'; export { utilEntityOrMemberSelector } from './util'; export { utilExternalPresets } from './util'; +export { utilExternalValidationRules } from './util'; export { utilFastMouse } from './util'; export { utilFunctor } from './util'; export { utilGetAllNodes } from './util'; diff --git a/modules/util/util.js b/modules/util/util.js index b86f2be39..60e1436df 100644 --- a/modules/util/util.js +++ b/modules/util/util.js @@ -270,3 +270,7 @@ export function utilNoAuto(selection) { export function utilExternalPresets() { return utilStringQs(window.location.hash).hasOwnProperty('presets'); } + +export function utilExternalValidationRules() { + return utilStringQs(window.location.hash).hasOwnProperty('validations'); +} \ No newline at end of file diff --git a/modules/validations/index.js b/modules/validations/index.js index 4f99fa485..402bbffe0 100644 --- a/modules/validations/index.js +++ b/modules/validations/index.js @@ -1,3 +1,4 @@ +export { validationCollection } from './validation_collection'; export { validationDeprecatedTag } from './deprecated_tag'; export { validationDisconnectedHighway } from './disconnected_highway'; export { validationManyDeletions } from './many_deletions'; diff --git a/modules/validations/validation_collection.js b/modules/validations/validation_collection.js new file mode 100644 index 000000000..f7dadab31 --- /dev/null +++ b/modules/validations/validation_collection.js @@ -0,0 +1,16 @@ +import { utilStringQs } from '../util'; +import { text as d3_text } from 'd3-request'; +import mapcssParse from 'mapcss-parse/source/index'; + +export function validationCollection() { + var validations = {}; + validations.init = function (callback) { + var validationsUrl = utilStringQs(window.location.hash)['validations']; + d3_text(validationsUrl, function(err, mapcss) { + if (err) return; + callback(mapcssParse(mapcss)); + }); + }; + + return validations; +} \ No newline at end of file