Closed kknoppe closed 3 years ago
If a feature class has domains from types, the query builder currently only shows the codes, not the values.
The reason for this is that the domains are not stored in the field metadata, but in the type metadata at layer level.
I created a patch for MetadataAnalyzer.getFields:
return new Promise((resolve) => { try { const queryBuilderProperties = this._queryBuilderProperties; const metadata = store.getMetadata(); apprt_when(metadata, (metadata) => { const types = metadata.types; const domainsFromTypes = {}; types && types.forEach(type =>{ if(type.domains){ for (const [key, value] of Object.entries(type.domains)){ if(domainsFromTypes[key]){ domainsFromTypes[key].concat(value.codedValues); }else{ domainsFromTypes[key] = value.codedValues; } } } }) const fields = metadata.fields; const storeData = []; fields.forEach((field) => { let codedValues = (field.domain && field.domain.codedValues) || domainsFromTypes[field.name] || []; let codedValueString = codedValues.length>0 ? "[CV]" : ""; if (field.type !== "geometry") { let title = field.title; if (!title || title === "") { title = field.name; } let text = title; if (queryBuilderProperties.showFieldType) { text = title + " (" + field.type + ") " + codedValueString; } storeData.push({ id: field.name, text: text, type: field.type, codedValues: codedValues, distinctValues: [], loading: false }); } }); resolve(storeData); }, this); } catch (e) { this._logService.error({ id: 0, message: e }); } });
If a feature class has domains from types, the query builder currently only shows the codes, not the values.
The reason for this is that the domains are not stored in the field metadata, but in the type metadata at layer level.
I created a patch for MetadataAnalyzer.getFields: