@vcmap/ui 5.0.0-rc.17 → 5.0.0-rc.20
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 +6 -6
- package/build/build.js +2 -2
- package/build/buildCesium.js +3 -3
- package/build/buildHelpers.js +2 -1
- package/config/base.config.json +0 -4
- package/config/dev.config.json +35 -14
- package/config/www.config.json +752 -123
- package/dist/assets/cesium/Workers/ArcType-ce2e50ab.js +37 -0
- package/dist/assets/cesium/Workers/AttributeCompression-b646d393.js +716 -0
- package/dist/assets/cesium/Workers/AxisAlignedBoundingBox-ff186ccc.js +258 -0
- package/dist/assets/cesium/Workers/BoundingRectangle-be5924f4.js +369 -0
- package/dist/assets/cesium/Workers/BoxGeometry-12eeccaf.js +884 -0
- package/dist/assets/cesium/Workers/Check-666ab1a0.js +290 -0
- package/dist/assets/cesium/Workers/Color-a84038cb.js +2262 -0
- package/dist/assets/cesium/Workers/ComponentDatatype-f7b11d02.js +341 -0
- package/dist/assets/cesium/Workers/CoplanarPolygonGeometryLibrary-3272c1b3.js +132 -0
- package/dist/assets/cesium/Workers/CorridorGeometryLibrary-0170e093.js +498 -0
- package/dist/assets/cesium/Workers/CylinderGeometry-7c5da648.js +467 -0
- package/dist/assets/cesium/Workers/CylinderGeometryLibrary-372c07d8.js +63 -0
- package/dist/assets/cesium/Workers/EllipseGeometry-797d580e.js +1304 -0
- package/dist/assets/cesium/Workers/EllipseGeometryLibrary-2939e1dc.js +366 -0
- package/dist/assets/cesium/Workers/EllipseOutlineGeometry-8b50870f.js +443 -0
- package/dist/assets/cesium/Workers/EllipsoidGeodesic-98c62a56.js +520 -0
- package/dist/assets/cesium/Workers/EllipsoidGeometry-21c0e3a5.js +637 -0
- package/dist/assets/cesium/Workers/EllipsoidOutlineGeometry-eff247c8.js +454 -0
- package/dist/assets/cesium/Workers/EllipsoidRhumbLine-19756602.js +741 -0
- package/dist/assets/cesium/Workers/EllipsoidTangentPlane-214683dc.js +373 -0
- package/dist/assets/cesium/Workers/EncodedCartesian3-81f70735.js +171 -0
- package/dist/assets/cesium/Workers/FrustumGeometry-ac42a6d9.js +2512 -0
- package/dist/assets/cesium/Workers/GeometryAttribute-7d6f1732.js +619 -0
- package/dist/assets/cesium/Workers/GeometryAttributes-f06a2792.js +91 -0
- package/dist/assets/cesium/Workers/GeometryInstance-451dc1cd.js +121 -0
- package/dist/assets/cesium/Workers/GeometryOffsetAttribute-04332ce7.js +16 -0
- package/dist/assets/cesium/Workers/GeometryPipeline-ce4339ed.js +3690 -0
- package/dist/assets/cesium/Workers/IndexDatatype-a55ceaa1.js +200 -0
- package/dist/assets/cesium/Workers/IntersectionTests-f6e6bd8a.js +1836 -0
- package/dist/assets/cesium/Workers/Math-2dbd6b93.js +1330 -0
- package/dist/assets/cesium/Workers/Matrix2-13178034.js +7086 -0
- package/dist/assets/cesium/Workers/Matrix3-315394f6.js +4283 -0
- package/dist/assets/cesium/Workers/OrientedBoundingBox-04920dc7.js +1257 -0
- package/dist/assets/cesium/Workers/Plane-900aa728.js +309 -0
- package/dist/assets/cesium/Workers/PolygonGeometryLibrary-a8680d96.js +1074 -0
- package/dist/assets/cesium/Workers/PolygonPipeline-844aab0a.js +1345 -0
- package/dist/assets/cesium/Workers/PolylinePipeline-32f36d2a.js +573 -0
- package/dist/assets/cesium/Workers/PolylineVolumeGeometryLibrary-a510d657.js +781 -0
- package/dist/assets/cesium/Workers/PrimitivePipeline-ba38434a.js +966 -0
- package/dist/assets/cesium/Workers/RectangleGeometryLibrary-bdba697e.js +280 -0
- package/dist/assets/cesium/Workers/RuntimeError-06c93819.js +68 -0
- package/dist/assets/cesium/Workers/TerrainEncoding-833187da.js +1227 -0
- package/dist/assets/cesium/Workers/Transforms-40229881.js +14696 -0
- package/dist/assets/cesium/Workers/VertexFormat-6b480673.js +312 -0
- package/dist/assets/cesium/Workers/WallGeometryLibrary-919eed92.js +211 -0
- package/dist/assets/cesium/Workers/WebGLConstants-a8cc3e8c.js +620 -0
- package/dist/assets/cesium/Workers/WebMercatorProjection-13a90d41.js +151 -0
- package/dist/assets/cesium/Workers/arrayRemoveDuplicates-c2038105.js +129 -0
- package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +1336 -4
- package/dist/assets/cesium/Workers/combine-ca22a614.js +82 -0
- package/dist/assets/cesium/Workers/combineGeometry.js +17 -25
- package/dist/assets/cesium/Workers/createBoxGeometry.js +12 -25
- package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +313 -25
- package/dist/assets/cesium/Workers/createCircleGeometry.js +213 -25
- package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +160 -25
- package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +586 -25
- package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +236 -25
- package/dist/assets/cesium/Workers/createCorridorGeometry.js +1407 -25
- package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +603 -25
- package/dist/assets/cesium/Workers/createCylinderGeometry.js +12 -25
- package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +265 -25
- package/dist/assets/cesium/Workers/createEllipseGeometry.js +14 -25
- package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +14 -25
- package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +12 -25
- package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +15 -25
- package/dist/assets/cesium/Workers/createFrustumGeometry.js +12 -25
- package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +251 -25
- package/dist/assets/cesium/Workers/createGeometry.js +55 -25
- package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +2134 -25
- package/dist/assets/cesium/Workers/createPlaneGeometry.js +250 -25
- package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +115 -25
- package/dist/assets/cesium/Workers/createPolygonGeometry.js +1420 -25
- package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +683 -25
- package/dist/assets/cesium/Workers/createPolylineGeometry.js +571 -25
- package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +411 -25
- package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +301 -25
- package/dist/assets/cesium/Workers/createRectangleGeometry.js +1476 -25
- package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +535 -25
- package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +458 -25
- package/dist/assets/cesium/Workers/createSphereGeometry.js +123 -25
- package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +126 -25
- package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +127 -25
- package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +535 -25
- package/dist/assets/cesium/Workers/createVectorTileGeometries.js +445 -25
- package/dist/assets/cesium/Workers/createVectorTilePoints.js +79 -25
- package/dist/assets/cesium/Workers/createVectorTilePolygons.js +406 -25
- package/dist/assets/cesium/Workers/createVectorTilePolylines.js +254 -25
- package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +640 -25
- package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +2711 -27
- package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +994 -25
- package/dist/assets/cesium/Workers/createWallGeometry.js +623 -25
- package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +432 -25
- package/dist/assets/cesium/Workers/decodeDraco.js +381 -25
- package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +3687 -25
- package/dist/assets/cesium/Workers/decodeI3S.js +1040 -0
- package/dist/assets/cesium/Workers/defaultValue-0a909f67.js +51 -0
- package/dist/assets/cesium/Workers/package.js +2 -2
- package/dist/assets/cesium/Workers/transcodeKTX2.js +1516 -25
- package/dist/assets/cesium/Workers/transferTypedArrayTest.js +18 -2
- package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +1023 -25
- package/dist/assets/{cesium.41de56.js → cesium.adbd45.js} +112161 -108735
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core.af84e3.js → core.60e74d.js} +1616 -1629
- package/dist/assets/core.f198cf.js +15993 -0
- package/dist/assets/core.js +1 -1
- package/dist/assets/{index.5b773cad.js → index.884a53ef.js} +1 -1
- package/dist/assets/{ol.5c7490.js → ol.c6ff35.js} +6992 -6972
- package/dist/assets/ol.dbd604.js +44299 -0
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui.bf504d.css +1 -0
- package/dist/assets/{ui.dffe32.js → ui.bf504d.js} +6171 -6821
- package/dist/assets/ui.js +1 -1
- package/dist/assets/{vue.25da17.js → vue.75b819.js} +0 -0
- package/dist/assets/vue.a831f1.js +4675 -0
- package/dist/assets/vue.js +2 -2
- package/dist/assets/{vuetify.e4ece7.css → vuetify.0d7360.css} +0 -0
- package/dist/assets/{vuetify.e4ece7.js → vuetify.0d7360.js} +1 -1
- package/dist/assets/vuetify.js +2 -2
- package/dist/index.html +1 -1
- package/index.js +2 -1
- package/lib/cesium.js +1 -1
- package/package.json +3 -4
- package/plugins/{simple-graph → @vcmap/simple-graph}/README.md +1 -1
- package/plugins/{simple-graph → @vcmap/simple-graph}/SimpleGraphComponent.vue +0 -0
- package/plugins/{simple-graph → @vcmap/simple-graph}/index.js +0 -0
- package/plugins/{simple-graph → @vcmap/simple-graph}/package.json +0 -0
- package/plugins/{simple-graph → @vcmap/simple-graph}/simpleGraphView.js +0 -0
- package/plugins/@vcmap-show-case/README.md +20 -0
- package/plugins/{buttonExamples/ButtonExamples.vue → @vcmap-show-case/buttons-example/ButtonsExample.vue} +19 -1
- package/plugins/@vcmap-show-case/buttons-example/README.md +4 -0
- package/plugins/{buttonExamples → @vcmap-show-case/buttons-example}/index.js +16 -8
- package/plugins/@vcmap-show-case/buttons-example/package.json +5 -0
- package/plugins/{categoryTest → @vcmap-show-case/category-tester}/Categories.vue +7 -6
- package/plugins/{categoryTest → @vcmap-show-case/category-tester}/Category.vue +4 -3
- package/plugins/@vcmap-show-case/category-tester/README.md +3 -0
- package/plugins/{categoryTest → @vcmap-show-case/category-tester}/index.js +12 -4
- package/plugins/@vcmap-show-case/category-tester/package.json +5 -0
- package/plugins/@vcmap-show-case/config-editor/README.md +3 -0
- package/plugins/{test → @vcmap-show-case/config-editor}/editor.vue +0 -0
- package/plugins/@vcmap-show-case/config-editor/index.js +47 -0
- package/plugins/@vcmap-show-case/config-editor/package.json +5 -0
- package/plugins/@vcmap-show-case/context-menu-tester/README.md +3 -0
- package/plugins/@vcmap-show-case/context-menu-tester/index.js +33 -0
- package/plugins/@vcmap-show-case/context-menu-tester/package.json +5 -0
- package/plugins/{@vcmap/pluginExample/pluginExampleComponent.vue → @vcmap-show-case/form-inputs-example/FormInputsExample.vue} +14 -13
- package/plugins/@vcmap-show-case/form-inputs-example/README.md +4 -0
- package/plugins/@vcmap-show-case/form-inputs-example/config.json +5 -0
- package/plugins/{@vcmap/pluginExample → @vcmap-show-case/form-inputs-example}/exampleActions.js +1 -1
- package/plugins/{@vcmap/pluginExample → @vcmap-show-case/form-inputs-example}/index.js +23 -22
- package/plugins/@vcmap-show-case/form-inputs-example/package.json +5 -0
- package/plugins/{@vcmap/pluginExample → @vcmap-show-case/form-inputs-example}/validation.js +0 -0
- package/plugins/@vcmap-show-case/icons-example/README.md +5 -0
- package/plugins/@vcmap-show-case/icons-example/allIconsComponent.vue +51 -0
- package/plugins/@vcmap-show-case/icons-example/index.js +44 -0
- package/plugins/@vcmap-show-case/icons-example/package.json +5 -0
- package/plugins/{test/testList.vue → @vcmap-show-case/list-example/ListExample.vue} +1 -1
- package/plugins/@vcmap-show-case/list-example/README.md +3 -0
- package/plugins/@vcmap-show-case/list-example/index.js +44 -0
- package/plugins/@vcmap-show-case/list-example/package.json +5 -0
- package/plugins/@vcmap-show-case/notifier-tester/README.md +3 -0
- package/plugins/{notifier → @vcmap-show-case/notifier-tester}/index.js +11 -6
- package/plugins/{notifier → @vcmap-show-case/notifier-tester}/notifierTester.vue +0 -0
- package/plugins/@vcmap-show-case/notifier-tester/package.json +5 -0
- package/plugins/@vcmap-show-case/textfields-example/README.md +3 -0
- package/plugins/{example/mySuperComponent.vue → @vcmap-show-case/textfields-example/TextfieldsExample.vue} +1 -7
- package/plugins/{example → @vcmap-show-case/textfields-example}/index.js +58 -62
- package/plugins/@vcmap-show-case/textfields-example/package.json +5 -0
- package/plugins/@vcmap-show-case/window-tester/README.md +3 -0
- package/plugins/{test/windowManagerExample.vue → @vcmap-show-case/window-tester/WindowExample.vue} +36 -20
- package/plugins/{test → @vcmap-show-case/window-tester}/emptyComponent.vue +8 -3
- package/plugins/@vcmap-show-case/window-tester/index.js +62 -0
- package/plugins/{test → @vcmap-show-case/window-tester}/myCustomHeader.vue +0 -0
- package/plugins/@vcmap-show-case/window-tester/package.json +5 -0
- package/plugins/@vcmap-show-case/window-tester/toolbox-data.js +211 -0
- package/plugins/{test/vcsContent.vue → @vcmap-show-case/window-tester/windowExampleContent.vue} +1 -5
- package/plugins/@vcmap-show-case/wizard-example/README.md +3 -0
- package/plugins/{wizardExample → @vcmap-show-case/wizard-example}/index.js +12 -6
- package/plugins/@vcmap-show-case/wizard-example/package.json +5 -0
- package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +95 -0
- package/plugins/package.json +2 -1
- package/src/actions/actionHelper.js +4 -4
- package/src/actions/stateRefAction.js +0 -10
- package/src/application/VcsApp.vue +42 -23
- package/src/application/VcsMap.vue +9 -0
- package/src/application/VcsNavbar.vue +1 -1
- package/src/components/buttons/VcsActionButtonList.vue +1 -0
- package/src/components/buttons/VcsButton.vue +14 -3
- package/src/components/form-inputs-controls/VcsCheckbox.vue +3 -1
- package/src/components/form-inputs-controls/VcsWizard.vue +17 -20
- package/src/components/form-inputs-controls/VcsWizardStep.vue +160 -0
- package/src/{icons → components/icons}/+all.js +0 -0
- package/src/{icons → components/icons}/2DAreaIcon.vue +0 -0
- package/src/{icons → components/icons}/2DDistanceIcon.vue +0 -0
- package/src/{icons → components/icons}/3DAreaIcon.vue +0 -0
- package/src/{icons → components/icons}/3DDistanceIcon.vue +0 -0
- package/src/{icons → components/icons}/3DHeightIcon.vue +0 -0
- package/src/{icons → components/icons}/AngleIcon.vue +0 -0
- package/src/{icons → components/icons}/AssociationsIcon.vue +0 -0
- package/src/{icons → components/icons}/AxisIcon.vue +0 -0
- package/src/{icons → components/icons}/BoundingBoxIcon.vue +0 -0
- package/src/{icons → components/icons}/CheckboxCheckedIcon.vue +0 -0
- package/src/{icons → components/icons}/CheckboxIcon.vue +0 -0
- package/src/{icons → components/icons}/CheckboxIndeterminateIcon.vue +0 -0
- package/src/{icons → components/icons}/CircleIcon.vue +0 -0
- package/src/{icons → components/icons}/ClippingHorizontalIcon.vue +0 -0
- package/src/{icons → components/icons}/ClippingIcon.vue +0 -0
- package/src/{icons → components/icons}/ClippingVerticalIcon.vue +0 -0
- package/src/{icons → components/icons}/ColorPickerIcon.vue +0 -0
- package/src/{icons → components/icons}/ColorSwatchIcon.vue +0 -0
- package/src/{icons → components/icons}/CommentIcon.vue +0 -0
- package/src/{icons → components/icons}/CompassIcon.vue +0 -0
- package/src/{icons → components/icons}/ComponentsIcon.vue +0 -0
- package/src/{icons → components/icons}/ConeIcon.vue +0 -0
- package/src/{icons → components/icons}/DimensionsHouseIcon.vue +0 -0
- package/src/{icons → components/icons}/EditIcon.vue +0 -0
- package/src/{icons → components/icons}/ElevationProfileIcon.vue +0 -0
- package/src/{icons → components/icons}/ExportAreaIcon.vue +0 -0
- package/src/{icons → components/icons}/ExportFlightIcon.vue +0 -0
- package/src/{icons → components/icons}/ExportIcon.vue +0 -0
- package/src/{icons → components/icons}/ExternalLinkIcon.vue +0 -0
- package/src/{icons → components/icons}/EyeIcon.vue +0 -0
- package/src/{icons → components/icons}/FastForwardIcon.vue +0 -0
- package/src/{icons → components/icons}/FilterIcon.vue +0 -0
- package/src/{icons → components/icons}/GlobalTerrainIcon.vue +0 -0
- package/src/{icons → components/icons}/GlobeNatureIcon.vue +0 -0
- package/src/{icons → components/icons}/GroundIcon.vue +0 -0
- package/src/{icons → components/icons}/HealthCareIndustriesIcon.vue +0 -0
- package/src/{icons → components/icons}/HelpIcon.vue +0 -0
- package/src/{icons → components/icons}/HideIcon.vue +0 -0
- package/src/{icons → components/icons}/HomePointIcon.vue +0 -0
- package/src/{icons → components/icons}/HospitalsIcon.vue +0 -0
- package/src/{icons → components/icons}/HouseIcon.vue +0 -0
- package/src/{icons → components/icons}/ImportIcon.vue +0 -0
- package/src/{icons → components/icons}/InfoIcon.vue +0 -0
- package/src/{icons → components/icons}/KebabIcon.vue +0 -0
- package/src/{icons → components/icons}/LabelIcon.vue +0 -0
- package/src/{icons → components/icons}/LayersIcon.vue +0 -0
- package/src/{icons → components/icons}/LegendIcon.vue +0 -0
- package/src/{icons → components/icons}/LineIcon.vue +0 -0
- package/src/{icons → components/icons}/LinkIcon.vue +0 -0
- package/src/{icons → components/icons}/LogoutIcon.vue +0 -0
- package/src/{icons → components/icons}/MapIcon.vue +0 -0
- package/src/{icons → components/icons}/MenuIcon.vue +0 -0
- package/src/{icons → components/icons}/MinusIcon.vue +0 -0
- package/src/{icons → components/icons}/ObjectAttributeIcon.vue +0 -0
- package/src/{icons → components/icons}/ObjectSelectIcon.vue +0 -0
- package/src/{icons → components/icons}/ObliqueViewIcon.vue +0 -0
- package/src/{icons → components/icons}/PdfIcon.vue +0 -0
- package/src/{icons → components/icons}/PedestrianIcon.vue +0 -0
- package/src/{icons → components/icons}/PenIcon.vue +0 -0
- package/src/{icons → components/icons}/PlayCircleIcon.vue +0 -0
- package/src/{icons → components/icons}/PlusIcon.vue +0 -0
- package/src/{icons → components/icons}/PoiIcon.vue +0 -0
- package/src/{icons → components/icons}/PointSelectIcon.vue +0 -0
- package/src/{icons → components/icons}/PolygonIcon.vue +0 -0
- package/src/{icons → components/icons}/PresentationModeIcon.vue +0 -0
- package/src/{icons → components/icons}/ProgressIcon.vue +0 -0
- package/src/{icons → components/icons}/QueryIcon.vue +0 -0
- package/src/{icons → components/icons}/RectangleIcon.vue +0 -0
- package/src/{icons → components/icons}/ReturnIcon.vue +0 -0
- package/src/{icons → components/icons}/RewindIcon.vue +0 -0
- package/src/{icons → components/icons}/RotateLeftIcon.vue +0 -0
- package/src/{icons → components/icons}/RotateRightIcon.vue +0 -0
- package/src/{icons → components/icons}/ScreenshotIcon.vue +0 -0
- package/src/{icons → components/icons}/SearchIcon.vue +0 -0
- package/src/{icons → components/icons}/ShadowIcon.vue +0 -0
- package/src/{icons → components/icons}/ShapesIcon.vue +0 -0
- package/src/{icons → components/icons}/ShareIcon.vue +0 -0
- package/src/{icons → components/icons}/SimpleCircleFilledIcon.vue +0 -0
- package/src/{icons → components/icons}/SimpleCircleHalfFilledIcon.vue +0 -0
- package/src/{icons → components/icons}/SimpleCircleOutlinedIcon.vue +0 -0
- package/src/{icons → components/icons}/SkipNextIcon.vue +0 -0
- package/src/{icons → components/icons}/SkipPreviousIcon.vue +0 -0
- package/src/{icons → components/icons}/SplitViewIcon.vue +0 -0
- package/src/{icons → components/icons}/TerrainBoxIcon.vue +0 -0
- package/src/{icons → components/icons}/TextStyleIcon.vue +0 -0
- package/src/{icons → components/icons}/ThreeDimensionsIcon.vue +0 -0
- package/src/{icons → components/icons}/ToolsIcon.vue +0 -0
- package/src/{icons → components/icons}/TouchIcon.vue +0 -0
- package/src/{icons → components/icons}/TrashCanIcon.vue +0 -0
- package/src/{icons → components/icons}/TriangleIcon.vue +0 -0
- package/src/{icons → components/icons}/TwoDimensionsIcon.vue +0 -0
- package/src/{icons → components/icons}/UploadIcon.vue +0 -0
- package/src/{icons → components/icons}/UserProfileIcon.vue +0 -0
- package/src/{icons → components/icons}/UserShareIcon.vue +0 -0
- package/src/{icons → components/icons}/VideoRecorderIcon.vue +0 -0
- package/src/{icons → components/icons}/ViewpointFlightIcon.vue +0 -0
- package/src/{icons → components/icons}/ViewpointIcon.vue +0 -0
- package/src/{icons → components/icons}/Viewshed360Icon.vue +0 -0
- package/src/{icons → components/icons}/ViewshedConeIcon.vue +0 -0
- package/src/{icons → components/icons}/ViewshedIcon.vue +0 -0
- package/src/{icons → components/icons}/WalkingIcon.vue +0 -0
- package/src/{icons → components/icons}/WallIcon.vue +0 -0
- package/src/{icons → components/icons}/WandIcon.vue +0 -0
- package/src/components/lists/VcsActionList.vue +2 -0
- package/src/components/lists/VcsList.vue +21 -12
- package/src/components/lists/VcsTreeviewLeaf.vue +14 -2
- package/src/components/notification/VcsTooltip.vue +1 -1
- package/src/contentTree/layerContentTreeItem.js +2 -2
- package/src/featureInfo/BalloonComponent.vue +2 -2
- package/src/featureInfo/abstractFeatureInfoView.js +1 -1
- package/src/featureInfo/addressBalloonFeatureInfoView.js +1 -1
- package/src/featureInfo/balloonFeatureInfoView.js +1 -1
- package/src/featureInfo/balloonHelper.js +6 -6
- package/src/featureInfo/featureInfo.js +2 -2
- package/src/i18n/de.js +8 -8
- package/src/i18n/en.js +6 -6
- package/src/legend/legendHelper.js +8 -8
- package/src/legend/vcsLegend.vue +33 -5
- package/src/manager/toolbox/ToolboxManager.vue +1 -0
- package/src/manager/window/WindowComponent.vue +42 -4
- package/src/manager/window/WindowComponentHeader.vue +1 -1
- package/src/manager/window/windowHelper.js +7 -11
- package/src/manager/window/windowManager.js +15 -11
- package/src/navigation/mapNavCompass.vue +13 -7
- package/src/navigation/mapNavigation.vue +66 -4
- package/src/navigation/orientationToolsButton.vue +1 -1
- package/src/navigation/overviewMap.js +26 -10
- package/src/navigation/vcsCompass.vue +4 -73
- package/src/setup.js +1 -1
- package/src/vuePlugins/vuetify.js +1 -1
- package/dist/assets/cesium/Workers/ArcType-c9b2b290.js +0 -25
- package/dist/assets/cesium/Workers/AttributeCompression-7b0f288d.js +0 -25
- package/dist/assets/cesium/Workers/AxisAlignedBoundingBox-d0c22774.js +0 -25
- package/dist/assets/cesium/Workers/BoundingRectangle-201b1a81.js +0 -25
- package/dist/assets/cesium/Workers/BoxGeometry-4985457c.js +0 -25
- package/dist/assets/cesium/Workers/Color-cc8c18b3.js +0 -25
- package/dist/assets/cesium/Workers/ComponentDatatype-0200bf8c.js +0 -25
- package/dist/assets/cesium/Workers/CoplanarPolygonGeometryLibrary-4345acdf.js +0 -25
- package/dist/assets/cesium/Workers/CorridorGeometryLibrary-850a6c35.js +0 -25
- package/dist/assets/cesium/Workers/CylinderGeometry-57a1051a.js +0 -25
- package/dist/assets/cesium/Workers/CylinderGeometryLibrary-62ce5a1f.js +0 -25
- package/dist/assets/cesium/Workers/EllipseGeometry-8627398f.js +0 -25
- package/dist/assets/cesium/Workers/EllipseGeometryLibrary-e5919563.js +0 -25
- package/dist/assets/cesium/Workers/EllipseOutlineGeometry-96fd4ae1.js +0 -25
- package/dist/assets/cesium/Workers/EllipsoidGeodesic-8bfefbff.js +0 -25
- package/dist/assets/cesium/Workers/EllipsoidGeometry-377329b9.js +0 -25
- package/dist/assets/cesium/Workers/EllipsoidOutlineGeometry-e6e16e49.js +0 -25
- package/dist/assets/cesium/Workers/EllipsoidRhumbLine-03528f73.js +0 -25
- package/dist/assets/cesium/Workers/EllipsoidTangentPlane-c080fd1b.js +0 -25
- package/dist/assets/cesium/Workers/EncodedCartesian3-ea0e408f.js +0 -25
- package/dist/assets/cesium/Workers/FrustumGeometry-a8b5d817.js +0 -25
- package/dist/assets/cesium/Workers/GeometryAttribute-8458a8fd.js +0 -25
- package/dist/assets/cesium/Workers/GeometryAttributes-ac0f8485.js +0 -25
- package/dist/assets/cesium/Workers/GeometryInstance-ee3aa3ba.js +0 -25
- package/dist/assets/cesium/Workers/GeometryOffsetAttribute-08ae0c50.js +0 -25
- package/dist/assets/cesium/Workers/GeometryPipeline-33ca229c.js +0 -25
- package/dist/assets/cesium/Workers/IndexDatatype-e713bfd2.js +0 -25
- package/dist/assets/cesium/Workers/IntersectionTests-eb4db8e0.js +0 -25
- package/dist/assets/cesium/Workers/Matrix2-eefef8eb.js +0 -25
- package/dist/assets/cesium/Workers/OrientedBoundingBox-5193f9a2.js +0 -25
- package/dist/assets/cesium/Workers/Plane-b0299683.js +0 -25
- package/dist/assets/cesium/Workers/PolygonGeometryLibrary-b61295f3.js +0 -25
- package/dist/assets/cesium/Workers/PolygonPipeline-eb527514.js +0 -25
- package/dist/assets/cesium/Workers/PolylinePipeline-0f23dd84.js +0 -25
- package/dist/assets/cesium/Workers/PolylineVolumeGeometryLibrary-2d903430.js +0 -25
- package/dist/assets/cesium/Workers/PrimitivePipeline-e2640413.js +0 -25
- package/dist/assets/cesium/Workers/RectangleGeometryLibrary-ae8bf8a5.js +0 -25
- package/dist/assets/cesium/Workers/RuntimeError-5baf5c66.js +0 -25
- package/dist/assets/cesium/Workers/TerrainEncoding-bc10ab54.js +0 -25
- package/dist/assets/cesium/Workers/Transforms-d2e5867e.js +0 -63
- package/dist/assets/cesium/Workers/VertexFormat-5ec0d9ff.js +0 -25
- package/dist/assets/cesium/Workers/WallGeometryLibrary-1a33e416.js +0 -25
- package/dist/assets/cesium/Workers/WebGLConstants-5b50ced1.js +0 -25
- package/dist/assets/cesium/Workers/WebMercatorProjection-cd2f30c2.js +0 -25
- package/dist/assets/cesium/Workers/_commonjsHelpers-bc29abbc.js +0 -25
- package/dist/assets/cesium/Workers/arrayRemoveDuplicates-f13aceb1.js +0 -25
- package/dist/assets/cesium/Workers/combine-7533016d.js +0 -25
- package/dist/assets/cesium/Workers/defaultValue-0c475b81.js +0 -25
- package/dist/assets/cesium/Workers/package.json +0 -1
- package/dist/assets/ui.dffe32.css +0 -1
- package/plugins/@vcmap/pluginExample/config.json +0 -6
- package/plugins/@vcmap/pluginExample/package.json +0 -7
- package/plugins/categoryTest/ItemEditor.vue +0 -13
- package/plugins/test/allIconsComponent.vue +0 -50
- package/plugins/test/index.js +0 -207
- package/plugins/test/toolbox-data.js +0 -154
- package/plugins/wizardExample/wizardExample.vue +0 -77
- package/src/components/form-inputs-controls/VcsColorPicker.vue +0 -85
@@ -5,14 +5,18 @@
|
|
5
5
|
@click="clicked"
|
6
6
|
@dragstart="dragStart"
|
7
7
|
@dragend="dragEnd"
|
8
|
-
:draggable="
|
8
|
+
:draggable="isDraggable"
|
9
9
|
:class="{
|
10
10
|
'rounded': !isDocked,
|
11
|
-
'marginToTop': isDocked
|
11
|
+
'marginToTop': isDocked,
|
12
|
+
'rounded-br': isDynamicLeft,
|
13
|
+
'rounded-bl': isDynamicRight,
|
12
14
|
}"
|
13
15
|
>
|
14
16
|
<div
|
15
17
|
v-if="!windowState.hideHeader"
|
18
|
+
@mousedown="mousedown"
|
19
|
+
@mouseup="isDraggable = false"
|
16
20
|
class="pa-2"
|
17
21
|
:class="{
|
18
22
|
'cursor-grab': isDynamic,
|
@@ -23,7 +27,7 @@
|
|
23
27
|
</div>
|
24
28
|
<v-divider />
|
25
29
|
<div
|
26
|
-
class="overflow-x-hidden"
|
30
|
+
class="overflow-x-hidden mb-1"
|
27
31
|
>
|
28
32
|
<slot />
|
29
33
|
</div>
|
@@ -40,7 +44,7 @@
|
|
40
44
|
|
41
45
|
<script>
|
42
46
|
import {
|
43
|
-
computed, inject, provide,
|
47
|
+
computed, inject, provide, ref,
|
44
48
|
} from 'vue';
|
45
49
|
import { VDivider, VSheet } from 'vuetify/lib';
|
46
50
|
import { WindowSlot } from './windowManager.js';
|
@@ -86,12 +90,30 @@
|
|
86
90
|
|
87
91
|
const isDynamic = computed(() => props.slotWindow !== WindowSlot.STATIC);
|
88
92
|
const isDocked = computed(() => props.slotWindow !== WindowSlot.DETACHED);
|
93
|
+
const isDockedLeft = computed(() => {
|
94
|
+
return props.slotWindow === WindowSlot.STATIC || props.slotWindow === WindowSlot.DYNAMIC_LEFT;
|
95
|
+
});
|
96
|
+
const isDockedRight = computed(() => props.slotWindow === WindowSlot.DYNAMIC_RIGHT);
|
97
|
+
const isDraggable = ref(false);
|
89
98
|
/**
|
90
99
|
* @param {PointerEvent} e
|
91
100
|
*/
|
92
101
|
const clicked = (e) => {
|
93
102
|
emit('click', e);
|
94
103
|
};
|
104
|
+
/**
|
105
|
+
* Sets window as draggable on mousedown on header.
|
106
|
+
* Stops bubbling of header action buttons.
|
107
|
+
* @param {MouseEvent} e
|
108
|
+
*/
|
109
|
+
const mousedown = (e) => {
|
110
|
+
if (e.target.closest('button')) {
|
111
|
+
e.preventDefault();
|
112
|
+
e.stopPropagation();
|
113
|
+
return;
|
114
|
+
}
|
115
|
+
isDraggable.value = isDynamic.value;
|
116
|
+
};
|
95
117
|
/**
|
96
118
|
* @type {DragEvent}
|
97
119
|
*/
|
@@ -100,7 +122,16 @@
|
|
100
122
|
* @param {DragEvent} e
|
101
123
|
*/
|
102
124
|
const dragStart = (e) => {
|
125
|
+
if (!isDraggable.value) {
|
126
|
+
e.preventDefault();
|
127
|
+
e.stopPropagation();
|
128
|
+
}
|
103
129
|
startEvent = e;
|
130
|
+
// set mouse cursor to move
|
131
|
+
e.dataTransfer.effectAllowed = 'move';
|
132
|
+
const preventDefaultDragover = dragOverEvent => dragOverEvent.preventDefault();
|
133
|
+
e.target.parentElement.ondragover = preventDefaultDragover;
|
134
|
+
app.maps.target.ondragover = preventDefaultDragover;
|
104
135
|
};
|
105
136
|
/**
|
106
137
|
* @param {DragEvent} endEvent
|
@@ -112,14 +143,21 @@
|
|
112
143
|
};
|
113
144
|
emit('moved', movement);
|
114
145
|
startEvent = null;
|
146
|
+
isDraggable.value = false;
|
147
|
+
endEvent.target.parentElement.ondragover = null;
|
148
|
+
app.maps.target.ondragover = null;
|
115
149
|
};
|
116
150
|
|
117
151
|
return {
|
118
152
|
isDynamic,
|
119
153
|
isDocked,
|
154
|
+
isDynamicLeft: isDockedLeft,
|
155
|
+
isDynamicRight: isDockedRight,
|
156
|
+
isDraggable,
|
120
157
|
clicked,
|
121
158
|
dragStart,
|
122
159
|
dragEnd,
|
160
|
+
mousedown,
|
123
161
|
};
|
124
162
|
},
|
125
163
|
};
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<template v-if="windowState.headerActions?.length > 0">
|
19
19
|
<VcsActionButtonList
|
20
20
|
:actions="windowState.headerActions"
|
21
|
-
:overflow-count="windowState.
|
21
|
+
:overflow-count="windowState.headerActionsOverflow ?? 3"
|
22
22
|
small
|
23
23
|
/>
|
24
24
|
<v-divider
|
@@ -70,7 +70,7 @@ export function getWindowPositionOptions(x, y, target, alignment = WindowAlignme
|
|
70
70
|
|
71
71
|
/**
|
72
72
|
* Get window position options based on a pixel in the map
|
73
|
-
* @param {import("@vcmap/
|
73
|
+
* @param {import("@vcmap-cesium/engine").Cartesian2} windowPosition - the window position, as retrieved from an InteractionEvent
|
74
74
|
* @param {HTMLElement} target - the map's target { @link @import("@vcmap/core").MapCollection }
|
75
75
|
* @param {WindowAlignment} [alignment]
|
76
76
|
* @returns {WindowPositionOptions}
|
@@ -121,7 +121,7 @@ export function getFittedWindowPositionOptions(x, y, width, height, target) {
|
|
121
121
|
/**
|
122
122
|
* Fits a window aligned top left, so it fits into currently active map. This will change the alignment to be bottom or right depending
|
123
123
|
* on if the window would not fit into active map element.
|
124
|
-
* @param {import("@vcmap/
|
124
|
+
* @param {import("@vcmap-cesium/engine").Cartesian2} windowPosition - the window position, as retrieved from an InteractionEvent
|
125
125
|
* @param {number} width
|
126
126
|
* @param {number} height
|
127
127
|
* @param {HTMLElement} target - the map's target { @link @import("@vcmap/core").MapCollection }
|
@@ -251,15 +251,6 @@ export function moveWindow(id, translation, windowManager, targetSize) {
|
|
251
251
|
if (windowPositionOptions.right !== undefined) {
|
252
252
|
windowPositionOptions.right -= translation.dx;
|
253
253
|
}
|
254
|
-
// clear size restrictions
|
255
|
-
if (position.maxHeight === WindowPositions.TOP_RIGHT.maxHeight &&
|
256
|
-
slot.value === WindowSlot.DYNAMIC_RIGHT) {
|
257
|
-
windowPositionOptions.maxHeight = 'unset';
|
258
|
-
}
|
259
|
-
if (position.maxWidth === WindowPositions.TOP_LEFT.maxWidth &&
|
260
|
-
slot.value === WindowSlot.DYNAMIC_LEFT) {
|
261
|
-
windowPositionOptions.maxWidth = 'unset';
|
262
|
-
}
|
263
254
|
const updatedPosition = updateWindowPosition(position, windowPositionOptions, targetSize);
|
264
255
|
windowManager.setWindowPositionOptions(id, updatedPosition);
|
265
256
|
}
|
@@ -320,6 +311,11 @@ export function clipToTargetSize(windowPositionOptions, targetSize) {
|
|
320
311
|
if (windowPositionOptions.maxHeight !== undefined) {
|
321
312
|
clippedPosition.maxHeight = Math.min(windowPositionOptions.maxHeight, targetHeight);
|
322
313
|
}
|
314
|
+
// max width of a top left 2 window (active static window)
|
315
|
+
const topLeft2 = posToNumber(WindowPositions.TOP_LEFT2.left, 'left', targetSize);
|
316
|
+
if (clippedPosition.left === topLeft2) {
|
317
|
+
clippedPosition.maxWidth = Math.min(clippedPosition.maxWidth - topLeft2, targetWidth);
|
318
|
+
}
|
323
319
|
|
324
320
|
return clippedPosition;
|
325
321
|
}
|
@@ -62,16 +62,14 @@ export const WindowPositions = {
|
|
62
62
|
TOP_LEFT: {
|
63
63
|
left: '0px',
|
64
64
|
top: '0px',
|
65
|
-
maxWidth: '320px',
|
66
65
|
},
|
67
66
|
TOP_LEFT2: {
|
68
|
-
left: '
|
67
|
+
left: '322px', // 2px space
|
69
68
|
top: '0px',
|
70
69
|
},
|
71
70
|
TOP_RIGHT: {
|
72
71
|
right: '0px',
|
73
72
|
top: '0px',
|
74
|
-
maxHeight: '70%',
|
75
73
|
},
|
76
74
|
DETACHED: {
|
77
75
|
left: '200px',
|
@@ -120,7 +118,7 @@ export function isSlotPosition(windowPosition) {
|
|
120
118
|
* @property {string} [headerTitle]
|
121
119
|
* @property {string} [headerIcon]
|
122
120
|
* @property {Array<VcsAction>} [headerActions]
|
123
|
-
* @property {number} [
|
121
|
+
* @property {number} [headerActionsOverflow]
|
124
122
|
* @property {string} [infoUrl] An optional url referencing help or further information on the window's content.
|
125
123
|
* @property {boolean} [dockable] Auto derived from hidePin, current slot, current position and initial position.
|
126
124
|
* @property {Object<string, string>} [styles] Can be used to add additional styles to the root WindowComponent. Use Vue Style Bindings Object Syntax https://vuejs.org/v2/guide/class-and-style.html
|
@@ -206,7 +204,7 @@ export function windowPositionFromOptions(windowPositionOptions, windowPosition
|
|
206
204
|
/**
|
207
205
|
* Sets a position on a component. Updates dockable state.
|
208
206
|
* @param {WindowComponent} windowComponent
|
209
|
-
* @param {
|
207
|
+
* @param {WindowPositionOptions} windowPositionOptions
|
210
208
|
*/
|
211
209
|
function setWindowPosition(windowComponent, windowPositionOptions) {
|
212
210
|
const windowPosition = windowPositionFromOptions(windowPositionOptions, windowComponent.position);
|
@@ -309,9 +307,15 @@ class WindowManager {
|
|
309
307
|
const staticWindow = this._findWindowBySlot(WindowSlot.STATIC);
|
310
308
|
const dynamicWindowLeft = this._findWindowBySlot(WindowSlot.DYNAMIC_LEFT);
|
311
309
|
if (staticWindow && dynamicWindowLeft) {
|
312
|
-
this.setWindowPositionOptions(
|
310
|
+
this.setWindowPositionOptions(
|
311
|
+
dynamicWindowLeft.id,
|
312
|
+
{ ...dynamicWindowLeft.position, ...WindowPositions.TOP_LEFT2 },
|
313
|
+
);
|
313
314
|
} else if (!staticWindow && dynamicWindowLeft) {
|
314
|
-
this.setWindowPositionOptions(
|
315
|
+
this.setWindowPositionOptions(
|
316
|
+
dynamicWindowLeft.id,
|
317
|
+
{ ...dynamicWindowLeft.position, ...WindowPositions.TOP_LEFT },
|
318
|
+
);
|
315
319
|
}
|
316
320
|
}
|
317
321
|
}
|
@@ -333,18 +337,18 @@ class WindowManager {
|
|
333
337
|
*/
|
334
338
|
_getPositionOptionsForSlot(slot, position) {
|
335
339
|
if (slot === WindowSlot.STATIC) {
|
336
|
-
return WindowPositions.TOP_LEFT;
|
340
|
+
return { ...WindowPositions.TOP_LEFT, maxWidth: '320px' };
|
337
341
|
}
|
338
342
|
if (slot === WindowSlot.DYNAMIC_LEFT) {
|
339
343
|
const windowAtStatic = this._findWindowBySlot(WindowSlot.STATIC);
|
340
344
|
if (windowAtStatic) {
|
341
|
-
return WindowPositions.TOP_LEFT2;
|
345
|
+
return { ...position, ...WindowPositions.TOP_LEFT2 };
|
342
346
|
} else {
|
343
|
-
return WindowPositions.TOP_LEFT;
|
347
|
+
return { ...position, ...WindowPositions.TOP_LEFT };
|
344
348
|
}
|
345
349
|
}
|
346
350
|
if (slot === WindowSlot.DYNAMIC_RIGHT) {
|
347
|
-
return WindowPositions.TOP_RIGHT;
|
351
|
+
return { ...position, ...WindowPositions.TOP_RIGHT };
|
348
352
|
}
|
349
353
|
return position || WindowPositions.DETACHED;
|
350
354
|
}
|
@@ -8,7 +8,7 @@
|
|
8
8
|
d="M4,0,8,13H0Z"
|
9
9
|
transform="translate(1)"
|
10
10
|
fill="currentColor"
|
11
|
-
@click="emit(0)"
|
11
|
+
@click="emit($event, 0)"
|
12
12
|
/>
|
13
13
|
<path
|
14
14
|
:class="canEmit ? 'cursor-pointer' : ''"
|
@@ -17,7 +17,7 @@
|
|
17
17
|
d="M4,0,8,13H0Z"
|
18
18
|
transform="translate(9 58) rotate(180)"
|
19
19
|
fill="rgba(88,88,88,0.51)"
|
20
|
-
@click="emit(180)"
|
20
|
+
@click="emit($event, 180)"
|
21
21
|
/>
|
22
22
|
</g>
|
23
23
|
<g id="Group_1653" data-name="Group 1653" transform="translate(0 33) rotate(-90)">
|
@@ -27,7 +27,7 @@
|
|
27
27
|
data-name="Polygon 14"
|
28
28
|
d="M4,0,8,13H0Z"
|
29
29
|
fill="rgba(88,88,88,0.51)"
|
30
|
-
@click="emit(270)"
|
30
|
+
@click="emit($event, 270)"
|
31
31
|
/>
|
32
32
|
<path
|
33
33
|
:class="canEmit ? 'cursor-pointer' : ''"
|
@@ -36,7 +36,7 @@
|
|
36
36
|
d="M4,0,8,13H0Z"
|
37
37
|
transform="translate(8 58) rotate(180)"
|
38
38
|
fill="rgba(88,88,88,0.51)"
|
39
|
-
@click="emit(90)"
|
39
|
+
@click="emit($event, 90)"
|
40
40
|
/>
|
41
41
|
</g>
|
42
42
|
<g id="Group_1672" data-name="Group 1672" transform="translate(1)" v-if="!hideTicks">
|
@@ -143,19 +143,25 @@
|
|
143
143
|
},
|
144
144
|
},
|
145
145
|
methods: {
|
146
|
-
emit(event) {
|
146
|
+
emit(event, dir) {
|
147
147
|
if (this.canEmit) {
|
148
|
-
|
148
|
+
event.preventDefault();
|
149
|
+
event.stopPropagation();
|
150
|
+
this.$emit('direction-click', dir);
|
149
151
|
}
|
150
152
|
},
|
151
153
|
},
|
152
154
|
};
|
153
155
|
</script>
|
154
156
|
|
155
|
-
<style scoped>
|
157
|
+
<style lang="scss" scoped>
|
156
158
|
svg {
|
157
159
|
width: 85%;
|
158
160
|
height: 85%;
|
159
161
|
margin: 7.5%;
|
160
162
|
}
|
163
|
+
|
164
|
+
svg path:hover {
|
165
|
+
fill: var(--v-base-lighten5) !important;
|
166
|
+
}
|
161
167
|
</style>
|
@@ -23,6 +23,14 @@
|
|
23
23
|
<v-row justify="center" v-if="is3D && $vuetify.breakpoint.mdAndUp">
|
24
24
|
<TiltSlider v-model="tilt" />
|
25
25
|
</v-row>
|
26
|
+
<v-row justify="center">
|
27
|
+
<OrientationToolsButton
|
28
|
+
v-if="homeAction.icon"
|
29
|
+
:icon="homeAction.icon"
|
30
|
+
:tooltip="homeAction.title"
|
31
|
+
@click.stop="homeAction.callback($event)"
|
32
|
+
/>
|
33
|
+
</v-row>
|
26
34
|
<v-row justify="center">
|
27
35
|
<OrientationToolsButton
|
28
36
|
:icon="overviewAction.icon"
|
@@ -36,10 +44,12 @@
|
|
36
44
|
</template>
|
37
45
|
|
38
46
|
<script>
|
39
|
-
import {
|
47
|
+
import {
|
48
|
+
computed, inject, ref, reactive, onUnmounted,
|
49
|
+
} from 'vue';
|
40
50
|
import { ObliqueMap, CesiumMap } from '@vcmap/core';
|
41
51
|
import { VContainer, VRow } from 'vuetify/lib';
|
42
|
-
import { createOverviewMapAction } from '../actions/actionHelper.js';
|
52
|
+
import { createGoToViewpointAction, createOverviewMapAction } from '../actions/actionHelper.js';
|
43
53
|
import { getWindowComponentOptions } from './overviewMap.js';
|
44
54
|
import VcsCompass from './vcsCompass.vue';
|
45
55
|
import VcsZoomButton from './vcsZoomButton.vue';
|
@@ -47,6 +57,53 @@
|
|
47
57
|
import ObliqueRotation from './obliqueRotation.vue';
|
48
58
|
import OrientationToolsButton from './orientationToolsButton.vue';
|
49
59
|
|
60
|
+
/**
|
61
|
+
* Creates a go-to viewpoint action from a startingViewpointName defined in a context
|
62
|
+
* @param {VcsUiApp} app
|
63
|
+
* @returns {{action: import("vue").Reactive<{}>, destroy: function():void}}
|
64
|
+
*/
|
65
|
+
function setupHomeButton(app) {
|
66
|
+
const initialAction = { icon: undefined, title: undefined, active: undefined, callback: undefined };
|
67
|
+
const action = reactive({ ...initialAction });
|
68
|
+
/**
|
69
|
+
* Gets the starting viewpoint of the last added context, where a startingViewpointName was defined
|
70
|
+
* and sets it on the home button action.
|
71
|
+
*/
|
72
|
+
const updateStartingViewpoint = () => {
|
73
|
+
let viewpoint = null;
|
74
|
+
for (let idx = app.contexts.length - 1; idx >= 0; idx--) {
|
75
|
+
const { startingViewpointName } = app.contexts[idx].config;
|
76
|
+
if (startingViewpointName && app.viewpoints.hasKey(startingViewpointName)) {
|
77
|
+
viewpoint = app.viewpoints.getByKey(startingViewpointName);
|
78
|
+
break;
|
79
|
+
}
|
80
|
+
}
|
81
|
+
if (!viewpoint) {
|
82
|
+
Object.assign(action, { ...initialAction });
|
83
|
+
} else {
|
84
|
+
Object.assign(action, createGoToViewpointAction(
|
85
|
+
{
|
86
|
+
name: 'home-action',
|
87
|
+
title: 'navigation.homeButton',
|
88
|
+
icon: '$vcsHomePoint',
|
89
|
+
},
|
90
|
+
viewpoint,
|
91
|
+
app.viewpoints,
|
92
|
+
app.maps,
|
93
|
+
));
|
94
|
+
}
|
95
|
+
};
|
96
|
+
|
97
|
+
const listener = [
|
98
|
+
app.contextAdded.addEventListener(updateStartingViewpoint),
|
99
|
+
app.contextRemoved.addEventListener(updateStartingViewpoint),
|
100
|
+
];
|
101
|
+
|
102
|
+
const destroy = () => { listener.forEach(cb => cb()); };
|
103
|
+
|
104
|
+
return { action, destroy };
|
105
|
+
}
|
106
|
+
|
50
107
|
/**
|
51
108
|
* @enum {string}
|
52
109
|
*/
|
@@ -143,11 +200,14 @@
|
|
143
200
|
app.windowManager,
|
144
201
|
);
|
145
202
|
|
203
|
+
const { action: homeAction, destroy: homeDestroy } = setupHomeButton(app);
|
204
|
+
|
146
205
|
onUnmounted(() => {
|
147
206
|
if (destroy) {
|
148
207
|
destroy();
|
149
208
|
}
|
150
209
|
postRenderHandler();
|
210
|
+
homeDestroy();
|
151
211
|
});
|
152
212
|
|
153
213
|
return {
|
@@ -159,6 +219,7 @@
|
|
159
219
|
zoomIn() { zoom(app.maps.activeMap); }, // debounce?
|
160
220
|
zoomOut() { zoom(app.maps.activeMap, true); },
|
161
221
|
overviewAction: reactive(action),
|
222
|
+
homeAction,
|
162
223
|
};
|
163
224
|
},
|
164
225
|
};
|
@@ -168,7 +229,7 @@
|
|
168
229
|
.nav-container {
|
169
230
|
position: absolute;
|
170
231
|
right: 2rem;
|
171
|
-
bottom:
|
232
|
+
bottom: 1rem;
|
172
233
|
width: unset;
|
173
234
|
&.mobile{
|
174
235
|
top: 1rem;
|
@@ -178,7 +239,8 @@
|
|
178
239
|
}
|
179
240
|
.nav-container > {
|
180
241
|
.row {
|
181
|
-
margin-
|
242
|
+
margin-top: 15px;
|
243
|
+
margin-bottom: 0;
|
182
244
|
}
|
183
245
|
}
|
184
246
|
</style>
|
@@ -14,9 +14,10 @@ import {
|
|
14
14
|
} from '@vcmap/core';
|
15
15
|
import Point from 'ol/geom/Point.js';
|
16
16
|
import Feature from 'ol/Feature.js';
|
17
|
-
import { Math as CesiumMath, Color } from '@vcmap/
|
17
|
+
import { Math as CesiumMath, Color } from '@vcmap-cesium/engine';
|
18
18
|
import { unByKey } from 'ol/Observable.js';
|
19
19
|
import VectorSource from 'ol/source/Vector.js';
|
20
|
+
import { Icon } from 'ol/style.js';
|
20
21
|
import { WindowSlot } from '../manager/window/windowManager.js';
|
21
22
|
import OverviewMapClickedInteraction from './overviewMapClickedInteraction.js';
|
22
23
|
import { defaultPrimaryColor } from '../vuePlugins/vuetify.js';
|
@@ -34,16 +35,29 @@ export function getWindowComponentOptions() {
|
|
34
35
|
id: 'overview-map-container',
|
35
36
|
state: {
|
36
37
|
hideHeader: true,
|
38
|
+
classes: ['overview-map'],
|
37
39
|
},
|
38
40
|
position: {
|
39
41
|
right: '100px',
|
40
42
|
bottom: '25px',
|
41
|
-
width: '
|
42
|
-
height: '
|
43
|
+
width: '300px',
|
44
|
+
height: '240px',
|
43
45
|
},
|
44
46
|
};
|
45
47
|
}
|
46
48
|
|
49
|
+
/**
|
50
|
+
* @param {string} color
|
51
|
+
* @returns {import("ol/style/Icon").Options}
|
52
|
+
*/
|
53
|
+
function getCameraIcon(color) {
|
54
|
+
return {
|
55
|
+
src: `data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E%3Csvg id='cam' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 81.06 49.47'%3E%3Cdefs%3E%3ClinearGradient id='1' x1='40.53' y1='48.97' x2='40.53' y2='.25' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='${encodeURIComponent(color)}'/%3E%3Cstop offset='.46' stop-color='${encodeURIComponent(color)}' stop-opacity='.60'/%3E%3Cstop offset='.65' stop-color='${encodeURIComponent(color)}' stop-opacity='.40'/%3E%3Cstop offset='.83' stop-color='${encodeURIComponent(color)}' stop-opacity='.20'/%3E%3Cstop offset='.89' stop-color='${encodeURIComponent(color)}' stop-opacity='.15'/%3E%3Cstop offset='1' stop-color='transparent' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='2' x1='40.53' y1='49.37' x2='40.53' y2='0' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='.24' stop-color='${encodeURIComponent(color)}'/%3E%3Cstop offset='.38' stop-color='${encodeURIComponent(color)}' stop-opacity='.93'/%3E%3Cstop offset='.57' stop-color='${encodeURIComponent(color)}' stop-opacity='.70'/%3E%3Cstop offset='.78' stop-color='${encodeURIComponent(color)}' stop-opacity='.38'/%3E%3Cstop offset='1' stop-color='transparent' stop-opacity='0'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpolygon points='40.53 48.97 80.53 .25 .53 .25 40.53 48.97' fill='url(%231)' stroke='url(%232)' stroke-miterlimit='10' stroke-width='.5px'/%3E%3Ccircle cx='40.53' cy='42.97' r='6' fill='${encodeURIComponent(color)}' stroke='%23fff' stroke-miterlimit='10'/%3E%3C/svg%3E`,
|
56
|
+
scale: 0.5,
|
57
|
+
color,
|
58
|
+
};
|
59
|
+
}
|
60
|
+
|
47
61
|
/**
|
48
62
|
* A 2D OverviewMap for cesium, openlayers and oblique map.
|
49
63
|
* Baselayers are added to the OverviewMap using `showInOverviewMap` flag within the properties bag of a layer configuration.
|
@@ -151,10 +165,7 @@ class OverviewMap {
|
|
151
165
|
* @type {import("@vcmap/core").VectorStyleItem}
|
152
166
|
*/
|
153
167
|
this.cameraIconStyle = new VectorStyleItem({
|
154
|
-
image:
|
155
|
-
src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAA8CAYAAADxJz2MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDphMzhlODgyYy00ZGYzLTZkNGMtYWZhYy1hYTkwOTI3MjRiYjEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NEYxRkE1MDlENjRDMTFFNTlGRjhFMzM3RTA3MDJFMDciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEYxRkE1MDhENjRDMTFFNTlGRjhFMzM3RTA3MDJFMDciIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OGJiODg5ODItZGM0Zi0xNjQyLWEyZDYtODJkZTcxMGNhNjkwIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6YzY5MTdhNjAtZDYzYy0xMWU1LThjNTgtYTMwNjE0MWQwNTkyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Fn8KKQAABwVJREFUeNrsW0toHVUYPufOvb2madNaa2NS3682BTcKiQqx4qO0i7gKpHFhoCBoG8SVC124ExcW02yCiFCQ4iLgIhWJCE2pYI1J1VitNFhTIz5STdI2D2tucsf/N9/YcTKvM+fMbYT54eu9nTvnzMx3/veZSNu2RSbJJZdRkBGYEZgRmBGYSUZgRmBGYEZgJslkTUZBoEjXpxcsxTz9U0OYIfxFsAi2a5DtOjnpxU09RNS9SEPXiXN8kbCWUCWhgZsIf+Am3WYdh0BpkFipeG3v2LhjdM4pgyPmbMI5aT1hHeECIV+BVVXRLJ17kR6LSnqOl8AbCZNsue4BWzAB/1B0TapLpEyJmDTcR9SCL4C8K4Tf+Jh3wK2EecIsoWDIFE1qSxoExvV9JcQLttAxfC7lPSdNgMQlqKpUuJht6MZ15gsao7OgElxw0NhAGMXvzJHtNzGzfBPILBj2dyY00ZT2qURdJmsr4TxcnCNW0CR1IPJ3RGk74YWTPITU0BTTGYLj92pB3E/e38MusAP5zsUQTayELxIKrkRX04SP39sEDfxGdRLWvPsIUyAyl1LkTMPkpAErYNKugyUOgUzlC20mbIfq5lN4gDiBREfTdYjka9cTRlBkJL7AnZjo54C6OY2bNz2n6mKUEDTOEX7Qzaf4wg+AvMkYzYc0nLkp7Y6zUCVY3gxMV5ggkIPITkw6j6aDCZMySYYJTV9CSVtF+Bi+P1TyEb/brlX5itCI77kKpy3SIKEyQlFY+47HIc+PQOnJ+dzH2ZGOI6iMeVIb1crBpCbqdleky+/dRvgyLGhEERj1nse3SCq3olIpKnYyZMqEJFkIJ1m+hfAL4YyCRVlJzJCDSAs6ErMuf5im9kmFVphqX3ARNS4r0/sgU8ZQpshKJCo/fAor5m46mCidTJmxVLBCrv17YbpOV76cxITjCl9omPAgCuxCism0aZ8oPfkem+4JPJP0IU6C1EWTBLJ8Dad7ByqVotDrLqdR74ZdawFFwhgyDG8skB5XYayD4hbeCniGcJkw55MfphkM4vq+oPZUDSznHfhz6dN1klGmbGLn7GaQ+CNuLFfhiJpEg3mhbye87WpRxQ0cxglkeYjwuLja6r4W3ZW448pwOx8STuo+eN4QgSeRG25Hsl1IITdUMeOg30og77SHPD/ti/R/JjXQWYwXQN6kYvsrKtE1USpyFN2CWv6gx7eFER9KoGXQzPmGfiU8BqdsY/4kyAHu716EjfOex89QTdhIeAtNESNi+UQdHbmI6qQZ3/OuPMrvwXIRsGIej1oMlnsJ7xG+03i+FRzlfXKfuBMFqfanhHsI9/s0HUxFXZXx7PfuJnxuImjoNhPiyhHcNKc4F3w0PY2A4pcLLuIe2CreNfBcdhIfmETYH35P2IXccAmLlcRs44zxmrLTr6xBo+B1wrSG2WoFEWW/ALkMP/gEPi2NQBDlD60A4jll6UGLqhBQ50ZJLsQyZVoa6AjnhLyvynsqU3gIGUKIqrYF/WYjaHxEOKrpnuw02lmqfvYN1M0TCZJ31Y4L+716dFdeEjFb8ybSGFOmLH384Rn0D8vi6iZ9TlMDpc8xgVyPF+tVwqWUePv3WS2DjtWvm+HIJfjBXfiuQlTOExjCxhYQdd8UAa9iGPb3tkkCo87hDeo65IeTrgohqZ+zfPwed1g+EMut+TRK1xX1cSV8oFs7eb+1C4FlIqB/aAv1Xb4y/N55wosJC4DUfWBUqSdjnMf+j3f2Wlz+0PLxa+7PMDh+rwaL83LCOjdxZWQp1MEyomOSi6k1F2HCj4rltroISEOEy8zd//cGEvZ71xMOieUXgVQty5mzrKOBJt4yUDGNczC5HWgvOWSUQQhr0w3ooFThmFNTL7mIZeEdwgGUj0nbYXZCLRWWpk/TiWCfEZ4Uy2+9z2G+WhBWPHDgwK6urq5txWJx8/Dw8ATGrANmMReP5a3VV0KsJKhZauSFJ1lhAr1j7kJQYb+1trW19ZG2traNp06dkvv37y/39vbKwcFBMT09faWurq6qvb3d3rNnzxHkeX+CzOfE8qt3sTaBTEvSPza0E46RPqbMOdv6lpaWnYcPH97Q2NgoSqWS6OvrkwMDA3J+fl6SFlZNTU2J5uZmMTMz87SLvIMgz5m/7NGu1LOMfIUWKuxBjhFaScNK1dXVcm5uTpw9e5axYszs7Kyora2VII1fvz1ucIGveSmnI8fIbB9uaGiob2pqWlMoFMTIyMh/COzo6LBZOzs7Ow8NDQ1xo+DZtOvc/5twRD5KBJ2wbXtkdHS03NPT8w/4Ox1boMDyCbor21bLTctVRmItkuGqffv2Lezdu/d5STI+Pj7V3d1NSjnC25GvieUud0ZgiHC93LR7927enBL9/f2seYOEL1bbjf4twAD8sqEzJ5yLRwAAAABJRU5ErkJggg==',
|
156
|
-
anchor: [0.5, 1],
|
157
|
-
},
|
168
|
+
image: getCameraIcon(defaultPrimaryColor),
|
158
169
|
});
|
159
170
|
|
160
171
|
/**
|
@@ -220,12 +231,12 @@ class OverviewMap {
|
|
220
231
|
}),
|
221
232
|
this._app.uiConfig.added.addEventListener((item) => {
|
222
233
|
if (item?.name === 'primaryColor') {
|
223
|
-
this.
|
234
|
+
this._updatePrimaryColor(item.value);
|
224
235
|
}
|
225
236
|
}),
|
226
237
|
this._app.uiConfig.removed.addEventListener((item) => {
|
227
238
|
if (item?.name === 'primaryColor') {
|
228
|
-
this.
|
239
|
+
this._updatePrimaryColor(defaultPrimaryColor);
|
229
240
|
}
|
230
241
|
}),
|
231
242
|
];
|
@@ -267,12 +278,16 @@ class OverviewMap {
|
|
267
278
|
* @param {string} color
|
268
279
|
* @private
|
269
280
|
*/
|
270
|
-
|
281
|
+
_updatePrimaryColor(color) {
|
271
282
|
this.obliqueUnselectedStyle?.stroke?.setColor(color);
|
272
283
|
this.obliqueSelectedStyle?.stroke?.setColor(color);
|
273
284
|
this._obliqueTileLayer?.forceRedraw?.();
|
274
285
|
this._obliqueImageLayer?.forceRedraw?.();
|
275
286
|
this._obliqueSelectedImageLayer?.forceRedraw?.();
|
287
|
+
const rotation = this.cameraIconStyle.image.getRotation();
|
288
|
+
this.cameraIconStyle.image = new Icon(getCameraIcon(color));
|
289
|
+
this.cameraIconStyle.image.setRotation(rotation);
|
290
|
+
this._cameraIconLayer?.getFeatureById('cameraFeature')?.setStyle(this.cameraIconStyle.style);
|
276
291
|
}
|
277
292
|
|
278
293
|
/**
|
@@ -299,6 +314,7 @@ class OverviewMap {
|
|
299
314
|
}
|
300
315
|
await this._map.activate();
|
301
316
|
this.map.setTarget('overview-map-container');
|
317
|
+
this._map.target?.firstChild?.classList?.add('overviewMapElement');
|
302
318
|
if (!this._active) {
|
303
319
|
this._mapActivatedListener = this._app.maps.mapActivated.addEventListener(() => {
|
304
320
|
this._clearListeners();
|
@@ -1,11 +1,9 @@
|
|
1
1
|
<template>
|
2
2
|
<v-sheet
|
3
|
-
ref="compassRef"
|
4
3
|
:style="{
|
5
4
|
transform: `rotate(${compassRotation}deg)`,
|
6
|
-
cursor,
|
7
5
|
}"
|
8
|
-
@
|
6
|
+
@click="$emit('input', 0)"
|
9
7
|
class="
|
10
8
|
h-16 w-16
|
11
9
|
d-flex flex-column justify-center align-center
|
@@ -19,6 +17,7 @@
|
|
19
17
|
<span>N</span>
|
20
18
|
<MapNavCompass
|
21
19
|
class="position-absolute pos-a-0 primary--text"
|
20
|
+
@click="$event.stopPropagation()"
|
22
21
|
@direction-click="$emit('input', $event)"
|
23
22
|
:can-emit="viewMode === '3d' || viewMode === 'oblique'"
|
24
23
|
:hide-ticks="viewMode === 'oblique'"
|
@@ -28,10 +27,7 @@
|
|
28
27
|
|
29
28
|
|
30
29
|
<script>
|
31
|
-
import { computed,
|
32
|
-
|
33
|
-
import { fromEvent, merge, of, Subject } from 'rxjs';
|
34
|
-
import { takeUntil, tap } from 'rxjs/operators';
|
30
|
+
import { computed, ref } from 'vue';
|
35
31
|
|
36
32
|
import { VSheet } from 'vuetify/lib';
|
37
33
|
import MapNavCompass from './mapNavCompass.vue';
|
@@ -58,75 +54,10 @@
|
|
58
54
|
default: 0,
|
59
55
|
},
|
60
56
|
},
|
61
|
-
setup(props
|
62
|
-
const destroy$ = new Subject();
|
63
|
-
const grabbing = ref();
|
64
|
-
const compassRef = ref();
|
65
|
-
|
66
|
-
const mouseAngle = ({ referenceEl, event }) => {
|
67
|
-
const { left, width, top, height } = referenceEl.getBoundingClientRect();
|
68
|
-
const boxCenter = [left + width / 2, top + height / 2];
|
69
|
-
const angle = Math.atan2(event.pageX - boxCenter[0], -(event.pageY - boxCenter[1])) * (180 / Math.PI);
|
70
|
-
|
71
|
-
if (angle < 0) {
|
72
|
-
return 360 + angle;
|
73
|
-
}
|
74
|
-
|
75
|
-
return angle;
|
76
|
-
};
|
77
|
-
|
78
|
-
const trackMouse = (e) => {
|
79
|
-
if (props.viewMode === '3d') {
|
80
|
-
document.body.style.cursor = 'grabbing';
|
81
|
-
const timeout = setTimeout(() => {
|
82
|
-
grabbing.value = true;
|
83
|
-
}, 200);
|
84
|
-
|
85
|
-
const finish = () => {
|
86
|
-
clearTimeout(timeout);
|
87
|
-
document.body.style.cursor = 'unset';
|
88
|
-
grabbing.value = false;
|
89
|
-
};
|
90
|
-
|
91
|
-
merge(
|
92
|
-
of(e),
|
93
|
-
fromEvent(document.body, 'mousemove'),
|
94
|
-
).pipe(
|
95
|
-
tap((event) => {
|
96
|
-
if (grabbing.value) {
|
97
|
-
const rotation = mouseAngle({ event, referenceEl: compassRef.value.$el });
|
98
|
-
context.emit('input', -1 * rotation);
|
99
|
-
}
|
100
|
-
}),
|
101
|
-
takeUntil(fromEvent(document.body, 'mouseup').pipe(
|
102
|
-
tap(() => finish()),
|
103
|
-
)),
|
104
|
-
takeUntil(fromEvent(document.body, 'mouseleave').pipe(
|
105
|
-
tap(() => finish()),
|
106
|
-
)),
|
107
|
-
takeUntil(destroy$),
|
108
|
-
).subscribe();
|
109
|
-
}
|
110
|
-
};
|
111
|
-
|
112
|
-
const cursor = computed(() => {
|
113
|
-
if (props.viewMode === '3d') {
|
114
|
-
return grabbing.value ? 'grabbing' : 'grab';
|
115
|
-
}
|
116
|
-
return 'auto';
|
117
|
-
});
|
118
|
-
|
57
|
+
setup(props) {
|
119
58
|
const rotationValue = ref(props.value);
|
120
59
|
|
121
|
-
onUnmounted(() => {
|
122
|
-
destroy$.next();
|
123
|
-
destroy$.unsubscribe();
|
124
|
-
});
|
125
|
-
|
126
60
|
return {
|
127
|
-
trackMouse,
|
128
|
-
compassRef,
|
129
|
-
cursor,
|
130
61
|
rotationValue,
|
131
62
|
compassRotation: computed(() => -1 * rotationValue.value),
|
132
63
|
};
|
package/src/setup.js
CHANGED