12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.25/esri/copyright.txt for details.
- */
- import{isSome as e}from"../../core/maybe.js";import{sqlAnd as r}from"../../core/sql.js";import{getJsonType as t}from"../../geometry/support/jsonUtils.js";import{getScale as i}from"../../geometry/support/scaleUtils.js";import{getLayerFloorFilterClause as n}from"../../layers/support/floorFilterUtils.js";import{isExportDynamic as s}from"../../layers/support/sublayerUtils.js";const o=e=>e.spatialReference.wkid||JSON.stringify(e.spatialReference);function l(r,i){const{dpi:n,gdbVersion:s,geometry:l,geometryPrecision:f,height:p,layerOption:m,mapExtent:y,maxAllowableOffset:c,returnFieldName:u,returnGeometry:d,returnUnformattedValues:g,returnZ:x,spatialReference:b,timeExtent:h,tolerance:E,width:O}=r.toJSON(),{dynamicLayers:S,layerDefs:j,layerIds:N}=a(r),J=i&&e(i.geometry)?i.geometry:null,R={geometryPrecision:f,maxAllowableOffset:c,returnFieldName:u,returnGeometry:d,returnUnformattedValues:g,returnZ:x,tolerance:E},$=J&&J.toJSON()||l;if(R.imageDisplay=`${O},${p},${n}`,s&&(R.gdbVersion=s),$&&(delete $.spatialReference,R.geometry=JSON.stringify($),R.geometryType=t($)),b?R.sr=b.wkid||JSON.stringify(b):$&&$.spatialReference?R.sr=o($):y&&y.spatialReference&&(R.sr=o(y)),R.time=h?[h.start,h.end].join(","):null,y){const{xmin:e,ymin:r,xmax:t,ymax:i}=y;R.mapExtent=`${e},${r},${t},${i}`}return j&&(R.layerDefs=j),S&&!j&&(R.dynamicLayers=S),R.layers="popup"===m?"visible":m,N&&!S&&(R.layers+=`:${N.join(",")}`),R}function a(r){const{mapExtent:t,floors:o,width:l,sublayers:a,layerIds:p,layerOption:m,gdbVersion:y}=r,c=a?.find((e=>null!=e.layer))?.layer?.serviceSublayers,u="popup"===m,d={},g=i({extent:t,width:l,spatialReference:t?.spatialReference}),x=[],b=e=>{const r=0===g,t=0===e.minScale||g<=e.minScale,i=0===e.maxScale||g>=e.maxScale;if(e.visible&&(r||t&&i))if(e.sublayers)e.sublayers.forEach(b);else{if(!1===p?.includes(e.id)||u&&(!e.popupTemplate||!e.popupEnabled))return;x.unshift(e)}};if(a?.forEach(b),a&&!x.length)d.layerIds=[];else{const r=s(x,c,y),t=x.map((e=>{const r=n(o,e);return e.toExportImageJSON(r)}));if(r)d.dynamicLayers=JSON.stringify(t);else{if(a){let e=x.map((({id:e})=>e));p&&(e=e.filter((e=>p.includes(e)))),d.layerIds=e}else p?.length&&(d.layerIds=p);const r=f(o,x);if(e(r)&&r.length){const e={};for(const t of r)t.definitionExpression&&(e[t.id]=t.definitionExpression);Object.keys(e).length&&(d.layerDefs=JSON.stringify(e))}}}return d}function f(e,t){const i=!!e?.length,s=t.filter((e=>null!=e.definitionExpression||i&&null!=e.floorInfo));return s.length?s.map((t=>{const i=n(e,t),s=r(i,t.definitionExpression);return{id:t.id,definitionExpression:s}})):null}export{l as identifyToIdentifyRESTParameters,a as toDynamicLayersJSON};
|