@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.39 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{findAssociatedFeatureService as e}from"../../layers/support/associatedFeatureServiceUtils.js";import{getLayerModuleType as r}from"../../layers/support/fetchService.js";function t(e){const t={id:e.id,name:e.name},a=r(e.type);return"FeatureLayer"!==a&&(t.layerType=a),t}async function a(e,r,a){if(null==e?.layers||null==e?.tables){const s=await a.fetchServiceMetadata(r,{customParameters:l(e)?.customParameters});(e=e||{}).layers=e.layers||s?.layers?.map(t),e.tables=e.tables||s?.tables?.map(t)}return e}function l(e){if(!e)return null;const{layers:r,tables:t}=e;return r?.length?r[0]:t?.length?t[0]:null}function s(e,r){if(null==r)return null;return[...e.layers||[],...e.tables||[]].find((e=>e.id===r))}function n(e,r){return[...e.layers||[],...e.tables||[]].filter((({layerType:e})=>e?r.includes(e):r.includes("ArcGISFeatureLayer")))}function u(e){return(e?.layers?.length??0)+(e?.tables?.length??0)}function c(e){switch(e){case"catalog":return["CatalogLayer"];case"feature":return["ArcGISFeatureLayer"];case"oriented-imagery":return["OrientedImageryLayer"];case"subtype-group":return["SubtypeGroupLayer","SubtypeGroupTable"]}return null}function i(e){switch(e){case"CatalogLayer":return"CatalogLayer";case"OrientedImageryLayer":return"OrientedImageryLayer";case"SubtypeGroupLayer":case"SubtypeGroupTable":return"SubtypeGroupLayer"}return"FeatureLayer"}async function o(r,a,s){if(!r?.url)return a??{};if(a??={},!a.layers){const e=await s.fetchServiceMetadata(r.url);a.layers=e.layers?.map(t)}const{serverUrl:n,portalItem:u}=await e(r.url,{sceneLayerItem:r,customParameters:l(a)?.customParameters}).catch((()=>({serverUrl:null,portalItem:null})));if(null==n)return a.tables=[],a;if(!a.tables&&u){const e=await u.fetchData().catch((()=>null));if(e?.tables)a.tables=e.tables.map(t);else{const r=await s.fetchServiceMetadata(n,{customParameters:l(e)?.customParameters}).catch((()=>null));a.tables=r?.tables?.map(t)}}if(a.tables)for(const e of a.tables)e.url=`${n}/${e.id}`;return a}export{t as createSublayerData,l as getFirstLayerOrTable,s as getLayerOrTable,u as getNumLayersAndTables,n as getSublayersByLayerType,c as instanceTypeToLayerTypes,i as layerTypeToLayerModuleType,o as populateSceneServiceItemData,a as preprocessFSItemData};