@arcgis/core 6.0.0-next.15 → 6.0.0-next.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analysis/LineOfSightAnalysis.d.ts +49 -32
- package/analysis/LineOfSightAnalysisObserver.d.ts +19 -3
- package/analysis/LineOfSightAnalysisTarget.d.ts +19 -3
- package/analysis/Viewshed.d.ts +23 -3
- package/analysis/ViewshedAnalysis.d.ts +33 -13
- package/arcade/geometry/operatorsWorkerConnection.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/00d66e3fba5ab4d2aa3c.js +1 -0
- package/assets/esri/core/workers/chunks/{d994bcf0a65d1c07160f.js → 0320cbd825f9a4222042.js} +1 -1
- package/assets/esri/core/workers/chunks/14d5d219e7fe017f23f0.js +1 -0
- package/assets/esri/core/workers/chunks/164c8eeefa8232b2b191.js +2 -0
- package/assets/esri/core/workers/chunks/164e74d586297946a717.js +1 -0
- package/assets/esri/core/workers/chunks/1967b9c96045a5802d08.js +1 -0
- package/assets/esri/core/workers/chunks/{1bca39e0e651426bdbb5.js → 1b1d3f6916d2cb751435.js} +1 -1
- package/assets/esri/core/workers/chunks/{ed6e9d7f71bfd2691717.js → 1c77de1e79860f8d2228.js} +1 -1
- package/assets/esri/core/workers/chunks/1e40a26dcce4d1dadc28.js +1 -0
- package/assets/esri/core/workers/chunks/{261fea092ee7d27608a0.js → 20a2124cbe43e5527c40.js} +1 -1
- package/assets/esri/core/workers/chunks/237a1f68a0efbfe5b77c.js +1 -0
- package/assets/esri/core/workers/chunks/{3418877328f4f0830300.js → 24dac4970526a4e0ae63.js} +1 -1
- package/assets/esri/core/workers/chunks/26ceb0ff8d93dbb9b84f.js +1 -0
- package/assets/esri/core/workers/chunks/2853606099602f73d379.js +1 -0
- package/assets/esri/core/workers/chunks/2981e904ab62f3ed80d0.js +2 -0
- package/assets/esri/core/workers/chunks/2acf2952cef69e382a35.js +1 -0
- package/assets/esri/core/workers/chunks/32cc59e126df8c96a0cf.js +2 -0
- package/assets/esri/core/workers/chunks/{4df6cb1bee5d0720a43e.js → 34e0a8a3a2beea50f4f5.js} +1 -1
- package/assets/esri/core/workers/chunks/{481589c3eddad6e026ad.js → 369780276b2755361f7d.js} +1 -1
- package/assets/esri/core/workers/chunks/{1e0d2715d603f48a7e0b.js → 370aad23df597db80d65.js} +1 -1
- package/assets/esri/core/workers/chunks/3e30b96a8c75bd5b9ae2.js +1 -0
- package/assets/esri/core/workers/chunks/{25f19fc929f25ddd628c.js → 42753cf4965a94bc91ca.js} +1 -1
- package/assets/esri/core/workers/chunks/42d44c7d532df5ee70e9.js +1 -0
- package/assets/esri/core/workers/chunks/42e985a576d7aaeed0cf.js +1 -0
- package/assets/esri/core/workers/chunks/{6400446b7615b97c3521.js → 45f826554499c38968c6.js} +1 -1
- package/assets/esri/core/workers/chunks/48cc58890fddbcf69cef.js +1 -0
- package/assets/esri/core/workers/chunks/494bd434fee9032e1d02.js +1 -0
- package/assets/esri/core/workers/chunks/{33e4ff228a8c81b99022.js → 4abd3753cd9b80e4d937.js} +1 -1
- package/assets/esri/core/workers/chunks/{b564ec4e03478f5659db.js → 4c240ca50f70bf30813f.js} +1 -1
- package/assets/esri/core/workers/chunks/4c389472b8cdb0c55154.js +1 -0
- package/assets/esri/core/workers/chunks/4e4f747de424941a0bfa.js +1 -0
- package/assets/esri/core/workers/chunks/{70d3055f15d8b0cf4074.js → 532e9cda8ac3601d8892.js} +1 -1
- package/assets/esri/core/workers/chunks/5529831dd891382c79df.js +1 -0
- package/assets/esri/core/workers/chunks/{953ba13299e7aa92c1a0.js → 564565246dae080f5e6c.js} +1 -1
- package/assets/esri/core/workers/chunks/576248e9ae2654569420.js +1 -0
- package/assets/esri/core/workers/chunks/{2145a512d269d64036b0.js → 58c3ae6030def2ed5f31.js} +1 -1
- package/assets/esri/core/workers/chunks/5a19a9c3e01d3d415188.js +1 -0
- package/assets/esri/core/workers/chunks/5a830bc35adbedd33783.js +1 -0
- package/assets/esri/core/workers/chunks/{eb04e1717a1002cda3ab.js → 5b91e2dffdc84c006539.js} +1 -1
- package/assets/esri/core/workers/chunks/{aeaaff7a4b1a99540f52.js → 5cb26bbaa08114aec5ce.js} +1 -1
- package/assets/esri/core/workers/chunks/603fdbbe9534c614928f.js +1 -0
- package/assets/esri/core/workers/chunks/{4e6f40cbdb8c508e6df1.js → 60f92eb03c6e17ab4747.js} +1 -1
- package/assets/esri/core/workers/chunks/{67ebc5a3d46b254b725c.js → 612345f17f5eeb99ea8f.js} +1 -1
- package/assets/esri/core/workers/chunks/{1b077c92345ffb5916c2.js → 65c98f3449044fa4fd79.js} +1 -1
- package/assets/esri/core/workers/chunks/{2bd4ee083ca4ad221f8b.js → 65cb5e39c467a35621ca.js} +1 -1
- package/assets/esri/core/workers/chunks/661c6324529dd17b297e.js +1 -0
- package/assets/esri/core/workers/chunks/67a35155b8b4d36f171e.js +1 -0
- package/assets/esri/core/workers/chunks/68dd1fd2025c7125ead1.js +1 -0
- package/assets/esri/core/workers/chunks/{89e76de5ae3328d821a4.js → 69f6d5997b8ff1326e39.js} +1 -1
- package/assets/esri/core/workers/chunks/{ae31fd416bbb41a81392.js → 6ad309154fe84210d23c.js} +1 -1
- package/assets/esri/core/workers/chunks/{a40b6d8b5c73e06e14d4.js → 6c255c029d67423e4dac.js} +1 -1
- package/assets/esri/core/workers/chunks/7446d0dfebf93e86c098.js +1 -0
- package/assets/esri/core/workers/chunks/{688f2dbf784e66082308.js → 74c866e0b66e61751861.js} +1 -1
- package/assets/esri/core/workers/chunks/784d6c6949284ed6e10b.js +1 -0
- package/assets/esri/core/workers/chunks/{3ffda5bf0b91700dc308.js → 78643f116677950ea29a.js} +1 -1
- package/assets/esri/core/workers/chunks/{916b363c342b61ba5461.js → 787c1a8bda7d745633f2.js} +1 -1
- package/assets/esri/core/workers/chunks/{e2190361247f35b02b32.js → 7b5cd150a4d0139850be.js} +1 -1
- package/assets/esri/core/workers/chunks/7bbfe9ff352afc566367.js +1 -0
- package/assets/esri/core/workers/chunks/7d2cbc767c336d15e4d5.js +1 -0
- package/assets/esri/core/workers/chunks/{ac5a6603f7fa78d3e4c8.js → 7e8611cb709f105946f5.js} +1 -1
- package/assets/esri/core/workers/chunks/{05cd33d41d91f8d09633.js → 7fb7493f483cd9878bfa.js} +1 -1
- package/assets/esri/core/workers/chunks/{590e6c70206122e4cc3c.js → 844eedda8f749972f707.js} +2 -2
- package/assets/esri/core/workers/chunks/{acfa03c65ba3ca6c5685.js → 8715661a838361d4211a.js} +1 -1
- package/assets/esri/core/workers/chunks/{601e1d020b8115497944.js → 8a485130781b49dbf608.js} +1 -1
- package/assets/esri/core/workers/chunks/{0ccab50877b24f862d6e.js → 8ac2098ecdc40ad41055.js} +1 -1
- package/assets/esri/core/workers/chunks/{a655ebdb4bf0660615a2.js → 8b4e9fd88c0c313416d4.js} +1 -1
- package/assets/esri/core/workers/chunks/{4e544de61f07ca660236.js → 8c12269d26f5a4c753cb.js} +1 -1
- package/assets/esri/core/workers/chunks/{46b4fb6a7fe4877b0efc.js → 94baa354e50c03b82b25.js} +2 -2
- package/assets/esri/core/workers/chunks/9503eedfdda55fc5adab.js +1 -0
- package/assets/esri/core/workers/chunks/950d4578dc450467404c.js +1 -0
- package/assets/esri/core/workers/chunks/{68be3fb88ca61f82fb90.js → 95dbbddac6581b9d671f.js} +1 -1
- package/assets/esri/core/workers/chunks/98be2f621801e230aa01.js +1 -0
- package/assets/esri/core/workers/chunks/999c23da883eb11cb29e.js +1 -0
- package/assets/esri/core/workers/chunks/9b6929faf649e81265fb.js +1 -0
- package/assets/esri/core/workers/chunks/9d61740ef8bdcc162be1.js +1 -0
- package/assets/esri/core/workers/chunks/{fafb92ca2c5e4b0b2c23.js → a09d2e1e2540921e4717.js} +1 -1
- package/assets/esri/core/workers/chunks/a35c69a4751d28c39907.js +1 -0
- package/assets/esri/core/workers/chunks/{3b3e519f15ed52c83f0c.js → a49fe94933b65b4b64f8.js} +1 -1
- package/assets/esri/core/workers/chunks/{1819c45655c836b9a8d7.js → a4d3944700f1cc240176.js} +1 -1
- package/assets/esri/core/workers/chunks/{ec8b7476eac4718eb0ac.js → a504a5e06cb89a620799.js} +1 -1
- package/assets/esri/core/workers/chunks/a596779eaeec7310671d.js +1 -0
- package/assets/esri/core/workers/chunks/{d5d0fe8e198ff5a902ee.js → a5c8f9f5be4ef5063b42.js} +1 -1
- package/assets/esri/core/workers/chunks/{900181f68449d8f82eeb.js → aa1ac7954e4f0fefe15b.js} +1 -1
- package/assets/esri/core/workers/chunks/{90bdf86f553e2742d67c.js → ab1660f5f8a5268c2fac.js} +1 -1
- package/assets/esri/core/workers/chunks/ac24b4370dc7194a3107.js +1 -0
- package/assets/esri/core/workers/chunks/{b8337492e2b753aefac4.js → ace41659a5ca0e5abfc3.js} +1 -1
- package/assets/esri/core/workers/chunks/ae0563d573baf91e01f7.js +1 -0
- package/assets/esri/core/workers/chunks/{3c0ed15b544df6fb0903.js → b48952e1fb4cb7360dd0.js} +1 -1
- package/assets/esri/core/workers/chunks/b5e7475cc5fbf31289d3.js +1 -0
- package/assets/esri/core/workers/chunks/b686cd74975da09b9c91.js +2 -0
- package/assets/esri/core/workers/chunks/{aa36c3a9bbaa086e3757.js → b8fd7c3b36981261378b.js} +1 -1
- package/assets/esri/core/workers/chunks/bd046399e05e759e0bc2.js +1 -0
- package/assets/esri/core/workers/chunks/bd46a04a9ee4ea9e6ef1.js +2 -0
- package/assets/esri/core/workers/chunks/{f3da30d7300b92bd8bb0.js → befa32b9e7b3fbdd431e.js} +1 -1
- package/assets/esri/core/workers/chunks/bfb39590c548188f5052.js +1 -0
- package/assets/esri/core/workers/chunks/c4ddac23bd649d24f3f2.js +1 -0
- package/assets/esri/core/workers/chunks/cddc3e285f763ccf33c2.js +1 -0
- package/assets/esri/core/workers/chunks/d08ff41e2a9bcd58b64a.js +1 -0
- package/assets/esri/core/workers/chunks/d62afb71f4ece4283994.js +1 -0
- package/assets/esri/core/workers/chunks/dc1761cba0454fda3cf9.js +1 -0
- package/assets/esri/core/workers/chunks/{0f617980c7dd9ad0444f.js → dd0310184fe4832755a8.js} +1 -1
- package/assets/esri/core/workers/chunks/dfa5f1311806473e473f.js +1 -0
- package/assets/esri/core/workers/chunks/{4ac1d3e49e242e373a92.js → e0650b1408197d3ac862.js} +1 -1
- package/assets/esri/core/workers/chunks/{3ff6d1ed3c0f1285f3e7.js → e0d9dc97985561320bd4.js} +1 -1
- package/assets/esri/core/workers/chunks/eaddffcc7004101fc230.js +1 -0
- package/assets/esri/core/workers/chunks/eb2652ec48faa78de3c5.js +1 -0
- package/assets/esri/core/workers/chunks/eca44e53bcee9b08d70a.js +1 -0
- package/assets/esri/core/workers/chunks/f00458654c7c34c369ef.js +1 -0
- package/assets/esri/core/workers/chunks/f3cd610084e3f4d8656b.js +1 -0
- package/assets/esri/core/workers/chunks/f47fe4433b05fca5c3ad.js +1 -0
- package/assets/esri/core/workers/chunks/f7bfa3d33b05b250ce33.js +1 -0
- package/assets/esri/core/workers/chunks/f91bc1cb1014e05be763.js +1 -0
- package/assets/esri/core/workers/chunks/{19676b2c5f8b0a5ee680.js → facd1ff23203fed67686.js} +1 -1
- package/assets/esri/core/workers/chunks/{634523cc7757da9020e4.js → fb70ab267a08e24b710f.js} +1 -1
- package/assets/esri/core/workers/chunks/fc139f251dc0523074e7.js +1 -0
- package/assets/esri/core/workers/chunks/{40a584cb952e94326e9e.js → fcb86d24fc7e0666b564.js} +1 -1
- package/assets/esri/themes/base/widgets/_Weather.scss +1 -0
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/chunks/Distance2DCalculator-DjIp2uQi.js +1 -1
- package/chunks/Envelope.js +1 -1
- package/chunks/MultiPathImpl.js +1 -1
- package/chunks/OperatorGeodeticArea.js +1 -1
- package/chunks/OperatorShapePreservingLength.js +1 -1
- package/chunks/OperatorShapePreservingProject.js +1 -1
- package/chunks/UnitFactory.js +1 -1
- package/chunks/basis_encoder.js +1 -1
- package/chunks/basis_transcoder.js +1 -1
- package/chunks/index.js +1 -1
- package/chunks/lclayout.js +1 -1
- package/chunks/lerc-wasm.js +1 -1
- package/config.d.ts +2 -0
- package/config.js +1 -1
- package/core/accessorSupport/DefaultsStore.js +1 -1
- package/core/accessorSupport/MultiOriginStore.js +1 -1
- package/core/accessorSupport/Store.js +1 -1
- package/core/accessorSupport/decorators/reader.js +1 -1
- package/core/accessorSupport/decorators/writer.js +1 -1
- package/core/sql/WhereGrammar.js +2 -2
- package/core/workers/WorkerOwner.js +1 -1
- package/core/workers/workerFactory.js +1 -1
- package/core/workers/workers.js +2 -2
- package/core/workers.d.ts +9 -0
- package/editing/sharedTemplates/executor/builders/equallySpaced.js +1 -1
- package/form/elements/inputs/DynamicChoiceInput.d.ts +4 -2
- package/geometry/Mesh.js +1 -1
- package/geometry/operators/gx/operatorAlphaShape.js +1 -1
- package/geometry/operators/gx/operatorOffset.js +1 -1
- package/geometry/operators/gx/operatorPolygonSlicer.js +1 -1
- package/geometry/operators/support/jsonConverter.js +1 -1
- package/geometry/support/curves/bezierCurveUtils.js +1 -1
- package/geometry/support/curves/ellipticArc7Utils.js +1 -1
- package/geometry/support/meshUtils/merge.js +1 -1
- package/geometry/support/meshUtils/rotate.js +1 -1
- package/geometry/support/polygonExtentClipping.js +1 -1
- package/identity/Credential.js +1 -1
- package/kernel.js +1 -1
- package/layers/AnnotationFeatureLayer.d.ts +2 -2
- package/layers/AnnotationFeatureLayer.js +1 -1
- package/layers/CatalogLayer.d.ts +2 -2
- package/layers/CatalogLayer.js +1 -1
- package/layers/DimensionFeatureLayer.d.ts +2 -2
- package/layers/DimensionFeatureLayer.js +1 -1
- package/layers/ElevationLayer.js +1 -1
- package/layers/FeatureLayer.d.ts +4 -4
- package/layers/FeatureLayer.js +1 -1
- package/layers/GeoJSONLayer.d.ts +1 -1
- package/layers/ImageryTileLayer.js +1 -1
- package/layers/LineOfSightLayer.d.ts +10 -8
- package/layers/SceneLayer.js +1 -1
- package/layers/SubtypeGroupLayer.d.ts +2 -2
- package/layers/SubtypeGroupLayer.js +1 -1
- package/layers/ViewshedLayer.d.ts +1 -1
- package/layers/VoxelLayer.js +1 -1
- package/layers/WMSLayer.js +1 -1
- package/layers/effects/parser.js +3 -3
- package/layers/geospatialPDF/GeospatialPDFFrame.js +1 -1
- package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +9 -9
- package/layers/geospatialPDF/GeospatialPDFWorkerClient.js +1 -1
- package/layers/geospatialPDF/LGIDictMapFrame.js +1 -1
- package/layers/geospatialPDF/ViewportMeasureFrame.js +1 -1
- package/layers/geospatialPDF/geospatialPDFParserUtils.js +1 -1
- package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
- package/layers/graphics/data/QueryEngineResult.js +1 -1
- package/layers/graphics/sources/connections/WebSocketConnection.js +1 -1
- package/layers/graphics/sources/parquet/FileProvider.js +1 -1
- package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
- package/layers/mixins/{FeatureLayerReload.d.ts → ReloadableLayer.d.ts} +5 -3
- package/layers/mixins/ReloadableLayer.js +2 -0
- package/layers/raster/datasets/BaseRaster.js +1 -1
- package/layers/raster/datasets/GeospatialPDFRaster.js +1 -1
- package/layers/raster/datasets/ImageAuxRaster.js +2 -2
- package/layers/raster/datasets/ImageServerRaster.js +1 -1
- package/layers/raster/datasets/InMemoryRaster.js +1 -1
- package/layers/raster/datasets/MRFRaster.js +1 -1
- package/layers/raster/datasets/TIFFRaster.js +1 -1
- package/layers/raster/datasets/WCSRaster.js +1 -1
- package/layers/raster/formats/ElevationCodec.js +2 -0
- package/layers/raster/formats/ImageCanvasDecoder.js +1 -1
- package/layers/raster/formats/Lerc.js +1 -1
- package/layers/raster/formats/RasterCodec.js +1 -1
- package/layers/raster/formats/TiffDecoder.js +1 -1
- package/layers/raster/formats/Zlib.js +1 -1
- package/layers/raster/functions/stretchUtils.js +1 -1
- package/layers/raster/functions/vectorFieldUtils.js +1 -1
- package/layers/support/FieldsIndex.js +1 -1
- package/layers/support/LercWorker.js +1 -1
- package/layers/support/RasterWorker.js +1 -1
- package/layers/support/TileInfo.d.ts +1 -1
- package/layers/support/TileInfo.js +1 -1
- package/layers/support/featureReductionProperties.js +1 -1
- package/layers/support/kmlUtils.js +1 -1
- package/layers/support/layerOriginUtils.js +1 -1
- package/layers/video/VideoController.js +10 -10
- package/libs/maquette/projection.js +1 -1
- package/networks/UtilityNetworkTraceAnalysis.js +1 -1
- package/package.json +6 -6
- package/popup/FeatureModel.js +1 -1
- package/popup/FeaturesModel.js +1 -1
- package/portal/Portal.js +1 -1
- package/request/process.js +1 -1
- package/request/types.d.ts +7 -0
- package/rest/knowledgeGraphService.js +1 -1
- package/rest/networks/trace.js +1 -1
- package/rest/query/executeQuery.js +1 -1
- package/smartMapping/raster/renderers/shadedRelief.js +1 -1
- package/smartMapping/renderers/univariateColorSize.js +1 -1
- package/smartMapping/statistics/support/statsWorker.js +1 -1
- package/smartMapping/statistics/support/utils.js +1 -1
- package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
- package/smartMapping/support/adapters/FeatureLayerBinningAdapter.js +1 -1
- package/smartMapping/support/adapters/InMemoryLayerAdapter.js +1 -1
- package/smartMapping/support/adapters/OGCFeatureLayerAdapter.js +1 -1
- package/smartMapping/support/adapters/SceneLayerAdapter.js +1 -1
- package/smartMapping/support/adapters/support/utils.js +1 -1
- package/smartMapping/support/clusterUtils.js +1 -1
- package/statistics/utils.js +1 -1
- package/symbols/cim/CIMCursor.js +1 -1
- package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/symbols/support/ElevationInfo.d.ts +4 -3
- package/time/TimeExtent.d.ts +1 -1
- package/undoredo/support/Services.js +1 -1
- package/views/2d/engine/vectorTiles/buckets/SymbolBucket.js +2 -2
- package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
- package/views/2d/grid/GridView2D.js +1 -1
- package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
- package/views/2d/layers/features/sources/strategies/FeatureHybridTileLoadStrategy.js +1 -1
- package/views/2d/layers/features/sources/strategies/FeaturePagedTileLoadStrategy.js +1 -1
- package/views/2d/layers/features/sources/strategies/FeatureSnapshotLoadStrategy.js +1 -1
- package/views/2d/viewpointUtils.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
- package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
- package/views/3d/analysis/LineOfSight/types.d.ts +14 -3
- package/views/3d/analysis/LineOfSightAnalysisView3D.d.ts +39 -13
- package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
- package/views/3d/analysis/Viewshed/types.d.ts +7 -0
- package/views/3d/analysis/ViewshedAnalysisView3D.d.ts +43 -15
- package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementTool.js +1 -1
- package/views/3d/input/handlers/KeyboardNavigation.js +1 -1
- package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
- package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
- package/views/3d/interactive/editingTools/transform/ExtentTransformTool.js +1 -1
- package/views/3d/interactive/editingTools/transform/ScaleRotateTransform.js +1 -1
- package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DTool.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js +1 -1
- package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
- package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DElevationAlignment.js +1 -1
- package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
- package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/SpatialIndex2D.js +1 -1
- package/views/3d/layers/i3s/I3SNode.js +1 -1
- package/views/3d/layers/i3s/I3SUtil.js +1 -1
- package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
- package/views/3d/layers/i3s/LayerElevationProvider.js +1 -1
- package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
- package/views/3d/layers/support/FeatureTileFetcher3DDebugger.js +1 -1
- package/views/3d/layers/support/ImageHighlightHelper3D.js +1 -1
- package/views/3d/layers/support/MediaLayerInteraction.js +1 -1
- package/views/3d/layers/support/StageLayerElevationProvider.js +1 -1
- package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
- package/views/3d/state/utils/navigationUtils.js +1 -1
- package/views/3d/support/elevationUpdateExtentUtils.js +1 -1
- package/views/3d/support/elevationUpdateUtils.js +1 -1
- package/views/3d/support/pointsOfInterest/Focus.js +1 -1
- package/views/3d/support/sphereExtentUtils.js +2 -0
- package/views/3d/terrain/OverlayFramebufferObject.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/terrain/PatchRenderData.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/ViewshedShadowMap.js +1 -1
- package/views/3d/webgl-engine/materials/internal/MaterialUtil.js +1 -1
- package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
- package/views/3d/webgl-engine/materials/renderers/PerBufferData.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/ToolViewManager.js +1 -1
- package/views/View.js +1 -1
- package/views/analysis/ElevationProfile/ElevationProfileTool.js +1 -1
- package/views/draw/DrawOperation.js +1 -1
- package/views/draw/support/InteractiveHandle.js +1 -1
- package/views/draw/support/Reshape.js +1 -1
- package/views/draw/support/createUtils.js +1 -1
- package/views/draw/support/editingSessionUtils.js +1 -1
- package/views/draw/support/managers/InteractiveHandleManager.js +1 -1
- package/views/interactive/SegmentLabels.js +1 -1
- package/views/interactive/editGeometry/EditGeometry.js +1 -1
- package/views/interactive/editGeometry/EditGeometryOperations.js +1 -1
- package/views/interactive/editGeometry/operations/SetAllVertexPositions.js +1 -1
- package/views/interactive/editGeometry/operations/UndoGroup.js +1 -1
- package/views/interactive/options/TooltipOptions.d.ts +2 -0
- package/views/interactive/sketch/SketchTooltipOptions.d.ts +2 -0
- package/views/interactive/sketch/constraintUtils.js +1 -1
- package/views/interactive/snapping/SnappingDragPipelineStep.js +1 -1
- package/views/interactive/snapping/SnappingManagerPool.js +1 -1
- package/views/interactive/snapping/allLayerSnapping.js +1 -1
- package/views/interactive/tooltip/components/TooltipEditableField.js +1 -1
- package/views/layers/LayerView.js +1 -1
- package/views/layers/LineOfSightLayerView.d.ts +35 -13
- package/views/layers/SketchLayerView.d.ts +1 -0
- package/views/layers/ViewshedLayerView.d.ts +36 -12
- package/views/webgl/Program.js +1 -1
- package/views/webgl/Texture.js +1 -1
- package/widgets/AreaMeasurement2D/AreaMeasurement2DViewModel.d.ts +2 -1
- package/widgets/BasemapToggle/BasemapToggleViewModel.d.ts +2 -0
- package/widgets/BasemapToggle/BasemapToggleViewModel.js +1 -1
- package/widgets/Directions.js +1 -1
- package/widgets/DistanceMeasurement2D/DistanceMeasurement2DViewModel.d.ts +2 -1
- package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
- package/widgets/Editor/legacy/CreateFeaturesWorkflow.js +1 -1
- package/widgets/ElevationProfile/components/Statistics.js +1 -1
- package/widgets/ElevationProfile/support/chartUtils.js +1 -1
- package/widgets/Expand/ExpandViewModel.d.ts +2 -0
- package/widgets/FeatureTable/support/FeatureStore.js +1 -1
- package/widgets/FeatureTable/support/GroupColumnTemplate.js +1 -1
- package/widgets/FeatureTable/support/TableTemplate.js +1 -1
- package/widgets/Fullscreen/FullscreenViewModel.d.ts +3 -1
- package/widgets/Home/HomeViewModel.d.ts +2 -0
- package/widgets/OrientedImageryViewer.js +1 -1
- package/widgets/Print.js +1 -1
- package/widgets/Sketch/SketchViewModel.js +1 -1
- package/widgets/Slice.js +1 -1
- package/widgets/Swipe/SwipeViewModel.d.ts +2 -0
- package/widgets/Swipe/types.d.ts +9 -2
- package/widgets/TimeSlider/TimeSliderViewModel.d.ts +9 -5
- package/widgets/TimeSlider/types.d.ts +7 -0
- package/widgets/TimeSlider.d.ts +2 -3
- package/widgets/TimeSlider.js +1 -1
- package/widgets/Track/TrackViewModel.d.ts +4 -0
- package/widgets/Track/types.d.ts +1 -0
- package/widgets/UtilityNetworkTraceAnalysis/UtilityNetworkTraceAnalysisViewModel.js +1 -1
- package/widgets/support/SelectionList/SelectionListViewModel.js +1 -1
- package/widgets/support/SelectionList.js +1 -1
- package/widgets/support/Selector3D/selectorUtils.js +1 -1
- package/widgets/support/componentsUtils.js +1 -1
- package/assets/esri/core/workers/chunks/0050916e462e3c9e0627.js +0 -1
- package/assets/esri/core/workers/chunks/024b44c0c8876627f904.js +0 -1
- package/assets/esri/core/workers/chunks/02c5d027bdaee67869cf.js +0 -1
- package/assets/esri/core/workers/chunks/03261b9451e293a0fac8.js +0 -1
- package/assets/esri/core/workers/chunks/0c8c01097847617261b9.js +0 -1
- package/assets/esri/core/workers/chunks/0d931c7579b6409a696d.js +0 -1
- package/assets/esri/core/workers/chunks/12c154342fff876f2f1e.js +0 -1
- package/assets/esri/core/workers/chunks/1e11d2e97d17685b878a.js +0 -1
- package/assets/esri/core/workers/chunks/1f339247b68b061ab0a4.js +0 -1
- package/assets/esri/core/workers/chunks/21ddb26526bcb2b122c3.js +0 -1
- package/assets/esri/core/workers/chunks/2eae542fe7f0f6576ac1.js +0 -1
- package/assets/esri/core/workers/chunks/34cbaf844730ac2d92c2.js +0 -2
- package/assets/esri/core/workers/chunks/3c301a689c7853c9fa67.js +0 -2
- package/assets/esri/core/workers/chunks/3f946c13ad97fbed867b.js +0 -1
- package/assets/esri/core/workers/chunks/444e5f214abce3d607cd.js +0 -1
- package/assets/esri/core/workers/chunks/46a7da93a63663878583.js +0 -1
- package/assets/esri/core/workers/chunks/4a1e23e021bac37a88ab.js +0 -1
- package/assets/esri/core/workers/chunks/4c4117e28ea358a32088.js +0 -1
- package/assets/esri/core/workers/chunks/54b18559280a7d2a8d93.js +0 -1
- package/assets/esri/core/workers/chunks/59b216b60464611742d4.js +0 -1
- package/assets/esri/core/workers/chunks/604f0f4150fb79ee54c8.js +0 -1
- package/assets/esri/core/workers/chunks/6299be5e7e26bf3c6859.js +0 -1
- package/assets/esri/core/workers/chunks/62ac588f7dd1d24d0c9d.js +0 -1
- package/assets/esri/core/workers/chunks/62c8c9ad09e0166207fd.js +0 -1
- package/assets/esri/core/workers/chunks/62d6e101e9bd9557a410.js +0 -1
- package/assets/esri/core/workers/chunks/6558488ea96620439f34.js +0 -1
- package/assets/esri/core/workers/chunks/665e31c494d2af505acc.js +0 -1
- package/assets/esri/core/workers/chunks/6f4e6022a52de0c54aab.js +0 -1
- package/assets/esri/core/workers/chunks/7267b17de212207142c9.js +0 -1
- package/assets/esri/core/workers/chunks/745a153d0cd34faa124e.js +0 -1
- package/assets/esri/core/workers/chunks/7572c2bc5062e66f6330.js +0 -1
- package/assets/esri/core/workers/chunks/76ab353d80d786777161.js +0 -2
- package/assets/esri/core/workers/chunks/7ef182e24cad50815b4e.js +0 -1
- package/assets/esri/core/workers/chunks/8293600f94553afc8c38.js +0 -1
- package/assets/esri/core/workers/chunks/8431ca60ad33d594e323.js +0 -1
- package/assets/esri/core/workers/chunks/8483c50ed8f280fd74bb.js +0 -1
- package/assets/esri/core/workers/chunks/876f7633c15f1e31078d.js +0 -1
- package/assets/esri/core/workers/chunks/8ca9648eacb894283513.js +0 -1
- package/assets/esri/core/workers/chunks/8cb716f110d164030309.js +0 -1
- package/assets/esri/core/workers/chunks/91ebb2ccab1889eb7e81.js +0 -1
- package/assets/esri/core/workers/chunks/94e427040edb469d58ad.js +0 -1
- package/assets/esri/core/workers/chunks/9ce91a909eccc4dfe388.js +0 -1
- package/assets/esri/core/workers/chunks/9e1a3b6a08c96dcefdde.js +0 -1
- package/assets/esri/core/workers/chunks/9e3e442a9874ed23a043.js +0 -1
- package/assets/esri/core/workers/chunks/ad76f7ab2f3e6d5a5b3c.js +0 -1
- package/assets/esri/core/workers/chunks/aff32980d91dab07dfb7.js +0 -1
- package/assets/esri/core/workers/chunks/b49df4ebd4be1181b0f9.js +0 -2
- package/assets/esri/core/workers/chunks/b557824bc1fa163d72a3.js +0 -2
- package/assets/esri/core/workers/chunks/bbf993dba74850bbf9d7.js +0 -1
- package/assets/esri/core/workers/chunks/d8f1cefcad02d7353d4b.js +0 -1
- package/assets/esri/core/workers/chunks/d938987344bce83cc660.js +0 -1
- package/assets/esri/core/workers/chunks/ddf0671976648f621269.js +0 -1
- package/assets/esri/core/workers/chunks/de02f60258e6985ef676.js +0 -1
- package/assets/esri/core/workers/chunks/e10b57aefcc89671116e.js +0 -1
- package/assets/esri/core/workers/chunks/e65dfa19f030ec298437.js +0 -1
- package/assets/esri/core/workers/chunks/ed8786fed345718ed684.js +0 -1
- package/assets/esri/core/workers/chunks/f122c18af10e56f9ec2b.js +0 -1
- package/assets/esri/core/workers/chunks/f92364afaefbac7e8f77.js +0 -1
- package/assets/esri/core/workers/chunks/fc44227c1756f65b95df.js +0 -1
- package/assets/esri/core/workers/chunks/fd9663952d5a94f3a83f.js +0 -1
- package/assets/esri/core/workers/chunks/fe9879ecd69ac4329291.js +0 -1
- package/layers/mixins/FeatureLayerReload.js +0 -2
- /package/assets/esri/core/workers/chunks/{b557824bc1fa163d72a3.js.LICENSE.txt → 164c8eeefa8232b2b191.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{b49df4ebd4be1181b0f9.js.LICENSE.txt → 2981e904ab62f3ed80d0.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{34cbaf844730ac2d92c2.js.LICENSE.txt → 32cc59e126df8c96a0cf.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{590e6c70206122e4cc3c.js.LICENSE.txt → 844eedda8f749972f707.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{3c301a689c7853c9fa67.js.LICENSE.txt → b686cd74975da09b9c91.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{76ab353d80d786777161.js.LICENSE.txt → bd46a04a9ee4ea9e6ef1.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../core/Error.js";import has from"../../core/has.js";import{whenOrAbort as t}from"../../core/promiseUtils.js";import{getGlbFormatId as n,getGltfFormatId as r}from"../../layers/support/infoFor3D.js";import i from"../layerSources/DynamicDataLayer.js";import{executeRawQueryJSON as a}from"./executeQueryJSON.js";import{executeRawQueryPBF as o}from"./executeQueryPBF.js";import s from"../support/FeatureSet.js";import c from"../support/Query.js";async function l(e,t,n,r,i){return f(t,await u(e,t,n,r,i),n,r)}async function u(e,t,n,r,i){let s={...r},c=p(t,n),l=t.outStatistics?.[0]!=null,u=has(`featurelayer-pbf-statistics`),f=!l||u,m;if(n?.format===`pbf`&&f)try{m=await o(e,c,s,i)}catch(e){if(e.name===`query:parsing-pbf`)n.format=`json`;else throw e}return
|
|
2
|
+
import e from"../../core/Error.js";import has from"../../core/has.js";import{whenOrAbort as t}from"../../core/promiseUtils.js";import{getGlbFormatId as n,getGltfFormatId as r}from"../../layers/support/infoFor3D.js";import i from"../layerSources/DynamicDataLayer.js";import{executeRawQueryJSON as a}from"./executeQueryJSON.js";import{executeRawQueryPBF as o}from"./executeQueryPBF.js";import s from"../support/FeatureSet.js";import c from"../support/Query.js";async function l(e,t,n,r,i){return f(t,await u(e,t,n,r,i),n,r)}async function u(e,t,n,r,i){let s={...r},c=p(t,n),l=t.outStatistics?.[0]!=null,u=has(`featurelayer-pbf-statistics`),f=!l||u,m;if(n?.format===`pbf`&&f)try{m=await o(e,c,s,i)}catch(e){if(e.name===`query:parsing-pbf`)n.format=`json`;else throw e}return n?.format!==`json`&&f||(m=await a(e,c,s,i)),d(n?.fieldsIndex,m.fields),m}function d(e,t){if(e!=null&&t!=null)for(let n of t){let t=e.get(n.name);t&&Object.assign(n,t.toJSON())}}async function f(e,n,r,i){let a=r?.infoFor3D;if(!m(e,a)||a==null||!n.assetMaps||!n.features?.length)return s.fromJSON(n);let{meshFeatureSetFromJSON:o}=await t(import(`../support/meshFeatureSet.js`),i);return o(e,a,n)}function p(t,a){let o=c.from(t);o.sourceSpatialReference=o.sourceSpatialReference??a?.sourceSpatialReference??null,(a?.gdbVersion||a?.dynamicDataSource)&&(o=o===t?o.clone():o,o.gdbVersion=t.gdbVersion||a.gdbVersion,o.dynamicDataSource=t.dynamicDataSource?i.from(t.dynamicDataSource):a.dynamicDataSource);let s=a?.infoFor3D;if(s!=null&&m(t,s)){o=o===t?o.clone():o,o.formatOf3DObjects=null;let i=n(s),a=r(s);for(let e of s.queryFormats){if(e===i){o.formatOf3DObjects=e;break}e===a&&!o.formatOf3DObjects&&(o.formatOf3DObjects=e)}if(!o.formatOf3DObjects)throw new e(`query:unsupported-3d-query-formats`,`Could not find any supported 3D object query format. Only supported formats are 3D_glb and 3D_gltf`);if(o.outFields==null||!o.outFields.includes(`*`)){o=o===t?o.clone():o,o.outFields??(o.outFields=[]);let{originX:e,originY:n,originZ:r,translationX:i,translationY:a,translationZ:c,scaleX:l,scaleY:u,scaleZ:d,rotationX:f,rotationY:p,rotationZ:m,rotationDeg:h}=s.transformFieldRoles;o.outFields.push(e,n,r,i,a,c,l,u,d,f,p,m,h)}}return o}function m(e,t){return t!=null&&e.returnGeometry===!0&&e.multipatchOption!==`xyFootprint`&&!e.outStatistics}export{l as executeQuery};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../../core/Error.js";import{createShadedReliefRenderer as t}from"../../../renderers/support/rasterRendererHelper.js";import{processRasterRendererParameters as n}from"../support/utils.js";async function r(t){t=await n(t);let r=t.layer.supportsMultidirectionalHillshade();if(t.hillshadeType===`multi-directional`&&!r)throw new e(`raster-shaded-relief-renderer:not-supported`,`multi-directional hillshade type is only supported on 10.8.1+ servers`);return
|
|
2
|
+
import e from"../../../core/Error.js";import{createShadedReliefRenderer as t}from"../../../renderers/support/rasterRendererHelper.js";import{processRasterRendererParameters as n}from"../support/utils.js";async function r(t){t=await n(t);let r=t.layer.supportsMultidirectionalHillshade();if(t.hillshadeType===`multi-directional`&&!r)throw new e(`raster-shaded-relief-renderer:not-supported`,`multi-directional hillshade type is only supported on 10.8.1+ servers`);return r&&t.hillshadeType!=null||(t.hillshadeType=`traditional`),t}async function i(n){n=await r(n);let i=t(n.layer.serviceRasterInfo,n.hillshadeType);if(i==null)throw new e(`raster-shaded-relief-renderer:not-supported`,`Only elevation raster data is supported`);return a(i,n),{renderer:i}}function a(e,t){let{scalingType:n,colorRamp:r}=t;n!=null&&(e.scalingType=n),r!==void 0&&(e.colorRamp=r)}export{i as createRenderer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../core/Error.js";import t from"../../renderers/support/AuthoringInfo.js";import n from"../../renderers/support/ClassBreakInfo.js";import r from"../../renderers/visualVariables/support/SizeStop.js";import{getSize as i}from"../../renderers/visualVariables/support/visualVariableUtils.js";import{createVisualVariable as a}from"./color.js";import{createContinuousRenderer as o,createVisualVariables as s,regenerateContinuousRenderer as c}from"./size.js";import{isColorVV as l,updateAuthoringInfoVisualVariable as u,spliceVisualVariables as d,findSizeVVIndex as f,getAuthoringInfoVisualVariable as p,processRegenerateParams as m,getRendererToUpdate as h,getStyleType as g,hasOutlineVV as _,hasScaleDependentSizeVV as v}from"./support/regenerateUtils.js";import{resolveDataSeriesInfo as y}from"./support/timeSeriesUtils.js";import{verifyBasicFieldValidity as b,createStopValuesForAboveBelow as x,clampAboveAndBelowStopValues as S,createDefaultStopValues as C}from"./support/utils.js";import{verifyBinningParams as w}from"../support/binningUtils.js";import{isAnyDateField as T,getFieldsList as E}from"../support/utils.js";import{binningCapableLayerTypes as D,featureCapableLayerTypes as O,createLayerAdapter as k,getLayerTypeLabels as A}from"../support/adapters/support/layerUtils.js";import{getAboveAndBelowSymbols as j}from"../symbology/support/aboveAndBelowUtils.js";import{applyCIMSymbolColor as M}from"../../symbols/support/cimSymbolUtils.js";import N from"../../symbols/support/Symbol3DMaterial.js";const P=2**53-1;async function F(t){let n=y({...t});if(!(n?.layer&&(n.field||n.valueExpression||n.sqlExpression)))throw new e(`univariate-colorsize-visual-variables:missing-parameters`,`'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required`);if(n.valueExpression&&!n.sqlExpression&&!n.view)throw new e(`univariate-colorsize-visual-variables:missing-parameters`,`View is required when 'valueExpression' is specified`);if(n.theme===`above-and-below`&&n.sizeOptions?.sizeOptimizationEnabled)throw new e(`univariate-colorsize-visual-variables:invalid-parameters`,`sizeOptimizationEnabled cannot be true for 'above-and-below' theme`);n.forBinning&&w(n,`univariate-colorsize-visual-variables`);let r={...n,layer:n.layer},i=n.forBinning?D:O,a=k(r.layer,i,n.forBinning);if(!a)throw new e(`univariate-colorsize-visual-variables:invalid-parameters`,`'layer' must be one of these types: `+A(i).join(`, `));r.layer=a,r.theme=!r.theme&&!r.colorOptions?.theme?`high-to-low`:r.theme;let o=r.signal==null?null:{signal:r.signal};await a.load(o);let s=await E({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),c=b(a,s,`univariate-colorsize-visual-variables:invalid-parameters`);if(c)throw c;return r}function I(e,t){let n={...e},{sizeOptions:r,theme:i}=n,a=n.legendOptions||n.sizeOptions?.legendOptions;return delete n.sizeOptions,delete n.colorOptions,{...n,...r,statistics:t||n.statistics,theme:i===`above-and-below`?null:i,legendOptions:a}}function L(e,t){let n={...e},r=n.colorOptions,i=n.theme||r?.theme,a=n.legendOptions||n.colorOptions?.legendOptions;return delete n.sizeOptions,delete n.colorOptions,{...n,...r,statistics:t||n.statistics,theme:i,legendOptions:a}}async function R(t){let n=y({...t});if(!(n?.layer&&(n.field||n.valueExpression||n.sqlExpression)))throw new e(`univariate-colorsize-continuous-renderer:missing-parameters`,`'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required`);if(n.valueExpression&&!n.sqlExpression&&!n.view)throw new e(`univariate-colorsize-continuous-renderer:missing-parameters`,`View is required when 'valueExpression' is specified`);n.forBinning&&w(n,`univariate-colorsize-continuous-renderer`);let r={...n,layer:n.layer};r.symbolType=r.symbolType||`2d`,r.colorOptions||={},r.colorOptions.isContinuous=r.colorOptions.isContinuous??!1;let i=n.forBinning?D:O,a=k(r.layer,i,n.forBinning);if(!a)throw new e(`univariate-colorsize-continuous-renderer:invalid-parameters`,`'layer' must be one of these types: `+A(i).join(`, `));let o=r.signal==null?null:{signal:r.signal};if(await a.load(o),r.theme===`above-and-below`&&r.symbolOptions){if(r.symbolType.includes(`3d-volumetric`))throw new e(`univariate-colorsize-continuous-renderer:invalid-parameters`,`'symbolOptions' is applicable for '2d' and '3d-flat' 'symbolType' only`);if(a.geometryType!==`point`&&a.geometryType!==`polygon`)throw new e(`univariate-colorsize-continuous-renderer:invalid-parameters`,`'symbolOptions' only apply to layers with 'point' or 'polygon' geometryType`)}let s=await E({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),c=b(a,s,`univariate-colorsize-continuous-renderer:invalid-parameters`);if(c)throw c;return{...r,layer:a}}function z(e){let t={...e},n={...t.sizeOptions};return delete t.sizeOptions,delete t.colorOptions,delete n.sizeOptimizationEnabled,{...t,...n}}async function B(t){let n=`regenerate-univariate-color-size-renderer`;await m(t,n);let r=await h(t);if(g(r)!==`univariate-color-size`)throw new e(`${n}:invalid-parameters`,`Renderer is invalid`);let{layer:i,forBinning:a,filter:o,view:s,signal:c}=t,l=p(r,`color`)?.dataSeriesName??p(r,`size`)?.dataSeriesName,u=p(r,`color`)?.dataSeriesCalculationName??p(r,`size`)?.dataSeriesCalculationName,{field:d,normalizationField:f,valueExpression:y,valueExpressionTitle:b}=r,x=_(r),S=v(r),C=r.authoringInfo?.univariateTheme,w=await R({layer:i,field:d,normalizationField:f,valueExpression:y,valueExpressionTitle:b,outlineOptimizationEnabled:x,theme:C,colorOptions:{isContinuous:C===`above-and-below`?r.visualVariables?.some(e=>e.type===`color`):void 0},sizeOptions:{sizeOptimizationEnabled:S},dataSeriesName:l,dataSeriesCalculationName:u,forBinning:a,filter:o,view:s,signal:c});return{...t,creatorParameters:w,renderer:r}}function V(e,t){`type`in e&&e.type===`cim`?M(e,t):`type`in e&&e.type.includes(`3d`)?e.symbolLayers.forEach(e=>{`material`in e&&e.material!=null&&`color`in e.material&&(e.material?e.material.color=t:e.material=new N({color:t}))}):`color`in e&&(e.color=t)}function H(e,t,n){if((t?.symbolStyle||t?.symbols)&&(n===`point`||n===`polygon`))return t.symbols||j(t.symbolStyle);let r=e.classBreakInfos[0].symbol;return{above:r.clone(),below:r.clone()}}function U(e,t,r){let i=r.symbolOptions,a=r.layer,o=i?.symbols?`custom`:i?.symbolStyle,s=r.colorOptions?.isContinuous;if(W(e,t,s),o||!s){let r=t.size.visualVariables[0].stops,{above:c,below:l}=H(e,i,a.geometryType);if(!s){let e=t.color.colorScheme.colors,n=e[0],r=e[e.length-1];V(c,r),V(l,n)}e.classBreakInfos=[new n({minValue:-P,maxValue:r[2].value,symbol:l}),new n({minValue:r[2].value,maxValue:P,symbol:c})],o&&e.authoringInfo&&(e.authoringInfo.univariateSymbolStyle=o)}}function W(e,t,n=!0){let r=t?.authoringInfo?.clone(),i=r?.visualVariables?.some(e=>e.theme===`reference-size`)?[]:t.size.visualVariables.map(e=>e.clone());n?i.push(t.color.visualVariable.clone()):r.visualVariables=r.visualVariables?.filter(e=>e.type===`size`),e.visualVariables&&i.push(...e.visualVariables.filter(e=>`target`in e&&e.target===`outline`).map(e=>e.clone())),e.authoringInfo=r,e.visualVariables=i}function G(e){let t={...e},n=t.symbolType,r=!!n?.includes(`3d-volumetric`);delete t.symbolType,delete t.defaultSymbolEnabled;let i=t;return i.worldScale=r,r&&(i.sizeOptions={...i.sizeOptions},i.sizeOptions.axis=n===`3d-volumetric-uniform`?`all`:`height`),i}async function K(e,t,n,a){let o=t[0],s=t[1],c=Math.round((s-o)/2)+o,l=e.clone();l.stops=[new r({value:n[0],size:s}),new r({value:n[1],size:c}),new r({value:n[2],size:o}),new r({value:n[3],size:c}),new r({value:n[4],size:s})],e.stops=[new r({value:a[0],size:i(l,a[0])}),new r({value:a[1],size:i(l,a[1])}),new r({value:a[2],size:i(l,a[2])}),new r({value:a[3],size:i(l,a[3])}),new r({value:a[4],size:i(l,a[4])})]}async function q(e,t,n,r,i){let a=e.find(e=>e.axis!==`width-and-depth`&&!e.target),o=typeof a?.minSize==`number`?a?.minSize:null,s=typeof a?.maxSize==`number`?a?.maxSize:null;if(a?.minDataValue!=null&&o!=null&&s!=null){if(!r)a.minDataValue=t.stops[0].value,a.maxDataValue=t.stops[t.stops.length-1].value;else if(r===`above-and-below`){a.minDataValue=null,a.maxDataValue=null,a.minSize=null,a.maxSize=null;let e=x(n,i),r=S(e,n);await K(a,[o,s],e,r),t.stops.forEach((e,t)=>e.value=r[t])}else{let{minDataValue:e,maxDataValue:n}=a,r=C(e,n,5);t.stops.forEach((e,t)=>e.value=r[t]),a.minDataValue=r[0],a.maxDataValue=r[r.length-1]}}}function J(e,n,r){let{theme:i,minValue:a,maxValue:o}=e,s=n.authoringInfo.visualVariables[0].clone(),c=r.authoringInfo.visualVariables[0].clone(),{stops:l}=n.visualVariable;return i===`above-and-below`?(s.minSliderValue=c.minSliderValue=a??l[0].value,s.maxSliderValue=c.maxSliderValue=o??l.at(-1)?.value,c.theme=`above-and-below`):(!i||i===`high-to-low`)&&c.theme===`reference-size`&&c.sizeStops?.length===2&&(c.sizeStops[0].value=l[0].value,c.sizeStops[1].value=l.at(-1)?.value),new t({type:`univariate-color-size`,univariateTheme:i,visualVariables:[s,c]})}async function Y(e){let t=await F(e),n=await a(L(t)),{visualVariable:r,statistics:i}=n,o=await s(I(t,i)),c=o.visualVariables,l=e.layer,u=e.field?l.getField(e.field):null;return await q(c,r,i,t.theme,T(u)),{basemapId:o.basemapId,basemapTheme:o.basemapTheme,statistics:i,defaultValuesUsed:n.defaultValuesUsed,color:{visualVariable:r,colorScheme:n.colorScheme},size:{visualVariables:c,sizeScheme:o.sizeScheme},authoringInfo:J(t,n,o)}}async function X(e){return Z(e)}async function Z(e){let t=await R(e),{renderer:n,statistics:r,defaultValuesUsed:i}=await o(z(t)),a=G(t);a.statistics=r;let s=await Y(a);return t.theme===`above-and-below`?U(n,s,t):W(n,s),{renderer:n,statistics:r,defaultValuesUsed:i,color:t.colorOptions?.isContinuous||t.theme!==`above-and-below`?s.color:null,size:s.size,basemapId:s.basemapId,basemapTheme:s.basemapTheme}}async function Q(e){let{creatorParameters:t}=await B(e),{layer:n,field:r,theme:i,colorOptions:o,valueExpression:m,valueExpressionTitle:h}=t,{renderer:g,statistics:_}=await c(e),v=await F({...G(t),statistics:_}),y=await a(L(v)),b=y.visualVariable,x=(await s(I(v))).visualVariables,S=r?n.getField(r):null;await q(x,b,_,i,T(S));let C=o?.isContinuous||i!==`above-and-below`,w=g.visualVariables?.find(l);g.valueExpression=m??null,g.valueExpressionTitle=h??null,C&&w?.stops&&(w.stops.forEach((e,t)=>e.value=b.stops[t].value),w.valueExpression=b.valueExpression??null,w.valueExpressionTitle=b.valueExpressionTitle??null,u(g,y.authoringInfo,`color`)),d(g,x,f);let E=p(g,`size`);if((!i||i===`high-to-low`)&&E?.theme===`reference-size`&&E.sizeStops?.length===2){let{stops:e}=b;E.sizeStops[0].value=e[0].value,E.sizeStops[1].value=e.at(-1)?.value}if(i===`above-and-below`&&x[0]?.stops){let e=x[0].stops;g.classBreakInfos[0].maxValue=e[2].value,g.classBreakInfos[1].minValue=e[2].value}return{renderer:g}}export{X as createContinuousRenderer,Z as createRenderer,Y as createVisualVariables,Q as regenerateRenderer};
|
|
2
|
+
import e from"../../core/Error.js";import t from"../../renderers/support/AuthoringInfo.js";import n from"../../renderers/support/ClassBreakInfo.js";import r from"../../renderers/visualVariables/support/SizeStop.js";import{getSize as i}from"../../renderers/visualVariables/support/visualVariableUtils.js";import{createVisualVariable as a}from"./color.js";import{createContinuousRenderer as o,createVisualVariables as s,regenerateContinuousRenderer as c}from"./size.js";import{isColorVV as l,updateAuthoringInfoVisualVariable as u,spliceVisualVariables as d,findSizeVVIndex as f,getAuthoringInfoVisualVariable as p,processRegenerateParams as m,getRendererToUpdate as h,getStyleType as g,hasOutlineVV as _,hasScaleDependentSizeVV as v}from"./support/regenerateUtils.js";import{resolveDataSeriesInfo as y}from"./support/timeSeriesUtils.js";import{verifyBasicFieldValidity as b,createStopValuesForAboveBelow as x,clampAboveAndBelowStopValues as S,createDefaultStopValues as C}from"./support/utils.js";import{verifyBinningParams as w}from"../support/binningUtils.js";import{isAnyDateField as T,getFieldsList as E}from"../support/utils.js";import{binningCapableLayerTypes as D,featureCapableLayerTypes as O,createLayerAdapter as k,getLayerTypeLabels as A}from"../support/adapters/support/layerUtils.js";import{getAboveAndBelowSymbols as j}from"../symbology/support/aboveAndBelowUtils.js";import{applyCIMSymbolColor as M}from"../../symbols/support/cimSymbolUtils.js";import N from"../../symbols/support/Symbol3DMaterial.js";const P=2**53-1;async function F(t){let n=y({...t});if(!(n?.layer&&(n.field||n.valueExpression||n.sqlExpression)))throw new e(`univariate-colorsize-visual-variables:missing-parameters`,`'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required`);if(n.valueExpression&&!n.sqlExpression&&!n.view)throw new e(`univariate-colorsize-visual-variables:missing-parameters`,`View is required when 'valueExpression' is specified`);if(n.theme===`above-and-below`&&n.sizeOptions?.sizeOptimizationEnabled)throw new e(`univariate-colorsize-visual-variables:invalid-parameters`,`sizeOptimizationEnabled cannot be true for 'above-and-below' theme`);n.forBinning&&w(n,`univariate-colorsize-visual-variables`);let r={...n,layer:n.layer},i=n.forBinning?D:O,a=k(r.layer,i,n.forBinning);if(!a)throw new e(`univariate-colorsize-visual-variables:invalid-parameters`,`'layer' must be one of these types: `+A(i).join(`, `));r.layer=a,r.theme=!r.theme&&!r.colorOptions?.theme?`high-to-low`:r.theme;let o=r.signal==null?null:{signal:r.signal};await a.load(o);let s=await E({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),c=b(a,s,`univariate-colorsize-visual-variables:invalid-parameters`);if(c)throw c;return r}function I(e,t){let n={...e},{sizeOptions:r,theme:i}=n,a=n.legendOptions||n.sizeOptions?.legendOptions;return delete n.sizeOptions,delete n.colorOptions,{...n,...r,statistics:t||n.statistics,theme:i===`above-and-below`?null:i,legendOptions:a}}function L(e,t){let n={...e},r=n.colorOptions,i=n.theme||r?.theme,a=n.legendOptions||n.colorOptions?.legendOptions;return delete n.sizeOptions,delete n.colorOptions,{...n,...r,statistics:t||n.statistics,theme:i,legendOptions:a}}async function R(t){let n=y({...t});if(!(n?.layer&&(n.field||n.valueExpression||n.sqlExpression)))throw new e(`univariate-colorsize-continuous-renderer:missing-parameters`,`'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required`);if(n.valueExpression&&!n.sqlExpression&&!n.view)throw new e(`univariate-colorsize-continuous-renderer:missing-parameters`,`View is required when 'valueExpression' is specified`);n.forBinning&&w(n,`univariate-colorsize-continuous-renderer`);let r={...n,layer:n.layer};r.symbolType=r.symbolType||`2d`,r.colorOptions||={},r.colorOptions.isContinuous=r.colorOptions.isContinuous??!1;let i=n.forBinning?D:O,a=k(r.layer,i,n.forBinning);if(!a)throw new e(`univariate-colorsize-continuous-renderer:invalid-parameters`,`'layer' must be one of these types: `+A(i).join(`, `));let o=r.signal==null?null:{signal:r.signal};if(await a.load(o),r.theme===`above-and-below`&&r.symbolOptions){if(r.symbolType.includes(`3d-volumetric`))throw new e(`univariate-colorsize-continuous-renderer:invalid-parameters`,`'symbolOptions' is applicable for '2d' and '3d-flat' 'symbolType' only`);if(a.geometryType!==`point`&&a.geometryType!==`polygon`)throw new e(`univariate-colorsize-continuous-renderer:invalid-parameters`,`'symbolOptions' only apply to layers with 'point' or 'polygon' geometryType`)}let s=await E({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),c=b(a,s,`univariate-colorsize-continuous-renderer:invalid-parameters`);if(c)throw c;return{...r,layer:a}}function z(e){let t={...e},n={...t.sizeOptions};return delete t.sizeOptions,delete t.colorOptions,delete n.sizeOptimizationEnabled,{...t,...n}}async function B(t){let n=`regenerate-univariate-color-size-renderer`;await m(t,n);let r=await h(t);if(g(r)!==`univariate-color-size`)throw new e(`${n}:invalid-parameters`,`Renderer is invalid`);let{layer:i,forBinning:a,filter:o,view:s,signal:c}=t,l=p(r,`color`)?.dataSeriesName??p(r,`size`)?.dataSeriesName,u=p(r,`color`)?.dataSeriesCalculationName??p(r,`size`)?.dataSeriesCalculationName,{field:d,normalizationField:f,valueExpression:y,valueExpressionTitle:b}=r,x=_(r),S=v(r),C=r.authoringInfo?.univariateTheme,w=await R({layer:i,field:d,normalizationField:f,valueExpression:y,valueExpressionTitle:b,outlineOptimizationEnabled:x,theme:C,colorOptions:{isContinuous:C===`above-and-below`?r.visualVariables?.some(e=>e.type===`color`):void 0},sizeOptions:{sizeOptimizationEnabled:S},dataSeriesName:l,dataSeriesCalculationName:u,forBinning:a,filter:o,view:s,signal:c});return{...t,creatorParameters:w,renderer:r}}function V(e,t){`type`in e&&e.type===`cim`?M(e,t):`type`in e&&e.type.includes(`3d`)?e.symbolLayers.forEach(e=>{`material`in e&&e.material!=null&&`color`in e.material&&(e.material?e.material.color=t:e.material=new N({color:t}))}):`color`in e&&(e.color=t)}function H(e,t,n){if((t?.symbolStyle||t?.symbols)&&(n===`point`||n===`polygon`))return t.symbols||j(t.symbolStyle);let r=e.classBreakInfos[0].symbol;return{above:r.clone(),below:r.clone()}}function U(e,t,r){let i=r.symbolOptions,a=r.layer,o=i?.symbols?`custom`:i?.symbolStyle,s=r.colorOptions?.isContinuous;if(W(e,t,s),o||!s){let r=t.size.visualVariables[0].stops,{above:c,below:l}=H(e,i,a.geometryType);if(!s){let e=t.color.colorScheme.colors,n=e[0],r=e[e.length-1];V(c,r),V(l,n)}e.classBreakInfos=[new n({minValue:-P,maxValue:r[2].value,symbol:l}),new n({minValue:r[2].value,maxValue:P,symbol:c})],o&&e.authoringInfo&&(e.authoringInfo.univariateSymbolStyle=o)}}function W(e,t,n=!0){let r=t?.authoringInfo?.clone(),i=r?.visualVariables?.some(e=>e.theme===`reference-size`)?[]:t.size.visualVariables.map(e=>e.clone());n?i.push(t.color.visualVariable.clone()):r.visualVariables=r.visualVariables?.filter(e=>e.type===`size`),e.visualVariables&&i.push(...e.visualVariables.filter(e=>`target`in e&&e.target===`outline`).map(e=>e.clone())),e.authoringInfo=r,e.visualVariables=i}function G(e){let t={...e},n=t.symbolType,r=!!n?.includes(`3d-volumetric`);delete t.symbolType,delete t.defaultSymbolEnabled;let i=t;return i.worldScale=r,r&&(i.sizeOptions={...i.sizeOptions},i.sizeOptions.axis=n===`3d-volumetric-uniform`?`all`:`height`),i}async function K(e,t,n,a){let o=t[0],s=t[1],c=Math.round((s-o)/2)+o,l=e.clone();l.stops=[new r({value:n[0],size:s}),new r({value:n[1],size:c}),new r({value:n[2],size:o}),new r({value:n[3],size:c}),new r({value:n[4],size:s})],e.stops=[new r({value:a[0],size:i(l,a[0])}),new r({value:a[1],size:i(l,a[1])}),new r({value:a[2],size:i(l,a[2])}),new r({value:a[3],size:i(l,a[3])}),new r({value:a[4],size:i(l,a[4])})]}async function q(e,t,n,r,i){let a=e.find(e=>e.axis!==`width-and-depth`&&!e.target),o=typeof a?.minSize==`number`?a?.minSize:null,s=typeof a?.maxSize==`number`?a?.maxSize:null;if(a?.minDataValue!=null&&o!=null&&s!=null){if(!r)a.minDataValue=t.stops[0].value,a.maxDataValue=t.stops[t.stops.length-1].value;else if(r===`above-and-below`){a.minDataValue=null,a.maxDataValue=null,a.minSize=null,a.maxSize=null;let e=x(n,i),r=S(e,n);await K(a,[o,s],e,r),t.stops.forEach((e,t)=>e.value=r[t])}else{let{minDataValue:e,maxDataValue:n}=a,r=C(e,n,5);t.stops.forEach((e,t)=>e.value=r[t]),a.minDataValue=r[0],a.maxDataValue=r[r.length-1]}}}function J(e,n,r){let{theme:i,minValue:a,maxValue:o}=e,s=n.authoringInfo.visualVariables[0].clone(),c=r.authoringInfo.visualVariables[0].clone(),{stops:l}=n.visualVariable;return i===`above-and-below`?(s.minSliderValue=c.minSliderValue=a??l[0].value,s.maxSliderValue=c.maxSliderValue=o??l.at(-1)?.value,c.theme=`above-and-below`):i&&i!==`high-to-low`||c.theme!==`reference-size`||c.sizeStops?.length!==2||(c.sizeStops[0].value=l[0].value,c.sizeStops[1].value=l.at(-1)?.value),new t({type:`univariate-color-size`,univariateTheme:i,visualVariables:[s,c]})}async function Y(e){let t=await F(e),n=await a(L(t)),{visualVariable:r,statistics:i}=n,o=await s(I(t,i)),c=o.visualVariables,l=e.layer,u=e.field?l.getField(e.field):null;return await q(c,r,i,t.theme,T(u)),{basemapId:o.basemapId,basemapTheme:o.basemapTheme,statistics:i,defaultValuesUsed:n.defaultValuesUsed,color:{visualVariable:r,colorScheme:n.colorScheme},size:{visualVariables:c,sizeScheme:o.sizeScheme},authoringInfo:J(t,n,o)}}async function X(e){return Z(e)}async function Z(e){let t=await R(e),{renderer:n,statistics:r,defaultValuesUsed:i}=await o(z(t)),a=G(t);a.statistics=r;let s=await Y(a);return t.theme===`above-and-below`?U(n,s,t):W(n,s),{renderer:n,statistics:r,defaultValuesUsed:i,color:t.colorOptions?.isContinuous||t.theme!==`above-and-below`?s.color:null,size:s.size,basemapId:s.basemapId,basemapTheme:s.basemapTheme}}async function Q(e){let{creatorParameters:t}=await B(e),{layer:n,field:r,theme:i,colorOptions:o,valueExpression:m,valueExpressionTitle:h}=t,{renderer:g,statistics:_}=await c(e),v=await F({...G(t),statistics:_}),y=await a(L(v)),b=y.visualVariable,x=(await s(I(v))).visualVariables,S=r?n.getField(r):null;await q(x,b,_,i,T(S));let C=o?.isContinuous||i!==`above-and-below`,w=g.visualVariables?.find(l);g.valueExpression=m??null,g.valueExpressionTitle=h??null,C&&w?.stops&&(w.stops.forEach((e,t)=>e.value=b.stops[t].value),w.valueExpression=b.valueExpression??null,w.valueExpressionTitle=b.valueExpressionTitle??null,u(g,y.authoringInfo,`color`)),d(g,x,f);let E=p(g,`size`);if((!i||i===`high-to-low`)&&E?.theme===`reference-size`&&E.sizeStops?.length===2){let{stops:e}=b;E.sizeStops[0].value=e[0].value,E.sizeStops[1].value=e.at(-1)?.value}if(i===`above-and-below`&&x[0]?.stops){let e=x[0].stops;g.classBreakInfos[0].maxValue=e[2].value,g.classBreakInfos[1].minValue=e[2].value}return{renderer:g}}export{X as createContinuousRenderer,Z as createRenderer,Y as createVisualVariables,Q as regenerateRenderer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{getDataValues as e,quantizeFeatures as t,calculateHeatmapStats as n}from"./utils.js";import{calculateClassBreaks as r,resolveCBResult as i,calculateHistogram as a,
|
|
2
|
+
import{getDataValues as e,quantizeFeatures as t,calculateHeatmapStats as n}from"./utils.js";import{calculateClassBreaks as r,resolveCBResult as i,calculateHistogram as a,calculateStringStatistics as o,calculateStatistics as s,processSummaryStatisticsResult as c,calculateUniqueValuesCount as l,createUVResult as u,isNullCountSupported as d}from"../../../statistics/utils.js";async function f(t){let{attribute:n,features:r}=t,{normalizationType:i,normalizationField:a,minValue:l,maxValue:u,fieldType:f,outStatisticTypes:p}=n,m=await e({field:n.field,valueExpression:n.valueExpression,normalizationType:i,normalizationField:a,normalizationTotal:n.normalizationTotal,viewInfoParams:n.viewInfoParams,timeZone:n.timeZone,fieldInfos:n.fieldInfos},r),h=d({normalizationType:i,normalizationField:a,minValue:l,maxValue:u}),g={value:.5,fieldType:f},_=f===`esriFieldTypeString`?o({values:m,supportsNullCount:h,percentileParams:g,outStatisticTypes:p}):s({values:m,minValue:l,maxValue:u,useSampleStdDev:!i,supportsNullCount:h,percentileParams:g,outStatisticTypes:p});return c(_,p,f===`esriFieldTypeDate`)}async function p(t){let{attribute:n,features:r}=t,i=await e({field:n.field,field2:n.field2,field3:n.field3,fieldDelimiter:n.fieldDelimiter,valueExpression:n.valueExpression,viewInfoParams:n.viewInfoParams,timeZone:n.timeZone,fieldInfos:n.fieldInfos},r,!1),a=l(i);return u(a,n.domains,n.returnAllCodedValues,n.fieldDelimiter)}async function m(t){let{attribute:n,features:a}=t,{field:o,normalizationType:s,normalizationField:c,normalizationTotal:l,classificationMethod:u}=n,d=await e({field:o,valueExpression:n.valueExpression,normalizationType:s,normalizationField:c,normalizationTotal:l,viewInfoParams:n.viewInfoParams,timeZone:n.timeZone,fieldInfos:n.fieldInfos},a),f=r(d,{field:o,normalizationType:s,normalizationField:c,normalizationTotal:l,classificationMethod:u,standardDeviationInterval:n.standardDeviationInterval,numClasses:n.numClasses,minValue:n.minValue,maxValue:n.maxValue});return i(f,u)}async function h(t){let{attribute:n,features:r}=t,{field:i,normalizationType:o,normalizationField:s,normalizationTotal:c,classificationMethod:l}=n,u=await e({field:i,valueExpression:n.valueExpression,sqlExpression:n.sqlExpression,normalizationType:o,normalizationField:s,normalizationTotal:c,viewInfoParams:n.viewInfoParams,timeZone:n.timeZone,fieldInfos:n.fieldInfos},r);return a(u,{field:i,normalizationType:o,normalizationField:s,normalizationTotal:c,classificationMethod:l,standardDeviationInterval:n.standardDeviationInterval,numBins:n.numBins,minValue:n.minValue,maxValue:n.maxValue})}async function g(e){let{attribute:r,features:i}=e,{field:a,radius:o,transform:s,spatialReference:c}=r,l=r.size??[0,0],u=t(i??[],s,c,l);return n(u,o??void 0,a,l[0],l[1])}export{m as classBreaks,g as heatmapStatistics,h as histogram,f as summaryStatistics,p as uniqueValues};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../../core/Error.js";import{pt2px as t}from"../../../core/screenUtils.js";import{timeOnlyToMilliseconds as n}from"../../../core/timeUtils.js";import r from"../../../geometry/Point.js";import i from"../../../geometry/SpatialReference.js";import{quantizePoint as a}from"../../../geometry/support/quantizationUtils.js";import{isWrappable as o,getInfo as s}from"../../../geometry/support/spatialReferenceUtils.js";import c from"../../../layers/support/FieldsIndex.js";import{isTimeOnlyField as l,isNumericField as u,numericTypes as d}from"../../../layers/support/fieldUtils.js";import{createValueFunction as f,evaluateDensityKernel as p}from"../../../renderers/support/heatmapUtils.js";import{isAnyDateField as m,getWhereClause as h}from"../../support/utils.js";import{processNullValue as g,getNormalizedValue as _}from"../../../statistics/utils.js";import{loadArcade as v}from"../../../support/loadArcade.js";let y;function b(e,t,n){return e.x<0?e.x+=t:e.x>n&&(e.x-=t),e}function x(e,t,n,i){let c=o(n)?s(n):null,l=c?Math.round((c.valid[1]-c.valid[0])/t.scale[0]):null;return e.map(e=>{let n=new r(e.geometry);return a(t,n,n),e.geometry=c?b(n,l??0,i[0]):n,e})}function S(e,n=18,r,i,a){let o=new Float64Array(i*a);n=Math.round(t(n));let s=1/0,c=-1/0,l=f(r);for(let{geometry:t,attributes:r}of e){let{x:e,y:u}=t,d=Math.max(0,e-n),f=Math.max(0,u-n),m=Math.min(a,u+n),h=Math.min(i,e+n),g=+l(r);for(let t=f;t<m;t++)for(let r=d;r<h;r++){let a=t*i+r,l=p(r-e,t-u,n)*g,d=o[a]+=l;s=Math.min(s,d),c=Math.max(c,d)}}return{min:s,max:c}}async function C(e,t,r=!0){if(!t)return[];let{field:a,field2:o,field3:s,fieldDelimiter:u,sqlExpression:d,fieldInfos:f,timeZone:p}=e,b=a&&f?.find(e=>e.name.toLowerCase()===a.toLowerCase()),x=b?l(b):!1,S=b?m(b):!1,C=e.valueExpression,w=e.normalizationType,T=e.normalizationField,E=e.normalizationTotal,D=[],O=e.viewInfoParams,k=null,A;if(C){if(!y){let{arcadeUtils:e}=await v();y=e}y.hasGeometryOperations(C)&&await y.enableGeometryOperations(),k=y.createFunction(C),A=O?y.getViewInfo({viewingMode:O.viewingMode,scale:O.scale,spatialReference:new i(O.spatialReference)}):null}let j=e.fieldInfos,M=!(t[0]&&`declaredClass`in t[0]&&t[0].declaredClass===`esri.Graphic`)&&j?{fields:j}:null;for await(let e of t){let t=e.attributes,i;if(d){let t=await h(d,new c(j));t&&(i=t.calculateValue(e.attributes))}else if(C){let t=M?Object.assign({},e,{layer:M}):e,n=y.createExecContext(t,A,p);i=y.executeFunction(k,n)}else t&&(i=t[a],o?(i=`${g(i)}${u}${g(t[o])}`,s&&(i=`${i}${u}${g(t[s])}`)):typeof i==`string`&&r&&(S?i=i?new Date(i).getTime():null:x&&(i=i?n(i):null)));if(w&&typeof i==`number`&&isFinite(i)){let e=t&&parseFloat(t[T]);i=_(i,w,e,E)}D.push(i)}return D}function w(e){let t=e.field,n=e.normalizationType,r=e.normalizationField,i;return n===`field`?i=`(NOT `+r+` = 0)`:(n===`log`||n===`natural-log`||n===`square-root`)&&(i=`(${t} > 0)`),i}function T(e,t,n){let r=t==null?``:e+` >= `+t,i=n==null?``:e+` <= `+n,a=``;return a=r&&i?O(r,i):r||i,a?`(`+a+`)`:``}function E(t,n,r,i){let a;return n?
|
|
2
|
+
import e from"../../../core/Error.js";import{pt2px as t}from"../../../core/screenUtils.js";import{timeOnlyToMilliseconds as n}from"../../../core/timeUtils.js";import r from"../../../geometry/Point.js";import i from"../../../geometry/SpatialReference.js";import{quantizePoint as a}from"../../../geometry/support/quantizationUtils.js";import{isWrappable as o,getInfo as s}from"../../../geometry/support/spatialReferenceUtils.js";import c from"../../../layers/support/FieldsIndex.js";import{isTimeOnlyField as l,isNumericField as u,numericTypes as d}from"../../../layers/support/fieldUtils.js";import{createValueFunction as f,evaluateDensityKernel as p}from"../../../renderers/support/heatmapUtils.js";import{isAnyDateField as m,getWhereClause as h}from"../../support/utils.js";import{processNullValue as g,getNormalizedValue as _}from"../../../statistics/utils.js";import{loadArcade as v}from"../../../support/loadArcade.js";let y;function b(e,t,n){return e.x<0?e.x+=t:e.x>n&&(e.x-=t),e}function x(e,t,n,i){let c=o(n)?s(n):null,l=c?Math.round((c.valid[1]-c.valid[0])/t.scale[0]):null;return e.map(e=>{let n=new r(e.geometry);return a(t,n,n),e.geometry=c?b(n,l??0,i[0]):n,e})}function S(e,n=18,r,i,a){let o=new Float64Array(i*a);n=Math.round(t(n));let s=1/0,c=-1/0,l=f(r);for(let{geometry:t,attributes:r}of e){let{x:e,y:u}=t,d=Math.max(0,e-n),f=Math.max(0,u-n),m=Math.min(a,u+n),h=Math.min(i,e+n),g=+l(r);for(let t=f;t<m;t++)for(let r=d;r<h;r++){let a=t*i+r,l=p(r-e,t-u,n)*g,d=o[a]+=l;s=Math.min(s,d),c=Math.max(c,d)}}return{min:s,max:c}}async function C(e,t,r=!0){if(!t)return[];let{field:a,field2:o,field3:s,fieldDelimiter:u,sqlExpression:d,fieldInfos:f,timeZone:p}=e,b=a&&f?.find(e=>e.name.toLowerCase()===a.toLowerCase()),x=b?l(b):!1,S=b?m(b):!1,C=e.valueExpression,w=e.normalizationType,T=e.normalizationField,E=e.normalizationTotal,D=[],O=e.viewInfoParams,k=null,A;if(C){if(!y){let{arcadeUtils:e}=await v();y=e}y.hasGeometryOperations(C)&&await y.enableGeometryOperations(),k=y.createFunction(C),A=O?y.getViewInfo({viewingMode:O.viewingMode,scale:O.scale,spatialReference:new i(O.spatialReference)}):null}let j=e.fieldInfos,M=!(t[0]&&`declaredClass`in t[0]&&t[0].declaredClass===`esri.Graphic`)&&j?{fields:j}:null;for await(let e of t){let t=e.attributes,i;if(d){let t=await h(d,new c(j));t&&(i=t.calculateValue(e.attributes))}else if(C){let t=M?Object.assign({},e,{layer:M}):e,n=y.createExecContext(t,A,p);i=y.executeFunction(k,n)}else t&&(i=t[a],o?(i=`${g(i)}${u}${g(t[o])}`,s&&(i=`${i}${u}${g(t[s])}`)):typeof i==`string`&&r&&(S?i=i?new Date(i).getTime():null:x&&(i=i?n(i):null)));if(w&&typeof i==`number`&&isFinite(i)){let e=t&&parseFloat(t[T]);i=_(i,w,e,E)}D.push(i)}return D}function w(e){let t=e.field,n=e.normalizationType,r=e.normalizationField,i;return n===`field`?i=`(NOT `+r+` = 0)`:(n===`log`||n===`natural-log`||n===`square-root`)&&(i=`(${t} > 0)`),i}function T(e,t,n){let r=t==null?``:e+` >= `+t,i=n==null?``:e+` <= `+n,a=``;return a=r&&i?O(r,i):r||i,a?`(`+a+`)`:``}function E(t,n,r,i){let a;return n?n.name!==t.objectIdField&&i.includes(n.type)||(a=new e(r,`'field' should be one of these types: `+i.join(`,`))):a=new e(r,`'field' is not defined in the layer schema`),a}function D(t,n,r){let i;return n?n.name!==t.objectIdField&&u(n)||(i=new e(r,`'field' should be one of these numeric types: `+d.join(`,`))):i=new e(r,`'field' is not defined in the layer schema`),i}function O(e,t){let n=e??``;return t!=null&&t&&(n=n?`(`+n+`) AND (`+t+`)`:t),n}function k(t,n){if(t&&t.spatialRelationship!==`intersects`)return new e(n,`Only 'intersects' spatialRelationship is supported for featureFilter`)}function A(t,n,r){let i=j({layer:t,fields:n});if(i.length)return new e(r,`Unknown fields: `+i.join(`, `)+`. You can only use fields defined in the layer schema`);let a=M({layer:t,fields:n});if(a.length)return new e(r,`Unsupported fields: `+a.join(`, `)+`. You can only use fields that can be fetched i.e. AdapterFieldUsageInfo.supportsStatistics must be true`)}function j(e){let t=e.layer;return e.fields.filter(e=>!t.getField(e))}function M(e){let t=e.layer;return e.fields.filter(e=>{let n=t.getFieldUsageInfo(e);return!n||!n.supportsStatistics})}function N(e,t,n){let r=[],i=[],a=[],o=[],s=[];e.forEach((e,t)=>{let c=e.field?`field`:`expression`,l=e.field||e.valueExpression;e.field?(s.push(l),i.push(`var ${c}${t} = Number($feature["${l}"]);`)):(r.push(`function getValueForExpr${t}() {\n ${l} \n}`),i.push(`var ${c}${t} = Number(getValueForExpr${t}());`)),n||a.push(`${c}${t} = IIf(${c}${t} < 0, 0, ${c}${t});`),o.push(`${c}${t}`)});let c=r.length?null:s.reduce((e,t)=>`${e} + ${t}`),l=null;return!t&&!n?c&&(l=`(( ${c} ) > 0)`):t?n||c&&(l=`(( ${c} ) >= 0)`):c&&(l=`(( ${c} ) <> 0)`),{valueExpression:[r.length?r.join(`
|
|
3
3
|
`):``,i.join(`
|
|
4
4
|
`),a.join(`
|
|
5
5
|
`),`var total = ${o.join(` + `)};`,`return total;`].filter(Boolean).join(`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import{pickRandom as n}from"../../../core/arrayUtils.js";import r from"../../../core/Error.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import{property as a,subclass as o}from"../../../core/accessorSupport/decorators.js";import{isHostedAgolService as s}from"../../../layers/support/arcgisLayerUrl.js";import{isTimeOnlyField as c,isNumericField as l}from"../../../layers/support/fieldUtils.js";import{generateRenderer as u}from"../../../rest/generateRenderer.js";import d from"../../../rest/support/GenerateRendererParameters.js";import f from"../../../rest/support/PivotQuery.js";import p from"../../../rest/support/StatisticDefinition.js";import m from"../../../rest/support/UniqueValueDefinition.js";import h from"../../../rest/support/UnPivotDefinition.js";import{getArcadeForPredominantCategory as g,getSQLForPredominantCategoryName as _}from"../../statistics/support/predominanceUtils.js";import{mergeWhereClauses as v,getRangeExpr as y,getSQLFilterForNormalization as b}from"../../statistics/support/utils.js";import{WorkerClient as x}from"../../statistics/support/WorkerClient.js";import{isAnyDateField as S,isIntegerField as C,castIntegerFieldToFloat as w,fieldDelimiter as T}from"../utils.js";import E from"./InMemoryLayerAdapter.js";import{getQueryParamsForExpr as ee,getDataRange as D,getAttributeBinsQuery as O,processQueryAttributeBinsResult as k,binParamsFromGenRend as A}from"./support/histogramUtils.js";import{ensureFeaturesJSON as j,getSummaryStatsQuery as M,getSummaryStatisticsFromFeatureSet as N,getSummaryStatsQueryForFields as P,getSummaryStatsPivotQuery as F,getUVQuery as I,getUniqueValuesFromFeatureSet as L,defaultNumBins as R,updateQueryWithFeatureFilter as z,getHistogramFromFeatureSet as B,getFieldExpr as V,getDomainsForFields as H,getBins as U,getPredominantCategoriesFromUVInfos as W,getMissingFields as G}from"./support/utils.js";import{processSummaryStatisticsResult as K,createUVResult as q,getEqualIntervalBins as J,createClassBreaksDefinition as Y,resolveCBResult as X}from"../../../statistics/utils.js";import{getScaleToResolutionFactor as te}from"../../../views/2d/viewpointUtils.js";const Z=2e4;let Q=class extends E{constructor(){super(...arguments),this.adapterName=`feature-layer-adapter`}_isStatsSupportedOnService(){let e=this.layer;if(!e.capabilities?.query?.supportsStatistics||this.geometryType===`multipatch`&&!s(e.url)&&e.version<10.5)throw new r(`${this.adapterName}:not-supported`,`Layer does not support statistics query`);return Promise.resolve()}_fetchFeaturesFromService(e,t){return this.layer.queryFeatures(e,{signal:t}).then(e=>e.features)}_fetchFeaturesJSONFromService(e,t){return this._fetchFeaturesFromService(e,t).then(j)}_summaryStatsFromGenRend(e){let t=e.normalizationType,n=e.normalizationField;return this.classBreaks({field:e.field,numClasses:5,classificationMethod:`standard-deviation`,standardDeviationInterval:.25,normalizationType:t,normalizationField:t===`field`?n:void 0,minValue:e.minValue,maxValue:e.maxValue,filter:e.filter,signal:e.signal}).then(t=>{let n,r,i;if(t.classBreakInfos?.some(e=>(e.hasAvg&&(n=e),!!n)),n){let e=n.maxValue-n.minValue;r=n.minValue+e/2,i=e*4}let a={min:t.minValue,max:t.maxValue,avg:r,stddev:i};return K(a,e.outStatisticTypes)})}async _summaryStatsFromServiceQuery(e,t){await this._isStatsSupportedOnService(),e.normalizationType===`percent-of-total`&&(e.normalizationTotal=await this._getNormalizationTotal(e.field,e.normalizationType,e.filter));let n=S(t)||c(t),r=(`capabilities`in this.layer?this.layer.capabilities:null)?.query?.supportsPercentileStatistics??!1,i=M(this,e,t,r),a=await this.layer.queryFeatures(i,{signal:e.signal}),o=N(a,n);return K(o,e.outStatisticTypes)}async _summaryStatsForFieldsBasic(e){let{outStatisticTypes:t,fields:n}=e,r=[];for(let t=0;t<n.length;t+=50){let i=n.slice(t,t+50),a=P(this,e,i);r.push(this.layer.queryFeatures(a,{signal:e.signal}))}let i=(await Promise.all(r)).flatMap(e=>e.features).map(e=>e.attributes).reduce((e,t)=>Object.assign(e,t),{}),a={};for(let e in i){let t=e.match(/^(\w+)_value_/);if(i[e]!=null&&t)switch(t[1]){case`min`:a.min=a.min==null?i[e]:Math.min(a.min,i[e]);break;case`max`:a.max=a.max==null?i[e]:Math.max(a.max,i[e]);break;case`sum`:a.sum=(a.sum||0)+i[e];break;case`count`:a.count=(a.count||0)+i[e]}}return K(a,t)}async _summaryStatsForFieldsAdvanced(e,t){let{outStatisticTypes:n,fields:r}=e,i=n?.exclude?.includes(`variance`)||n?.include&&!n.include.includes(`variance`),a=n?.exclude?.includes(`stddev`)||n?.include&&!n.include.includes(`stddev`);if(t.sum==null||!t.count||i&&a)return t;t.avg=t.sum/t.count;let o=[];for(let n=0;n<r.length;n+=50){let i=r.slice(n,n+50),a=P(this,e,i);a.outStatistics=[];for(let e of i){let n=`sumOfSquares_${e}`,r=`(power(${C(this.layer,e)?w(e):e} - ${t.avg}, 2))`,i=new p({statisticType:`sum`,onStatisticField:r,outStatisticFieldName:n});a.outStatistics.push(i)}o.push(this.layer.queryFeatures(a,{signal:e.signal}))}return t.variance=(await Promise.all(o)).reduce((e,t)=>e+Object.values(t.features[0].attributes).reduce((e,t)=>e+t,0),0)/(t.count-1),t.stddev=Math.sqrt(t.variance),K(t,n)}async _summaryStatsForFields(e){let t=await this._summaryStatsForFieldsBasic(e);return this._summaryStatsForFieldsAdvanced(e,t)}async _summaryStatsUsingQueryPivot(e){await this._isStatsSupportedOnService();let t=(`capabilities`in this.layer?this.layer.capabilities:null)?.query?.supportsPercentileStatistics??!1,n=F(this,e,t),r=await this.layer.queryPivot(n,{signal:e.signal}),i=N(r,!1);return K(i,e.outStatisticTypes)}_uvFromGenRenderer(e,t){let n=e.field??void 0,r=new m({attributeField:n}),i=new d({classificationDefinition:r});return this.generateRenderer(i,e.signal).then(e=>{let t={},r=this.getField(n);return e.uniqueValues.forEach(e=>{let n=e.value;(n==null||n===``||typeof n==`string`&&(n.trim()===``||n.toLowerCase()===`<null>`))&&(n=null),t[n]==null?t[n]={count:e.count,data:l(r)&&n?Number(n):n}:t[n].count=t[n].count+e.count}),{count:t}}).then(n=>q(n,[t],e.returnAllCodedValues))}async _uvFromServiceQuery(e,t){return this._isStatsSupportedOnService().then(()=>this.layer.queryFeatures(I(this,e),{signal:e.signal})).then(t=>L(t,{layer:this,field:e.field,field2:e.field2,field3:e.field3,fieldDelimiter:T,view:e.view,signal:e.signal})).then(n=>q(n,t,e.returnAllCodedValues,T))}_getNormalizationTotal(e,t,n,r){return e&&t===`percent-of-total`?this.summaryStatistics({field:e,outStatisticTypes:{include:[`sum`]},filter:n,signal:r}).then(e=>e.sum):Promise.resolve(null)}_histogramForExpr(e){return this._getNormalizationTotal(e.field,e.normalizationType,e.filter,e.signal).then(t=>{let n=ee(e,this,t);return D(n,this,e.minValue,e.maxValue).then(r=>{let i=r.min,a=r.max;if(i==null||a==null)return{bins:[],minValue:i,maxValue:a,normalizationTotal:t};let o=e.numBins||R,s=J(i,a,o),c=$(n.sqlExpression,s,e.minValue!=null&&e.maxValue!=null),l=new p({statisticType:`count`,outStatisticFieldName:`countOFExpr`,onStatisticField:`1`}),u=this.layer.createQuery();return u.where=v(u.where,n.sqlWhere),u.sqlFormat=`standard`,u.outStatistics=[l],u.groupByFieldsForStatistics=[c],u.orderByFields=[c],z(u,e.filter),this._isStatsSupportedOnService().then(()=>this.layer.queryFeatures(u,{signal:n.signal})).then(e=>B(e,i,a,o,t))})})}async _histogramForFields(e){let{min:t,max:n}=await D({fields:e.fields,sqlWhere:e.sqlWhere,filter:e.filter,signal:e.signal},this,e.minValue,e.maxValue);if(t==null||n==null)return{bins:[],minValue:t,maxValue:n};let r=`newField`,i=e.numBins||R,a=$(r,J(t,n,i),e.minValue!=null&&e.maxValue!=null),o=new p({statisticType:`count`,outStatisticFieldName:`countOFExpr`,onStatisticField:r}),s=new f,{where:c,timeExtent:l}=this.createQuery();return s.where=v(c,e.sqlWhere),s.outPivots=[new h({sourceFields:e.fields,valueFieldName:r})],s.outStatistics=[o],s.groupByFieldsForStatistics=[a],s.orderByFields=[a],s.timeExtent=l,z(s,e.filter),this._isStatsSupportedOnService().then(()=>this.layer.queryPivot(s,{signal:e.signal})).then(e=>B(e,t,n,i))}async _histogramFromQueryAttributeBins(e){let{field:t,normalizationType:n,filter:r,signal:i}=e,a=await this._getNormalizationTotal(t,n,r,i),{query:o,min:s,max:c}=await O(e,this,a,this.createQuery());if(!o)return{bins:[],minValue:s,maxValue:c,normalizationTotal:a};let l=await this.layer.queryAttributeBins(o,{signal:i});return k(l,t?this.getField(t):null,{minValue:s,maxValue:c,normalizationTotal:a})}_classBreaksFromGenRend(e){let{field:t,normalizationType:n,normalizationField:r,normalizationTotal:i,signal:a}=e,o=b({field:t,normalizationType:n,normalizationField:r}),s=V({field:t,normalizationType:n,normalizationField:r,normalizationTotal:i,layer:this}),c=y(s,e.minValue,e.maxValue),l=Y({field:t,normalizationType:n,normalizationField:r,classificationMethod:e.classificationMethod,standardDeviationInterval:e.standardDeviationInterval,breakCount:e.numClasses||5}),u=new d({classificationDefinition:l});return u.where=v(o,c),this.generateRenderer(u,a).then(t=>X(t,e.classificationMethod))}async summaryStatistics(e){let{field:t,fields:n,normalizationType:a,valueExpression:o,sqlExpression:s,view:l,features:u,useFeaturesInView:d}=e,f=t?this.getField(t):null,p=S(f)||c(f),m=o&&!(s&&this.supportsSQLExpression),h=this._hasLocalSource||u||d,g=l?.type===`3d`;if(n?.length){let t={...e,fields:n};if(!this.layer.capabilities?.operations?.supportsQueryPivot)return await this._summaryStatsForFields(t);try{return await this._summaryStatsUsingQueryPivot(t)}catch{return await this._summaryStatsForFields(t)}}if(h||m)return m||u||d||g||this._hasLocalSource&&!this.layer.capabilities.query.supportsStatistics?this._summaryStatsFromMemory(e,f):this._summaryStatsFromClientQuery(e,f);if(!this.supportsSQLExpression&&(p||s||a===`natural-log`||a===`square-root`))throw new r(`${this.adapterName}:not-supported`,`Layer does not support standardized SQL expression for queries`);return(a&&!this.supportsSQLExpression?this._summaryStatsFromGenRend(e):this._summaryStatsFromServiceQuery(e,f)).catch(()=>(i(e.signal),this._summaryStatsFromMemory(e,f)))}async uniqueValues(e){let{valueExpression:t,sqlExpression:n,features:r,useFeaturesInView:a,signal:o}=e,s=t&&!(n&&this.supportsSQLExpression),c=this._hasLocalSource||r||a||s,l=e.view?.type===`3d`,u=await H(e,this);return c?s||r||a||l||this._hasLocalSource&&!this.layer.capabilities.query.supportsStatistics?this._uvFromMemory(e,u):this._uvFromClientQuery(e,u):this._uvFromServiceQuery(e,u).catch(t=>(i(o),e.field&&!e.field2&&!e.field3&&!e.filter?this._uvFromGenRenderer(e,u[0]):t)).catch(()=>(i(o),l?this._uvFromMemory(e,u):this._uvFromClientQuery(e,u)))}async histogram(e){let{field:t,normalizationType:n,normalizationField:a,classificationMethod:o,view:s,filter:l,signal:u}=e,d=t?this.getField(t):null,f=S(d)||c(d),p=e.valueExpression||e.sqlExpression,m=e.valueExpression&&!(e.sqlExpression&&this.supportsSQLExpression),h=this._hasLocalSource||e.features||e.useFeaturesInView||m,g=this.supportsSQLExpression,_=!o||o===`equal-interval`,v=e.minValue,b=e.maxValue,x=v!=null&&b!=null,C=e.numBins||R;if(e.fields?.length){if(!g)throw new r(`${this.adapterName}:not-supported`,`Layer does not support standardized SQL expression for queries`);if(!this.layer.capabilities?.operations?.supportsQueryPivot)throw new r(`${this.adapterName}:not-supported`,`Layer does not support pivot queries`);return this._histogramForFields(e)}if(this.layer.capabilities?.operations?.supportsQueryBins&&e.useQueryAttributeBins&&!m){if(h)return this._histogramFromQueryAttributeBinsFromMemory(e);try{return await this._histogramFromQueryAttributeBins(e)}catch{return i(u),this._histogramFromQueryAttributeBinsFromMemory(e)}}if(e.returnAggregateIds)throw new r(`${this.adapterName}:not-supported`,`returnAggregateIds option is only supported with queryAttributeBins`);if(h)return this._histogramFromMemory(e);if((p||g)&&_){if(!g&&(p||n===`natural-log`||n===`square-root`))throw new r(`${this.adapterName}:not-supported`,`Layer does not support standardized SQL expression for queries`);if(this.layer.capabilities.query.supportsOrderBy)return this._histogramForExpr(e)}if(f&&_)throw new r(`${this.adapterName}:not-supported`,`Normalization and date field are not allowed when layer does not support standardized SQL expression for queries`);return n||!_?A(e,this).then(i=>{if(!x)return U(this,i,t,C,s,l,u);if(v>i.max||b<i.min)throw new r(`${this.adapterName}:insufficient-data`,`Range defined by 'minValue' and 'maxValue' does not intersect available data range of the field`);if(_)return U(this,{min:v,max:b,sqlExpr:i.sqlExpr,excludeZerosExpr:i.excludeZerosExpr},t,C,s,l,u);{let r={field:t,normalizationType:n,normalizationField:a,normalizationTotal:i.normTotal,layer:this},o=V(r),c=y(o,v,b);return A(e,this,c).then(e=>U(this,e,t,C,s,l,u))}}):this._histogramForField(e)}async classBreaks(e){let t=e.analyzeData!==!1,n=this._hasLocalSource||e.features||e.useFeaturesInView||e.valueExpression||e.filter;return t&&n?this._classBreaksFromMemory(e):(t?this._classBreaksFromGenRend(e):this._classBreaksFromInterpolation(e)).catch(()=>(i(e.signal),this._classBreaksFromMemory(e)))}async queryFeatureCount(e){if(this._hasLocalSource)throw new r(`${this.adapterName}:not-supported`,`Layer does not support count query`);let t=this.layer,n=t.createQuery();return n.where=v(n.where,e.whereClause),z(n,e.filter),t.queryFeatureCount(n,{signal:e.signal})}async generateRenderer(e,t){let n=this.layer;if(this._hasLocalSource||n.version<10.1)throw new r(`${this.adapterName}:not-supported`,`Layer does not support generateRenderer operation (requires ArcGIS Server version 10.1+)`);let i=n.createQuery();return e.where=v(e.where,i.where),u(n.parsedUrl?.path??``,{source:n.dynamicDataSource??void 0,gdbVersion:n.gdbVersion??void 0},e,{signal:t})}async predominantCategories(e){if(!this._hasLocalSource&&!this.supportsSQLExpression)throw new r(`${this.adapterName}:not-supported`,`Layer does not support advanced SQL expressions and standardized queries`);let{fields:t,view:n,signal:i,filter:a}=e,o=g(t),s=_(t),c=n&&this._hasLocalSource?await this._uvFromMemory({valueExpression:o,view:n,signal:i,filter:a}):await this._uvFromServiceQuery({sqlExpression:s.expression,valueExpression:o,signal:i,filter:a});return W(c.uniqueValueInfos,t)}async getSampleFeatures(e,r){let{view:a,requiredFields:o,returnGeometry:s,sqlWhere:c,filter:l,signal:u}=e,d=e.sampleSize;if(d==null||d===0)return[];let f=this.layer.createQuery(),p=r===`json`;f.outSpatialReference=a?.spatialReference,f.returnGeometry=!!s,f.outFields=o,f.where=v(f.where,c),z(f,l);let m=[],h=!1;if(a)try{let i=await a.whenLayerView(this.layer);if(h=!G(this,o,i).length,h){if(d>=1&&!e.filter&&`getSampleFeatures`in i){await this._waitForLayerViewUpdate(i);let e=await i.getSampleFeatures({minFeatureCount:d,sampleSize:d});if(e!=null)return p?e:e.map(e=>t.fromJSON(e))}if(m=await this._fetchFeaturesFromMemory(i,f,u,r),m.length>=d&&d>0)return n(m,d,1)}}catch{i(u)}try{if(this._hasLocalSource)return h?m:p?await this._fetchFeaturesJSONFromService(f,u):await this._fetchFeaturesFromService(f,u);let t=await this.queryFeatureCount({view:a,filter:l,signal:u}),r=this.layer.capabilities.query.maxRecordCount,i=d===-1?t:d;if(i=r&&i>r?r:i,t<=m.length||m.length>=r)return m;if(f.maxAllowableOffset=e.resolution||(a?a.extent.width/a.width/a.scale:te(this.layer.spatialReference))*4e5,t<=i)return p?await this._fetchFeaturesJSONFromService(f,u):await this._fetchFeaturesFromService(f,u);if(t<=Z){let e=this.layer.createQuery();z(e,l);let t=await this.layer.queryObjectIds();return f.objectIds=n(t,i,1),p?await this._fetchFeaturesJSONFromService(f,u):await this._fetchFeaturesFromService(f,u)}return this.layer.capabilities?.query?.supportsPagination&&(f.num=Math.min(i,Z)),p?await this._fetchFeaturesJSONFromService(f,u):await this._fetchFeaturesFromService(f,u)}catch{return i(u),m}}load(e){let t=this.layer.load(e).then(async t=>{this.geometryType=t.geometryType,this.objectIdField=t.objectIdField,this.supportsSQLExpression=t.capabilities?.query?.supportsSqlExpression,this._hasLocalSource=t.type!==`parquet`&&!t.url&&!!t.source,this.hasQueryEngine=this._hasLocalSource,this.minScale=t.minScale,this.maxScale=t.maxScale,this.fullExtent=t.fullExtent,this.workerClient=x.getInstance(),await this.workerClient.open(e.signal)});return this.addResolvingPromise(t),Promise.resolve(this)}};e([a({readOnly:!0})],Q.prototype,`adapterName`,void 0),e([a({constructOnly:!0})],Q.prototype,`layer`,void 0),Q=e([o(`esri.smartMapping.support.adapters.FeatureLayerAdapter`)],Q);function $(e,t,n){let r=[],i=t.length;return t.forEach((t,a)=>{let[o,s]=t,c=null;c=a===0&&!n?`${e} < ${s}`:a===i-1&&!n?`${e} >= ${o}`:v(`${e} >= ${o}`,`${e} ${a===i-1?` <= `:` < `} ${s}`),r.push(`WHEN (`+c+`) THEN `+(a+1))}),[`CASE`,r.join(` `),`ELSE 0`,`END`].join(` `)}export{Q as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import{pickRandom as n}from"../../../core/arrayUtils.js";import r from"../../../core/Error.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import{property as a,subclass as o}from"../../../core/accessorSupport/decorators.js";import{isHostedAgolService as s}from"../../../layers/support/arcgisLayerUrl.js";import{isTimeOnlyField as c,isNumericField as l}from"../../../layers/support/fieldUtils.js";import{generateRenderer as u}from"../../../rest/generateRenderer.js";import d from"../../../rest/support/GenerateRendererParameters.js";import f from"../../../rest/support/PivotQuery.js";import p from"../../../rest/support/StatisticDefinition.js";import m from"../../../rest/support/UniqueValueDefinition.js";import h from"../../../rest/support/UnPivotDefinition.js";import{getArcadeForPredominantCategory as g,getSQLForPredominantCategoryName as _}from"../../statistics/support/predominanceUtils.js";import{mergeWhereClauses as v,getRangeExpr as y,getSQLFilterForNormalization as b}from"../../statistics/support/utils.js";import{WorkerClient as x}from"../../statistics/support/WorkerClient.js";import{isAnyDateField as S,isIntegerField as C,castIntegerFieldToFloat as w,fieldDelimiter as T}from"../utils.js";import E from"./InMemoryLayerAdapter.js";import{getQueryParamsForExpr as ee,getDataRange as D,getAttributeBinsQuery as O,processQueryAttributeBinsResult as k,binParamsFromGenRend as A}from"./support/histogramUtils.js";import{ensureFeaturesJSON as j,getSummaryStatsQuery as M,getSummaryStatisticsFromFeatureSet as N,getSummaryStatsQueryForFields as P,getSummaryStatsPivotQuery as F,getUVQuery as I,getUniqueValuesFromFeatureSet as L,defaultNumBins as R,updateQueryWithFeatureFilter as z,getHistogramFromFeatureSet as B,getFieldExpr as V,getDomainsForFields as H,getBins as U,getPredominantCategoriesFromUVInfos as W,getMissingFields as G}from"./support/utils.js";import{processSummaryStatisticsResult as K,createUVResult as q,getEqualIntervalBins as J,createClassBreaksDefinition as Y,resolveCBResult as X}from"../../../statistics/utils.js";import{getScaleToResolutionFactor as te}from"../../../views/2d/viewpointUtils.js";const Z=2e4;let Q=class extends E{constructor(){super(...arguments),this.adapterName=`feature-layer-adapter`}_isStatsSupportedOnService(){let e=this.layer;if(!e.capabilities?.query?.supportsStatistics||this.geometryType===`multipatch`&&!s(e.url)&&e.version<10.5)throw new r(`${this.adapterName}:not-supported`,`Layer does not support statistics query`);return Promise.resolve()}_fetchFeaturesFromService(e,t){return this.layer.queryFeatures(e,{signal:t}).then(e=>e.features)}_fetchFeaturesJSONFromService(e,t){return this._fetchFeaturesFromService(e,t).then(j)}_summaryStatsFromGenRend(e){let t=e.normalizationType,n=e.normalizationField;return this.classBreaks({field:e.field,numClasses:5,classificationMethod:`standard-deviation`,standardDeviationInterval:.25,normalizationType:t,normalizationField:t===`field`?n:void 0,minValue:e.minValue,maxValue:e.maxValue,filter:e.filter,signal:e.signal}).then(t=>{let n,r,i;if(t.classBreakInfos?.some(e=>(e.hasAvg&&(n=e),!!n)),n){let e=n.maxValue-n.minValue;r=n.minValue+e/2,i=e*4}let a={min:t.minValue,max:t.maxValue,avg:r,stddev:i};return K(a,e.outStatisticTypes)})}async _summaryStatsFromServiceQuery(e,t){await this._isStatsSupportedOnService(),e.normalizationType===`percent-of-total`&&(e.normalizationTotal=await this._getNormalizationTotal(e.field,e.normalizationType,e.filter));let n=S(t)||c(t),r=(`capabilities`in this.layer?this.layer.capabilities:null)?.query?.supportsPercentileStatistics??!1,i=M(this,e,t,r),a=await this.layer.queryFeatures(i,{signal:e.signal}),o=N(a,n);return K(o,e.outStatisticTypes)}async _summaryStatsForFieldsBasic(e){let{outStatisticTypes:t,fields:n}=e,r=[];for(let t=0;t<n.length;t+=50){let i=n.slice(t,t+50),a=P(this,e,i);r.push(this.layer.queryFeatures(a,{signal:e.signal}))}let i=(await Promise.all(r)).flatMap(e=>e.features).map(e=>e.attributes).reduce((e,t)=>Object.assign(e,t),{}),a={};for(let e in i){let t=e.match(/^(\w+)_value_/);if(i[e]!=null&&t)switch(t[1]){case`min`:a.min=a.min==null?i[e]:Math.min(a.min,i[e]);break;case`max`:a.max=a.max==null?i[e]:Math.max(a.max,i[e]);break;case`sum`:a.sum=(a.sum||0)+i[e];break;case`count`:a.count=(a.count||0)+i[e]}}return K(a,t)}async _summaryStatsForFieldsAdvanced(e,t){let{outStatisticTypes:n,fields:r}=e,i=n?.exclude?.includes(`variance`)||n?.include&&!n.include.includes(`variance`),a=n?.exclude?.includes(`stddev`)||n?.include&&!n.include.includes(`stddev`);if(t.sum==null||!t.count||i&&a)return t;t.avg=t.sum/t.count;let o=[];for(let n=0;n<r.length;n+=50){let i=r.slice(n,n+50),a=P(this,e,i);a.outStatistics=[];for(let e of i){let n=`sumOfSquares_${e}`,r=`(power(${C(this.layer,e)?w(e):e} - ${t.avg}, 2))`,i=new p({statisticType:`sum`,onStatisticField:r,outStatisticFieldName:n});a.outStatistics.push(i)}o.push(this.layer.queryFeatures(a,{signal:e.signal}))}return t.variance=(await Promise.all(o)).reduce((e,t)=>e+Object.values(t.features[0].attributes).reduce((e,t)=>e+t,0),0)/(t.count-1),t.stddev=Math.sqrt(t.variance),K(t,n)}async _summaryStatsForFields(e){let t=await this._summaryStatsForFieldsBasic(e);return this._summaryStatsForFieldsAdvanced(e,t)}async _summaryStatsUsingQueryPivot(e){await this._isStatsSupportedOnService();let t=(`capabilities`in this.layer?this.layer.capabilities:null)?.query?.supportsPercentileStatistics??!1,n=F(this,e,t),r=await this.layer.queryPivot(n,{signal:e.signal}),i=N(r,!1);return K(i,e.outStatisticTypes)}_uvFromGenRenderer(e,t){let n=e.field??void 0,r=new m({attributeField:n}),i=new d({classificationDefinition:r});return this.generateRenderer(i,e.signal).then(e=>{let t={},r=this.getField(n);return e.uniqueValues.forEach(e=>{let n=e.value;(n==null||n===``||typeof n==`string`&&(n.trim()===``||n.toLowerCase()===`<null>`))&&(n=null),t[n]==null?t[n]={count:e.count,data:l(r)&&n?Number(n):n}:t[n].count=t[n].count+e.count}),{count:t}}).then(n=>q(n,[t],e.returnAllCodedValues))}async _uvFromServiceQuery(e,t){return this._isStatsSupportedOnService().then(()=>this.layer.queryFeatures(I(this,e),{signal:e.signal})).then(t=>L(t,{layer:this,field:e.field,field2:e.field2,field3:e.field3,fieldDelimiter:T,filter:e.filter,view:e.view,signal:e.signal})).then(n=>q(n,t,e.returnAllCodedValues,T))}_getNormalizationTotal(e,t,n,r){return e&&t===`percent-of-total`?this.summaryStatistics({field:e,outStatisticTypes:{include:[`sum`]},filter:n,signal:r}).then(e=>e.sum):Promise.resolve(null)}_histogramForExpr(e){return this._getNormalizationTotal(e.field,e.normalizationType,e.filter,e.signal).then(t=>{let n=ee(e,this,t);return D(n,this,e.minValue,e.maxValue).then(r=>{let i=r.min,a=r.max;if(i==null||a==null)return{bins:[],minValue:i,maxValue:a,normalizationTotal:t};let o=e.numBins||R,s=J(i,a,o),c=$(n.sqlExpression,s,e.minValue!=null&&e.maxValue!=null),l=new p({statisticType:`count`,outStatisticFieldName:`countOFExpr`,onStatisticField:`1`}),u=this.layer.createQuery();return u.where=v(u.where,n.sqlWhere),u.sqlFormat=`standard`,u.outStatistics=[l],u.groupByFieldsForStatistics=[c],u.orderByFields=[c],z(u,e.filter),this._isStatsSupportedOnService().then(()=>this.layer.queryFeatures(u,{signal:n.signal})).then(e=>B(e,i,a,o,t))})})}async _histogramForFields(e){let{min:t,max:n}=await D({fields:e.fields,sqlWhere:e.sqlWhere,filter:e.filter,signal:e.signal},this,e.minValue,e.maxValue);if(t==null||n==null)return{bins:[],minValue:t,maxValue:n};let r=`newField`,i=e.numBins||R,a=$(r,J(t,n,i),e.minValue!=null&&e.maxValue!=null),o=new p({statisticType:`count`,outStatisticFieldName:`countOFExpr`,onStatisticField:r}),s=new f,{where:c,timeExtent:l}=this.createQuery();return s.where=v(c,e.sqlWhere),s.outPivots=[new h({sourceFields:e.fields,valueFieldName:r})],s.outStatistics=[o],s.groupByFieldsForStatistics=[a],s.orderByFields=[a],s.timeExtent=l,z(s,e.filter),this._isStatsSupportedOnService().then(()=>this.layer.queryPivot(s,{signal:e.signal})).then(e=>B(e,t,n,i))}async _histogramFromQueryAttributeBins(e){let{field:t,normalizationType:n,filter:r,signal:i}=e,a=await this._getNormalizationTotal(t,n,r,i),{query:o,min:s,max:c}=await O(e,this,a,this.createQuery());if(!o)return{bins:[],minValue:s,maxValue:c,normalizationTotal:a};let l=await this.layer.queryAttributeBins(o,{signal:i});return k(l,t?this.getField(t):null,{minValue:s,maxValue:c,normalizationTotal:a})}_classBreaksFromGenRend(e){let{field:t,normalizationType:n,normalizationField:r,normalizationTotal:i,signal:a}=e,o=b({field:t,normalizationType:n,normalizationField:r}),s=V({field:t,normalizationType:n,normalizationField:r,normalizationTotal:i,layer:this}),c=y(s,e.minValue,e.maxValue),l=Y({field:t,normalizationType:n,normalizationField:r,classificationMethod:e.classificationMethod,standardDeviationInterval:e.standardDeviationInterval,breakCount:e.numClasses||5}),u=new d({classificationDefinition:l});return u.where=v(o,c),this.generateRenderer(u,a).then(t=>X(t,e.classificationMethod))}async summaryStatistics(e){let{field:t,fields:n,normalizationType:a,valueExpression:o,sqlExpression:s,view:l,features:u,useFeaturesInView:d}=e,f=t?this.getField(t):null,p=S(f)||c(f),m=o&&!(s&&this.supportsSQLExpression),h=this._hasLocalSource||u||d,g=l?.type===`3d`;if(n?.length){let t={...e,fields:n};if(!this.layer.capabilities?.operations?.supportsQueryPivot)return await this._summaryStatsForFields(t);try{return await this._summaryStatsUsingQueryPivot(t)}catch{return await this._summaryStatsForFields(t)}}if(h||m)return m||u||d||g||this._hasLocalSource&&!this.layer.capabilities.query.supportsStatistics?this._summaryStatsFromMemory(e,f):this._summaryStatsFromClientQuery(e,f);if(!this.supportsSQLExpression&&(p||s||a===`natural-log`||a===`square-root`))throw new r(`${this.adapterName}:not-supported`,`Layer does not support standardized SQL expression for queries`);return(a&&!this.supportsSQLExpression?this._summaryStatsFromGenRend(e):this._summaryStatsFromServiceQuery(e,f)).catch(()=>(i(e.signal),this._summaryStatsFromMemory(e,f)))}async uniqueValues(e){let{valueExpression:t,sqlExpression:n,features:r,useFeaturesInView:a,signal:o}=e,s=t&&!(n&&this.supportsSQLExpression),c=this._hasLocalSource||r||a||s,l=e.view?.type===`3d`,u=await H(e,this);return c?s||r||a||l||this._hasLocalSource&&!this.layer.capabilities.query.supportsStatistics?this._uvFromMemory(e,u):this._uvFromClientQuery(e,u):this._uvFromServiceQuery(e,u).catch(t=>(i(o),e.field&&!e.field2&&!e.field3&&!e.filter?this._uvFromGenRenderer(e,u[0]):t)).catch(()=>(i(o),l?this._uvFromMemory(e,u):this._uvFromClientQuery(e,u)))}async histogram(e){let{field:t,normalizationType:n,normalizationField:a,classificationMethod:o,view:s,filter:l,signal:u}=e,d=t?this.getField(t):null,f=S(d)||c(d),p=e.valueExpression||e.sqlExpression,m=e.valueExpression&&!(e.sqlExpression&&this.supportsSQLExpression),h=this._hasLocalSource||e.features||e.useFeaturesInView||m,g=this.supportsSQLExpression,_=!o||o===`equal-interval`,v=e.minValue,b=e.maxValue,x=v!=null&&b!=null,C=e.numBins||R;if(e.fields?.length){if(!g)throw new r(`${this.adapterName}:not-supported`,`Layer does not support standardized SQL expression for queries`);if(!this.layer.capabilities?.operations?.supportsQueryPivot)throw new r(`${this.adapterName}:not-supported`,`Layer does not support pivot queries`);return this._histogramForFields(e)}if(this.layer.capabilities?.operations?.supportsQueryBins&&e.useQueryAttributeBins&&!m){if(h)return this._histogramFromQueryAttributeBinsFromMemory(e);try{return await this._histogramFromQueryAttributeBins(e)}catch{return i(u),this._histogramFromQueryAttributeBinsFromMemory(e)}}if(e.returnAggregateIds)throw new r(`${this.adapterName}:not-supported`,`returnAggregateIds option is only supported with queryAttributeBins`);if(h)return this._histogramFromMemory(e);if((p||g)&&_){if(!g&&(p||n===`natural-log`||n===`square-root`))throw new r(`${this.adapterName}:not-supported`,`Layer does not support standardized SQL expression for queries`);if(this.layer.capabilities.query.supportsOrderBy)return this._histogramForExpr(e)}if(f&&_)throw new r(`${this.adapterName}:not-supported`,`Normalization and date field are not allowed when layer does not support standardized SQL expression for queries`);return n||!_?A(e,this).then(i=>{if(!x)return U(this,i,t,C,s,l,u);if(v>i.max||b<i.min)throw new r(`${this.adapterName}:insufficient-data`,`Range defined by 'minValue' and 'maxValue' does not intersect available data range of the field`);if(_)return U(this,{min:v,max:b,sqlExpr:i.sqlExpr,excludeZerosExpr:i.excludeZerosExpr},t,C,s,l,u);{let r={field:t,normalizationType:n,normalizationField:a,normalizationTotal:i.normTotal,layer:this},o=V(r),c=y(o,v,b);return A(e,this,c).then(e=>U(this,e,t,C,s,l,u))}}):this._histogramForField(e)}async classBreaks(e){let t=e.analyzeData!==!1,n=this._hasLocalSource||e.features||e.useFeaturesInView||e.valueExpression||e.filter;return t&&n?this._classBreaksFromMemory(e):(t?this._classBreaksFromGenRend(e):this._classBreaksFromInterpolation(e)).catch(()=>(i(e.signal),this._classBreaksFromMemory(e)))}async queryFeatureCount(e){if(this._hasLocalSource)throw new r(`${this.adapterName}:not-supported`,`Layer does not support count query`);let t=this.layer,n=t.createQuery();return n.where=v(n.where,e.whereClause),z(n,e.filter),t.queryFeatureCount(n,{signal:e.signal})}async generateRenderer(e,t){let n=this.layer;if(this._hasLocalSource||n.version<10.1)throw new r(`${this.adapterName}:not-supported`,`Layer does not support generateRenderer operation (requires ArcGIS Server version 10.1+)`);let i=n.createQuery();return e.where=v(e.where,i.where),u(n.parsedUrl?.path??``,{source:n.dynamicDataSource??void 0,gdbVersion:n.gdbVersion??void 0},e,{signal:t})}async predominantCategories(e){if(!this._hasLocalSource&&!this.supportsSQLExpression)throw new r(`${this.adapterName}:not-supported`,`Layer does not support advanced SQL expressions and standardized queries`);let{fields:t,view:n,signal:i,filter:a}=e,o=g(t),s=_(t),c=n&&this._hasLocalSource?await this._uvFromMemory({valueExpression:o,view:n,signal:i,filter:a}):await this._uvFromServiceQuery({sqlExpression:s.expression,valueExpression:o,signal:i,filter:a});return W(c.uniqueValueInfos,t)}async getSampleFeatures(e,r){let{view:a,requiredFields:o,returnGeometry:s,sqlWhere:c,filter:l,signal:u}=e,d=e.sampleSize;if(d==null||d===0)return[];let f=this.layer.createQuery(),p=r===`json`;f.outSpatialReference=a?.spatialReference,f.returnGeometry=!!s,f.outFields=o,f.where=v(f.where,c),z(f,l);let m=[],h=!1;if(a)try{let i=await a.whenLayerView(this.layer);if(h=!G(this,o,i).length,h){if(d>=1&&!e.filter&&`getSampleFeatures`in i){await this._waitForLayerViewUpdate(i);let e=await i.getSampleFeatures({minFeatureCount:d,sampleSize:d});if(e!=null)return p?e:e.map(e=>t.fromJSON(e))}if(m=await this._fetchFeaturesFromMemory(i,f,u,r),m.length>=d&&d>0)return n(m,d,1)}}catch{i(u)}try{if(this._hasLocalSource)return h?m:p?await this._fetchFeaturesJSONFromService(f,u):await this._fetchFeaturesFromService(f,u);let t=await this.queryFeatureCount({view:a,filter:l,signal:u}),r=this.layer.capabilities.query.maxRecordCount,i=d===-1?t:d;if(i=r&&i>r?r:i,t<=m.length||m.length>=r)return m;if(f.maxAllowableOffset=e.resolution||(a?a.extent.width/a.width/a.scale:te(this.layer.spatialReference))*4e5,t<=i)return p?await this._fetchFeaturesJSONFromService(f,u):await this._fetchFeaturesFromService(f,u);if(t<=Z){let e=this.layer.createQuery();z(e,l);let t=await this.layer.queryObjectIds();return f.objectIds=n(t,i,1),p?await this._fetchFeaturesJSONFromService(f,u):await this._fetchFeaturesFromService(f,u)}return this.layer.capabilities?.query?.supportsPagination&&(f.num=Math.min(i,Z)),p?await this._fetchFeaturesJSONFromService(f,u):await this._fetchFeaturesFromService(f,u)}catch{return i(u),m}}load(e){let t=this.layer.load(e).then(async t=>{this.geometryType=t.geometryType,this.objectIdField=t.objectIdField,this.supportsSQLExpression=t.capabilities?.query?.supportsSqlExpression,this._hasLocalSource=t.type!==`parquet`&&!t.url&&!!t.source,this.hasQueryEngine=this._hasLocalSource,this.minScale=t.minScale,this.maxScale=t.maxScale,this.fullExtent=t.fullExtent,this.workerClient=x.getInstance(),await this.workerClient.open(e.signal)});return this.addResolvingPromise(t),Promise.resolve(this)}};e([a({readOnly:!0})],Q.prototype,`adapterName`,void 0),e([a({constructOnly:!0})],Q.prototype,`layer`,void 0),Q=e([o(`esri.smartMapping.support.adapters.FeatureLayerAdapter`)],Q);function $(e,t,n){let r=[],i=t.length;return t.forEach((t,a)=>{let[o,s]=t,c=null;c=a===0&&!n?`${e} < ${s}`:a===i-1&&!n?`${e} >= ${o}`:v(`${e} >= ${o}`,`${e} ${a===i-1?` <= `:` < `} ${s}`),r.push(`WHEN (`+c+`) THEN `+(a+1))}),[`CASE`,r.join(` `),`ELSE 0`,`END`].join(` `)}export{Q as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import{pickRandom as t}from"../../../core/arrayUtils.js";import n from"../../../core/Error.js";import{assertIsSome as r}from"../../../core/maybe.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import{property as a,subclass as o}from"../../../core/accessorSupport/decorators.js";import{kebabDict as s}from"../../../layers/support/fieldType.js";import{isTimeOnlyField as c}from"../../../layers/support/fieldUtils.js";import{getArcadeForPredominantCategory as l}from"../../statistics/support/predominanceUtils.js";import{summaryStatistics as u,uniqueValues as d,histogram as f,classBreaks as p}from"../../statistics/support/statsWorker.js";import{mergeWhereClauses as m}from"../../statistics/support/utils.js";import{WorkerClient as h}from"../../statistics/support/WorkerClient.js";import{getFieldsList as g,fieldDelimiter as _,isAnyDateField as v}from"../utils.js";import y from"./FeatureLayerAdapter.js";import{getMissingFieldsForBinning as b,updateQueryWithFeatureFilter as x,getFeatureReductionFields as S,getViewInfoParams as C,getDomainsForFields as w,getPredominantCategoriesFromUVInfos as T}from"./support/utils.js";let E=class extends y{constructor(){super(...arguments),this.adapterName=`feature-layer-binning-adapter`}async _getNormalizationTotalFromMemory(e,t,r){let{featuresJSON:i,graphics:a,layerView:o,query:s}=t,c={include:[`sum`]},l=(!i&&!a&&o&&`queryAggregateSummaryStatistics`in o?await o.queryAggregateSummaryStatistics(s,{field:e,outStatisticTypes:c},{signal:r}):i?await this.workerClient.summaryStatistics({field:e},i):await u({attribute:{field:e,outStatisticTypes:c},features:a})).sum;if(l==null)throw new n(`${this.adapterName}:invalid`,`invalid normalizationTotal`);return l}async _processStatsFromMemoryParams(e){let{features:t,filter:i}=e;if(t?.length)return this._getFilteredFeatures(t,i);let{view:a,field:o,field2:s,field3:c,normalizationField:l,valueExpression:u,returnGeometry:d,layerViewFunc:f,signal:p}=e,m=null,h=null,_=null,v=null,y=null;if(a)try{if(m=await a.whenLayerView(this.layer),r(m),h=f!=null&&f in m&&typeof m[f]==`function`,h){await this._waitForLayerViewUpdate(m);let e=await g({field:o,field2:s,field3:c,normalizationField:l,valueExpression:u});b(this,e).length?h=!1:(_=`createAggregateQuery`in m?m.createAggregateQuery():null,_?(_.outFields=e,_.returnGeometry=!1,x(_,i)):h=!1),m.suspended&&(h=!1)}}catch{h=!1}if(!h&&(y=S(this.layer).map(e=>e.toJSON()),v=await this._fetchFeaturesForStats({field:o,field2:s,field3:c,valueExpression:u,normalizationField:l,returnGeometry:d,filter:i,view:a,signal:p},`json`),!v?.length))throw new n(`${this.adapterName}:insufficient-data`,`No features are available to calculate statistics`);return{layerView:m,query:_,featuresJSON:v,fieldInfos:y}}async _summaryStatsFromMemory(e,t){let{view:n,field:r,valueExpression:i,normalizationType:a,signal:o}=e,c={field:r,valueExpression:i,normalizationType:a,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,outStatisticTypes:e.outStatisticTypes},{featuresJSON:l,graphics:d,layerView:f,query:p,fieldInfos:m}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryAggregateSummaryStatistics`});return i&&n&&(l||d)&&(c.fieldType=t?.type?s.toJSON(t.type):null,c.viewInfoParams=C(n),c.timeZone=n.timeZone,c.fieldInfos=m),a===`percent-of-total`&&e.normalizationTotal==null&&(c.normalizationTotal=await this._getNormalizationTotalFromMemory(r,{featuresJSON:l,graphics:d,layerView:f,query:p},o)),!l&&!d&&f&&`queryAggregateSummaryStatistics`in f?f.queryAggregateSummaryStatistics(p,c,{signal:o}):l?this.workerClient.summaryStatistics(c,l):u({attribute:c,features:d})}async _uvFromMemory(e,t){let{view:n,field:r,valueExpression:i,returnAllCodedValues:a,signal:o}=e,{featuresJSON:s,graphics:c,layerView:l,query:u,fieldInfos:f}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryAggregateUniqueValues`}),p={field:r,field2:e.field2,field3:e.field3,fieldDelimiter:_,valueExpression:i,domains:t,returnAllCodedValues:a};return i&&n&&(s||c)&&(p.viewInfoParams=C(n),p.timeZone=n.timeZone,p.fieldInfos=f),!s&&!c&&l&&`queryAggregateUniqueValues`in l?l.queryAggregateUniqueValues(u,p,{signal:o}):s?this.workerClient.uniqueValues(p,s):d({attribute:p,features:c})}async _histogramFromMemory(e){let{view:t,field:n,valueExpression:r,signal:i}=e,{featuresJSON:a,graphics:o,layerView:s,query:c,fieldInfos:l}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryAggregateHistogram`}),u={field:n,valueExpression:r,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,standardDeviationInterval:e.standardDeviationInterval,classificationMethod:e.classificationMethod,numBins:e.numBins};return r&&t&&(a||o)&&(u.viewInfoParams=C(t),u.timeZone=t.timeZone,u.fieldInfos=l),e.normalizationType===`percent-of-total`&&e.normalizationTotal==null&&(u.normalizationTotal=await this._getNormalizationTotalFromMemory(n,{featuresJSON:a,graphics:o,layerView:s,query:c},i)),!a&&!o&&s&&`queryAggregateHistogram`in s?s.queryAggregateHistogram(c,u,{signal:i}):a?this.workerClient.histogram(u,a):f({attribute:u,features:o})}async _classBreaksFromMemory(e){let{view:t,field:n,valueExpression:r,signal:i}=e,{featuresJSON:a,graphics:o,layerView:s,query:c,fieldInfos:l}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryAggregateClassBreaks`}),u={field:n,valueExpression:r,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,standardDeviationInterval:e.standardDeviationInterval,classificationMethod:e.classificationMethod,numClasses:e.numClasses};return r&&t&&(a||o)&&(u.viewInfoParams=C(t),u.timeZone=t.timeZone,u.fieldInfos=l),e.normalizationType===`percent-of-total`&&e.normalizationTotal==null&&(u.normalizationTotal=await this._getNormalizationTotalFromMemory(n,{featuresJSON:a,graphics:o,layerView:s,query:c},i)),!a&&!o&&s&&`queryAggregateClassBreaks`in s?s.queryAggregateClassBreaks(c,u,{signal:i}):a?this.workerClient.classBreaks(u,a):p({attribute:u,features:o})}getField(e=``){return S(this.layer)?.find(t=>t.name.toLowerCase()===e?.toLowerCase())}getFieldUsageInfo(e){return this.getField(e)?{supportsLabelingInfo:!0,supportsRenderer:!0,supportsPopupTemplate:!0,supportsLayerQuery:!1,supportsStatistics:!0}:null}getFieldDomain(e,t){return null}async summaryStatistics(e){let{field:t}=e,r=t?this.getField(t):null,i=v(r)||c(r),a=e.sqlExpression&&!e.valueExpression&&!t;if(i||a)throw new n(`${this.adapterName}:not-supported`,`Date field and sqlExpression are not supported`);return this._summaryStatsFromMemory(e,r)}async uniqueValues(e){let t=await w(e,this);return this._uvFromMemory(e,t)}async histogram(e){let{field:t}=e,r=t?this.getField(t):null,i=v(r)||c(r),a=e.sqlExpression&&!e.valueExpression&&!t;if(i||a)throw new n(`${this.adapterName}:not-supported`,`Date field and sqlExpression are not supported`);return this._histogramFromMemory(e)}async classBreaks(e){return(e.analyzeData===!1?this._classBreaksFromInterpolation(e):this._classBreaksFromMemory(e)).catch(()=>(i(e.signal),this._classBreaksFromMemory(e)))}async queryFeatureCount(e){let t=await e.view?.whenLayerView(this.layer);if(!t||!(`queryAggregateCount`in t)||!t.queryAggregateCount)throw new n(`${this.adapterName}:not-supported`,`LayerView is not supported.`);await this._waitForLayerViewUpdate(t);let r=t.createAggregateQuery();return r.where=m(r.where,e.whereClause),x(r,e.filter),t.queryAggregateCount(r,{signal:e.signal})}generateRenderer(e,t){throw new n(`${this.adapterName}:not-supported`,`'generateRenderer' is not supported.`)}heatmapStatistics(e){throw new n(`${this.adapterName}:not-supported`,`'heatmapStatistics' is not supported.`)}async predominantCategories(e){let{fields:t,view:n,signal:r}=e,i=l(t),a=await this._uvFromMemory({valueExpression:i,view:n,signal:r});return T(a.uniqueValueInfos,t)}async getSampleFeatures(e,r){let{view:i,sampleSize:a,requiredFields:o,returnGeometry:s,filter:c,signal:l}=e;if(!i)throw new n(`${this.adapterName}:not-supported`,`'view' is required to get sample features for binning.`);if(i.type===`3d`)throw new n(`${this.adapterName}:not-supported`,`3d 'view' is not supported to get sample features for binning.`);let u=await i.whenLayerView(this.layer);if(!(`queryAggregateJSON`in u)||!u.queryAggregateJSON||!(`queryAggregates`in u)||!u.queryAggregates)throw new n(`${this.adapterName}:not-supported`,`LayerView is not supported.`);try{await this._waitForLayerViewUpdate(u)}catch{}if(b(this,o).length)throw new n(`${this.adapterName}:insufficient-data`,`Layer does not have required fields`);let d=r===`json`,f=u.createAggregateQuery();f.outSpatialReference=i?.spatialReference,f.returnGeometry=!!s,f.outFields=o,x(f,c);let{features:p}=d?await u.queryAggregateJSON(f,{signal:l}):await u.queryAggregates(f,{signal:l});return p.length&&a!=null&&a>0&&a<=p.length?t(p,a,1):p}load(e){let t=this.layer.load(e).then(async t=>{let r=`featureReduction`in t?t.featureReduction:null;if(r?.type!==`binning`&&r?.type!==`cluster`)throw new n(`${this.adapterName}:invalid-parameters`,`Feature reduction type ${r?.type} is not supported`);this.geometryType=r?.type===`cluster`?`point`:`polygon`,this.objectIdField=null,this.supportsSQLExpression=!1,this._hasLocalSource=!1,this.hasQueryEngine=!0,this.minScale=t.minScale,this.maxScale=t.maxScale,this.fullExtent=t.fullExtent,this.workerClient=h.getInstance(),await this.workerClient.open(e.signal)});return this.addResolvingPromise(t),Promise.resolve(this)}};e([a({readOnly:!0})],E.prototype,`adapterName`,void 0),E=e([o(`esri.smartMapping.support.adapters.FeatureLayerBinningAdapter`)],E);
|
|
2
|
+
import{__decorate as e}from"tslib";import{pickRandom as t}from"../../../core/arrayUtils.js";import n from"../../../core/Error.js";import{assertIsSome as r}from"../../../core/maybe.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import{property as a,subclass as o}from"../../../core/accessorSupport/decorators.js";import{kebabDict as s}from"../../../layers/support/fieldType.js";import{isTimeOnlyField as c}from"../../../layers/support/fieldUtils.js";import{getArcadeForPredominantCategory as l}from"../../statistics/support/predominanceUtils.js";import{summaryStatistics as u,uniqueValues as d,histogram as f,classBreaks as p}from"../../statistics/support/statsWorker.js";import{mergeWhereClauses as m}from"../../statistics/support/utils.js";import{WorkerClient as h}from"../../statistics/support/WorkerClient.js";import{getFieldsList as g,fieldDelimiter as _,isAnyDateField as v}from"../utils.js";import y from"./FeatureLayerAdapter.js";import{getMissingFieldsForBinning as b,updateQueryWithFeatureFilter as x,getFeatureReductionFields as S,getViewInfoParams as C,getDomainsForFields as w,getPredominantCategoriesFromUVInfos as T}from"./support/utils.js";let E=class extends y{constructor(){super(...arguments),this.adapterName=`feature-layer-binning-adapter`}async _getNormalizationTotalFromMemory(e,t,r){let{featuresJSON:i,graphics:a,layerView:o,query:s}=t,c={include:[`sum`]},l=(!i&&!a&&o&&`queryAggregateSummaryStatistics`in o?await o.queryAggregateSummaryStatistics(s,{field:e,outStatisticTypes:c},{signal:r}):i?await this.workerClient.summaryStatistics({field:e},i):await u({attribute:{field:e,outStatisticTypes:c},features:a})).sum;if(l==null)throw new n(`${this.adapterName}:invalid`,`invalid normalizationTotal`);return l}async _processStatsFromMemoryParams(e){let{features:t,filter:i}=e;if(t?.length)return this._getFilteredFeatures(t,i);let{view:a,field:o,field2:s,field3:c,normalizationField:l,valueExpression:u,returnGeometry:d,layerViewFunc:f,signal:p}=e,m=null,h=null,_=null,v=null,y=null;if(a)try{if(m=await a.whenLayerView(this.layer),r(m),h=f!=null&&f in m&&typeof m[f]==`function`,h){await this._waitForLayerViewUpdate(m);let e=await g({field:o,field2:s,field3:c,normalizationField:l,valueExpression:u});b(this,e).length?h=!1:(_=`createAggregateQuery`in m?m.createAggregateQuery():null,_?(_.outFields=e,_.returnGeometry=!1,x(_,i)):h=!1),m.suspended&&(h=!1)}}catch{h=!1}if(!h&&(y=S(this.layer).map(e=>e.toJSON()),v=await this._fetchFeaturesForStats({field:o,field2:s,field3:c,valueExpression:u,normalizationField:l,returnGeometry:d,filter:i,view:a,signal:p},`json`),!v?.length))throw new n(`${this.adapterName}:insufficient-data`,`No features are available to calculate statistics`);return{layerView:m,query:_,featuresJSON:v,fieldInfos:y}}async _summaryStatsFromMemory(e,t){let{view:n,field:r,valueExpression:i,normalizationType:a,signal:o}=e,c={field:r,valueExpression:i,normalizationType:a,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,outStatisticTypes:e.outStatisticTypes},{featuresJSON:l,graphics:d,layerView:f,query:p,fieldInfos:m}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryAggregateSummaryStatistics`});return i&&n&&(l||d)&&(c.fieldType=t?.type?s.toJSON(t.type):null,c.viewInfoParams=C(n),c.timeZone=n.timeZone,c.fieldInfos=m),a===`percent-of-total`&&e.normalizationTotal==null&&(c.normalizationTotal=await this._getNormalizationTotalFromMemory(r,{featuresJSON:l,graphics:d,layerView:f,query:p},o)),!l&&!d&&f&&`queryAggregateSummaryStatistics`in f?f.queryAggregateSummaryStatistics(p,c,{signal:o}):l?this.workerClient.summaryStatistics(c,l):u({attribute:c,features:d})}async _uvFromMemory(e,t){let{view:n,field:r,valueExpression:i,returnAllCodedValues:a,signal:o}=e,{featuresJSON:s,graphics:c,layerView:l,query:u,fieldInfos:f}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryAggregateUniqueValues`}),p={field:r,field2:e.field2,field3:e.field3,fieldDelimiter:_,valueExpression:i,domains:t,returnAllCodedValues:a};return i&&n&&(s||c)&&(p.viewInfoParams=C(n),p.timeZone=n.timeZone,p.fieldInfos=f),!s&&!c&&l&&`queryAggregateUniqueValues`in l?l.queryAggregateUniqueValues(u,p,{signal:o}):s?this.workerClient.uniqueValues(p,s):d({attribute:p,features:c})}async _histogramFromMemory(e){let{view:t,field:n,valueExpression:r,signal:i}=e,{featuresJSON:a,graphics:o,layerView:s,query:c,fieldInfos:l}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryAggregateHistogram`}),u={field:n,valueExpression:r,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,standardDeviationInterval:e.standardDeviationInterval,classificationMethod:e.classificationMethod,numBins:e.numBins};return r&&t&&(a||o)&&(u.viewInfoParams=C(t),u.timeZone=t.timeZone,u.fieldInfos=l),e.normalizationType===`percent-of-total`&&e.normalizationTotal==null&&(u.normalizationTotal=await this._getNormalizationTotalFromMemory(n,{featuresJSON:a,graphics:o,layerView:s,query:c},i)),!a&&!o&&s&&`queryAggregateHistogram`in s?s.queryAggregateHistogram(c,u,{signal:i}):a?this.workerClient.histogram(u,a):f({attribute:u,features:o})}async _classBreaksFromMemory(e){let{view:t,field:n,valueExpression:r,signal:i}=e,{featuresJSON:a,graphics:o,layerView:s,query:c,fieldInfos:l}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryAggregateClassBreaks`}),u={field:n,valueExpression:r,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,standardDeviationInterval:e.standardDeviationInterval,classificationMethod:e.classificationMethod,numClasses:e.numClasses};return r&&t&&(a||o)&&(u.viewInfoParams=C(t),u.timeZone=t.timeZone,u.fieldInfos=l),e.normalizationType===`percent-of-total`&&e.normalizationTotal==null&&(u.normalizationTotal=await this._getNormalizationTotalFromMemory(n,{featuresJSON:a,graphics:o,layerView:s,query:c},i)),!a&&!o&&s&&`queryAggregateClassBreaks`in s?s.queryAggregateClassBreaks(c,u,{signal:i}):a?this.workerClient.classBreaks(u,a):p({attribute:u,features:o})}getField(e=``){return S(this.layer)?.find(t=>t.name.toLowerCase()===e?.toLowerCase())}getFieldUsageInfo(e){return this.getField(e)?{supportsLabelingInfo:!0,supportsRenderer:!0,supportsPopupTemplate:!0,supportsLayerQuery:!1,supportsStatistics:!0}:null}getFieldDomain(e,t){return null}async summaryStatistics(e){let{field:t}=e,r=t?this.getField(t):null,i=v(r)||c(r),a=e.sqlExpression&&!e.valueExpression&&!t;if(i||a)throw new n(`${this.adapterName}:not-supported`,`Date field and sqlExpression are not supported`);return this._summaryStatsFromMemory(e,r)}async uniqueValues(e){let t=await w(e,this);return this._uvFromMemory(e,t)}async histogram(e){let{field:t}=e,r=t?this.getField(t):null,i=v(r)||c(r),a=e.sqlExpression&&!e.valueExpression&&!t;if(i||a)throw new n(`${this.adapterName}:not-supported`,`Date field and sqlExpression are not supported`);return this._histogramFromMemory(e)}async classBreaks(e){return(e.analyzeData===!1?this._classBreaksFromInterpolation(e):this._classBreaksFromMemory(e)).catch(()=>(i(e.signal),this._classBreaksFromMemory(e)))}async queryFeatureCount(e){let t=await e.view?.whenLayerView(this.layer);if(!t||!(`queryAggregateCount`in t)||!t.queryAggregateCount)throw new n(`${this.adapterName}:not-supported`,`LayerView is not supported.`);await this._waitForLayerViewUpdate(t);let r=t.createAggregateQuery();return r.where=m(r.where,e.whereClause),x(r,e.filter),t.queryAggregateCount(r,{signal:e.signal})}generateRenderer(e,t){throw new n(`${this.adapterName}:not-supported`,`'generateRenderer' is not supported.`)}heatmapStatistics(e){throw new n(`${this.adapterName}:not-supported`,`'heatmapStatistics' is not supported.`)}async predominantCategories(e){let{fields:t,view:n,signal:r}=e,i=l(t),a=await this._uvFromMemory({valueExpression:i,view:n,signal:r});return T(a.uniqueValueInfos,t)}async getSampleFeatures(e,r){let{view:i,sampleSize:a,requiredFields:o,returnGeometry:s,filter:c,signal:l}=e;if(!i)throw new n(`${this.adapterName}:not-supported`,`'view' is required to get sample features for binning.`);if(i.type===`3d`)throw new n(`${this.adapterName}:not-supported`,`3d 'view' is not supported to get sample features for binning.`);let u=await i.whenLayerView(this.layer);if(!(`queryAggregateJSON`in u)||!u.queryAggregateJSON||!(`queryAggregates`in u)||!u.queryAggregates)throw new n(`${this.adapterName}:not-supported`,`LayerView is not supported.`);try{await this._waitForLayerViewUpdate(u)}catch{}if(b(this,o).length)throw new n(`${this.adapterName}:insufficient-data`,`Layer does not have required fields`);let d=r===`json`,f=u.createAggregateQuery();f.outSpatialReference=i?.spatialReference,f.returnGeometry=!!s,f.outFields=o,x(f,c);let{features:p}=d?await u.queryAggregateJSON(f,{signal:l}):await u.queryAggregates(f,{signal:l});return p.length&&a!=null&&a>0&&a<=p.length?t(p,a,1):p}load(e){let t=this.layer.load(e).then(async t=>{let r=`featureReduction`in t?t.featureReduction:null;if(r?.type!==`binning`&&r?.type!==`cluster`)throw new n(`${this.adapterName}:invalid-parameters`,`Feature reduction type ${r?.type} is not supported`);this.geometryType=r?.type===`cluster`?`point`:`polygon`,this.objectIdField=null,this.supportsSQLExpression=!1,this._hasLocalSource=!1,this.hasQueryEngine=!0,this.minScale=t.minScale,this.maxScale=t.maxScale,this.fullExtent=t.fullExtent,this.workerClient=h.getInstance(),await this.workerClient.open(e.signal)});return this.addResolvingPromise(t),Promise.resolve(this)}};e([a({readOnly:!0})],E.prototype,`adapterName`,void 0),E=e([o(`esri.smartMapping.support.adapters.FeatureLayerBinningAdapter`)],E);export{E as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import{pickRandom as t}from"../../../core/arrayUtils.js";import n from"../../../core/Error.js";import r from"../../../core/Logger.js";import{assertIsSome as i}from"../../../core/maybe.js";import{timeout as a,throwIfAborted as o}from"../../../core/promiseUtils.js";import{whenOnce as s}from"../../../core/reactiveUtils.js";import{property as c,subclass as l}from"../../../core/accessorSupport/decorators.js";import{toQuantizationTransform as u}from"../../../geometry/support/quantizationUtils.js";import{kebabDict as d}from"../../../layers/support/fieldType.js";import{isTimeOnlyField as f}from"../../../layers/support/fieldUtils.js";import p from"../../../rest/support/QuantizationParameters.js";import{getArcadeForPredominantCategory as m}from"../../statistics/support/predominanceUtils.js";import{summaryStatistics as h,uniqueValues as g,histogram as _,classBreaks as v,heatmapStatistics as y}from"../../statistics/support/statsWorker.js";import{mergeWhereClauses as b}from"../../statistics/support/utils.js";import{WorkerClient as x}from"../../statistics/support/WorkerClient.js";import{getFieldsList as S,isAnyDateField as C,getFieldsFromWhereClauses as w,fieldDelimiter as T}from"../utils.js";import E from"./LayerAdapter.js";import{getHistogramAttributeDefinition as D,getAttributeBinsQuery as O,processQueryAttributeBinsResult as k}from"./support/histogramUtils.js";import{ensureFeaturesJSON as A,getSummaryStatsQuery as j,getSummaryStatisticsFromFeatureSet as M,getViewInfoParams as N,getMissingFields as P,updateQueryWithFeatureFilter as F,getUVQuery as I,getUniqueValuesFromFeatureSet as L,getBins as R,getDomainsForFields as z,getPredominantCategoriesFromUVInfos as B}from"./support/utils.js";import{processSummaryStatisticsResult as V,createUVResult as H,resolveCBResult as U}from"../../../statistics/utils.js";import{loadArcade as W}from"../../../support/loadArcade.js";let G,K=class extends E{constructor(){super(...arguments),this._hasLocalSource=!1,this.adapterName=`in-memory-layer-adapter`}destroy(){this.workerClient?.destroy()}async _waitForLayerViewUpdate(e){if(!e)throw new n(`${this.adapterName}:insufficient-data`,`layerView is required to fetch the features`);let t=new AbortController,i=s(()=>!e.updating,t.signal);await a(i,5e3,t).catch(e=>{throw r.getLogger(this).warn(`LayerView is taking too long to update. Aborting fetch from layerView.`),e})}async _fetchFeatureSetFromMemory(e,t,r){let i=this.layer;if(this._hasLocalSource&&`queryFeatures`in i)return i.queryFeatures(e);if(!t)throw new n(`${this.adapterName}:insufficient-data`,`view is required to fetch the features from layerView`);let a=await t.whenLayerView(this.layer);return await this._waitForLayerViewUpdate(a),a.queryFeatures(e,{signal:r})}async _fetchFeaturesFromMemory(e,t,r,i){let a=this.layer,o=i===`json`;if(this._hasLocalSource&&`queryFeatures`in a){let e=await a.queryFeatures(t);return o?A(e.features):e.features}if(await this._waitForLayerViewUpdate(e),o&&`queryFeaturesJSON`in e&&e.queryFeaturesJSON){let{features:n}=await e.queryFeaturesJSON(t,{signal:r});return n}if(!(`queryFeatures`in e))throw new n(`${this.adapterName}:not-supported`,`'queryFeatures' is not supported on the layerView`);let s=await e.queryFeatures(t,{signal:r});return o?A(s.features):s.features}_fetchFeaturesForStats(e,t){return S({field:e.field,field2:e.field2,field3:e.field3,normalizationField:e.normalizationField,valueExpression:e.valueExpression,fields:e.fields}).then(n=>this.getSampleFeatures({sampleSize:-1,view:e.view,returnGeometry:e.returnGeometry,filter:e.filter,requiredFields:n,sqlWhere:e.sqlWhere,signal:e.signal},t))}async _summaryStatsFromClientQuery(e,t){let{view:n,signal:r}=e,i=j(this,e,t),a=await this._fetchFeatureSetFromMemory(i,n,r),o=M(a,C(t)||f(t));return V(o,e.outStatisticTypes)}async _getNormalizationTotalFromMemory(e,t,r){let{featuresJSON:i,graphics:a,layerView:o,query:s}=t,c={include:[`sum`]},l=(!i&&!a&&o&&`querySummaryStatistics`in o?await o.querySummaryStatistics(s,{field:e},{signal:r}):i?await this.workerClient.summaryStatistics({field:e,outStatisticTypes:c},i):await h({attribute:{field:e,outStatisticTypes:c},features:a??[]})).sum;if(l==null)throw new n(`${this.adapterName}:invalid`,`invalid normalizationTotal`);return l}async _summaryStatsFromMemory(e,t){let{view:n,field:r,valueExpression:i,normalizationType:a,signal:o}=e,s={field:r,valueExpression:i,normalizationType:a,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,outStatisticTypes:e.outStatisticTypes},{featuresJSON:c,graphics:l,layerView:u,query:f,fieldInfos:p}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`querySummaryStatistics`});return i&&n&&(c||l)&&(s.fieldType=t?.type?d.toJSON(t.type):null,s.viewInfoParams=N(n),s.timeZone=n.timeZone,s.fieldInfos=p),a===`percent-of-total`&&e.normalizationTotal==null&&(s.normalizationTotal=await this._getNormalizationTotalFromMemory(r,{featuresJSON:c,graphics:l,layerView:u,query:f},o)),!c&&!l&&u&&`querySummaryStatistics`in u?u.querySummaryStatistics(f,s,{signal:o}):c?this.workerClient.summaryStatistics(s,c):h({attribute:s,features:l})}async _getFilteredFeatures(e,t){let n=e,r=t?.geometry;if(t?.spatialRelationship===`intersects`&&r){let{intersectionExecute:t}=await import(`../../../geometry/operators/intersectionOperator.js`);n=e.filter(({geometry:e})=>!!(e&&t(e,r)))}return e.length&&`declaredClass`in e[0]&&e[0].declaredClass===`esri.Graphic`?{graphics:n}:{featuresJSON:n}}async _processStatsFromMemoryParams(e){let{features:t,filter:n}=e;if(t?.length)return this._getFilteredFeatures(t,n);let{view:r,field:i,field2:a,field3:o,normalizationField:s,valueExpression:c,sqlExpression:l,sqlWhere:u,layerViewFunc:d,signal:f}=e,p=e.returnGeometry;if(p==null&&c){if(!G){let{arcadeUtils:e}=await W();G=e}let e=G.hasGeometryOperations(c);e&&await G.enableGeometryOperations(),p=e}let m=null,h=null,g=null,_=null,v=null;if(r)try{let e=this.layer.type===`subtype-sublayer`?this.layer.parent:this.layer;m=await r.whenLayerView(e),h=d!=null&&m!=null&&d in m&&typeof m[d]==`function`}catch{h=!1}if(h)try{await this._waitForLayerViewUpdate(m);let e=await S({field:i,field2:a,field3:o,normalizationField:s,valueExpression:c,fields:await w([l,u],this.layer.fieldsIndex)});P(this,e,m).length?h=!1:(g=this.layer.createQuery(),g.outFields=e,g.returnGeometry=!1,g.where=b(g.where,u),F(g,n)),m.suspended&&(h=!1)}catch{h=!1}return h||(_=await this._fetchFeaturesForStats({field:i,field2:a,field3:o,fields:await w([l,u],this.layer.fieldsIndex),valueExpression:c,normalizationField:s,returnGeometry:p,filter:n,sqlWhere:u,view:r,signal:f},`json`),v=(await S({valueExpression:c})).map(e=>this.getField(e)?.toJSON()).filter(Boolean)),{layerView:m,query:g,featuresJSON:_,fieldInfos:v}}async _uvFromClientQuery(e,t){let{view:n,signal:r}=e,i=I(this,e),a=await this._fetchFeatureSetFromMemory(i,n,r),o=await L(a,{layer:this,field:e.field,field2:e.field2,field3:e.field3,fieldDelimiter:T,view:e.view,signal:e.signal});return H(o,t,e.returnAllCodedValues,T)}async _uvFromMemory(e,t){let{view:n,field:r,valueExpression:i,returnAllCodedValues:a,signal:o}=e,{featuresJSON:s,graphics:c,layerView:l,query:u,fieldInfos:d}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryUniqueValues`}),f={field:r,field2:e.field2,field3:e.field3,fieldDelimiter:T,valueExpression:i,domains:t,returnAllCodedValues:a};return i&&n&&(s||c)&&(f.viewInfoParams=N(n),f.timeZone=n.timeZone,f.fieldInfos=d),!s&&!c&&l&&`queryUniqueValues`in l?l.queryUniqueValues(u,f,{signal:o}):s?this.workerClient.uniqueValues(f,s):g({attribute:f,features:c})}_histogramForField(e){let t=null;return t=e.minValue!=null&&e.maxValue!=null?Promise.resolve({min:e.minValue,max:e.maxValue}):this.summaryStatistics({...e,outStatisticTypes:{include:[`min`,`max`,`count`]}}).then(e=>{if(!e.count)throw new n(`${this.adapterName}:insufficient-data`,`Either the layer has no features or none of the features have data for the field`);return{min:e.min,max:e.max}}),t.then(t=>R(this,{min:t.min,max:t.max},e.field,e.numBins??void 0,e.view,e.filter,e.signal))}async _histogramFromQueryAttributeBinsFromMemory(e){let{field:t,normalizationType:n,signal:r}=e,i=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryAttributeBins`}),{featuresJSON:a,graphics:o,layerView:s,query:c}=i,l=n===`percent-of-total`?e.normalizationTotal??await this._getNormalizationTotalFromMemory(t,i,r):void 0;if(!s||!(`queryAttributeBins`in s)||a||o){let t=D(e,i,l);return a?this.workerClient.histogram(t,a):_({attribute:t,features:o})}let{query:u,min:d,max:f}=await O(e,this,l,c);if(!u)return{bins:[],minValue:d,maxValue:f,normalizationTotal:l};let p=await s.queryAttributeBins(u,{signal:r});return k(p,t?this.getField(t):null,{minValue:d,maxValue:f,normalizationTotal:l})}async _histogramFromMemory(e){let{field:t,signal:n}=e,r=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryHistogram`}),{featuresJSON:i,graphics:a,layerView:o,query:s}=r,c=e.normalizationType===`percent-of-total`?e.normalizationTotal??await this._getNormalizationTotalFromMemory(t,r,n):void 0,l=D(e,r,c);return!i&&!a&&o&&`queryHistogram`in o?o.queryHistogram(s,l,{signal:n}):i?this.workerClient.histogram(l,i):_({attribute:l,features:a})}_classBreaksFromInterpolation(e){let{minValue:t,maxValue:n}=e,r=e.numClasses||5,i=[],a=(n-t)/r;for(let e=0;e<r;e++){let n=t+e*a;i.push({minValue:n,maxValue:n+a})}i[r-1].maxValue=n;let o={classBreaks:i,normalizationTotal:e.normalizationTotal},s=U(o,e.classificationMethod);return Promise.resolve(s)}async _classBreaksFromMemory(e){let{view:t,field:n,valueExpression:r,signal:i}=e,{featuresJSON:a,graphics:o,layerView:s,query:c,fieldInfos:l}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryClassBreaks`}),u={field:n,valueExpression:r,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,standardDeviationInterval:e.standardDeviationInterval,classificationMethod:e.classificationMethod,numClasses:e.numClasses};return r&&t&&(a||o)&&(u.viewInfoParams=N(t),u.timeZone=t.timeZone,u.fieldInfos=l),e.normalizationType===`percent-of-total`&&e.normalizationTotal==null&&(u.normalizationTotal=await this._getNormalizationTotalFromMemory(n,{featuresJSON:a,graphics:o,layerView:s,query:c},i)),!a&&!o&&s&&`queryClassBreaks`in s?s.queryClassBreaks(c,u,{signal:i}):a?this.workerClient.classBreaks(u,a):v({attribute:u,features:o})}async _heatmapStatsFromMemory(e){let{view:t,field:n,radius:r,signal:a}=e;i(t,`InMemoryLayerAdapter: must have a view`);try{let n=await t.whenLayerView(this.layer);if(`queryHeatmapStatistics`in n&&!n.updating&&!e.filter)return await n.queryHeatmapStatistics({field:e.field,radius:e.radius})}catch{o(a)}let{featuresJSON:s,graphics:c}=await this._processStatsFromMemoryParams({...e,returnGeometry:!0}),l=new p({extent:t.extent,tolerance:t.type===`2d`?t.state.resolution:t.pixelSizeAt?.(t.center)}),d={field:n,radius:r,transform:u(l),spatialReference:t.spatialReference?.toJSON(),size:t.size};return!s?.length&&!c?.length?{min:null,max:null}:s?this.workerClient.heatmapStatistics(d,s):y({attribute:d,features:c})}getField(e=``){return this.layer.getField(e)}getFieldUsageInfo(e){return this.getField(e)?{supportsLabelingInfo:!0,supportsRenderer:!0,supportsPopupTemplate:!0,supportsLayerQuery:!0,supportsStatistics:!0}:null}getFieldDomain(e,t){return this.layer.getFieldDomain(e,t)}createQuery(){return this.layer.createQuery()}async summaryStatistics(e){let{field:t,valueExpression:r,sqlExpression:i,features:a,view:o}=e,s=t?this.getField(t):null,c=!!r,l=o?.type===`3d`;if(!r&&i&&!this.supportsSQLExpression)throw new n(`${this.adapterName}:not-supported`,`Layer does not support standardized SQL expression for queries`);return c||a||l?this._summaryStatsFromMemory(e,s):this._summaryStatsFromClientQuery(e,s)}async uniqueValues(e){let{valueExpression:t,sqlExpression:r,features:i,view:a}=e,o=await z(e,this),s=!!t,c=a?.type===`3d`;if(!t&&r&&!this.supportsSQLExpression)throw new n(`${this.adapterName}:not-supported`,`Layer does not support standardized SQL expression for queries`);return s||i||c?this._uvFromMemory(e,o):this._uvFromClientQuery(e,o)}async histogram(e){let{features:t,valueExpression:r,normalizationType:i,sqlExpression:a}=e,o=t||!!r;if(!r&&a&&!this.supportsSQLExpression)throw new n(`${this.adapterName}:not-supported`,`Layer does not support standardized SQL expression for queries`);return o||i?this._histogramFromMemory(e):this._histogramForField(e)}async classBreaks(e){return e.analyzeData===!1?this._classBreaksFromInterpolation(e):this._classBreaksFromMemory(e)}async queryFeatureCount(e){let{whereClause:t,view:r,signal:i}=e;if(!r)throw new n(`${this.adapterName}:insufficient-data`,`view is required to fetch the features from layerView`);let a=this.layer.createQuery();a.where=b(a.where,t);let o=await r.whenLayerView(this.layer);return await s(()=>!o.updating,i),o.queryFeatureCount(a,{signal:i})}async generateRenderer(e,t){throw new n(`${this.adapterName}:not-supported`,`Layer does not support generateRenderer operation`)}async predominantCategories(e){let{fields:t,view:n,signal:r,filter:i}=e,a=m(t),o=await this._uvFromMemory({valueExpression:a,view:n,signal:r,filter:i});return B(o.uniqueValueInfos,t)}async heatmapStatistics(e){return this._heatmapStatsFromMemory(e)}async getSampleFeatures(e,r){let{view:i,sampleSize:a,requiredFields:o,returnGeometry:s,sqlWhere:c,filter:l,signal:u}=e,d=this.layer.createQuery();if(d.outSpatialReference=i?.spatialReference,d.returnGeometry=!!s,d.outFields=o,d.where=b(d.where,c),F(d,l),!i)throw new n(`${this.adapterName}:not-supported`,`view is required to get sample features for Layer`);let f=await i.whenLayerView(this.layer);if(P(this,o,f).length)throw new n(`${this.adapterName}:not-supported`,`Required fields need to be passed in the outFields for Layer`);let p=await this._fetchFeaturesFromMemory(f,d,u,r),m=a!=null&&a>0&&a<=p.length?a:p.length;return t(p,m,1)}load(e){let t=this.layer.load(e).then(async t=>{this.geometryType=t.geometryType,this.objectIdField=t.objectIdField,this.supportsSQLExpression=t.type===`stream`||!!t.capabilities?.query?.supportsSqlExpression,this.minScale=t.minScale,this.maxScale=t.maxScale,this.fullExtent=`fullExtent`in t?t.fullExtent:t.parent?.fullExtent,this._hasLocalSource=!1,this.hasQueryEngine=!0,this.workerClient=x.getInstance(),await this.workerClient.open(e.signal)});return this.addResolvingPromise(t),Promise.resolve(this)}};e([c({readOnly:!0})],K.prototype,`adapterName`,void 0),e([c({constructOnly:!0})],K.prototype,`layer`,void 0),K=e([l(`esri.smartMapping.support.adapters.InMemoryLayerAdapter`)],K);export{K as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import{pickRandom as t}from"../../../core/arrayUtils.js";import n from"../../../core/Error.js";import r from"../../../core/Logger.js";import{assertIsSome as i}from"../../../core/maybe.js";import{timeout as a,throwIfAborted as o}from"../../../core/promiseUtils.js";import{whenOnce as s}from"../../../core/reactiveUtils.js";import{property as c,subclass as l}from"../../../core/accessorSupport/decorators.js";import{toQuantizationTransform as u}from"../../../geometry/support/quantizationUtils.js";import{kebabDict as d}from"../../../layers/support/fieldType.js";import{isTimeOnlyField as f}from"../../../layers/support/fieldUtils.js";import p from"../../../rest/support/QuantizationParameters.js";import{getArcadeForPredominantCategory as m}from"../../statistics/support/predominanceUtils.js";import{summaryStatistics as h,uniqueValues as g,histogram as _,classBreaks as v,heatmapStatistics as y}from"../../statistics/support/statsWorker.js";import{mergeWhereClauses as b}from"../../statistics/support/utils.js";import{WorkerClient as x}from"../../statistics/support/WorkerClient.js";import{getFieldsList as S,isAnyDateField as C,getFieldsFromWhereClauses as w,fieldDelimiter as T}from"../utils.js";import E from"./LayerAdapter.js";import{getHistogramAttributeDefinition as D,getAttributeBinsQuery as O,processQueryAttributeBinsResult as k}from"./support/histogramUtils.js";import{ensureFeaturesJSON as A,getSummaryStatsQuery as j,getSummaryStatisticsFromFeatureSet as M,getViewInfoParams as N,getMissingFields as P,updateQueryWithFeatureFilter as F,getUVQuery as I,getUniqueValuesFromFeatureSet as L,getBins as R,getDomainsForFields as z,getPredominantCategoriesFromUVInfos as B}from"./support/utils.js";import{processSummaryStatisticsResult as V,createUVResult as H,resolveCBResult as U}from"../../../statistics/utils.js";import{loadArcade as W}from"../../../support/loadArcade.js";let G,K=class extends E{constructor(){super(...arguments),this._hasLocalSource=!1,this.adapterName=`in-memory-layer-adapter`}destroy(){this.workerClient?.destroy()}async _waitForLayerViewUpdate(e){if(!e)throw new n(`${this.adapterName}:insufficient-data`,`layerView is required to fetch the features`);let t=new AbortController,i=s(()=>!e.updating,t.signal);await a(i,5e3,t).catch(e=>{throw r.getLogger(this).warn(`LayerView is taking too long to update. Aborting fetch from layerView.`),e})}async _fetchFeatureSetFromMemory(e,t,r){let i=this.layer;if(this._hasLocalSource&&`queryFeatures`in i)return i.queryFeatures(e);if(!t)throw new n(`${this.adapterName}:insufficient-data`,`view is required to fetch the features from layerView`);let a=await t.whenLayerView(this.layer);return await this._waitForLayerViewUpdate(a),a.queryFeatures(e,{signal:r})}async _fetchFeaturesFromMemory(e,t,r,i){let a=this.layer,o=i===`json`;if(this._hasLocalSource&&`queryFeatures`in a){let e=await a.queryFeatures(t);return o?A(e.features):e.features}if(await this._waitForLayerViewUpdate(e),o&&`queryFeaturesJSON`in e&&e.queryFeaturesJSON){let{features:n}=await e.queryFeaturesJSON(t,{signal:r});return n}if(!(`queryFeatures`in e))throw new n(`${this.adapterName}:not-supported`,`'queryFeatures' is not supported on the layerView`);let s=await e.queryFeatures(t,{signal:r});return o?A(s.features):s.features}_fetchFeaturesForStats(e,t){return S({field:e.field,field2:e.field2,field3:e.field3,normalizationField:e.normalizationField,valueExpression:e.valueExpression,fields:e.fields}).then(n=>this.getSampleFeatures({sampleSize:-1,view:e.view,returnGeometry:e.returnGeometry,filter:e.filter,requiredFields:n,sqlWhere:e.sqlWhere,signal:e.signal},t))}async _summaryStatsFromClientQuery(e,t){let{view:n,signal:r}=e,i=j(this,e,t),a=await this._fetchFeatureSetFromMemory(i,n,r),o=M(a,C(t)||f(t));return V(o,e.outStatisticTypes)}async _getNormalizationTotalFromMemory(e,t,r){let{featuresJSON:i,graphics:a,layerView:o,query:s}=t,c={include:[`sum`]},l=(!i&&!a&&o&&`querySummaryStatistics`in o?await o.querySummaryStatistics(s,{field:e},{signal:r}):i?await this.workerClient.summaryStatistics({field:e,outStatisticTypes:c},i):await h({attribute:{field:e,outStatisticTypes:c},features:a??[]})).sum;if(l==null)throw new n(`${this.adapterName}:invalid`,`invalid normalizationTotal`);return l}async _summaryStatsFromMemory(e,t){let{view:n,field:r,valueExpression:i,normalizationType:a,signal:o}=e,s={field:r,valueExpression:i,normalizationType:a,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,outStatisticTypes:e.outStatisticTypes},{featuresJSON:c,graphics:l,layerView:u,query:f,fieldInfos:p}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`querySummaryStatistics`});return i&&n&&(c||l)&&(s.fieldType=t?.type?d.toJSON(t.type):null,s.viewInfoParams=N(n),s.timeZone=n.timeZone,s.fieldInfos=p),a===`percent-of-total`&&e.normalizationTotal==null&&(s.normalizationTotal=await this._getNormalizationTotalFromMemory(r,{featuresJSON:c,graphics:l,layerView:u,query:f},o)),!c&&!l&&u&&`querySummaryStatistics`in u?u.querySummaryStatistics(f,s,{signal:o}):c?this.workerClient.summaryStatistics(s,c):h({attribute:s,features:l})}async _getFilteredFeatures(e,t){let n=e,r=t?.geometry;if(t?.spatialRelationship===`intersects`&&r){let{intersectionExecute:t}=await import(`../../../geometry/operators/intersectionOperator.js`);n=e.filter(({geometry:e})=>!!(e&&t(e,r)))}return e.length&&`declaredClass`in e[0]&&e[0].declaredClass===`esri.Graphic`?{graphics:n}:{featuresJSON:n}}async _processStatsFromMemoryParams(e){let{features:t,filter:n}=e;if(t?.length)return this._getFilteredFeatures(t,n);let{view:r,field:i,field2:a,field3:o,normalizationField:s,valueExpression:c,sqlExpression:l,sqlWhere:u,layerViewFunc:d,signal:f}=e,p=e.returnGeometry;if(p==null&&c){if(!G){let{arcadeUtils:e}=await W();G=e}let e=G.hasGeometryOperations(c);e&&await G.enableGeometryOperations(),p=e}let m=null,h=null,g=null,_=null,v=null;if(r)try{let e=this.layer.type===`subtype-sublayer`?this.layer.parent:this.layer;m=await r.whenLayerView(e),h=d!=null&&m!=null&&d in m&&typeof m[d]==`function`}catch{h=!1}if(h)try{await this._waitForLayerViewUpdate(m);let e=await S({field:i,field2:a,field3:o,normalizationField:s,valueExpression:c,fields:await w([l,u],this.layer.fieldsIndex)});P(this,e,m).length?h=!1:(g=this.layer.createQuery(),g.outFields=e,g.returnGeometry=!1,g.where=b(g.where,u),F(g,n)),m.suspended&&(h=!1)}catch{h=!1}return h||(_=await this._fetchFeaturesForStats({field:i,field2:a,field3:o,fields:await w([l,u],this.layer.fieldsIndex),valueExpression:c,normalizationField:s,returnGeometry:p,filter:n,sqlWhere:u,view:r,signal:f},`json`),v=(await S({valueExpression:c})).map(e=>this.getField(e)?.toJSON()).filter(Boolean)),{layerView:m,query:g,featuresJSON:_,fieldInfos:v}}async _uvFromClientQuery(e,t){let{view:n,signal:r}=e,i=I(this,e),a=await this._fetchFeatureSetFromMemory(i,n,r),o=await L(a,{layer:this,field:e.field,field2:e.field2,field3:e.field3,fieldDelimiter:T,filter:e.filter,view:e.view,signal:e.signal});return H(o,t,e.returnAllCodedValues,T)}async _uvFromMemory(e,t){let{view:n,field:r,valueExpression:i,returnAllCodedValues:a,signal:o}=e,{featuresJSON:s,graphics:c,layerView:l,query:u,fieldInfos:d}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryUniqueValues`}),f={field:r,field2:e.field2,field3:e.field3,fieldDelimiter:T,valueExpression:i,domains:t,returnAllCodedValues:a};return i&&n&&(s||c)&&(f.viewInfoParams=N(n),f.timeZone=n.timeZone,f.fieldInfos=d),!s&&!c&&l&&`queryUniqueValues`in l?l.queryUniqueValues(u,f,{signal:o}):s?this.workerClient.uniqueValues(f,s):g({attribute:f,features:c})}_histogramForField(e){let t=null;return t=e.minValue!=null&&e.maxValue!=null?Promise.resolve({min:e.minValue,max:e.maxValue}):this.summaryStatistics({...e,outStatisticTypes:{include:[`min`,`max`,`count`]}}).then(e=>{if(!e.count)throw new n(`${this.adapterName}:insufficient-data`,`Either the layer has no features or none of the features have data for the field`);return{min:e.min,max:e.max}}),t.then(t=>R(this,{min:t.min,max:t.max},e.field,e.numBins??void 0,e.view,e.filter,e.signal))}async _histogramFromQueryAttributeBinsFromMemory(e){let{field:t,normalizationType:n,signal:r}=e,i=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryAttributeBins`}),{featuresJSON:a,graphics:o,layerView:s,query:c}=i,l=n===`percent-of-total`?e.normalizationTotal??await this._getNormalizationTotalFromMemory(t,i,r):void 0;if(!s||!(`queryAttributeBins`in s)||a||o){let t=D(e,i,l);return a?this.workerClient.histogram(t,a):_({attribute:t,features:o})}let{query:u,min:d,max:f}=await O(e,this,l,c);if(!u)return{bins:[],minValue:d,maxValue:f,normalizationTotal:l};let p=await s.queryAttributeBins(u,{signal:r});return k(p,t?this.getField(t):null,{minValue:d,maxValue:f,normalizationTotal:l})}async _histogramFromMemory(e){let{field:t,signal:n}=e,r=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryHistogram`}),{featuresJSON:i,graphics:a,layerView:o,query:s}=r,c=e.normalizationType===`percent-of-total`?e.normalizationTotal??await this._getNormalizationTotalFromMemory(t,r,n):void 0,l=D(e,r,c);return!i&&!a&&o&&`queryHistogram`in o?o.queryHistogram(s,l,{signal:n}):i?this.workerClient.histogram(l,i):_({attribute:l,features:a})}_classBreaksFromInterpolation(e){let{minValue:t,maxValue:n}=e,r=e.numClasses||5,i=[],a=(n-t)/r;for(let e=0;e<r;e++){let n=t+e*a;i.push({minValue:n,maxValue:n+a})}i[r-1].maxValue=n;let o={classBreaks:i,normalizationTotal:e.normalizationTotal},s=U(o,e.classificationMethod);return Promise.resolve(s)}async _classBreaksFromMemory(e){let{view:t,field:n,valueExpression:r,signal:i}=e,{featuresJSON:a,graphics:o,layerView:s,query:c,fieldInfos:l}=await this._processStatsFromMemoryParams({...e,layerViewFunc:`queryClassBreaks`}),u={field:n,valueExpression:r,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,standardDeviationInterval:e.standardDeviationInterval,classificationMethod:e.classificationMethod,numClasses:e.numClasses};return r&&t&&(a||o)&&(u.viewInfoParams=N(t),u.timeZone=t.timeZone,u.fieldInfos=l),e.normalizationType===`percent-of-total`&&e.normalizationTotal==null&&(u.normalizationTotal=await this._getNormalizationTotalFromMemory(n,{featuresJSON:a,graphics:o,layerView:s,query:c},i)),!a&&!o&&s&&`queryClassBreaks`in s?s.queryClassBreaks(c,u,{signal:i}):a?this.workerClient.classBreaks(u,a):v({attribute:u,features:o})}async _heatmapStatsFromMemory(e){let{view:t,field:n,radius:r,signal:a}=e;i(t,`InMemoryLayerAdapter: must have a view`);try{let n=await t.whenLayerView(this.layer);if(`queryHeatmapStatistics`in n&&!n.updating&&!e.filter)return await n.queryHeatmapStatistics({field:e.field,radius:e.radius})}catch{o(a)}let{featuresJSON:s,graphics:c}=await this._processStatsFromMemoryParams({...e,returnGeometry:!0}),l=new p({extent:t.extent,tolerance:t.type===`2d`?t.state.resolution:t.pixelSizeAt?.(t.center)}),d={field:n,radius:r,transform:u(l),spatialReference:t.spatialReference?.toJSON(),size:t.size};return!s?.length&&!c?.length?{min:null,max:null}:s?this.workerClient.heatmapStatistics(d,s):y({attribute:d,features:c})}getField(e=``){return this.layer.getField(e)}getFieldUsageInfo(e){return this.getField(e)?{supportsLabelingInfo:!0,supportsRenderer:!0,supportsPopupTemplate:!0,supportsLayerQuery:!0,supportsStatistics:!0}:null}getFieldDomain(e,t){return this.layer.getFieldDomain(e,t)}createQuery(){return this.layer.createQuery()}async summaryStatistics(e){let{field:t,valueExpression:r,sqlExpression:i,features:a,view:o}=e,s=t?this.getField(t):null,c=!!r,l=o?.type===`3d`;if(!r&&i&&!this.supportsSQLExpression)throw new n(`${this.adapterName}:not-supported`,`Layer does not support standardized SQL expression for queries`);return c||a||l?this._summaryStatsFromMemory(e,s):this._summaryStatsFromClientQuery(e,s)}async uniqueValues(e){let{valueExpression:t,sqlExpression:r,features:i,view:a}=e,o=await z(e,this),s=!!t,c=a?.type===`3d`;if(!t&&r&&!this.supportsSQLExpression)throw new n(`${this.adapterName}:not-supported`,`Layer does not support standardized SQL expression for queries`);return s||i||c?this._uvFromMemory(e,o):this._uvFromClientQuery(e,o)}async histogram(e){let{features:t,valueExpression:r,normalizationType:i,sqlExpression:a}=e,o=t||!!r;if(!r&&a&&!this.supportsSQLExpression)throw new n(`${this.adapterName}:not-supported`,`Layer does not support standardized SQL expression for queries`);return o||i?this._histogramFromMemory(e):this._histogramForField(e)}async classBreaks(e){return e.analyzeData===!1?this._classBreaksFromInterpolation(e):this._classBreaksFromMemory(e)}async queryFeatureCount(e){let{whereClause:t,view:r,signal:i}=e;if(!r)throw new n(`${this.adapterName}:insufficient-data`,`view is required to fetch the features from layerView`);let a=this.layer.createQuery();a.where=b(a.where,t),F(a,e.filter);let o=await r.whenLayerView(this.layer);return await s(()=>!o.updating,i),o.queryFeatureCount(a,{signal:i})}async generateRenderer(e,t){throw new n(`${this.adapterName}:not-supported`,`Layer does not support generateRenderer operation`)}async predominantCategories(e){let{fields:t,view:n,signal:r,filter:i}=e,a=m(t),o=await this._uvFromMemory({valueExpression:a,view:n,signal:r,filter:i});return B(o.uniqueValueInfos,t)}async heatmapStatistics(e){return this._heatmapStatsFromMemory(e)}async getSampleFeatures(e,r){let{view:i,sampleSize:a,requiredFields:o,returnGeometry:s,sqlWhere:c,filter:l,signal:u}=e,d=this.layer.createQuery();if(d.outSpatialReference=i?.spatialReference,d.returnGeometry=!!s,d.outFields=o,d.where=b(d.where,c),F(d,l),!i)throw new n(`${this.adapterName}:not-supported`,`view is required to get sample features for Layer`);let f=await i.whenLayerView(this.layer);if(P(this,o,f).length)throw new n(`${this.adapterName}:not-supported`,`Required fields need to be passed in the outFields for Layer`);let p=await this._fetchFeaturesFromMemory(f,d,u,r),m=a!=null&&a>0&&a<=p.length?a:p.length;return t(p,m,1)}load(e){let t=this.layer.load(e).then(async t=>{this.geometryType=t.geometryType,this.objectIdField=t.objectIdField,this.supportsSQLExpression=t.type===`stream`||!!t.capabilities?.query?.supportsSqlExpression,this.minScale=t.minScale,this.maxScale=t.maxScale,this.fullExtent=`fullExtent`in t?t.fullExtent:t.parent?.fullExtent,this._hasLocalSource=!1,this.hasQueryEngine=!0,this.workerClient=x.getInstance(),await this.workerClient.open(e.signal)});return this.addResolvingPromise(t),Promise.resolve(this)}};e([c({readOnly:!0})],K.prototype,`adapterName`,void 0),e([c({constructOnly:!0})],K.prototype,`layer`,void 0),K=e([l(`esri.smartMapping.support.adapters.InMemoryLayerAdapter`)],K);export{K as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import{pickRandom as t}from"../../../core/arrayUtils.js";import n from"../../../core/Error.js";import{whenOnce as r}from"../../../core/reactiveUtils.js";import{property as i,subclass as a}from"../../../core/accessorSupport/decorators.js";import{isTimeOnlyField as o}from"../../../layers/support/fieldUtils.js";import{getArcadeForPredominantCategory as s}from"../../statistics/support/predominanceUtils.js";import{mergeWhereClauses as c}from"../../statistics/support/utils.js";import{WorkerClient as l}from"../../statistics/support/WorkerClient.js";import{isAnyDateField as u,fieldDelimiter as d}from"../utils.js";import f from"./FeatureLayerAdapter.js";import{getSummaryStatsQuery as p,getSummaryStatisticsFromFeatureSet as m,getUVQuery as h,getUniqueValuesFromFeatureSet as g,getDomainsForFields as _,
|
|
2
|
+
import{__decorate as e}from"tslib";import{pickRandom as t}from"../../../core/arrayUtils.js";import n from"../../../core/Error.js";import{whenOnce as r}from"../../../core/reactiveUtils.js";import{property as i,subclass as a}from"../../../core/accessorSupport/decorators.js";import{isTimeOnlyField as o}from"../../../layers/support/fieldUtils.js";import{getArcadeForPredominantCategory as s}from"../../statistics/support/predominanceUtils.js";import{mergeWhereClauses as c}from"../../statistics/support/utils.js";import{WorkerClient as l}from"../../statistics/support/WorkerClient.js";import{isAnyDateField as u,fieldDelimiter as d}from"../utils.js";import f from"./FeatureLayerAdapter.js";import{getSummaryStatsQuery as p,getSummaryStatisticsFromFeatureSet as m,getUVQuery as h,getUniqueValuesFromFeatureSet as g,getDomainsForFields as _,updateQueryWithFeatureFilter as v,getPredominantCategoriesFromUVInfos as y,getMissingFields as b}from"./support/utils.js";import{processSummaryStatisticsResult as x,createUVResult as S}from"../../../statistics/utils.js";let C=class extends f{constructor(e){super(e),this.adapterName=`ogc-feature-layer-adapter`}async _waitForLayerViewUpdate(e){if(!e)throw new n(`ogc-feature-layer-adapter:insufficient-data`,`layerView is required to fetch the features`);await r(()=>!e.updating)}async _summaryStatsFromClientQuery(e,t){let{signal:i,view:a}=e;if(!a)throw new n(`ogc-feature-layer-adapter:insufficient-data`,`view is required to fetch the features from layerView`);let s=p(this,e,t),c=await a.whenLayerView(this.layer);await r(()=>!c.updating,i);let l=await c.queryFeatures(s,{signal:i}),d=m(l,u(t)||o(t));return x(d,e.outStatisticTypes)}async _uvFromClientQuery(e,t){let{signal:i,view:a}=e;if(!a)throw new n(`ogc-feature-layer-adapter:insufficient-data`,`view is required to fetch the features from layerView`);let o=h(this,e),s=await a.whenLayerView(this.layer);await r(()=>!s.updating,i);let c=await s.queryFeatures(o,{signal:i}),l=await g(c,{layer:this,field:e.field,field2:e.field2,field3:e.field3,fieldDelimiter:d,filter:e.filter,view:e.view,signal:e.signal});return S(l,t,e.returnAllCodedValues,d)}summaryStatistics(e){let{field:t,valueExpression:r,sqlExpression:i,features:a,view:o}=e,s=t?this.getField(t):null,c=!!r,l=o?.type===`3d`;if(!r&&i&&!this.supportsSQLExpression)throw new n(`ogc-feature-layer-adapter:not-supported`,`Layer does not support standardized SQL expression for queries`);return c||a||l?this._summaryStatsFromMemory(e,s):this._summaryStatsFromClientQuery(e,s)}async uniqueValues(e){let{valueExpression:t,sqlExpression:r,features:i,view:a}=e,o=await _(e,this),s=!!t,c=a?.type===`3d`;if(!t&&r&&!this.supportsSQLExpression)throw new n(`ogc-feature-layer-adapter:not-supported`,`Layer does not support standardized SQL expression for queries`);return s||i||c?this._uvFromMemory(e,o):this._uvFromClientQuery(e,o)}histogram(e){let{features:t,valueExpression:r,normalizationType:i,sqlExpression:a}=e,o=t||!!r;if(!r&&a&&!this.supportsSQLExpression)throw new n(`ogc-feature-layer-adapter:not-supported`,`Layer does not support standardized SQL expression for queries`);return o||i?this._histogramFromMemory(e):this._histogramForField(e)}classBreaks(e){return e.analyzeData===!1?this._classBreaksFromInterpolation(e):this._classBreaksFromMemory(e)}async queryFeatureCount(e){let{whereClause:t,view:i,signal:a}=e;if(!i)throw new n(`ogc-feature-layer-adapter:insufficient-data`,`view is required to fetch the features from layerView`);let o=this.layer.createQuery();o.where=c(o.where,t),v(o,e.filter);let s=await i.whenLayerView(this.layer);return await r(()=>!s.updating,a),s.queryFeatureCount(o,{signal:a})}generateRenderer(e,t){throw new n(`ogc-feature-layer-adapter:not-supported`,`OGCFeatureLayer does not support generateRenderer operation`)}async predominantCategories(e){let{fields:t,view:n,signal:r}=e,i=s(t),a=await this._uvFromMemory({valueExpression:i,view:n,signal:r});return y(a.uniqueValueInfos,t)}async getSampleFeatures(e,r){let{view:i,sampleSize:a,requiredFields:o,returnGeometry:s,signal:c}=e,l=this.layer.createQuery();if(l.outSpatialReference=i?.spatialReference,l.returnGeometry=!!s,l.outFields=o,!i)throw new n(`ogc-feature-layer-adapter:not-supported`,`view is required to get sample features for OGCFeatureLayer`);let u=await i.whenLayerView(this.layer);if(b(this,o,u).length)throw new n(`ogc-feature-layer-adapter:not-supported`,`Required fields need to be passed in the outFields for OGCFeatureLayer`);let d=await this._fetchFeaturesFromMemory(u,l,c,r),f=a!=null&&a>0&&a<=d.length?a:d.length;return t(d,f,1)}load(e){let t=this.layer.load(e).then(async t=>{this.geometryType=t.geometryType,this.objectIdField=t.objectIdField,this.supportsSQLExpression=t.capabilities?.query?.supportsSqlExpression,this.minScale=t.minScale,this.maxScale=t.maxScale,this.fullExtent=t.fullExtent,this.workerClient=l.getInstance(),await this.workerClient.open(e.signal)});return this.addResolvingPromise(t),Promise.resolve(this)}};e([i({readOnly:!0})],C.prototype,`adapterName`,void 0),C=e([a(`esri.smartMapping.support.adapters.OGCFeatureLayerAdapter`)],C);const w=C;export{w as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import{pickRandom as n}from"../../../core/arrayUtils.js";import r from"../../../core/Error.js";import{timeout as i,throwIfAborted as a}from"../../../core/promiseUtils.js";import{whenOnce as o}from"../../../core/reactiveUtils.js";import{property as s,subclass as c}from"../../../core/accessorSupport/decorators.js";import{kebabDict as l}from"../../../layers/support/fieldType.js";import{isNumericField as u}from"../../../layers/support/fieldUtils.js";import d from"../../../rest/support/FeatureSet.js";import{summaryStatistics as f,uniqueValues as p,classBreaks as m,histogram as h}from"../../statistics/support/statsWorker.js";import{WorkerClient as g}from"../../statistics/support/WorkerClient.js";import{getFieldsList as _,isAnyDateField as v,fieldDelimiter as y}from"../utils.js";import b from"./FeatureLayerAdapter.js";import x from"./LayerAdapter.js";import{getMissingFields as S,ensureFeaturesJSON as C,getViewInfoParams as w,getUniqueValuesFromFeatureSet as T,getHistogramFromFeatureSet as E,getDomainsForFields as D}from"./support/utils.js";import{createUVResult as O}from"../../../statistics/utils.js";let k=class extends x{constructor(e){super(e),this._featureLayerAdapter=null,this.workerClient=null,this.adapterName=`scene-layer-adapter`}destroy(){this.workerClient?.destroy()}_hasCachedStatistics(e){return this.layer.hasCachedStatistics(e)}_updateQuery(e,t=[],n=[]){if(!e||!n.length)return e;let r=this.layer.objectIdField,i=e.clone(),a=t.filter(e=>{let t=this.layer.getField(e);return!n.includes(t.name)});return i.outFields=a.some(e=>this.layer.getField(e).name===r)?a:[...a,r],i}async _fetchFeaturesFromMemory(e,t,n){if(!e)throw new r(`scene-layer-adapter:insufficient-data`,`view is required to fetch the features from layerView`);let s=await e.whenLayerView(this.layer),c=new AbortController,l=c.signal,u=o(()=>!s.updating,l);await i(u,5e3,c);let d=S(this,n,s);a(l);let f=this._updateQuery(t,n??[],d),p=await s.queryFeatures(f,{signal:l});a(l);let m=p.features;return d.length?s.whenGraphicAttributes(m,d):m}async _fetchFeaturesJSONFromMemory(e,t,n){return this._fetchFeaturesFromMemory(e,t,n).then(C)}_fetchFeaturesForStats(e,t){return _({field:e.field,normalizationField:e.normalizationField,valueExpression:e.valueExpression}).then(n=>this.getSampleFeatures({sampleSize:-1,view:e.view,returnGeometry:e.returnGeometry,requiredFields:n,signal:e.signal},t))}async _processStatsFromMemoryParams(e){let t=e.features;if(t?.length)return t.length&&`declaredClass`in t[0]&&t[0].declaredClass===`esri.Graphic`?{graphics:t}:{featuresJSON:t};let{view:n,field:i,normalizationField:a,valueExpression:o,signal:s}=e,c=await this._fetchFeaturesForStats({field:i,valueExpression:o,normalizationField:a,view:n,signal:s},null);if(!c?.length)throw new r(`scene-layer-adapter:insufficient-data`,`No features are available to calculate statistics`);return{graphics:c}}_getCachedStatistics(e,t){let n=this.layer;return e.valueExpression||e.sqlExpression||e.sqlWhere||e.minValue||e.maxValue?Promise.reject(new r(`scene-layer-adapter:not-supported`,`This Layer does not support calculating statistics when 'valueExpression', 'sqlExpression', 'sqlWhere', 'minValue' or 'maxValue' is specified`)):n.queryCachedStatistics(t?.name,{signal:e.signal}).then(e=>{let t=e.stats,{min:n,max:r,totalValuesCount:i}=t,{avg:a,stddev:o,sum:s,variance:c,count:l}=t;return(n!==0||r!==0)&&(a=a===0?null:a,s=s===0?null:s,o=o===0?null:o,c=c===0?null:c,l=l===0?null:l),l??(s!=null&&a!=null?l=Math.round(s/a):i!=null&&(l=i)),{avg:a,count:l,max:r,min:n,stddev:o,sum:s,variance:c}})}async _getNormalizationTotal(e,t,n){let i={include:[`sum`]},a=(t?await this.workerClient.summaryStatistics({field:e,outStatisticTypes:i},t):await f({attribute:{field:e,outStatisticTypes:i},features:n})).sum;if(a==null)throw new r(`scene-layer-adapter:invalid`,`invalid normalizationTotal`);return a}async _getSummaryStatisticsFromMemory(e,t){let{view:n,field:r,normalizationField:i,valueExpression:a}=e,{featuresJSON:o,graphics:s}=await this._processStatsFromMemoryParams(e),c={field:r,valueExpression:a,normalizationType:e.normalizationType,normalizationField:i,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,outStatisticTypes:e.outStatisticTypes};return e.valueExpression&&n&&o&&(c.fieldType=t?.type?l.toJSON(t.type):null,c.viewInfoParams=w(n),c.timeZone=n.timeZone),e.normalizationType===`percent-of-total`&&e.normalizationTotal==null&&(c.normalizationTotal=await this._getNormalizationTotal(r,o,s)),o?this.workerClient.summaryStatistics(c,o):f({attribute:c,features:s})}_getCachedStatisticsForUniqueValues(e,n){let i=this.layer,a=n?.name,o=n&&e.field?this.getFieldDomain(e.field):null;return e.valueExpression||e.sqlExpression||e.sqlWhere?Promise.reject(new r(`scene-layer-adapter:not-supported`,`This Layer does not support calculating statistics when 'valueExpression', 'sqlExpression' or 'sqlWhere' is specified`)):i.queryCachedStatistics(a,{signal:e.signal}).then(r=>{let o=r.stats;if(!o.mostFrequentValues)throw Error();let s=r.labels?.labels,c={},l=[],f=`countOF`+a;o.mostFrequentValues.forEach(e=>{let r=new t({attributes:{}});r.attributes[a]=n&&n.name!==i.objectIdField&&(u(n)||v(n))?Number(e.value):e.value,r.attributes[f]=e.count,l.push(r)}),s&&s.forEach(e=>{c[e.value]=e.label});let p=new d({features:l});return T(p,{layer:this,field:e.field,labels:c,view:e.view,signal:e.signal})}).then(t=>O(t,[o],e.returnAllCodedValues))}async _getUniqueValuesFromMemory(e,t){let{view:n,field:r,field2:i,field3:a,valueExpression:o,returnAllCodedValues:s}=e,c={field:r,field2:i,field3:a,fieldDelimiter:y,valueExpression:o,domains:t,returnAllCodedValues:s},{featuresJSON:l,graphics:u}=await this._processStatsFromMemoryParams(e);return e.valueExpression&&n&&l&&(c.viewInfoParams=w(n),c.timeZone=n.timeZone),l?this.workerClient.uniqueValues(c,l):p({attribute:c,features:u})}_getCachedStatisticsForHistogram(e,t){let n=this.layer;return e.valueExpression||e.sqlExpression||e.sqlWhere||e.normalizationType?Promise.reject(new r(`scene-layer-adapter:not-supported`,`This Layer does not support calculating statistics when 'valueExpression' or 'sqlExpression' or 'sqlWhere' or 'normalizationType' is specified`)):n.queryCachedStatistics(t&&t.name,{signal:e.signal}).then(t=>{let n=t.stats,{minValue:r,maxValue:i}=e,a=r??n.min,o=i??n.max,s=e.numBins||10,c=A(n.histogram,a,o,s);return E(c,a,o,s)})}async _getClassBreaksFromMemory(e){let{view:t,field:n,normalizationField:r,valueExpression:i}=e,{featuresJSON:a,graphics:o}=await this._processStatsFromMemoryParams(e),s={field:n,valueExpression:i,normalizationType:e.normalizationType,normalizationField:r,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,standardDeviationInterval:e.standardDeviationInterval,classificationMethod:e.classificationMethod,numClasses:e.numClasses};return e.valueExpression&&t&&a&&(s.viewInfoParams=w(t),s.timeZone=t.timeZone),e.normalizationType===`percent-of-total`&&e.normalizationTotal==null&&(s.normalizationTotal=await this._getNormalizationTotal(n,a,o)),a?this.workerClient.classBreaks(s,a):m({attribute:s,features:o})}async _getHistogramFromMemory(e){let{view:t,field:n}=e,{featuresJSON:r,graphics:i}=await this._processStatsFromMemoryParams(e),a={field:n,valueExpression:e.valueExpression,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,standardDeviationInterval:e.standardDeviationInterval,classificationMethod:e.classificationMethod,numBins:e.numBins};return e.valueExpression&&t&&r&&(a.viewInfoParams=w(t),a.timeZone=t.timeZone),e.normalizationType===`percent-of-total`&&e.normalizationTotal==null&&(a.normalizationTotal=await this._getNormalizationTotal(n,r,i)),r?this.workerClient.histogram(a,r):h({attribute:a,features:i})}getField(e){return this.layer.getField(e??``)}getFieldUsageInfo(e){let t=this.getField(e);if(!t)return null;let n=this.layer.getFieldUsageInfo(t.name);return{supportsLabelingInfo:n.supportsLabelingInfo,supportsPopupTemplate:n.supportsPopupTemplate,supportsRenderer:n.supportsRenderer,supportsLayerQuery:n.supportsLayerQuery,supportsStatistics:!0}}getFieldDomain(e,t){return this._featureLayerAdapter?this._featureLayerAdapter.getFieldDomain(e,t):null}createQuery(){return this.layer.createQuery()}summaryStatistics(e){let t=this.getField(e.field);if(this._featureLayerAdapter)return this._featureLayerAdapter.summaryStatistics(e);if(e.filter)throw new r(`scene-layer-adapter:not-supported`,`filter is not supported`);return this._hasCachedStatistics(t?.name)?this._getCachedStatistics(e,t).catch(()=>(a(e.signal),this._getSummaryStatisticsFromMemory(e,t))):this._getSummaryStatisticsFromMemory(e,t)}async uniqueValues(e){if(this._featureLayerAdapter)return this._featureLayerAdapter.uniqueValues(e);if(e.filter)throw new r(`scene-layer-adapter:not-supported`,`filter is not supported`);let t=await D(e,this),{field:n,field2:i}=e,o=n&&i,s=this.getField(n);return!o&&s&&this._hasCachedStatistics(s.name)?this._getCachedStatisticsForUniqueValues(e,s).catch(()=>(a(e.signal),this._getUniqueValuesFromMemory(e,t))):this._getUniqueValuesFromMemory(e,t)}histogram(e){let t=this.getField(e.field);if(this._featureLayerAdapter)return this._featureLayerAdapter.histogram(e);if(e.filter)throw new r(`scene-layer-adapter:not-supported`,`filter is not supported`);return t&&this._hasCachedStatistics(t.name)?this._getCachedStatisticsForHistogram(e,t).catch(()=>(a(e.signal),this._getHistogramFromMemory(e))):this._getHistogramFromMemory(e)}classBreaks(e){let t=this.getField(e.field);if(this._featureLayerAdapter)return this._featureLayerAdapter.classBreaks(e);if(e.filter)throw new r(`scene-layer-adapter:not-supported`,`filter is not supported`);return this._hasCachedStatistics(t?.name)?Promise.reject(new r(`scene-layer-adapter:not-supported`,`Cached stats not supported`)):this._getClassBreaksFromMemory(e)}queryFeatureCount(e){return this._featureLayerAdapter?this._featureLayerAdapter.queryFeatureCount(e):Promise.reject(new r(`scene-layer-adapter:not-supported`,`SceneLayer without associated FeatureLayer does not support count query`))}generateRenderer(e,t){return this._featureLayerAdapter?this._featureLayerAdapter.generateRenderer(e,t):Promise.reject(new r(`scene-layer-adapter:not-supported`,`SceneLayer without associated FeatureLayer does not support generateRenderer operation`))}heatmapStatistics(e){return this._featureLayerAdapter?this._featureLayerAdapter.heatmapStatistics(e):Promise.reject(new r(`scene-layer-adapter:not-supported`,`SceneLayer without associated FeatureLayer does not support heatmapStatistics operation`))}async predominantCategories(e){if(this._featureLayerAdapter)return this._featureLayerAdapter.predominantCategories(e);throw new r(`scene-layer-adapter:not-supported`,`SceneLayer without associated FeatureLayer does not support predominantCategories`)}async getSampleFeatures(e,t){if(e.filter)throw new r(`scene-layer-adapter:not-supported`,`filter is not supported`);let{view:i,sampleSize:o,requiredFields:s,returnGeometry:c,signal:l}=e,u=t===`json`,d=this.createQuery();d.outFields=s,d.returnGeometry=!!c,d.where=null,d.num=o;let f=[];try{if(f=u?await this._fetchFeaturesJSONFromMemory(i,d,s):await this._fetchFeaturesFromMemory(i,d,s),f.length&&o!=null&&o>0&&o<=f.length)return n(f,o,1)}catch{a(l)}let p=null;if(this._featureLayerAdapter){let n={...e};delete n.view,p=await this._featureLayerAdapter.getSampleFeatures(n,t)}return p?.length?p:n(f,f.length,1)}load(e){let t=this.layer.load(e).then(async t=>{this.workerClient=g.getInstance(),await this.workerClient.open(e.signal);let n=t.associatedLayer;if(this.geometryType=t.geometryType,n!=null)return this._featureLayerAdapter=new b({layer:n}),this._featureLayerAdapter.load(e).then(()=>{this.objectIdField=this._featureLayerAdapter.objectIdField,this.supportsSQLExpression=this._featureLayerAdapter.supportsSQLExpression,this.minScale=this._featureLayerAdapter.minScale,this.maxScale=this._featureLayerAdapter.maxScale,this.fullExtent=this._featureLayerAdapter.fullExtent});this.objectIdField=t.objectIdField,this.supportsSQLExpression=!1,this.hasQueryEngine=!1,this.fullExtent=t.fullExtent});return this.addResolvingPromise(t),Promise.resolve(this)}};e([s({readOnly:!0})],k.prototype,`adapterName`,void 0),e([s({constructOnly:!0})],k.prototype,`layer`,void 0),k=e([c(`esri.smartMapping.support.adapters.SceneLayerAdapter`)],k);function A(e,n=e.minimum,r=e.maximum,i){let a=[];for(let e=0;e<i;e++)a[e]=0;let o=e.counts.length,s=e.minimum,c=e.maximum;for(let t=0;t<o;t++){let l=(t+.5)/o,u=((1-l)*s+l*c-n)/(r-n)*i;u>=0&&u<=i&&(a[u===i?i-1:Math.floor(u)]+=e.counts[t])}let l=[];return a.forEach((e,n)=>{let r=new t({attributes:{}});r.attributes.EXPR_1=n+1,r.attributes.countOFExpr=e,l.push(r)}),new d({features:l})}export{k as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import{pickRandom as n}from"../../../core/arrayUtils.js";import r from"../../../core/Error.js";import{timeout as i,throwIfAborted as a}from"../../../core/promiseUtils.js";import{whenOnce as o}from"../../../core/reactiveUtils.js";import{property as s,subclass as c}from"../../../core/accessorSupport/decorators.js";import{kebabDict as l}from"../../../layers/support/fieldType.js";import{isNumericField as u}from"../../../layers/support/fieldUtils.js";import d from"../../../rest/support/FeatureSet.js";import{summaryStatistics as f,uniqueValues as p,classBreaks as m,histogram as h}from"../../statistics/support/statsWorker.js";import{WorkerClient as g}from"../../statistics/support/WorkerClient.js";import{getFieldsList as _,isAnyDateField as v,fieldDelimiter as y}from"../utils.js";import b from"./FeatureLayerAdapter.js";import x from"./LayerAdapter.js";import{getMissingFields as S,ensureFeaturesJSON as C,getViewInfoParams as w,getUniqueValuesFromFeatureSet as T,getHistogramFromFeatureSet as E,getDomainsForFields as D}from"./support/utils.js";import{createUVResult as O}from"../../../statistics/utils.js";let k=class extends x{constructor(e){super(e),this._featureLayerAdapter=null,this.workerClient=null,this.adapterName=`scene-layer-adapter`}destroy(){this.workerClient?.destroy()}_hasCachedStatistics(e){return this.layer.hasCachedStatistics(e)}_updateQuery(e,t=[],n=[]){if(!e||!n.length)return e;let r=this.layer.objectIdField,i=e.clone(),a=t.filter(e=>{let t=this.layer.getField(e);return!n.includes(t.name)});return i.outFields=a.some(e=>this.layer.getField(e).name===r)?a:[...a,r],i}async _fetchFeaturesFromMemory(e,t,n){if(!e)throw new r(`scene-layer-adapter:insufficient-data`,`view is required to fetch the features from layerView`);let s=await e.whenLayerView(this.layer),c=new AbortController,l=c.signal,u=o(()=>!s.updating,l);await i(u,5e3,c);let d=S(this,n,s);a(l);let f=this._updateQuery(t,n??[],d),p=await s.queryFeatures(f,{signal:l});a(l);let m=p.features;return d.length?s.whenGraphicAttributes(m,d):m}async _fetchFeaturesJSONFromMemory(e,t,n){return this._fetchFeaturesFromMemory(e,t,n).then(C)}_fetchFeaturesForStats(e,t){return _({field:e.field,normalizationField:e.normalizationField,valueExpression:e.valueExpression}).then(n=>this.getSampleFeatures({sampleSize:-1,view:e.view,returnGeometry:e.returnGeometry,requiredFields:n,signal:e.signal},t))}async _processStatsFromMemoryParams(e){let t=e.features;if(t?.length)return t.length&&`declaredClass`in t[0]&&t[0].declaredClass===`esri.Graphic`?{graphics:t}:{featuresJSON:t};let{view:n,field:i,normalizationField:a,valueExpression:o,signal:s}=e,c=await this._fetchFeaturesForStats({field:i,valueExpression:o,normalizationField:a,view:n,signal:s},null);if(!c?.length)throw new r(`scene-layer-adapter:insufficient-data`,`No features are available to calculate statistics`);return{graphics:c}}_getCachedStatistics(e,t){let n=this.layer;return e.valueExpression||e.sqlExpression||e.sqlWhere||e.minValue||e.maxValue?Promise.reject(new r(`scene-layer-adapter:not-supported`,`This Layer does not support calculating statistics when 'valueExpression', 'sqlExpression', 'sqlWhere', 'minValue' or 'maxValue' is specified`)):n.queryCachedStatistics(t?.name,{signal:e.signal}).then(e=>{let t=e.stats,{min:n,max:r,totalValuesCount:i}=t,{avg:a,stddev:o,sum:s,variance:c,count:l}=t;return(n!==0||r!==0)&&(a=a===0?null:a,s=s===0?null:s,o=o===0?null:o,c=c===0?null:c,l=l===0?null:l),l??(s!=null&&a!=null?l=Math.round(s/a):i!=null&&(l=i)),{avg:a,count:l,max:r,min:n,stddev:o,sum:s,variance:c}})}async _getNormalizationTotal(e,t,n){let i={include:[`sum`]},a=(t?await this.workerClient.summaryStatistics({field:e,outStatisticTypes:i},t):await f({attribute:{field:e,outStatisticTypes:i},features:n})).sum;if(a==null)throw new r(`scene-layer-adapter:invalid`,`invalid normalizationTotal`);return a}async _getSummaryStatisticsFromMemory(e,t){let{view:n,field:r,normalizationField:i,valueExpression:a}=e,{featuresJSON:o,graphics:s}=await this._processStatsFromMemoryParams(e),c={field:r,valueExpression:a,normalizationType:e.normalizationType,normalizationField:i,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,outStatisticTypes:e.outStatisticTypes};return e.valueExpression&&n&&o&&(c.fieldType=t?.type?l.toJSON(t.type):null,c.viewInfoParams=w(n),c.timeZone=n.timeZone),e.normalizationType===`percent-of-total`&&e.normalizationTotal==null&&(c.normalizationTotal=await this._getNormalizationTotal(r,o,s)),o?this.workerClient.summaryStatistics(c,o):f({attribute:c,features:s})}_getCachedStatisticsForUniqueValues(e,n){let i=this.layer,a=n?.name,o=n&&e.field?this.getFieldDomain(e.field):null;return e.valueExpression||e.sqlExpression||e.sqlWhere?Promise.reject(new r(`scene-layer-adapter:not-supported`,`This Layer does not support calculating statistics when 'valueExpression', 'sqlExpression' or 'sqlWhere' is specified`)):i.queryCachedStatistics(a,{signal:e.signal}).then(r=>{let o=r.stats;if(!o.mostFrequentValues)throw Error();let s=r.labels?.labels,c={},l=[],f=`countOF`+a;o.mostFrequentValues.forEach(e=>{let r=new t({attributes:{}});r.attributes[a]=n&&n.name!==i.objectIdField&&(u(n)||v(n))?Number(e.value):e.value,r.attributes[f]=e.count,l.push(r)}),s&&s.forEach(e=>{c[e.value]=e.label});let p=new d({features:l});return T(p,{layer:this,field:e.field,labels:c,filter:e.filter,view:e.view,signal:e.signal})}).then(t=>O(t,[o],e.returnAllCodedValues))}async _getUniqueValuesFromMemory(e,t){let{view:n,field:r,field2:i,field3:a,valueExpression:o,returnAllCodedValues:s}=e,c={field:r,field2:i,field3:a,fieldDelimiter:y,valueExpression:o,domains:t,returnAllCodedValues:s},{featuresJSON:l,graphics:u}=await this._processStatsFromMemoryParams(e);return e.valueExpression&&n&&l&&(c.viewInfoParams=w(n),c.timeZone=n.timeZone),l?this.workerClient.uniqueValues(c,l):p({attribute:c,features:u})}_getCachedStatisticsForHistogram(e,t){let n=this.layer;return e.valueExpression||e.sqlExpression||e.sqlWhere||e.normalizationType?Promise.reject(new r(`scene-layer-adapter:not-supported`,`This Layer does not support calculating statistics when 'valueExpression' or 'sqlExpression' or 'sqlWhere' or 'normalizationType' is specified`)):n.queryCachedStatistics(t&&t.name,{signal:e.signal}).then(t=>{let n=t.stats,{minValue:r,maxValue:i}=e,a=r??n.min,o=i??n.max,s=e.numBins||10,c=A(n.histogram,a,o,s);return E(c,a,o,s)})}async _getClassBreaksFromMemory(e){let{view:t,field:n,normalizationField:r,valueExpression:i}=e,{featuresJSON:a,graphics:o}=await this._processStatsFromMemoryParams(e),s={field:n,valueExpression:i,normalizationType:e.normalizationType,normalizationField:r,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,standardDeviationInterval:e.standardDeviationInterval,classificationMethod:e.classificationMethod,numClasses:e.numClasses};return e.valueExpression&&t&&a&&(s.viewInfoParams=w(t),s.timeZone=t.timeZone),e.normalizationType===`percent-of-total`&&e.normalizationTotal==null&&(s.normalizationTotal=await this._getNormalizationTotal(n,a,o)),a?this.workerClient.classBreaks(s,a):m({attribute:s,features:o})}async _getHistogramFromMemory(e){let{view:t,field:n}=e,{featuresJSON:r,graphics:i}=await this._processStatsFromMemoryParams(e),a={field:n,valueExpression:e.valueExpression,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,minValue:e.minValue,maxValue:e.maxValue,standardDeviationInterval:e.standardDeviationInterval,classificationMethod:e.classificationMethod,numBins:e.numBins};return e.valueExpression&&t&&r&&(a.viewInfoParams=w(t),a.timeZone=t.timeZone),e.normalizationType===`percent-of-total`&&e.normalizationTotal==null&&(a.normalizationTotal=await this._getNormalizationTotal(n,r,i)),r?this.workerClient.histogram(a,r):h({attribute:a,features:i})}getField(e){return this.layer.getField(e??``)}getFieldUsageInfo(e){let t=this.getField(e);if(!t)return null;let n=this.layer.getFieldUsageInfo(t.name);return{supportsLabelingInfo:n.supportsLabelingInfo,supportsPopupTemplate:n.supportsPopupTemplate,supportsRenderer:n.supportsRenderer,supportsLayerQuery:n.supportsLayerQuery,supportsStatistics:!0}}getFieldDomain(e,t){return this._featureLayerAdapter?this._featureLayerAdapter.getFieldDomain(e,t):null}createQuery(){return this.layer.createQuery()}summaryStatistics(e){let t=this.getField(e.field);if(this._featureLayerAdapter)return this._featureLayerAdapter.summaryStatistics(e);if(e.filter)throw new r(`scene-layer-adapter:not-supported`,`filter is not supported`);return this._hasCachedStatistics(t?.name)?this._getCachedStatistics(e,t).catch(()=>(a(e.signal),this._getSummaryStatisticsFromMemory(e,t))):this._getSummaryStatisticsFromMemory(e,t)}async uniqueValues(e){if(this._featureLayerAdapter)return this._featureLayerAdapter.uniqueValues(e);if(e.filter)throw new r(`scene-layer-adapter:not-supported`,`filter is not supported`);let t=await D(e,this),{field:n,field2:i}=e,o=n&&i,s=this.getField(n);return!o&&s&&this._hasCachedStatistics(s.name)?this._getCachedStatisticsForUniqueValues(e,s).catch(()=>(a(e.signal),this._getUniqueValuesFromMemory(e,t))):this._getUniqueValuesFromMemory(e,t)}histogram(e){let t=this.getField(e.field);if(this._featureLayerAdapter)return this._featureLayerAdapter.histogram(e);if(e.filter)throw new r(`scene-layer-adapter:not-supported`,`filter is not supported`);return t&&this._hasCachedStatistics(t.name)?this._getCachedStatisticsForHistogram(e,t).catch(()=>(a(e.signal),this._getHistogramFromMemory(e))):this._getHistogramFromMemory(e)}classBreaks(e){let t=this.getField(e.field);if(this._featureLayerAdapter)return this._featureLayerAdapter.classBreaks(e);if(e.filter)throw new r(`scene-layer-adapter:not-supported`,`filter is not supported`);return this._hasCachedStatistics(t?.name)?Promise.reject(new r(`scene-layer-adapter:not-supported`,`Cached stats not supported`)):this._getClassBreaksFromMemory(e)}queryFeatureCount(e){return this._featureLayerAdapter?this._featureLayerAdapter.queryFeatureCount(e):Promise.reject(new r(`scene-layer-adapter:not-supported`,`SceneLayer without associated FeatureLayer does not support count query`))}generateRenderer(e,t){return this._featureLayerAdapter?this._featureLayerAdapter.generateRenderer(e,t):Promise.reject(new r(`scene-layer-adapter:not-supported`,`SceneLayer without associated FeatureLayer does not support generateRenderer operation`))}heatmapStatistics(e){return this._featureLayerAdapter?this._featureLayerAdapter.heatmapStatistics(e):Promise.reject(new r(`scene-layer-adapter:not-supported`,`SceneLayer without associated FeatureLayer does not support heatmapStatistics operation`))}async predominantCategories(e){if(this._featureLayerAdapter)return this._featureLayerAdapter.predominantCategories(e);throw new r(`scene-layer-adapter:not-supported`,`SceneLayer without associated FeatureLayer does not support predominantCategories`)}async getSampleFeatures(e,t){if(e.filter)throw new r(`scene-layer-adapter:not-supported`,`filter is not supported`);let{view:i,sampleSize:o,requiredFields:s,returnGeometry:c,signal:l}=e,u=t===`json`,d=this.createQuery();d.outFields=s,d.returnGeometry=!!c,d.where=null,d.num=o;let f=[];try{if(f=u?await this._fetchFeaturesJSONFromMemory(i,d,s):await this._fetchFeaturesFromMemory(i,d,s),f.length&&o!=null&&o>0&&o<=f.length)return n(f,o,1)}catch{a(l)}let p=null;if(this._featureLayerAdapter){let n={...e};delete n.view,p=await this._featureLayerAdapter.getSampleFeatures(n,t)}return p?.length?p:n(f,f.length,1)}load(e){let t=this.layer.load(e).then(async t=>{this.workerClient=g.getInstance(),await this.workerClient.open(e.signal);let n=t.associatedLayer;if(this.geometryType=t.geometryType,n!=null)return this._featureLayerAdapter=new b({layer:n}),this._featureLayerAdapter.load(e).then(()=>{this.objectIdField=this._featureLayerAdapter.objectIdField,this.supportsSQLExpression=this._featureLayerAdapter.supportsSQLExpression,this.minScale=this._featureLayerAdapter.minScale,this.maxScale=this._featureLayerAdapter.maxScale,this.fullExtent=this._featureLayerAdapter.fullExtent});this.objectIdField=t.objectIdField,this.supportsSQLExpression=!1,this.hasQueryEngine=!1,this.fullExtent=t.fullExtent});return this.addResolvingPromise(t),Promise.resolve(this)}};e([s({readOnly:!0})],k.prototype,`adapterName`,void 0),e([s({constructOnly:!0})],k.prototype,`layer`,void 0),k=e([c(`esri.smartMapping.support.adapters.SceneLayerAdapter`)],k);function A(e,n=e.minimum,r=e.maximum,i){let a=[];for(let e=0;e<i;e++)a[e]=0;let o=e.counts.length,s=e.minimum,c=e.maximum;for(let t=0;t<o;t++){let l=(t+.5)/o,u=((1-l)*s+l*c-n)/(r-n)*i;u>=0&&u<=i&&(a[u===i?i-1:Math.floor(u)]+=e.counts[t])}let l=[];return a.forEach((e,n)=>{let r=new t({attributes:{}});r.attributes.EXPR_1=n+1,r.attributes.countOFExpr=e,l.push(r)}),new d({features:l})}export{k as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{isSome as e}from"../../../../core/arrayUtils.js";import{throwIfAborted as t}from"../../../../core/promiseUtils.js";import n from"../../../../layers/support/CodedValue.js";import r from"../../../../layers/support/CodedValueDomain.js";import i from"../../../../layers/support/Field.js";import{
|
|
2
|
+
import{isSome as e}from"../../../../core/arrayUtils.js";import{throwIfAborted as t}from"../../../../core/promiseUtils.js";import n from"../../../../layers/support/CodedValue.js";import r from"../../../../layers/support/CodedValueDomain.js";import i from"../../../../layers/support/Field.js";import{getAggregateFieldType as a,isStringField as o,isTimeOnlyField as s}from"../../../../layers/support/fieldUtils.js";import c from"../../../../rest/support/PivotQuery.js";import l from"../../../../rest/support/StatisticDefinition.js";import u from"../../../../rest/support/UnPivotDefinition.js";import{noDominantCategoryField as d}from"../../../statistics/support/predominanceUtils.js";import{getRangeExpr as f,getSQLFilterForNormalization as p,mergeWhereClauses as m}from"../../../statistics/support/utils.js";import{isIntegerField as h,isAnyDateField as g,getDateDiffSQL as _,castIntegerFieldToFloat as v}from"../../utils.js";import{isNullCountSupported as y,statisticTypes as b,getEqualIntervalBins as x,processNullValue as S}from"../../../../statistics/utils.js";const C=/_value$/i,w=Math.LOG10E,T={SECOND:1e3,MINUTE:6e4,HOUR:36e5},E=10;function D(e){return e.map(e=>e.toJSON())}function O(e,t){let n=[],r=e.layer,i=`featureReduction`in r?r.featureReduction:null,a=i?.type===`binning`,o=i!=null&&`fields`in i?i.fields?.map(e=>e.name?.toLowerCase()).filter(Boolean):[];if(!a||!t)return n;for(let e of t)o.includes(e.toLowerCase())||n.push(e);return n}function k(e,t,n){let r=[];if(t)for(let i of t){let t=e.getField(i);t&&n&&`availableFields`in n&&!n.availableFields?.includes(t.name)&&r.push(t.name)}return r}function A(e,t){let n=e&&e.features;if(n?.length===0)return{avg:null,count:0,max:null,median:null,min:null,nullcount:0,stddev:null,sum:null,variance:null};let r=n?.[0]?.attributes,i={};for(let e in r)i[e.replace(C,``).toLowerCase()]=r[e];return i.totalcount!=null&&i.totalcount>=i.count&&(i.nullcount=i.totalcount-i.count),delete i.totalcount,i.min===i.max&&i.min!=null&&i.stddev==null&&(i.stddev=i.variance=0),t&&([`min`,`max`,`avg`,`stddev`,`sum`,`variance`].forEach(e=>{i[e]!=null&&(i[e]=Math.ceil(i[e]))}),i.min===i.max&&i.min!=null&&(i.avg=i.min,i.stddev=i.variance=0)),i}function j(e){let t=[],n=e.classBreaks,r=n[0].minValue,i=n[n.length-1].maxValue;return n.forEach(e=>{t.push([e.minValue,e.maxValue])}),{min:r,max:i,intervals:t,sqlExpr:M({field:e.field,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,layer:e.layer}),excludeZerosExpr:e.where,normTotal:e.normalizationTotal}}function M(e){let{field:t,normalizationType:n,normalizationField:r,normalizationTotal:i,layer:a}=e,o=h(a,t),s=t;return n===`percent-of-total`?s=`((${o?v(t):t} / ${i}) * 100)`:n===`log`?s=`(log(${t}) * ${w})`:n===`field`?s=`(${o?v(t):t} / ${r})`:n===`natural-log`?s=`(log(${o?v(t):t}))`:n===`square-root`&&(s=`(power(${o?v(t):t}, 0.5))`),s}function N(e,t){let n;if(t=t.toLowerCase(),e){for(let r in e)if(r.toLowerCase()!==t){n=e[r];break}}return n}function P(e,t){let n;if(t=t.toLowerCase(),e){for(let r in e)if(r.toLowerCase()===t){n=e[r];break}}return n}function F(e,t,n,r,i){let a={},o=`countOFExpr`;e&&e.features&&e.features.forEach(e=>{let t=e.attributes,n=N(t,o),r=P(t,o);n!=null&&r!=null&&n!==0&&(a[n]=r)});let s=[];return x(t,n,r).forEach((e,t)=>{let n=(t+1).toString();s.push({minValue:e[0],maxValue:e[1],count:a.hasOwnProperty(n)?a[n]:0})}),{bins:s,minValue:t,maxValue:n,normalizationTotal:i}}async function I(e,n){let r=e&&e.features,{field:i,field2:a,field3:o,fieldDelimiter:s,filter:c,layer:l,view:u,signal:d,labels:f}=n,p=`countOF${i&&a?`Expr`:i||`Expr`}`,m={},h=!1;for(let e of r){let t=e.attributes,n=P(t,p),r=i?P(t,i):N(t,p),c=a?P(t,a):null,l=o?P(t,o):null;r===null&&n===0&&(h=!0),(r==null||typeof r==`string`&&r.trim()===``)&&(r=null),a&&(c==null||typeof c==`string`&&c.trim()===``)&&(c=null),o&&(l==null||typeof l==`string`&&l.trim()===``)&&(l=null);let u=r;a&&(u=`${S(u)}${s}${S(c)}`,o&&(u=`${u}${s}${S(l)}`)),m[u]==null?m[u]={count:n,data:u}:m[u].count=m[u].count+n}if(i&&h){let e=i+` is NULL`;try{let t=await l.queryFeatureCount({whereClause:e,filter:c,view:u,signal:d});return m.null.count=m.null.count+t,L(m,f)}catch{return t(d),L(m,f)}}return L(m,f)}function L(e,t){if(t)for(let n in e)e[n].label=t[n];return{count:e}}async function R(e,t,i){let a=e?i.getField(e):null,o=a?i.getFieldDomain(a.name):null;if(o)return o;let{uniqueValueInfos:s}=await i.uniqueValues({field:e,sqlWhere:t.sqlWhere,features:t.features,useFeaturesInView:t.useFeaturesInView,view:t.view,signal:t.signal}),c=s.map(e=>new n({code:e.value}));return new r({codedValues:c})}async function z(e,t){if(!e.returnAllCodedValues)return[];let{field:n,field2:r,field3:i}=e;if(n&&!r){let e=n?t.getField(n):null,r=e?t.getFieldDomain(e.name):null;return r?[r]:[]}let a=[];return n&&(a.push(R(n,e,t)),r&&(a.push(R(r,e,t)),i&&a.push(R(i,e,t)))),Promise.all(a)}function B(e,t){return _(e,new Date(0),t,`milliseconds`).sqlExpression}function V(e,t){return`EXTRACT(${t} FROM ${e}) * ${T[t]}`}function H(e){return e?v([`HOUR`,`MINUTE`,`SECOND`].map(t=>`(${V(e,t)})`).join(` + `)):null}function U(e){return{viewingMode:e.type===`2d`?`map`:e.viewingMode,scale:e.scale,spatialReference:e.spatialReference?.toJSON()}}function W(e,t){let n=new Set(e.map(e=>e.value)),r=t.filter(e=>!n.has(e));for(let t of r)e.push({value:t,count:0});e.sort((e,n)=>t.indexOf(e.value)-t.indexOf(n.value));for(let t of e)t.value===d&&(t.value=null);return{predominantCategoryInfos:e}}function G(t){let n=`featureReduction`in t?t.featureReduction:null;return((n!=null&&`fields`in n?n.fields:null)??[]).map(e=>{let n=a(e,t.fieldsIndex);return n?new i({type:n,name:e.name,alias:e.alias}):null}).filter(e)}function K(e,t){return g(t)?B(e,t?.name):s(t)?H(t?.name):null}function q(e,t,n){let r=null;for(let i of n){let n=i?e.getField(i):null,a=Y(e,{...t,field:i,outStatisticTypes:{include:[`min`,`max`,`sum`,`count`]}},n,!0,!0);r?r.outStatistics=r.outStatistics.concat(a.outStatistics):r=a}return r.where=e.createQuery()?.where,r}function J(e,t,n,r){return t.map(t=>{let i=new l,a=null,o=null,s=`${t}_value${r?`_${r}`:``}`;if(t===`variance`)a=`var`,o=n;else if(t===`nullcount`){let t=e.objectIdField;a=`count`,o=t&&e.getField(t)?t:`1`,s=`totalcount_value`}else t===`median`?(a=`percentile-continuous`,o=n,i.statisticParameters={value:.5}):(a=t,o=n);return i.statisticType=a,i.onStatisticField=o,i.outStatisticFieldName=s,i})}function Y(e,t,n,r=!0,i=!1){let{field:a,normalizationType:s,normalizationField:c,normalizationTotal:l,minValue:u,maxValue:d,filter:h}=t,g=e.supportsSQLExpression?K(e,n)||t.sqlExpression:null,_=M({field:a,normalizationType:s,normalizationField:c,normalizationTotal:l,layer:e}),v=g||_,x=v?f(v,u,d):null,S=p({field:a,normalizationField:c,normalizationType:s}),C=m(t.sqlWhere,S),w=m(C,x),T=y({normalizationField:c,normalizationType:s,sqlExpression:g,supportsSQLExpression:e.supportsSQLExpression,minValue:u,maxValue:d}),E=o(e.getField(a??void 0)),{include:D,exclude:O}=t.outStatisticTypes||{},k=b.filter(e=>(!D||D.includes(e))&&(!O||!O.includes(e))&&(e===`nullcount`?T:!E||e===`count`)&&(e!==`median`||r)),A=e.createQuery();return A.where=m(A.where,w),A.sqlFormat=g?`standard`:null,A.outStatistics=J(e,k,v,i?a:void 0),Z(A,h),A}function X(e,t,n=!0){let{fields:r,filter:i}=t,{include:a,exclude:o}=t.outStatisticTypes||{},s=b.filter(e=>(!a||a.includes(e))&&(!o||!o.includes(e))&&(e!==`median`||n)),l=new c;l.where=m(e.createQuery()?.where,t.sqlWhere)??void 0;let d=`new_value`;return l.outPivots=[new u({sourceFields:r,valueFieldName:d})],l.outStatistics=J(e,s,d),Z(l,i),l}function Z(e,t){t&&(e.geometry=t.geometry,e.spatialRelationship=t.spatialRelationship,e.timeExtent=e.timeExtent?.intersection(t.timeExtent)??t.timeExtent,e.distance=t.distance,e.units=t.units)}function Q(e,t){let{field:n,field2:r,field3:i,sqlExpression:a}=t,o=!!(n&&r),s=e.createQuery();return s.where=m(s.where,t.sqlWhere),s.sqlFormat=a?`standard`:null,s.outStatistics=[$(o?null:n,o?`1`:a)].filter(Boolean),s.groupByFieldsForStatistics=[n||a,r,i].filter(Boolean),Z(s,t.filter),s}function $(e,t){let n=`countOF`+(e||`Expr`),r=new l;return r.statisticType=`count`,r.onStatisticField=t?`1`:e,r.outStatisticFieldName=n,r}function ee(e,t,n,r=10,i,a,o){let{min:s,max:c,normTotal:l,excludeZerosExpr:u}=t,d=t.intervals||x(s,c,r);return te(e,d,t.sqlExpr||n,u,i,a,o).then(e=>({bins:e.map((e,t)=>({minValue:d[t][0],maxValue:d[t][1],count:e.status===`fulfilled`?e.value:0})),minValue:s,maxValue:c,normalizationTotal:l}))}function te(e,t,n,r,i,a,o){let s=[],c=t.length;for(let e=0;e<c;e++){let i=m(r,m(n+` >= `+t[e][0],t[e][1]===null?``:n+(e===c-1?` <= `:` < `)+t[e][1]));s.push(i)}return Promise.allSettled(s.map(t=>e.queryFeatureCount({whereClause:t,view:i,filter:a,signal:o})))}export{E as defaultNumBins,D as ensureFeaturesJSON,j as generateBinParams,ee as getBins,z as getDomainsForFields,G as getFeatureReductionFields,M as getFieldExpr,F as getHistogramFromFeatureSet,k as getMissingFields,O as getMissingFieldsForBinning,W as getPredominantCategoriesFromUVInfos,K as getSQLExpressionForDateOrTimeField,A as getSummaryStatisticsFromFeatureSet,X as getSummaryStatsPivotQuery,Y as getSummaryStatsQuery,q as getSummaryStatsQueryForFields,Q as getUVQuery,I as getUniqueValuesFromFeatureSet,U as getViewInfoParams,H as msForTimeOnlyFieldSQL,B as msSinceUnixEpochSQL,Z as updateQueryWithFeatureFilter};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{unique as e}from"../../core/arrayUtils.js";import{createMD5Hash as t}from"../../core/MD5.js";import{isValidNumber as n}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import{getPrimaryVisualVariables as r}from"../popup/support/utils.js";import{getNormalizationType as i}from"./utils.js";const a=`cluster_count`;function o(e,t){return e.split(`cluster_${t}_`).pop()}function s(e){if(!e)return null;let{field:t,valueExpression:r,normalizationField:a,normalizationType:o,normalizationTotal:s}=e,c=null;if(r)c=r;else if(t){let e=i({normalizationType:o,normalizationField:a,normalizationTotal:s});if(e){let r=e.toLowerCase();if(c=t.toLowerCase()+`,norm:`+r,a)c+=`,`+a.toLowerCase();else if(r===`percent-of-total`){let e=s;
|
|
2
|
+
import{unique as e}from"../../core/arrayUtils.js";import{createMD5Hash as t}from"../../core/MD5.js";import{isValidNumber as n}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import{getPrimaryVisualVariables as r}from"../popup/support/utils.js";import{getNormalizationType as i}from"./utils.js";const a=`cluster_count`;function o(e,t){return e.split(`cluster_${t}_`).pop()}function s(e){if(!e)return null;let{field:t,valueExpression:r,normalizationField:a,normalizationType:o,normalizationTotal:s}=e,c=null;if(r)c=r;else if(t){let e=i({normalizationType:o,normalizationField:a,normalizationTotal:s});if(e){let r=e.toLowerCase();if(c=t.toLowerCase()+`,norm:`+r,a)c+=`,`+a.toLowerCase();else if(r===`percent-of-total`){let e=s;n(e)&&e!==0||(e=null),c+=`,`+e}}}return c}function c(e){return t(e)}function l(e,t){let n=s(e);return`${t}_${n==null?e.field:c(n)}`}function u(e,t){return`cluster_${l(e,t)}`}function d(e,t){return t.getField(e)?.type}function f(e,t){let n=`field`in t?t.field:null;return{field:n,fieldType:(n?d(n,e):null)??null,valueExpression:`valueExpression`in t?t.valueExpression:null,valueExpressionTitle:`valueExpressionTitle`in t?t.valueExpressionTitle:null,normalizationField:`normalizationField`in t?t.normalizationField:null,normalizationType:`normalizationType`in t?t.normalizationType:null,normalizationTotal:`normalizationTotal`in t?t.normalizationTotal:null}}function p(e,t){let n=t.type===`rotation`?t.rotationType:null,r=t.legendOptions?.title,i=t.field;return{field:i,fieldType:(i?d(i,e):null)??null,rotationType:n,valueExpression:t.valueExpression,valueExpressionTitle:t.valueExpressionTitle||t.valueExpression&&r,normalizationField:`normalizationField`in t?t.normalizationField:null,vvType:t.type}}function m(e){return e.map(e=>`{
|
|
3
3
|
"value": "${String(e.value)}",
|
|
4
4
|
"label": "${h(String(e.label))}"
|
|
5
5
|
}`)}function h(e){return e?e.replaceAll(`"`,`\\"`):``}function g(e,t,n){return`
|
package/statistics/utils.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../rest/support/ClassBreaksDefinition.js";import{createGenerateRendererClassBreaks as t}from"../rest/support/generateRendererUtils.js";const n=/\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*/gi,r=new Set([`esriFieldTypeDate`,`esriFieldTypeInteger`,`esriFieldTypeSmallInteger`,`esriFieldTypeSingle`,`esriFieldTypeDouble`,`esriFieldTypeLong`,`esriFieldTypeOID`,`esriFieldTypeBigInteger`]),i=new Set([`esriFieldTypeTimeOnly`,`esriFieldTypeDateOnly`]),a=[`min`,`max`,`avg`,`stddev`,`count`,`sum`,`variance`,`nullcount`,`median`];function o(e){return e==null||typeof e==`string`&&!e?`<Null>`:e}function s(e){let t=e.normalizationField!=null||e.normalizationType!=null,n=e.minValue!=null||e.maxValue!=null,r=!!e.sqlExpression&&e.supportsSQLExpression;return!t&&!n&&!r}function c(e){let{outStatisticTypes:t}=e,n=e.returnDistinct?[...new Set(e.values)]:e.values,r=n.filter(e=>e!=null).sort(),i=r.length,a={count:i,min:r[0],max:r[i-1]};return e.supportsNullCount&&(a.nullcount=n.length-i)
|
|
2
|
+
import e from"../rest/support/ClassBreaksDefinition.js";import{createGenerateRendererClassBreaks as t}from"../rest/support/generateRendererUtils.js";const n=/\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*/gi,r=new Set([`esriFieldTypeDate`,`esriFieldTypeInteger`,`esriFieldTypeSmallInteger`,`esriFieldTypeSingle`,`esriFieldTypeDouble`,`esriFieldTypeLong`,`esriFieldTypeOID`,`esriFieldTypeBigInteger`]),i=new Set([`esriFieldTypeTimeOnly`,`esriFieldTypeDateOnly`]),a=[`min`,`max`,`avg`,`stddev`,`count`,`sum`,`variance`,`nullcount`,`median`];function o(e){return e==null||typeof e==`string`&&!e?`<Null>`:e}function s(e){let t=e.normalizationField!=null||e.normalizationType!=null,n=e.minValue!=null||e.maxValue!=null,r=!!e.sqlExpression&&e.supportsSQLExpression;return!t&&!n&&!r}function c(e){let{outStatisticTypes:t}=e,n=e.returnDistinct?[...new Set(e.values)]:e.values,r=n.filter(e=>e!=null).sort(),i=r.length,a={count:i,min:r[0],max:r[i-1]};return e.supportsNullCount&&(a.nullcount=n.length-i),!e.percentileParams||t?.include?.length&&!t.include.includes(`median`)||t?.exclude?.length&&t.exclude.includes(`median`)||(a.median=u(n,e.percentileParams)),a}function l(e){let{values:t,useSampleStdDev:n,supportsNullCount:r,outStatisticTypes:i}=e,a=1/0,o=-1/0,s=null,c=null,l=null,d=null,f=0,p=e.minValue==null?-1/0:e.minValue,m=e.maxValue==null?1/0:e.maxValue;for(let e of t)Number.isFinite(e)?e>=p&&e<=m&&(s=s===null?e:s+e,a=Math.min(a,e),o=Math.max(o,e),f++):typeof e==`string`&&f++;if(f&&s!=null){c=s/f;let e=0;for(let n of t)Number.isFinite(n)&&n>=p&&n<=m&&(e+=(n-c)**2);d=n?f>1?e/(f-1):0:f>0?e/f:0,l=Math.sqrt(d)}else a=null,o=null;let h={avg:c,count:f,max:o,min:a,stddev:l,sum:s,variance:d};return r&&(h.nullcount=t.length-f),!e.percentileParams||i?.include?.length&&!i.include.includes(`median`)||i?.exclude?.length&&i.exclude.includes(`median`)||(h.median=u(t,e.percentileParams)),h}function u(e,t){let{fieldType:n,value:r,orderBy:i,isDiscrete:a}=t,o=d(n,i===`desc`,`case-insensitive`);if(e=[...e].filter(e=>e!=null).sort((e,t)=>o(e,t)),e.length===0)return null;if(r<=0)return e[0];if(r>=1)return e[e.length-1];let s=(e.length-1)*r,c=Math.floor(s),l=c+1,u=s%1,f=e[c],p=e[l];return l>=e.length||a||typeof f==`string`||typeof p==`string`?f:f*(1-u)+p*u}function d(e,t,n=`case-sensitive`){if(e){if(r.has(e))return C(t);if(i.has(e))return b(t,!0);if(e===`esriFieldTypeTimestampOffset`)return _(t);let a=b(t,n===`case-sensitive`);if(e===`esriFieldTypeString`)return a;if(e===`esriFieldTypeGUID`||e===`esriFieldTypeGlobalID`)return(e,t)=>a(w(e),w(t))}let a=t?1:-1,o=C(t),s=b(t,n===`case-sensitive`),c=m(t);return(e,t)=>typeof e==`number`&&typeof t==`number`?o(e,t):typeof e==`string`&&typeof t==`string`?s(e,t):c(e,t)??a}const f=(e,t)=>e==null?t==null?0:1:t==null?-1:null,p=(e,t)=>e==null?t==null?0:-1:t==null?1:null;function m(e){return e?f:p}const h=(e,t)=>p(e,t)??(e===t?0:new Date(e).getTime()-new Date(t).getTime()),g=(e,t)=>f(e,t)??(e===t?0:new Date(t).getTime()-new Date(e).getTime());function _(e){return e?g:h}const v=(e,t)=>p(e,t)??(e===t?0:e<t?-1:1),y=(e,t)=>f(e,t)??(e===t?0:e<t?1:-1);function b(e,t){if(t)return e?y:v;let n=m(e);return e?(e,t)=>n(e,t)??(e=e.toUpperCase(),t=t.toUpperCase(),e>t?-1:+(e<t)):(e,t)=>n(e,t)??(e=e.toUpperCase(),t=t.toUpperCase(),e<t?-1:+(e>t))}const x=(e,t)=>f(e,t)??t-e,S=(e,t)=>p(e,t)??e-t;function C(e){return e?x:S}function w(e){return e.slice(24,36)+e.slice(19,23)+e.slice(16,18)+e.slice(14,16)+e.slice(11,13)+e.slice(9,11)+e.slice(6,8)+e.slice(4,6)+e.slice(2,4)+e.slice(0,2)}function T(e,t,n){let r;for(r in e)t?.include?.length&&!t.include.includes(r)||t?.exclude?.length&&t.exclude.includes(r)?delete e[r]:a.includes(r)&&(Number.isFinite(e[r])||(e[r]=null));return n&&[`avg`,`stddev`,`variance`].forEach(t=>{e[t]!=null&&(e[t]=Math.ceil(e[t]??0))}),e}function E(e){let t={};for(let n of e)(n==null||typeof n==`string`&&n.trim()===``)&&(n=null),t[n]==null?t[n]={count:1,data:n}:t[n].count++;return{count:t}}function D(e){return e?.type===`coded-value`?e.codedValues.map(e=>e.code):[]}function O(e,t,n,r){let i=e.count,a=[];if(n&&t){let e=[],n=D(t[0]);for(let i of n)if(!t[1])e.push(i);else{let n=D(t[1]);for(let a of n)if(!t[2])e.push(`${o(i)}${r}${o(a)}`);else{let n=D(t[2]);for(let t of n)e.push(`${o(i)}${r}${o(a)}${r}${o(t)}`)}}for(let t of e)i.hasOwnProperty(t)||(i[t]={data:t,count:0})}for(let e in i){let t=i[e];a.push({value:t.data,count:t.count,label:t.label})}return{uniqueValueInfos:a}}function k(e,t,n,r){let i=null;switch(t){case`log`:e!==0&&(i=Math.log(e)*Math.LOG10E);break;case`percent-of-total`:Number.isFinite(r)&&r!==0&&(i=e/r*100);break;case`field`:Number.isFinite(n)&&n!==0&&(i=e/n);break;case`natural-log`:e>0&&(i=Math.log(e));break;case`square-root`:e>0&&(i=e**.5)}return i}function A(e,n,r){let i=M({field:n.field,normalizationType:n.normalizationType,normalizationField:n.normalizationField,classificationMethod:n.classificationMethod,standardDeviationInterval:n.standardDeviationInterval,definedInterval:n.definedInterval,breakCount:n.numClasses||5});return e=j(e,n.minValue,n.maxValue),t({definition:i,values:e,normalizationTotal:n.normalizationTotal},r)}function j(e,t,n){let r=t??-1/0,i=n??1/0;return e.filter(e=>Number.isFinite(e)&&e>=r&&e<=i)}function M(t){let{breakCount:n,field:r,normalizationField:i,normalizationType:a}=t,o=t.classificationMethod||`equal-interval`,s=o===`standard-deviation`?t.standardDeviationInterval||1:void 0,c=o===`defined-interval`?t.definedInterval:void 0;return new e({breakCount:n,classificationField:r,classificationMethod:o,normalizationField:a===`field`?i:void 0,normalizationType:a,standardDeviationInterval:s,definedInterval:c})}function N(e,t){let r=e.classBreaks,i=r.length,a=r[0]?.minValue,o=r[i-1]?.maxValue,s=t===`standard-deviation`,c=n;return r=r.map(e=>{let t=e.label,n={minValue:e.minValue,maxValue:e.maxValue,label:t};if(s&&t){let e=t.match(c)?.map(e=>+e.trim())??[];e.length===2?(n.minStdDev=e[0],n.maxStdDev=e[1],e[0]<0&&e[1]>0&&(n.hasAvg=!0)):e.length===1&&(t.includes(`<`)?(n.minStdDev=null,n.maxStdDev=e[0]):t.includes(`>`)&&(n.minStdDev=e[0],n.maxStdDev=null))}return n}),{minValue:a,maxValue:o,classBreakInfos:r,normalizationTotal:e.normalizationTotal}}function P(e,t){let n=F(e,t);if(n.min==null&&n.max==null)return{bins:[],minValue:n.min,maxValue:n.max,normalizationTotal:t.normalizationTotal};let r=n.intervals,i=n.min??0,a=n.max??0,o=r.map((e,t)=>({minValue:r[t][0],maxValue:r[t][1],count:0}));for(let t of e)if(t!=null&&t>=i&&t<=a){let e=I(r,t);e>-1&&o[e].count++}return{bins:o,minValue:i,maxValue:a,normalizationTotal:t.normalizationTotal}}function F(e,t,n=!1){let{field:r,classificationMethod:i,standardDeviationInterval:a,definedInterval:o,normalizationType:c,normalizationField:u,normalizationTotal:d,minValue:f,maxValue:p}=t,m=t.numBins||10,h=!i||i===`equal-interval`,g=null,_=null,v=null;if(h&&!c){if(f!=null&&p!=null)g=f,_=p;else{let t=l({values:e,minValue:f,maxValue:p,useSampleStdDev:!c,supportsNullCount:s({normalizationType:c,normalizationField:u,minValue:f,maxValue:p})});g=t.min??null,_=t.max??null}v=L(g??0,_??0,m)}else{let{classBreaks:t}=A(e,{field:r,normalizationType:c,normalizationField:u,normalizationTotal:d,classificationMethod:i,standardDeviationInterval:a,definedInterval:o,minValue:f,maxValue:p,numClasses:m},f!=null&&p!=null?[f,p]:void 0);g=t[0]?.minValue,_=t[t.length-1]?.maxValue,v=t.map(e=>[e.minValue,e.maxValue])}if(n&&v.length){let e=v.at(-1)[1];v.push([e,e])}return{min:g,max:_,intervals:v}}function I(e,t){let n=-1;for(let r=e.length-1;r>=0;r--)if(t>=e[r][0]){n=r;break}return n}function L(e,t,n){let r=(t-e)/n,i=[],a=e,o;for(let e=1;e<=n;e++)o=a+r,o=Number(o.toFixed(16)),i.push([a,e===n?t:o]),a=o;return i}export{I as binIndex,A as calculateClassBreaks,P as calculateHistogram,u as calculatePercentile,l as calculateStatistics,c as calculateStringStatistics,E as calculateUniqueValuesCount,M as createClassBreaksDefinition,O as createUVResult,d as getAttributeComparator,F as getBinParams,L as getEqualIntervalBins,k as getNormalizedValue,s as isNullCountSupported,o as processNullValue,T as processSummaryStatisticsResult,N as resolveCBResult,a as statisticTypes};
|
package/symbols/cim/CIMCursor.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{Placement as e}from"./CIMPlacements.js";function t(e,t){e[4]=t}class n{constructor(t,n=!0,r=!0,i=0){this._angleToLine=!0,this._keepUpright=!1,this.isClosed=!1,this.geometryCursor=null,this.geometryCursor=!n&&t.geometryType===`esriGeometryPolygon`||!r&&t.geometryType===`esriGeometryPolyline`?null:t,this.geomUnitsPerPoint=i,this.iterateMultiPath=!1,this.iteratePath=!1,this.internalPlacement=new e}next(){if(!this.geometryCursor)return null;let e=this.processMultiPath(this.geometryCursor);if(
|
|
2
|
+
import{Placement as e}from"./CIMPlacements.js";function t(e,t){e[4]=t}class n{constructor(t,n=!0,r=!0,i=0){this._angleToLine=!0,this._keepUpright=!1,this.isClosed=!1,this.geometryCursor=null,this.geometryCursor=!n&&t.geometryType===`esriGeometryPolygon`||!r&&t.geometryType===`esriGeometryPolyline`?null:t,this.geomUnitsPerPoint=i,this.iterateMultiPath=!1,this.iteratePath=!1,this.internalPlacement=new e}next(){if(!this.geometryCursor)return null;let e=this.processMultiPath(this.geometryCursor);if(this.iterateMultiPath&&e||(this.geometryCursor=null),!e)return null;let t=e.getAngle();if(this._angleToLine&&this._keepUpright&&Math.abs(t)>.5*Math.PI){let n=t+Math.PI,r=Math.atan2(Math.sin(n),Math.cos(n));Number.isNaN(r)||e.setRotate(r)}return e}processMultiPath(e){for(;this.iteratePath||e.pathIndex<e.totalSize-1;){this.iteratePath||e.nextPath(),this.iterateMultiPath=!0;let t=this.processPath(e);if(t)return t}return this.iterateMultiPath=!1,null}}class r{constructor(e,t,n,r=0){this.isClosed=!1,this.inputGeometries=e,this.acceptPolygon=t,this.acceptPolyline=n,this.geomUnitsPerPoint=r,this.iteratePath=!1,this.multiPathCursor=null}next(){for(;;){if(!this.multiPathCursor){let e=this.inputGeometries.next();for(;e&&(this.isClosed=this.acceptPolygon&&e.geometryType===`esriGeometryPolygon`||e.geometryType===`esriGeometryEnvelope`,this.multiPathCursor=e,!this.multiPathCursor);)e=this.inputGeometries.next();if(!this.multiPathCursor)return null}for(;this.iteratePath||this.multiPathCursor.nextPath();){this.multiPathCursor.seekPathStart();let e=this.processPath(this.multiPathCursor);if(e)return e}this.multiPathCursor=null}}}export{r as PathEffectCursor,n as PathTransformationCursor,t as setId};
|