var inputType:String = inputXML.@type;
var presenceStr:String = inputXML.@presence;
var sortOrderStr:String = inputXML.@priority;
-// _tags.push( { k:String(inputXML.@key) } ); /* add the key to tags so that e.g. addr:housenumber shows up on autocomplete */
var editor:EditorFactory = EditorFactory.createFactory(inputType, inputXML);
if ( editor != null ) {
editor.presence = Presence.getPresence(presenceStr);
if (f.isType('relation')) { addToTagList('relation',tag); }
if (f.isType('point')) { addToTagList('node',tag); }
}
+
+ for each (var inputSet:XML in feature..inputSet) {
+ tagsFromInputSet(definition.inputSet.(@id == String(inputSet.@ref)), f);
+ }
}
_categories = new Array();
dispatchEvent(new Event("featuresLoaded"));
}
+ private function tagsFromInputSet(inputSet:XMLList, f:Feature):void {
+ for each (var input:XML in inputSet.input) {
+ // Take all the k/v pairs from inputs that have choice
+ for each (var choice:XML in input..choice ) {
+ if (f.isType('line') || f.isType('area')) { addToTagList('way', {k:String(input.@key), v:String(choice.@value)}); }
+ if (f.isType('relation')) { addToTagList('relation',{k:String(input.@key), v:String(choice.@value)}); }
+ if (f.isType('point')) { addToTagList('node',{k:String(input.@key), v:String(choice.@value)}); }
+ }
+
+ if (input.@type == 'freetext') {
+ if (f.isType('line') || f.isType('area')) { addToTagList('way', {k:String(input.@key), v:''}); }
+ if (f.isType('relation')) { addToTagList('relation',{k:String(input.@key), v:''}); }
+ if (f.isType('point')) { addToTagList('node',{k:String(input.@key), v:''}); }
+ }
+ }
+
+ // inputSets can have their own inputSets, so recurse
+ for each (var i:XML in inputSet.inputSet) {
+ tagsFromInputSet(definition.inputSet.(@id == String(i.@ref)), f);
+ }
+ }
+
/** Add one item to tagList index, which will end up being a list like: ["way"]["highway"]["residential"] */
private function addToTagList(type:String,tag:Object):void {
if (tag.v=='*') { return; }