@vcmap/ui 5.0.0-rc.23 → 5.0.0-rc.24
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/README.md +36 -18
- package/app.config.json +2 -4
- package/build/.eslintrc +3 -0
- package/build/build.js +184 -174
- package/build/buildCesium.js +32 -19
- package/build/buildHelpers.js +117 -48
- package/build/buildPreview.js +7 -4
- package/build/commonViteConfig.js +1 -3
- package/build/determineHost.js +17 -4
- package/build/generateOLLib.js +13 -16
- package/build/getPluginProxies.js +16 -3
- package/build/info/conf.json +21 -21
- package/build/info/publish.js +15 -4
- package/config/aerowest.config.json +16 -44
- package/config/base.config.json +71 -246
- package/config/codes.config.json +3 -1
- package/config/dev.config.json +5 -13
- package/config/graphFeatureInfo.config.json +55 -16
- package/config/projects.config.json +5 -2
- package/config/www.config.json +96 -297
- package/dist/assets/cesium/Workers/{ArcType-ce2e50ab.js → ArcType-2d9abbbc.js} +4 -4
- package/dist/assets/cesium/Workers/{AttributeCompression-b646d393.js → AttributeCompression-f9f6c717.js} +24 -24
- package/dist/assets/cesium/Workers/{AxisAlignedBoundingBox-ff186ccc.js → AxisAlignedBoundingBox-85d9e53a.js} +3 -3
- package/dist/assets/cesium/Workers/{BoundingRectangle-be5924f4.js → BoundingRectangle-1ee7eb47.js} +18 -18
- package/dist/assets/cesium/Workers/{BoxGeometry-12eeccaf.js → BoxGeometry-3b2be784.js} +9 -9
- package/dist/assets/cesium/Workers/{Check-666ab1a0.js → Check-6ede7e26.js} +22 -22
- package/dist/assets/cesium/Workers/{Color-a84038cb.js → Color-f107c84d.js} +59 -59
- package/dist/assets/cesium/Workers/{ComponentDatatype-f7b11d02.js → ComponentDatatype-cf1fa08e.js} +16 -16
- package/dist/assets/cesium/Workers/{CoplanarPolygonGeometryLibrary-3272c1b3.js → CoplanarPolygonGeometryLibrary-78d71993.js} +1 -1
- package/dist/assets/cesium/Workers/{CorridorGeometryLibrary-0170e093.js → CorridorGeometryLibrary-50d99b33.js} +1 -1
- package/dist/assets/cesium/Workers/{CylinderGeometry-7c5da648.js → CylinderGeometry-51b0d9bf.js} +12 -12
- package/dist/assets/cesium/Workers/{CylinderGeometryLibrary-372c07d8.js → CylinderGeometryLibrary-7bf291b4.js} +1 -1
- package/dist/assets/cesium/Workers/{EllipseGeometry-797d580e.js → EllipseGeometry-bcfb5d87.js} +20 -20
- package/dist/assets/cesium/Workers/{EllipseGeometryLibrary-2939e1dc.js → EllipseGeometryLibrary-e94f8472.js} +1 -1
- package/dist/assets/cesium/Workers/{EllipseOutlineGeometry-8b50870f.js → EllipseOutlineGeometry-28e3a1bb.js} +15 -15
- package/dist/assets/cesium/Workers/{EllipsoidGeodesic-98c62a56.js → EllipsoidGeodesic-5b3623dc.js} +6 -6
- package/dist/assets/cesium/Workers/{EllipsoidGeometry-21c0e3a5.js → EllipsoidGeometry-b222fa63.js} +14 -14
- package/dist/assets/cesium/Workers/{EllipsoidOutlineGeometry-eff247c8.js → EllipsoidOutlineGeometry-38a3fb5b.js} +15 -15
- package/dist/assets/cesium/Workers/{EllipsoidRhumbLine-19756602.js → EllipsoidRhumbLine-ef872433.js} +9 -9
- package/dist/assets/cesium/Workers/{EllipsoidTangentPlane-214683dc.js → EllipsoidTangentPlane-8c89f28c.js} +1 -1
- package/dist/assets/cesium/Workers/{EncodedCartesian3-81f70735.js → EncodedCartesian3-57415c8a.js} +6 -6
- package/dist/assets/cesium/Workers/{FrustumGeometry-ac42a6d9.js → FrustumGeometry-bdd3a04d.js} +139 -111
- package/dist/assets/cesium/Workers/{GeometryAttribute-7d6f1732.js → GeometryAttribute-153115c5.js} +20 -20
- package/dist/assets/cesium/Workers/{GeometryAttributes-f06a2792.js → GeometryAttributes-ad136444.js} +1 -1
- package/dist/assets/cesium/Workers/{GeometryInstance-451dc1cd.js → GeometryInstance-34d9e21e.js} +6 -6
- package/dist/assets/cesium/Workers/{GeometryPipeline-ce4339ed.js → GeometryPipeline-acb2399c.js} +22 -22
- package/dist/assets/cesium/Workers/{IndexDatatype-a55ceaa1.js → IndexDatatype-2643aa47.js} +13 -13
- package/dist/assets/cesium/Workers/{IntersectionTests-f6e6bd8a.js → IntersectionTests-271e513e.js} +37 -37
- package/dist/assets/cesium/Workers/{Math-2dbd6b93.js → Math-0a2ac845.js} +149 -139
- package/dist/assets/cesium/Workers/{Matrix2-13178034.js → Matrix2-e1298525.js} +256 -256
- package/dist/assets/cesium/Workers/{Matrix3-315394f6.js → Matrix3-41c58dde.js} +150 -150
- package/dist/assets/cesium/Workers/{OrientedBoundingBox-04920dc7.js → OrientedBoundingBox-5e04e31f.js} +19 -17
- package/dist/assets/cesium/Workers/{Plane-900aa728.js → Plane-4c3d403b.js} +5 -5
- package/dist/assets/cesium/Workers/{PolygonGeometryLibrary-a8680d96.js → PolygonGeometryLibrary-6762b65b.js} +6 -6
- package/dist/assets/cesium/Workers/PolygonPipeline-7dc7a431.js +1344 -0
- package/dist/assets/cesium/Workers/{PolylinePipeline-32f36d2a.js → PolylinePipeline-15fde655.js} +16 -16
- package/dist/assets/cesium/Workers/{PolylineVolumeGeometryLibrary-a510d657.js → PolylineVolumeGeometryLibrary-ba7dfed5.js} +7 -7
- package/dist/assets/cesium/Workers/{PrimitivePipeline-ba38434a.js → PrimitivePipeline-68f0b9a2.js} +6 -6
- package/dist/assets/cesium/Workers/{RectangleGeometryLibrary-bdba697e.js → RectangleGeometryLibrary-8eaf23da.js} +1 -1
- package/dist/assets/cesium/Workers/{RuntimeError-06c93819.js → RuntimeError-ef395448.js} +5 -5
- package/dist/assets/cesium/Workers/{TerrainEncoding-833187da.js → TerrainEncoding-eb8a645a.js} +30 -30
- package/dist/assets/cesium/Workers/Transforms-f6451f99.js +14698 -0
- package/dist/assets/cesium/Workers/{VertexFormat-6b480673.js → VertexFormat-030f11ff.js} +14 -14
- package/dist/assets/cesium/Workers/{WallGeometryLibrary-919eed92.js → WallGeometryLibrary-feef3109.js} +1 -1
- package/dist/assets/cesium/Workers/{WebGLConstants-a8cc3e8c.js → WebGLConstants-0b1ce7ba.js} +1 -1
- package/dist/assets/cesium/Workers/{WebMercatorProjection-13a90d41.js → WebMercatorProjection-13ed1a6e.js} +6 -6
- package/dist/assets/cesium/Workers/{arrayRemoveDuplicates-c2038105.js → arrayRemoveDuplicates-d2061e85.js} +5 -5
- package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +5 -5
- package/dist/assets/cesium/Workers/{combine-ca22a614.js → combine-d9581036.js} +5 -5
- package/dist/assets/cesium/Workers/combineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +9 -9
- package/dist/assets/cesium/Workers/createCircleGeometry.js +13 -13
- package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +13 -13
- package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +11 -11
- package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +9 -9
- package/dist/assets/cesium/Workers/createCorridorGeometry.js +14 -14
- package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +12 -12
- package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +13 -13
- package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +8 -8
- package/dist/assets/cesium/Workers/createGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +33 -33
- package/dist/assets/cesium/Workers/createPlaneGeometry.js +8 -8
- package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +6 -6
- package/dist/assets/cesium/Workers/createPolygonGeometry.js +25 -25
- package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +17 -17
- package/dist/assets/cesium/Workers/createPolylineGeometry.js +11 -11
- package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +9 -9
- package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +9 -9
- package/dist/assets/cesium/Workers/createRectangleGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +12 -12
- package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +10 -10
- package/dist/assets/cesium/Workers/createSphereGeometry.js +11 -11
- package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +12 -12
- package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +2 -2
- package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +1 -1
- package/dist/assets/cesium/Workers/createVectorTileGeometries.js +8 -8
- package/dist/assets/cesium/Workers/createVectorTilePoints.js +1 -1
- package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -1
- package/dist/assets/cesium/Workers/createVectorTilePolylines.js +1 -1
- package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
- package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +27 -28
- package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +33 -38
- package/dist/assets/cesium/Workers/createWallGeometry.js +14 -14
- package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +14 -14
- package/dist/assets/cesium/Workers/decodeDraco.js +10 -2
- package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +15 -15
- package/dist/assets/cesium/Workers/decodeI3S.js +1 -1
- package/dist/assets/cesium/Workers/{defaultValue-0a909f67.js → defaultValue-fe22d8c0.js} +2 -2
- package/dist/assets/cesium/Workers/package.js +1 -1
- package/dist/assets/cesium/Workers/transcodeKTX2.js +46 -26
- package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
- package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +24 -24
- package/dist/assets/{cesium.166f91.js → cesium.253914.js} +36578 -33768
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core.9342a1.js → core.3a8205.js} +53 -58
- package/dist/assets/core.js +1 -1
- package/dist/assets/{index.fd041928.js → index.91ae2d55.js} +1 -1
- package/dist/assets/{ol.d2cba3.js → ol.1c946a.js} +5550 -5491
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui.0025be.css +5 -0
- package/dist/assets/{ui.c27597.js → ui.0025be.js} +5494 -4759
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +2 -2
- package/dist/assets/{vuetify.2f1432.css → vuetify.6efa21.css} +2 -2
- package/dist/assets/{vuetify.2f1432.js → vuetify.6efa21.js} +1 -1
- package/dist/assets/vuetify.js +2 -2
- package/dist/index.html +27 -7
- package/index.html +26 -6
- package/index.js +65 -15
- package/lib/cesium.js +1 -1
- package/lib/core.js +1 -1
- package/lib/ui.js +1 -1
- package/lib/vue.js +2 -2
- package/lib/vuetify.js +2 -2
- package/package.json +18 -9
- package/plugins/.eslintrc +9 -0
- package/plugins/@vcmap/create-link/fallbackCreateLink.vue +13 -9
- package/plugins/@vcmap/create-link/index.js +15 -6
- package/plugins/@vcmap/project-selector/ModulesListComponent.vue +4 -8
- package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +5 -10
- package/plugins/@vcmap/project-selector/README.md +4 -2
- package/plugins/@vcmap/project-selector/config.json +13 -13
- package/plugins/@vcmap/project-selector/de.json +2 -2
- package/plugins/@vcmap/project-selector/en.json +2 -2
- package/plugins/@vcmap/project-selector/index.js +63 -28
- package/plugins/@vcmap/search-nominatim/LICENSE.md +5 -6
- package/plugins/@vcmap/search-nominatim/README.md +2 -1
- package/plugins/@vcmap/search-nominatim/config.json +1 -2
- package/plugins/@vcmap/search-nominatim/index.js +7 -4
- package/plugins/@vcmap/search-nominatim/nominatim.js +7 -2
- package/plugins/@vcmap/search-nominatim/package.json +2 -36
- package/plugins/@vcmap/simple-graph/README.md +29 -9
- package/plugins/@vcmap/simple-graph/SimpleGraphComponent.vue +2 -7
- package/plugins/@vcmap/simple-graph/index.js +1 -1
- package/plugins/@vcmap/simple-graph/simpleGraphView.js +3 -1
- package/plugins/@vcmap/theme-changer/README.md +5 -3
- package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +6 -10
- package/plugins/@vcmap/theme-changer/config.json +67 -67
- package/plugins/@vcmap/theme-changer/index.js +11 -5
- package/plugins/@vcmap-show-case/buttons-example/ButtonsExample.vue +76 -11
- package/plugins/@vcmap-show-case/buttons-example/index.js +10 -8
- package/plugins/@vcmap-show-case/category-tester/Categories.vue +143 -116
- package/plugins/@vcmap-show-case/category-tester/Category.vue +46 -26
- package/plugins/@vcmap-show-case/category-tester/index.js +9 -3
- package/plugins/@vcmap-show-case/config-editor/{editor.vue → ConfigEditor.vue} +20 -24
- package/plugins/@vcmap-show-case/config-editor/index.js +13 -11
- package/plugins/@vcmap-show-case/context-menu-tester/index.js +18 -10
- package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +89 -118
- package/plugins/@vcmap-show-case/form-inputs-example/config.json +3 -3
- package/plugins/@vcmap-show-case/form-inputs-example/exampleActions.js +14 -4
- package/plugins/@vcmap-show-case/form-inputs-example/index.js +41 -19
- package/plugins/@vcmap-show-case/form-inputs-example/validation.js +2 -1
- package/plugins/@vcmap-show-case/icons-example/README.md +1 -1
- package/plugins/@vcmap-show-case/icons-example/allIconsComponent.vue +10 -10
- package/plugins/@vcmap-show-case/icons-example/index.js +10 -8
- package/plugins/@vcmap-show-case/list-example/ListExample.vue +221 -103
- package/plugins/@vcmap-show-case/list-example/index.js +10 -8
- package/plugins/@vcmap-show-case/notifier-tester/index.js +9 -3
- package/plugins/@vcmap-show-case/notifier-tester/notifierTester.vue +15 -21
- package/plugins/@vcmap-show-case/table-example/DataTableExample.vue +22 -41
- package/plugins/@vcmap-show-case/table-example/index.js +10 -8
- package/plugins/@vcmap-show-case/textfields-example/TextfieldsExample.vue +7 -30
- package/plugins/@vcmap-show-case/textfields-example/index.js +10 -4
- package/plugins/@vcmap-show-case/window-tester/WindowExample.vue +16 -13
- package/plugins/@vcmap-show-case/window-tester/emptyComponent.vue +4 -7
- package/plugins/@vcmap-show-case/window-tester/index.js +26 -20
- package/plugins/@vcmap-show-case/window-tester/myCustomHeader.vue +7 -3
- package/plugins/@vcmap-show-case/window-tester/toolbox-data.js +82 -5
- package/plugins/@vcmap-show-case/window-tester/windowExampleContent.vue +3 -7
- package/plugins/@vcmap-show-case/wizard-example/index.js +9 -3
- package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +36 -38
- package/src/actions/actionHelper.js +49 -11
- package/src/actions/styleSelector.vue +20 -11
- package/src/application/VcsApp.vue +117 -80
- package/src/application/VcsAttributions.vue +8 -9
- package/src/application/VcsAttributionsFooter.vue +12 -9
- package/src/application/VcsMap.vue +9 -5
- package/src/application/VcsNavbar.vue +44 -27
- package/src/application/VcsSettings.vue +5 -12
- package/src/application/attributionsHelper.js +23 -11
- package/src/application/vcsAppWrapper.vue +1 -3
- package/src/components/buttons/VcsActionButtonList.vue +20 -17
- package/src/components/buttons/VcsButton.vue +19 -23
- package/src/components/buttons/VcsFormButton.vue +176 -0
- package/src/components/form-inputs-controls/VcsCheckbox.vue +6 -7
- package/src/components/form-inputs-controls/VcsDatePicker.vue +50 -19
- package/src/components/form-inputs-controls/VcsFormSection.vue +11 -12
- package/src/components/form-inputs-controls/VcsLabel.vue +9 -10
- package/src/components/form-inputs-controls/VcsRadio.vue +44 -44
- package/src/components/form-inputs-controls/VcsSelect.vue +16 -13
- package/src/components/form-inputs-controls/VcsTextArea.vue +21 -14
- package/src/components/form-inputs-controls/VcsTextField.vue +26 -12
- package/src/components/form-inputs-controls/VcsWizard.vue +78 -78
- package/src/components/form-inputs-controls/VcsWizardStep.vue +20 -20
- package/src/components/form-inputs-controls/composables.js +13 -8
- package/src/components/form-output/VcsFormattedNumber.vue +26 -26
- package/src/components/icons/+all.js +13 -5
- package/src/components/icons/2DAreaIcon.vue +62 -10
- package/src/components/icons/2DDistanceIcon.vue +14 -2
- package/src/components/icons/3DAreaIcon.vue +62 -10
- package/src/components/icons/3DDistanceIcon.vue +14 -2
- package/src/components/icons/3DHeightIcon.vue +14 -2
- package/src/components/icons/AngleIcon.vue +12 -3
- package/src/components/icons/AssociationsIcon.vue +6 -1
- package/src/components/icons/AxisIcon.vue +34 -5
- package/src/components/icons/BoundingBoxIcon.vue +31 -5
- package/src/components/icons/CheckboxCheckedIcon.vue +4 -1
- package/src/components/icons/CheckboxIcon.vue +1 -8
- package/src/components/icons/CheckboxIndeterminateIcon.vue +9 -2
- package/src/components/icons/CircleIcon.vue +24 -4
- package/src/components/icons/ClippingHorizontalIcon.vue +14 -2
- package/src/components/icons/ClippingIcon.vue +13 -2
- package/src/components/icons/ClippingVerticalIcon.vue +14 -2
- package/src/components/icons/ColorPickerIcon.vue +13 -2
- package/src/components/icons/ColorSwatchIcon.vue +7 -1
- package/src/components/icons/CommentIcon.vue +6 -1
- package/src/components/icons/CompassIcon.vue +21 -3
- package/src/components/icons/ComponentsIcon.vue +14 -2
- package/src/components/icons/ConeIcon.vue +26 -4
- package/src/components/icons/DimensionsHouseIcon.vue +7 -1
- package/src/components/icons/EditIcon.vue +13 -2
- package/src/components/icons/ElevationProfileIcon.vue +6 -1
- package/src/components/icons/ExportAreaIcon.vue +13 -2
- package/src/components/icons/ExportFlightIcon.vue +13 -2
- package/src/components/icons/ExportIcon.vue +14 -2
- package/src/components/icons/ExternalLinkIcon.vue +18 -3
- package/src/components/icons/EyeIcon.vue +12 -2
- package/src/components/icons/FastForwardIcon.vue +13 -2
- package/src/components/icons/FilterIcon.vue +13 -2
- package/src/components/icons/GlobalTerrainIcon.vue +12 -2
- package/src/components/icons/GlobeNatureIcon.vue +7 -1
- package/src/components/icons/GroundIcon.vue +12 -2
- package/src/components/icons/HealthCareIndustriesIcon.vue +6 -1
- package/src/components/icons/HelpIcon.vue +12 -2
- package/src/components/icons/HideIcon.vue +17 -3
- package/src/components/icons/HomePointIcon.vue +13 -3
- package/src/components/icons/HospitalsIcon.vue +6 -1
- package/src/components/icons/HouseIcon.vue +20 -3
- package/src/components/icons/ImportIcon.vue +21 -3
- package/src/components/icons/InfoIcon.vue +19 -3
- package/src/components/icons/KebabIcon.vue +12 -2
- package/src/components/icons/LabelIcon.vue +21 -3
- package/src/components/icons/LayersIcon.vue +12 -2
- package/src/components/icons/LegendIcon.vue +13 -3
- package/src/components/icons/LineIcon.vue +20 -3
- package/src/components/icons/LinkIcon.vue +13 -2
- package/src/components/icons/LogoutIcon.vue +13 -2
- package/src/components/icons/MapIcon.vue +14 -2
- package/src/components/icons/MenuIcon.vue +7 -1
- package/src/components/icons/MinusIcon.vue +14 -2
- package/src/components/icons/ObjectAttributeIcon.vue +13 -2
- package/src/components/icons/ObjectSelectIcon.vue +14 -2
- package/src/components/icons/ObliqueViewIcon.vue +11 -2
- package/src/components/icons/PdfIcon.vue +12 -2
- package/src/components/icons/PedestrianIcon.vue +13 -2
- package/src/components/icons/PenIcon.vue +13 -3
- package/src/components/icons/PlayCircleIcon.vue +20 -3
- package/src/components/icons/PlusIcon.vue +14 -3
- package/src/components/icons/PoiIcon.vue +17 -3
- package/src/components/icons/PointSelectIcon.vue +12 -2
- package/src/components/icons/PolygonIcon.vue +7 -1
- package/src/components/icons/PresentationModeIcon.vue +13 -2
- package/src/components/icons/ProgressIcon.vue +8 -6
- package/src/components/icons/QueryIcon.vue +31 -5
- package/src/components/icons/RectangleIcon.vue +24 -4
- package/src/components/icons/ReturnIcon.vue +13 -2
- package/src/components/icons/RewindIcon.vue +13 -2
- package/src/components/icons/RotateLeftIcon.vue +13 -2
- package/src/components/icons/RotateRightIcon.vue +13 -2
- package/src/components/icons/ScreenshotIcon.vue +52 -10
- package/src/components/icons/SearchIcon.vue +13 -3
- package/src/components/icons/ShadowIcon.vue +14 -3
- package/src/components/icons/ShapesIcon.vue +13 -3
- package/src/components/icons/ShareIcon.vue +17 -4
- package/src/components/icons/SimpleCircleFilledIcon.vue +14 -10
- package/src/components/icons/SimpleCircleHalfFilledIcon.vue +6 -1
- package/src/components/icons/SimpleCircleOutlinedIcon.vue +14 -10
- package/src/components/icons/SkipNextIcon.vue +11 -2
- package/src/components/icons/SkipPreviousIcon.vue +17 -3
- package/src/components/icons/SplitViewIcon.vue +6 -1
- package/src/components/icons/TerrainBoxIcon.vue +12 -2
- package/src/components/icons/TextStyleIcon.vue +7 -1
- package/src/components/icons/ThreeDimensionsIcon.vue +13 -2
- package/src/components/icons/ToolsIcon.vue +12 -2
- package/src/components/icons/TouchIcon.vue +13 -2
- package/src/components/icons/TrashCanIcon.vue +13 -2
- package/src/components/icons/TriangleIcon.vue +6 -2
- package/src/components/icons/TwoDimensionsIcon.vue +14 -2
- package/src/components/icons/UploadIcon.vue +13 -2
- package/src/components/icons/UserProfileIcon.vue +13 -2
- package/src/components/icons/UserShareIcon.vue +12 -2
- package/src/components/icons/VideoRecorderIcon.vue +16 -3
- package/src/components/icons/ViewpointFlightIcon.vue +22 -4
- package/src/components/icons/ViewpointIcon.vue +22 -4
- package/src/components/icons/Viewshed360Icon.vue +14 -2
- package/src/components/icons/ViewshedConeIcon.vue +13 -2
- package/src/components/icons/ViewshedIcon.vue +14 -2
- package/src/components/icons/WalkingIcon.vue +13 -2
- package/src/components/icons/WallIcon.vue +19 -3
- package/src/components/icons/WandIcon.vue +129 -21
- package/src/components/imageElementInjector.vue +1 -3
- package/src/components/lists/VcsActionList.vue +21 -18
- package/src/components/lists/VcsList.vue +208 -98
- package/src/components/lists/VcsTreeview.vue +30 -26
- package/src/components/lists/VcsTreeviewLeaf.vue +23 -22
- package/src/components/lists/VcsTreeviewSearchbar.vue +19 -15
- package/src/components/notification/VcsBadge.vue +4 -6
- package/src/components/notification/VcsTooltip.vue +95 -94
- package/src/components/notification/validation.js +1 -1
- package/src/components/tables/VcsDataTable.vue +107 -95
- package/src/components/tables/VcsTable.vue +38 -30
- package/src/contentTree/LayerTree.vue +2 -3
- package/src/contentTree/contentTreeCollection.js +48 -22
- package/src/contentTree/contentTreeItem.js +36 -14
- package/src/contentTree/groupContentTreeItem.js +44 -22
- package/src/contentTree/layerContentTreeItem.js +42 -20
- package/src/contentTree/layerGroupContentTreeItem.js +53 -31
- package/src/contentTree/nodeContentTreeItem.js +18 -7
- package/src/contentTree/obliqueCollectionContentTreeItem.js +45 -20
- package/src/contentTree/subContentTreeItem.js +13 -4
- package/src/contentTree/vcsObjectContentTreeItem.js +24 -15
- package/src/contentTree/viewpointContentTreeItem.js +19 -6
- package/src/downloadHelper.js +4 -1
- package/src/featureInfo/AddressBalloonComponent.vue +11 -16
- package/src/featureInfo/BalloonComponent.vue +35 -26
- package/src/featureInfo/abstractFeatureInfoView.js +29 -13
- package/src/featureInfo/addressBalloonFeatureInfoView.js +19 -7
- package/src/featureInfo/balloonFeatureInfoView.js +22 -9
- package/src/featureInfo/balloonHelper.js +61 -42
- package/src/featureInfo/featureInfo.js +71 -31
- package/src/featureInfo/featureInfoInteraction.js +13 -7
- package/src/featureInfo/iframeFeatureInfoView.js +3 -1
- package/src/featureInfo/tableFeatureInfoView.js +15 -5
- package/src/i18n/i18nCollection.js +183 -155
- package/src/init.js +124 -121
- package/src/legend/legendHelper.js +11 -6
- package/src/legend/styleLegendItem.vue +18 -12
- package/src/legend/vcsLegend.vue +15 -17
- package/src/manager/buttonManager.js +6 -3
- package/src/manager/categoryManager/CategoryComponent.vue +52 -25
- package/src/manager/categoryManager/CategoryComponentList.vue +33 -8
- package/src/manager/categoryManager/CategoryManager.vue +4 -5
- package/src/manager/categoryManager/categoryManager.js +82 -37
- package/src/manager/contextMenu/contextMenuComponent.vue +2 -6
- package/src/manager/contextMenu/contextMenuInteraction.js +6 -1
- package/src/manager/contextMenu/contextMenuManager.js +37 -22
- package/src/manager/navbarManager.js +15 -8
- package/src/manager/toolbox/GroupToolboxComponent.vue +22 -21
- package/src/manager/toolbox/SelectToolboxComponent.vue +36 -35
- package/src/manager/toolbox/ToolboxManager.vue +18 -10
- package/src/manager/toolbox/toolboxManager.js +30 -12
- package/src/manager/window/WindowComponent.vue +18 -21
- package/src/manager/window/WindowComponentHeader.vue +34 -26
- package/src/manager/window/WindowManager.vue +33 -22
- package/src/manager/window/windowHelper.js +79 -23
- package/src/manager/window/windowManager.js +61 -32
- package/src/navigation/mapNavCompass.vue +17 -3
- package/src/navigation/mapNavigation.vue +59 -40
- package/src/navigation/obliqueRotation.vue +6 -8
- package/src/navigation/orientationToolsButton.vue +6 -9
- package/src/navigation/overviewMap.js +72 -41
- package/src/navigation/overviewMapClickedInteraction.js +6 -1
- package/src/navigation/tiltSlider.vue +6 -10
- package/src/navigation/vcsCompass.vue +1 -9
- package/src/navigation/vcsZoomButton.vue +16 -17
- package/src/notifier/notifier.js +22 -13
- package/src/notifier/notifierComponent.vue +21 -21
- package/src/pluginHelper.js +23 -9
- package/src/search/resultItem.vue +10 -15
- package/src/search/resultsComponent.vue +30 -24
- package/src/search/search.js +36 -19
- package/src/search/searchComponent.vue +20 -10
- package/src/setup.js +9 -9
- package/src/state.js +22 -6
- package/src/styles/_typography.scss +0 -1
- package/src/styles/shades.scss +4 -2
- package/src/styles/utils/_border.scss +1 -1
- package/src/styles/utils/_display.scss +1 -1
- package/src/styles/variables.scss +39 -34
- package/src/styles/vcsFont.scss +6 -5
- package/src/styles/vcsGrid.scss +9 -0
- package/src/uiConfig.js +3 -1
- package/src/vcsUiApp.js +156 -59
- package/src/vuePlugins/i18n.js +4 -4
- package/src/vuePlugins/vuetify.js +4 -0
- package/dist/assets/cesium/Workers/PolygonPipeline-844aab0a.js +0 -1345
- package/dist/assets/cesium/Workers/Transforms-40229881.js +0 -14696
- package/dist/assets/ui.c27597.css +0 -5
- /package/dist/assets/cesium/Workers/{GeometryOffsetAttribute-04332ce7.js → GeometryOffsetAttribute-9ad0019c.js} +0 -0
- /package/dist/assets/{vue.5d00e9.js → vue.c1ece7.js} +0 -0
@@ -49,11 +49,18 @@ export function applyValueMapping(attributes, mapping) {
|
|
49
49
|
})
|
50
50
|
.forEach((mappingKey) => {
|
51
51
|
if (Object.hasOwn(attributes, mappingKey)) {
|
52
|
-
attributes[mappingKey] = getMappedValue(
|
52
|
+
attributes[mappingKey] = getMappedValue(
|
53
|
+
mapping[mappingKey],
|
54
|
+
attributes[mappingKey],
|
55
|
+
);
|
53
56
|
} else {
|
54
57
|
const mappingKeys = mappingKey.split('.');
|
55
58
|
mappingKeys.reduce((obj, key, index) => {
|
56
|
-
if (
|
59
|
+
if (
|
60
|
+
obj &&
|
61
|
+
Object.hasOwn(obj, key) &&
|
62
|
+
index === mappingKeys.length - 1
|
63
|
+
) {
|
57
64
|
obj[key] = getMappedValue(mapping[mappingKey], obj[key]);
|
58
65
|
}
|
59
66
|
return obj?.[key];
|
@@ -109,7 +116,11 @@ export function applyKeyMapping(attributes, mapping) {
|
|
109
116
|
} else {
|
110
117
|
const mappingKeys = mappingKey.split('.');
|
111
118
|
mappingKeys.reduce((obj, key, index) => {
|
112
|
-
if (
|
119
|
+
if (
|
120
|
+
obj &&
|
121
|
+
Object.hasOwn(obj, key) &&
|
122
|
+
index === mappingKeys.length - 1
|
123
|
+
) {
|
113
124
|
attributes[mapping[mappingKey]] = obj[key];
|
114
125
|
delete obj[key];
|
115
126
|
}
|
@@ -152,13 +163,12 @@ export function applyAttributeFilter(attributes, keys, result = {}) {
|
|
152
163
|
}
|
153
164
|
});
|
154
165
|
|
155
|
-
Object.entries(nestedKeys)
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
});
|
166
|
+
Object.entries(nestedKeys).forEach(([parent, pKs]) => {
|
167
|
+
if (typeof attributes[parent] === 'object') {
|
168
|
+
result[parent] = {};
|
169
|
+
applyAttributeFilter(attributes[parent], pKs, result[parent]);
|
170
|
+
}
|
171
|
+
});
|
162
172
|
return result;
|
163
173
|
}
|
164
174
|
|
@@ -173,7 +183,9 @@ class AbstractFeatureInfoView extends VcsObject {
|
|
173
183
|
/**
|
174
184
|
* @type {string}
|
175
185
|
*/
|
176
|
-
static get className() {
|
186
|
+
static get className() {
|
187
|
+
return 'AbstractFeatureInfoView';
|
188
|
+
}
|
177
189
|
|
178
190
|
/** @returns {FeatureInfoViewOptions} */
|
179
191
|
static getDefaultOptions() {
|
@@ -221,14 +233,18 @@ class AbstractFeatureInfoView extends VcsObject {
|
|
221
233
|
* @type {WindowComponentOptions|Object}
|
222
234
|
* @readonly
|
223
235
|
*/
|
224
|
-
get window() {
|
236
|
+
get window() {
|
237
|
+
return this._window;
|
238
|
+
}
|
225
239
|
|
226
240
|
/**
|
227
241
|
* component provided by a FeatureInfoView class, passed to featureInfo via `getWindowComponentOptions()`
|
228
242
|
* @type {import("vue").Component|undefined}
|
229
243
|
* @readonly
|
230
244
|
*/
|
231
|
-
get component() {
|
245
|
+
get component() {
|
246
|
+
return this._component;
|
247
|
+
}
|
232
248
|
|
233
249
|
/**
|
234
250
|
* This method returns all relevant attributes for this view.
|
@@ -1,4 +1,6 @@
|
|
1
|
-
import BalloonFeatureInfoView, {
|
1
|
+
import BalloonFeatureInfoView, {
|
2
|
+
extractNestedKey,
|
3
|
+
} from './balloonFeatureInfoView.js';
|
2
4
|
import AddressBalloonComponent from './AddressBalloonComponent.vue';
|
3
5
|
|
4
6
|
/**
|
@@ -20,7 +22,9 @@ class AddressBalloonFeatureInfoView extends BalloonFeatureInfoView {
|
|
20
22
|
/**
|
21
23
|
* @type {string}
|
22
24
|
*/
|
23
|
-
static get className() {
|
25
|
+
static get className() {
|
26
|
+
return 'AddressBalloonFeatureInfoView';
|
27
|
+
}
|
24
28
|
|
25
29
|
/** @returns {AddressBalloonFeatureInfoViewOptions} */
|
26
30
|
static getDefaultOptions() {
|
@@ -44,15 +48,20 @@ class AddressBalloonFeatureInfoView extends BalloonFeatureInfoView {
|
|
44
48
|
/**
|
45
49
|
* @type {string|null}
|
46
50
|
*/
|
47
|
-
this.addressName =
|
51
|
+
this.addressName =
|
52
|
+
options.addressName !== undefined
|
53
|
+
? options.addressName
|
54
|
+
: defaultOptions.addressName;
|
48
55
|
/**
|
49
56
|
* @type {string|null}
|
50
57
|
*/
|
51
|
-
this.street =
|
58
|
+
this.street =
|
59
|
+
options.street !== undefined ? options.street : defaultOptions.street;
|
52
60
|
/**
|
53
61
|
* @type {string|null}
|
54
62
|
*/
|
55
|
-
this.number =
|
63
|
+
this.number =
|
64
|
+
options.number !== undefined ? options.number : defaultOptions.number;
|
56
65
|
/**
|
57
66
|
* @type {string|null}
|
58
67
|
*/
|
@@ -64,7 +73,8 @@ class AddressBalloonFeatureInfoView extends BalloonFeatureInfoView {
|
|
64
73
|
/**
|
65
74
|
* @type {string|null}
|
66
75
|
*/
|
67
|
-
this.country =
|
76
|
+
this.country =
|
77
|
+
options.country !== undefined ? options.country : defaultOptions.country;
|
68
78
|
}
|
69
79
|
|
70
80
|
/**
|
@@ -83,7 +93,9 @@ class AddressBalloonFeatureInfoView extends BalloonFeatureInfoView {
|
|
83
93
|
}
|
84
94
|
}
|
85
95
|
};
|
86
|
-
Object.keys(AddressBalloonFeatureInfoView.getDefaultOptions()).forEach(
|
96
|
+
Object.keys(AddressBalloonFeatureInfoView.getDefaultOptions()).forEach(
|
97
|
+
(key) => applyAddressKeys(key),
|
98
|
+
);
|
87
99
|
return obj;
|
88
100
|
}
|
89
101
|
|
@@ -19,7 +19,7 @@ export function extractNestedKey(key, attrs, defaultValue = null) {
|
|
19
19
|
check(attrs, Object);
|
20
20
|
|
21
21
|
const keys = key.split('.');
|
22
|
-
const derivedValue = keys.reduce((obj, prop) =>
|
22
|
+
const derivedValue = keys.reduce((obj, prop) => obj[prop] || {}, attrs);
|
23
23
|
return typeof derivedValue === 'string' ? derivedValue : defaultValue;
|
24
24
|
}
|
25
25
|
|
@@ -74,7 +74,9 @@ class BalloonFeatureInfoView extends AbstractFeatureInfoView {
|
|
74
74
|
/**
|
75
75
|
* @type {string}
|
76
76
|
*/
|
77
|
-
static get className() {
|
77
|
+
static get className() {
|
78
|
+
return 'BalloonFeatureInfoView';
|
79
|
+
}
|
78
80
|
|
79
81
|
/**
|
80
82
|
* @param {BalloonFeatureInfoViewOptions} options
|
@@ -103,13 +105,24 @@ class BalloonFeatureInfoView extends AbstractFeatureInfoView {
|
|
103
105
|
const properties = super.getProperties(featureInfo, layer);
|
104
106
|
return {
|
105
107
|
...properties,
|
106
|
-
position:
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
108
|
+
position:
|
109
|
+
featureInfo.position ?? getPositionFromFeature(featureInfo.feature),
|
110
|
+
balloonTitle:
|
111
|
+
this.balloonTitle != null
|
112
|
+
? extractNestedKey(
|
113
|
+
this.balloonTitle,
|
114
|
+
properties.attributes,
|
115
|
+
this.balloonTitle,
|
116
|
+
)
|
117
|
+
: properties.layerProperties.title,
|
118
|
+
balloonSubtitle:
|
119
|
+
this.balloonSubtitle != null
|
120
|
+
? extractNestedKey(
|
121
|
+
this.balloonSubtitle,
|
122
|
+
properties.attributes,
|
123
|
+
this.balloonSubtitle,
|
124
|
+
)
|
125
|
+
: properties.featureId,
|
113
126
|
};
|
114
127
|
}
|
115
128
|
|
@@ -1,5 +1,15 @@
|
|
1
|
-
import {
|
2
|
-
|
1
|
+
import {
|
2
|
+
Cartesian2,
|
3
|
+
Cartographic,
|
4
|
+
SceneTransforms,
|
5
|
+
} from '@vcmap-cesium/engine';
|
6
|
+
import {
|
7
|
+
CesiumMap,
|
8
|
+
ObliqueMap,
|
9
|
+
OpenlayersMap,
|
10
|
+
Projection,
|
11
|
+
transformToImage,
|
12
|
+
} from '@vcmap/core';
|
3
13
|
import { unByKey } from 'ol/Observable.js';
|
4
14
|
import {
|
5
15
|
getWindowPositionOptionsFromMapEvent,
|
@@ -44,15 +54,14 @@ export async function getBalloonPosition(app, position) {
|
|
44
54
|
const map = app.maps.activeMap;
|
45
55
|
if (map instanceof CesiumMap) {
|
46
56
|
const wgs84Position = Projection.mercatorToWgs84(position);
|
47
|
-
const cartesian = Cartographic.toCartesian(
|
57
|
+
const cartesian = Cartographic.toCartesian(
|
58
|
+
Cartographic.fromDegrees(...wgs84Position),
|
59
|
+
);
|
48
60
|
return getBalloonPositionCesium(map.getScene(), cartesian);
|
49
61
|
} else if (map instanceof OpenlayersMap) {
|
50
62
|
return getBalloonPositionOL(map.olMap, position);
|
51
63
|
} else if (map instanceof ObliqueMap) {
|
52
|
-
const { coords } = await transformToImage(
|
53
|
-
map.currentImage,
|
54
|
-
position,
|
55
|
-
);
|
64
|
+
const { coords } = await transformToImage(map.currentImage, position);
|
56
65
|
return getBalloonPositionOL(map.olMap, coords);
|
57
66
|
}
|
58
67
|
return undefined;
|
@@ -72,7 +81,10 @@ export function setBalloonPosition(windowManager, id, windowPosition, target) {
|
|
72
81
|
windowManager.setWindowPositionOptions(
|
73
82
|
id,
|
74
83
|
getWindowPositionOptionsFromMapEvent(
|
75
|
-
new Cartesian2(
|
84
|
+
new Cartesian2(
|
85
|
+
windowPosition.x - balloonOffset.x,
|
86
|
+
windowPosition.y - balloonOffset.y,
|
87
|
+
),
|
76
88
|
target,
|
77
89
|
WindowAlignment.BOTTOM_LEFT,
|
78
90
|
),
|
@@ -85,19 +97,25 @@ export function setBalloonPosition(windowManager, id, windowPosition, target) {
|
|
85
97
|
* @param {import("ol/coordinate").Coordinate} clickedPosition - position in mercator
|
86
98
|
* @returns {Promise<(() => void)>}
|
87
99
|
*/
|
88
|
-
export async function setupBalloonPositionListener(
|
100
|
+
export async function setupBalloonPositionListener(
|
101
|
+
vcsApp,
|
102
|
+
windowId,
|
103
|
+
clickedPosition,
|
104
|
+
) {
|
89
105
|
const listeners = [];
|
90
106
|
|
91
107
|
const destroy = () => {
|
92
|
-
listeners.forEach(cb => cb());
|
108
|
+
listeners.forEach((cb) => cb());
|
93
109
|
};
|
94
110
|
|
95
111
|
const setup = async (app, id, position) => {
|
96
112
|
destroy();
|
97
113
|
|
98
|
-
listeners.push(
|
99
|
-
|
100
|
-
|
114
|
+
listeners.push(
|
115
|
+
app.maps.mapActivated.addEventListener(
|
116
|
+
setup.bind(null, app, id, position),
|
117
|
+
),
|
118
|
+
);
|
101
119
|
|
102
120
|
const map = app.maps.activeMap;
|
103
121
|
if (map instanceof CesiumMap) {
|
@@ -106,43 +124,44 @@ export async function setupBalloonPositionListener(vcsApp, windowId, clickedPosi
|
|
106
124
|
position[2] = position3D[2];
|
107
125
|
}
|
108
126
|
const wgs84Position = Projection.mercatorToWgs84(position);
|
109
|
-
const cartesian = Cartographic.toCartesian(
|
110
|
-
|
127
|
+
const cartesian = Cartographic.toCartesian(
|
128
|
+
Cartographic.fromDegrees(...wgs84Position),
|
129
|
+
);
|
130
|
+
listeners.push(
|
131
|
+
map.getScene().postRender.addEventListener((scene) => {
|
132
|
+
setBalloonPosition(
|
133
|
+
app.windowManager,
|
134
|
+
windowId,
|
135
|
+
getBalloonPositionCesium(scene, cartesian),
|
136
|
+
app.maps.target,
|
137
|
+
);
|
138
|
+
}),
|
139
|
+
);
|
140
|
+
} else if (map instanceof OpenlayersMap) {
|
141
|
+
const handler = () =>
|
111
142
|
setBalloonPosition(
|
112
143
|
app.windowManager,
|
113
144
|
windowId,
|
114
|
-
|
145
|
+
getBalloonPositionOL(map.olMap, position),
|
115
146
|
app.maps.target,
|
116
147
|
);
|
117
|
-
|
118
|
-
} else if (map instanceof OpenlayersMap) {
|
119
|
-
const handler = () => setBalloonPosition(
|
120
|
-
app.windowManager,
|
121
|
-
windowId,
|
122
|
-
getBalloonPositionOL(map.olMap, position),
|
123
|
-
app.maps.target,
|
124
|
-
);
|
125
|
-
const key = map.olMap.on(
|
126
|
-
'postrender',
|
127
|
-
handler,
|
128
|
-
);
|
148
|
+
const key = map.olMap.on('postrender', handler);
|
129
149
|
listeners.push(() => unByKey(key));
|
130
150
|
} else if (map instanceof ObliqueMap) {
|
131
|
-
const { coords } = await transformToImage(
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
const handler = () => setBalloonPosition(
|
137
|
-
app.windowManager,
|
138
|
-
windowId,
|
139
|
-
getBalloonPositionOL(map.olMap, coords),
|
140
|
-
app.maps.target,
|
141
|
-
);
|
142
|
-
const key = map.olMap.on(
|
143
|
-
'postrender',
|
144
|
-
handler,
|
151
|
+
const { coords } = await transformToImage(map.currentImage, position);
|
152
|
+
listeners.push(
|
153
|
+
map.imageChanged.addEventListener(
|
154
|
+
setup.bind(null, app, windowId, position),
|
155
|
+
),
|
145
156
|
);
|
157
|
+
const handler = () =>
|
158
|
+
setBalloonPosition(
|
159
|
+
app.windowManager,
|
160
|
+
windowId,
|
161
|
+
getBalloonPositionOL(map.olMap, coords),
|
162
|
+
app.maps.target,
|
163
|
+
);
|
164
|
+
const key = map.olMap.on('postrender', handler);
|
146
165
|
listeners.push(() => unByKey(key));
|
147
166
|
}
|
148
167
|
};
|
@@ -69,7 +69,9 @@ export function getHighlightStyle(feature, layer, defaultFillColor) {
|
|
69
69
|
if (typeof style === 'function') {
|
70
70
|
style = style(feature, 1);
|
71
71
|
}
|
72
|
-
style =
|
72
|
+
style =
|
73
|
+
style?.clone?.() ??
|
74
|
+
new VectorStyleItem(getDefaultVectorStyleItemOptions()).style;
|
73
75
|
if (style.getText()) {
|
74
76
|
if (style.getText().getFill()) {
|
75
77
|
style.getText().getFill().setColor(fillColor.toCssColorString());
|
@@ -102,10 +104,9 @@ export function createFeatureInfoSession(app) {
|
|
102
104
|
/** @type {function():void} */
|
103
105
|
let stop;
|
104
106
|
const interaction = new FeatureInfoInteraction(app.featureInfo);
|
105
|
-
const listener = eventHandler.addExclusiveInteraction(
|
106
|
-
|
107
|
-
|
108
|
-
);
|
107
|
+
const listener = eventHandler.addExclusiveInteraction(interaction, () => {
|
108
|
+
stop?.();
|
109
|
+
});
|
109
110
|
const currentFeatureInteractionEvent = eventHandler.featureInteraction.active;
|
110
111
|
eventHandler.featureInteraction.setActive(EventType.CLICK);
|
111
112
|
|
@@ -213,14 +214,17 @@ class FeatureInfo {
|
|
213
214
|
new Collection(),
|
214
215
|
() => this._app.dynamicModuleId,
|
215
216
|
null,
|
216
|
-
config =>
|
217
|
+
(config) =>
|
218
|
+
getObjectFromClassRegistry(this._featureInfoClassRegistry, config),
|
217
219
|
AbstractFeatureInfoView,
|
218
220
|
);
|
219
221
|
/**
|
220
222
|
* @type {OverrideClassRegistry<AbstractFeatureInfoView>}
|
221
223
|
* @private
|
222
224
|
*/
|
223
|
-
this._featureInfoClassRegistry = new OverrideClassRegistry(
|
225
|
+
this._featureInfoClassRegistry = new OverrideClassRegistry(
|
226
|
+
featureInfoClassRegistry,
|
227
|
+
);
|
224
228
|
/**
|
225
229
|
* @type {function():void|null}
|
226
230
|
* @private
|
@@ -252,11 +256,10 @@ class FeatureInfo {
|
|
252
256
|
*/
|
253
257
|
this._listeners = [
|
254
258
|
this._app.maps.mapActivated.addEventListener((map) => {
|
255
|
-
if (
|
256
|
-
this.
|
257
|
-
|
258
|
-
|
259
|
-
const { layerName } = this._app.windowManager.get(this._windowId).props;
|
259
|
+
if (this._windowId && this._app.windowManager.has(this._windowId)) {
|
260
|
+
const { layerName } = this._app.windowManager.get(
|
261
|
+
this._windowId,
|
262
|
+
).props;
|
260
263
|
const layer = this._app.layers.getByKey(layerName);
|
261
264
|
if (layer && !layer.isSupported(map)) {
|
262
265
|
this._app.windowManager.remove(this._windowId);
|
@@ -267,7 +270,8 @@ class FeatureInfo {
|
|
267
270
|
if (
|
268
271
|
this._windowId &&
|
269
272
|
this._app.windowManager.has(this._windowId) &&
|
270
|
-
this._app.windowManager.get(this._windowId).props.layerName ===
|
273
|
+
this._app.windowManager.get(this._windowId).props.layerName ===
|
274
|
+
layer.name
|
271
275
|
) {
|
272
276
|
this._app.windowManager.remove(this._windowId);
|
273
277
|
}
|
@@ -301,31 +305,41 @@ class FeatureInfo {
|
|
301
305
|
* @type {import("@vcmap/core").OverrideCollection<AbstractFeatureInfoView>}
|
302
306
|
* @readonly
|
303
307
|
*/
|
304
|
-
get collection() {
|
308
|
+
get collection() {
|
309
|
+
return this._collection;
|
310
|
+
}
|
305
311
|
|
306
312
|
/**
|
307
313
|
* @type {OverrideClassRegistry<AbstractFeatureInfoView>}
|
308
314
|
* @readonly
|
309
315
|
*/
|
310
|
-
get classRegistry() {
|
316
|
+
get classRegistry() {
|
317
|
+
return this._featureInfoClassRegistry;
|
318
|
+
}
|
311
319
|
|
312
320
|
/**
|
313
321
|
* @type {VcsEvent<null|FeatureType>}
|
314
322
|
* @readonly
|
315
323
|
*/
|
316
|
-
get featureChanged() {
|
324
|
+
get featureChanged() {
|
325
|
+
return this._featureChanged;
|
326
|
+
}
|
317
327
|
|
318
328
|
/**
|
319
329
|
* @type {null|FeatureType}
|
320
330
|
* @readonly
|
321
331
|
*/
|
322
|
-
get selectedFeature() {
|
332
|
+
get selectedFeature() {
|
333
|
+
return this._selectedFeature;
|
334
|
+
}
|
323
335
|
|
324
336
|
/**
|
325
337
|
* @type {null|string}
|
326
338
|
* @readonly
|
327
339
|
*/
|
328
|
-
get selectedFeatureId() {
|
340
|
+
get selectedFeatureId() {
|
341
|
+
return this._selectedFeatureId;
|
342
|
+
}
|
329
343
|
|
330
344
|
/**
|
331
345
|
* The window id of the current features FeatureInfoView window
|
@@ -360,14 +374,18 @@ class FeatureInfo {
|
|
360
374
|
const layer = this._app.layers.getByKey(feature[vcsLayerName]);
|
361
375
|
const name = layer?.properties?.featureInfo;
|
362
376
|
if (!name) {
|
363
|
-
getLogger().debug(
|
377
|
+
getLogger().debug(
|
378
|
+
`No view has been configured for layer '${layer?.name}'.`,
|
379
|
+
);
|
364
380
|
return null;
|
365
381
|
}
|
366
382
|
if (!this._collection.hasKey(name)) {
|
367
383
|
getLogger().warning(`No view with name '${name}' has been registered.`);
|
368
384
|
return null;
|
369
385
|
}
|
370
|
-
return /** @type {AbstractFeatureInfoView} */ this._collection.getByKey(
|
386
|
+
return /** @type {AbstractFeatureInfoView} */ this._collection.getByKey(
|
387
|
+
name,
|
388
|
+
);
|
371
389
|
}
|
372
390
|
|
373
391
|
/**
|
@@ -384,12 +402,18 @@ class FeatureInfo {
|
|
384
402
|
* @returns {Promise<void>}
|
385
403
|
*/
|
386
404
|
async selectFeature(feature, position, windowPosition, featureInfoView) {
|
387
|
-
check(feature, [
|
405
|
+
check(feature, [
|
406
|
+
Feature,
|
407
|
+
Entity,
|
408
|
+
Cesium3DTileFeature,
|
409
|
+
Cesium3DTilePointFeature,
|
410
|
+
]);
|
388
411
|
checkMaybe(position, [Number]);
|
389
412
|
checkMaybe(windowPosition, [Number]);
|
390
413
|
checkMaybe(featureInfoView, AbstractFeatureInfoView);
|
391
414
|
|
392
|
-
const usedFeatureInfoView =
|
415
|
+
const usedFeatureInfoView =
|
416
|
+
feature[featureInfoViewSymbol] ??
|
393
417
|
featureInfoView ??
|
394
418
|
this._getFeatureInfoViewForFeature(feature);
|
395
419
|
const layer = this._app.layers.getByKey(feature[vcsLayerName]);
|
@@ -404,20 +428,24 @@ class FeatureInfo {
|
|
404
428
|
[featureId]: getHighlightStyle(
|
405
429
|
feature,
|
406
430
|
layer,
|
407
|
-
this._app.uiConfig.config.value.primaryColor ??
|
431
|
+
this._app.uiConfig.config.value.primaryColor ??
|
432
|
+
getDefaultPrimaryColor(),
|
408
433
|
),
|
409
434
|
});
|
410
|
-
this._clearHighlightingCb = () =>
|
435
|
+
this._clearHighlightingCb = () =>
|
436
|
+
this._scratchLayer.featureVisibility.unHighlight([featureId]);
|
411
437
|
} else if (layer.featureVisibility) {
|
412
438
|
const featureId = feature.getId();
|
413
439
|
layer.featureVisibility.highlight({
|
414
440
|
[featureId]: getHighlightStyle(
|
415
441
|
feature,
|
416
442
|
layer,
|
417
|
-
this._app.uiConfig.config.value.primaryColor ??
|
443
|
+
this._app.uiConfig.config.value.primaryColor ??
|
444
|
+
getDefaultPrimaryColor(),
|
418
445
|
),
|
419
446
|
});
|
420
|
-
this._clearHighlightingCb = () =>
|
447
|
+
this._clearHighlightingCb = () =>
|
448
|
+
layer.featureVisibility.unHighlight([featureId]);
|
421
449
|
}
|
422
450
|
this._windowId = usedFeatureInfoView.className; // use className for a type based position caching
|
423
451
|
this._app.windowManager.add(
|
@@ -481,7 +509,7 @@ class FeatureInfo {
|
|
481
509
|
this._app.layers.remove(this._scratchLayer);
|
482
510
|
this._scratchLayer.destroy();
|
483
511
|
}
|
484
|
-
this._listeners.forEach(cb => cb());
|
512
|
+
this._listeners.forEach((cb) => cb());
|
485
513
|
this._listeners.splice(0);
|
486
514
|
this._collection.destroy();
|
487
515
|
this._featureInfoClassRegistry.destroy();
|
@@ -489,7 +517,19 @@ class FeatureInfo {
|
|
489
517
|
}
|
490
518
|
|
491
519
|
export default FeatureInfo;
|
492
|
-
featureInfoClassRegistry.registerClass(
|
493
|
-
|
494
|
-
|
495
|
-
|
520
|
+
featureInfoClassRegistry.registerClass(
|
521
|
+
TableFeatureInfoView.className,
|
522
|
+
TableFeatureInfoView,
|
523
|
+
);
|
524
|
+
featureInfoClassRegistry.registerClass(
|
525
|
+
IframeFeatureInfoView.className,
|
526
|
+
IframeFeatureInfoView,
|
527
|
+
);
|
528
|
+
featureInfoClassRegistry.registerClass(
|
529
|
+
BalloonFeatureInfoView.className,
|
530
|
+
BalloonFeatureInfoView,
|
531
|
+
);
|
532
|
+
featureInfoClassRegistry.registerClass(
|
533
|
+
AddressBalloonFeatureInfoView.className,
|
534
|
+
AddressBalloonFeatureInfoView,
|
535
|
+
);
|
@@ -1,4 +1,8 @@
|
|
1
|
-
import {
|
1
|
+
import {
|
2
|
+
AbstractInteraction,
|
3
|
+
EventType,
|
4
|
+
ModificationKeyType,
|
5
|
+
} from '@vcmap/core';
|
2
6
|
|
3
7
|
/**
|
4
8
|
* @class
|
@@ -24,13 +28,15 @@ class FeatureInfoInteraction extends AbstractInteraction {
|
|
24
28
|
*/
|
25
29
|
async pipe(event) {
|
26
30
|
if (event.feature) {
|
27
|
-
if (
|
31
|
+
if (
|
32
|
+
!this._featureInfo.selectedFeature ||
|
33
|
+
event.feature.getId() !== this._featureInfo.selectedFeatureId
|
34
|
+
) {
|
28
35
|
event.stopPropagation = true;
|
29
|
-
await this._featureInfo.selectFeature(
|
30
|
-
event.
|
31
|
-
event.
|
32
|
-
|
33
|
-
);
|
36
|
+
await this._featureInfo.selectFeature(event.feature, event.position, [
|
37
|
+
event.windowPosition.x,
|
38
|
+
event.windowPosition.y,
|
39
|
+
]);
|
34
40
|
}
|
35
41
|
} else {
|
36
42
|
await this._featureInfo.clear();
|
@@ -41,7 +41,9 @@ class IframeFeatureInfoView extends AbstractFeatureInfoView {
|
|
41
41
|
/**
|
42
42
|
* @type {string}
|
43
43
|
*/
|
44
|
-
static get className() {
|
44
|
+
static get className() {
|
45
|
+
return 'IframeFeatureInfoView';
|
46
|
+
}
|
45
47
|
|
46
48
|
/**
|
47
49
|
* @param {IframeFeatureInfoViewOptions} options
|
@@ -27,7 +27,9 @@ class TableFeatureInfoView extends AbstractFeatureInfoView {
|
|
27
27
|
/**
|
28
28
|
* @type {string}
|
29
29
|
*/
|
30
|
-
static get className() {
|
30
|
+
static get className() {
|
31
|
+
return 'TableFeatureInfoView';
|
32
|
+
}
|
31
33
|
|
32
34
|
/** @returns {TableFeatureInfoViewOptions} */
|
33
35
|
static getDefaultOptions() {
|
@@ -47,13 +49,16 @@ class TableFeatureInfoView extends AbstractFeatureInfoView {
|
|
47
49
|
/**
|
48
50
|
* @type {number[]}
|
49
51
|
*/
|
50
|
-
this.itemsPerPageArray =
|
52
|
+
this.itemsPerPageArray =
|
53
|
+
options.itemsPerPageArray || defaultOptions.itemsPerPageArray;
|
51
54
|
|
52
55
|
const itemsPerPage = options.itemsPerPage || defaultOptions.itemsPerPage;
|
53
56
|
/**
|
54
57
|
* @type {number}
|
55
58
|
*/
|
56
|
-
this.itemsPerPage = this.itemsPerPageArray.includes(itemsPerPage)
|
59
|
+
this.itemsPerPage = this.itemsPerPageArray.includes(itemsPerPage)
|
60
|
+
? itemsPerPage
|
61
|
+
: this.itemsPerPageArray[0];
|
57
62
|
/**
|
58
63
|
* @type {boolean}
|
59
64
|
*/
|
@@ -90,8 +95,13 @@ class TableFeatureInfoView extends AbstractFeatureInfoView {
|
|
90
95
|
toJSON() {
|
91
96
|
const config = super.toJSON();
|
92
97
|
const defaultOptions = TableFeatureInfoView.getDefaultOptions();
|
93
|
-
if (
|
94
|
-
this.itemsPerPageArray.
|
98
|
+
if (
|
99
|
+
this.itemsPerPageArray.length !==
|
100
|
+
defaultOptions.itemsPerPageArray.length ||
|
101
|
+
this.itemsPerPageArray.some(
|
102
|
+
(e, idx) => e !== defaultOptions.itemsPerPageArray[idx],
|
103
|
+
)
|
104
|
+
) {
|
95
105
|
config.itemsPerPageArray = this.itemsPerPageArray;
|
96
106
|
}
|
97
107
|
if (this.itemsPerPage !== defaultOptions.itemsPerPage) {
|