@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 2.68 kB
JavaScript
import{isSome as e,unwrapOr as r}from"../../core/maybe.js";import{sqlAnd as t}from"../../core/sql.js";import{getJsonType as i}from"../../geometry/support/jsonUtils.js";import{getScale as n}from"../../geometry/support/scaleUtils.js";import{getLayerFloorFilterClause as s}from"../../layers/support/floorFilterUtils.js";import{isExportDynamic as o}from"../../layers/support/sublayerUtils.js";const l=e=>e.spatialReference.wkid||JSON.stringify(e.spatialReference);function a(r,t){const{dpi:n,gdbVersion:s,geometry:o,geometryPrecision:a,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}=f(r),J=t&&e(t.geometry)?t.geometry:null,R={geometryPrecision:a,maxAllowableOffset:c,returnFieldName:u,returnGeometry:d,returnUnformattedValues:g,returnZ:x,tolerance:E},$=J&&J.toJSON()||o;if(R.imageDisplay=`${O},${p},${n}`,s&&(R.gdbVersion=s),$&&(delete $.spatialReference,R.geometry=JSON.stringify($),R.geometryType=i($)),b?R.sr=b.wkid||JSON.stringify(b):$&&$.spatialReference?R.sr=l($):y&&y.spatialReference&&(R.sr=l(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 f(r){const{mapExtent:t,floors:i,width:l,sublayers:a,layerIds:f,layerOption:m,gdbVersion:y}=r,c=a?.find((e=>null!=e.layer))?.layer?.serviceSublayers,u="popup"===m,d={},g=n({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===f?.includes(e.id)||u&&(!e.popupTemplate||!e.popupEnabled))return;x.unshift(e)}};if(a?.forEach(b),a&&!x.length)d.layerIds=[];else{const r=o(x,c,y),t=x.map((e=>{const r=s(i,e);return e.toExportImageJSON(r)}));if(r)d.dynamicLayers=JSON.stringify(t);else{if(a){let e=x.map((({id:e})=>e));f&&(e=e.filter((e=>f.includes(e)))),d.layerIds=e}else f?.length&&(d.layerIds=f);const r=p(i,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 p(e,i){const n=!!e?.length,o=i.filter((e=>null!=e.definitionExpression||n&&null!=e.floorInfo));return o.length?o.map((i=>{const n=s(e,i),o=t(n,i.definitionExpression);return{id:i.id,definitionExpression:r(o,void 0)}})):null}export{a as identifyToIdentifyRESTParameters,f as toDynamicLayersJSON};