/** * ============LICENSE_START======================================================================== * ONAP : ccsdk feature sdnr wt odlux * ================================================================================================= * Copyright (C) 2021 highstreet technologies GmbH Intellectual Property. All rights reserved. * ================================================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. * ============LICENSE_END========================================================================== */ import { Accordion, AccordionDetails, AccordionSummary, makeStyles, Paper, Typography } from '@material-ui/core'; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; import { GPSProfileResult } from '../model/GPSProfileResult'; import * as React from 'react'; import { calculateDistanceInMeter } from '../utils/map'; import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; const mapStateToProps = (state: IApplicationStoreState) => ({ center: state.lineOfSight.map.center, zoom: state.lineOfSight.map.zoom, start: state.lineOfSight.map.start, end: state.lineOfSight.map.end, heightA: state.lineOfSight.map.heightA, heightB: state.lineOfSight.map.heightB, }); const mapDispatchToProps = (dispatcher: IDispatcher) => ({ }) type props = Connect & { minHeight: GPSProfileResult | undefined; maxHeight: GPSProfileResult | undefined; }; const styles = (props: any) => makeStyles({ accordion: {padding: 5, position: 'absolute', top: 10, width: props.width, marginLeft: 10, zIndex:1}, container: { display: 'flex', flexDirection: "column", marginLeft:10, padding: 5 }, caption:{width:'40%'}, subTitleRow:{ width: '60%'}, titleRowElement:{width: '40%', fontWeight: "bold"}, secondRow:{width:'25%'}, thirdRow:{width:'20%'} }); const MapInfo: React.FC = (props) =>{ const [expanded, setExpanded] = React.useState(false); const [width, setWidth] = React.useState(470); const [length, setLength] = React.useState(); const classes = styles({width: width})(); const {start, end, center, zoom, heightA, heightB, minHeight, maxHeight} = props; React.useEffect(()=>{ if(start && end){ setLength(calculateDistanceInMeter(start.latitude, start.longitude, end.latitude, end.longitude).toFixed(3)) }else{ setLength(undefined) } }, [start, end]) const handleChange = (event: any, isExpanded: boolean) => { setExpanded(isExpanded); }; return } aria-controls="panel1a-content" id="panel1a-header" > Map Info Map Center
Longitude{center.longitude}
Latitude{center.latitude}
Zoom {zoom}
Link
Start End
Longitude {start?.longitude.toFixed(3)} {end?.longitude.toFixed(3)}
Latitude {start?.latitude.toFixed(3)} {end?.latitude.toFixed(3)}
Meassured height [m] {heightA?.amsl} {heightB?.amsl}
Antenna height [m] {heightA?.antennaHeight} {heightB?.antennaHeight}
Length [m] {length}
Max height @ position {maxHeight? maxHeight.height+' m': ''} {maxHeight?.gps.longitude.toFixed(3)} {maxHeight?.gps.latitude.toFixed(3)}
Min height @ position {minHeight? minHeight.height +' m': ''} {minHeight?.gps.longitude.toFixed(3)} {minHeight?.gps.latitude.toFixed(3)}
} export default connect(mapStateToProps, mapDispatchToProps)(MapInfo);