executeQuery.js 2.5 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.25/esri/copyright.txt for details.
  4. */
  5. import o from"../../core/Error.js";import has from"../../core/has.js";import{isSome as t,isNone as r}from"../../core/maybe.js";import{whenOrAbort as e}from"../../core/promiseUtils.js";import{DataLayerSource as n}from"../../layers/support/source/DataLayerSource.js";import{executeRawQueryJSON as a}from"./executeQueryJSON.js";import{executeRawQueryPBF as i}from"./executeQueryPBF.js";import s from"../support/FeatureSet.js";import f from"../support/Query.js";async function u(o,t,r,e){return c(o,t,r,e).then((o=>l(t,o,r,e)))}async function c(o,t,r,e){const n={...e},s=p(t,r),f=null!=t.outStatistics?.[0],u=has("featurelayer-pbf-statistics"),c=!f||u;let l;if("pbf"===r.format&&c)try{l=await i(o,s,n)}catch(d){if("query:parsing-pbf"!==d.name)throw d;r.format="json"}return"json"!==r.format&&c||(l=await a(o,s,n)),m(r.fieldsIndex,l.fields),l}function m(o,r){if(t(o)&&t(r))for(const t of r){const r=o.get(t.name);r&&Object.assign(t,r.toJSON())}}async function l(o,t,n,a){if(!d(o,n?.infoFor3D)||r(n.infoFor3D)||!t.assetMaps||!t.features||!t.features.length)return s.fromJSON(t);const{meshFeatureSetFromJSON:i}=await e(import("../support/meshFeatureSet.js"),a);return i(o,n.infoFor3D,t)}function p(e,a){let i=f.from(e);if(i.sourceSpatialReference=i.sourceSpatialReference||a?.sourceSpatialReference,(a.gdbVersion||a.dynamicDataSource)&&(i=i===e?i.clone():i,i.gdbVersion=e.gdbVersion||a.gdbVersion,i.dynamicDataSource=e.dynamicDataSource?n.from(e.dynamicDataSource):a.dynamicDataSource),t(a.infoFor3D)&&d(e,a?.infoFor3D)){i=i===e?i.clone():i,i.formatOf3DObjects=null;for(const o of a.infoFor3D.queryFormats){if("3D_glb"===o){i.formatOf3DObjects=o;break}"3D_gltf"!==o||i.formatOf3DObjects||(i.formatOf3DObjects=o)}if(!i.formatOf3DObjects)throw new o("query:unsupported-3d-query-formats","Could not find any supported 3D object query format. Only supported formats are 3D_glb and 3D_gltf");if(r(i.outFields)||!i.outFields.includes("*")){i=i===e?i.clone():i,r(i.outFields)&&(i.outFields=[]);const{originX:o,originY:t,originZ:n,translationX:s,translationY:f,translationZ:u,scaleX:c,scaleY:m,scaleZ:l,rotationX:p,rotationY:d,rotationZ:y,rotationDeg:D}=a.infoFor3D.transformFieldRoles;i.outFields.push(o,t,n,s,f,u,c,m,l,p,d,y,D)}}return i}function d(o,r){return t(r)&&o.returnGeometry&&"xyFootprint"!==o.multipatchOption&&!o.outStatistics}export{u as executeQuery,c as executeRawQuery,m as normalizeFields};