You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
12 lines
4.6 KiB
12 lines
4.6 KiB
// All material copyright Esri, All Rights Reserved, unless otherwise specified. |
|
// See https://js.arcgis.com/4.30/esri/copyright.txt for details. |
|
//>>built |
|
define("exports ../../Color ../../request ../../core/Error ../../core/has ../../core/lang ../../core/Logger ../../core/LRUCache ../../core/promiseUtils ../../core/Version ../../layers/support/FieldsIndex ../../support/arcadeOnDemand ../../symbols/CIMSymbol ../../symbols/cim/OverrideHelper ../../symbols/cim/utils".split(" "),function(p,w,q,x,H,y,r,z,A,B,C,t,D,E,u){const F={type:"CIMSimpleLineCallout",lineSymbol:{type:"CIMLineSymbol",symbolLayers:[{type:"CIMSolidStroke",width:.5,color:[0,0,0,255]}]}}; |
|
class G{constructor(a,e,d){this.url=this.fieldMap=this.config=null;this._ongoingRequests=new Map;this._symbolCache=new z.LRUCache(100);this._dictionaryPromise=this._fieldIndex=this._dictionaryVersion=null;this.url=a;this.config=e;this.fieldMap=d}getSymbolFields(){return this._symbolFields}async getSymbolAsync(a,e){this._dictionaryPromise||(this._dictionaryPromise=this.fetchResources(e));try{var d=await this._dictionaryPromise}catch(c){if(A.isAbortError(c))return this._dictionaryPromise=null}var f= |
|
this._dictionaryVersion?.since(4,0),g={};if(this.fieldMap)for(var h of this._symbolFields){var b=u.getFieldName(this.fieldMap[h],this._fieldIndex);if(b){const c=a.attributes[b];g[h]=f?c:null!=c?""+a.attributes[b]:""}else g[h]=""}f=null;try{f=d?.(g,e)}catch(c){return null}if(!f||"string"!==typeof f||"invalid"===f)return null;f=f.split(";");d=[];g=[];for(const c of f)if(c)if(c.includes("po:"))b=c.substr(3).split("|"),3===b.length&&(f=b[0],h=b[1],b=b[2],"DashTemplate"===h?b=b.split(" ").map(k=>Number(k)): |
|
"Color"===h?(b=(new w(b)).toRgba(),b=[b[0],b[1],b[2],255*b[3]]):b=Number(b),g.push({primitiveName:f,propertyName:h,value:b,defaultValue:null}));else if(c.includes("|"))for(const k of c.split("|")){if(this._itemNames.has(k)){d.push(k);break}}else this._itemNames.has(c)&&d.push(c);return this._cimPartsToCIMSymbol(a,d,g,null==a.geometry||!a.geometry.hasZ&&"point"===a.geometry.type?!0:!1,e)}async fetchResources(a){if(this._dictionaryPromise)return this._dictionaryPromise;if(this.url){var e=q(this.url+ |
|
"/resources/styles/dictionary-info.json",{responseType:"json",query:{f:"json"},signal:null!=a?a.signal:null}),[{data:d}]=await Promise.all([e,t.loadArcade()]);if(!d)throw this._dictionaryPromise=null,new x("esri.renderers.DictionaryRenderer","Bad dictionary data!");var {authoringInfo:f,dictionary_version:g,expression:h,itemsNames:b}=d;e=!1;g&&(this._dictionaryVersion=B.Version.parse(g),e=this._dictionaryVersion.since(4,0));this._refSymbolUrlTemplate=this.url+"/"+d.cimRefTemplateUrl;this._itemNames= |
|
new Set(b);this._symbolFields=f.symbol;d={};if(this.config){const l=this.config;for(var c in l)d[c]=l[c]}if(f.configuration)for(var k of f.configuration)d.hasOwnProperty(k.name)||(d[k.name]=k.value);c=[];if(a?.fields&&this.fieldMap)for(const l in this.fieldMap){const n=this.fieldMap[l];k=a.fields.filter(m=>m.name.toLowerCase()===n?.toLowerCase());0<k.length&&c.push({...k[0],type:e?k[0].type:"esriFieldTypeString"})}0<c.length&&(this._fieldIndex=new C(c));return this._dictionaryPromise=a=t.createDictionaryExpression(h, |
|
null!=a?a.spatialReference:null,c,d).then(l=>{const n={scale:0};return(m,v)=>{if(null==l)return null;m=l.repurposeFeature({geometry:null,attributes:m});n.scale=null!=v?v.scale??void 0:void 0;return l.evaluate({$feature:m,$view:n},l.services)}}).catch(l=>{r.getLogger("esri.renderers.support.DictionaryLoader").error("Creating dictionary expression failed:",l);return null})}r.getLogger("esri.renderers.support.DictionaryLoader").error("no valid URL!")}async _cimPartsToCIMSymbol(a,e,d,f,g){const h=Array(e.length); |
|
for(let c=0;c<e.length;c++)h[c]=this._getSymbolPart(e[c],g);e=await Promise.all(h);if(g=this.fieldMap){e=y.clone(e);for(var b of e)E.OverrideHelper.applyDictionaryTextOverrides(b,a,g,this._fieldIndex,u.getTextCasing(b))}if((a=e)&&0!==a.length){b={...a[0]};if(1<a.length){b.symbolLayers=[];for(const c of a)b.symbolLayers.unshift(...c.symbolLayers)}f&&(b.callout=F);d={type:"CIMSymbolReference",symbol:b,primitiveOverrides:d}}else d=null;return new D({data:d})}async _getSymbolPart(a,e){var d=this._symbolCache.get(a); |
|
if(d)return d;if(this._ongoingRequests.has(a))return this._ongoingRequests.get(a).then(f=>f.data);d=this._refSymbolUrlTemplate.replaceAll(/\{itemName\}/gi,a);e=q(d,{responseType:"json",query:{f:"json"},...e});this._ongoingRequests.set(a,e);e.finally(()=>this._ongoingRequests.delete(a));try{const f=await e;this._symbolCache.put(a,f.data);return f.data}catch(f){throw f;}}}p.DictionaryLoader=G;Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})}); |