diff --git a/coreplugins/measure/public/MeasurePopup.jsx b/coreplugins/measure/public/MeasurePopup.jsx index afbb8905..0e0a6a9d 100644 --- a/coreplugins/measure/public/MeasurePopup.jsx +++ b/coreplugins/measure/public/MeasurePopup.jsx @@ -23,7 +23,12 @@ export default class MeasurePopup extends React.Component { constructor(props){ super(props); + let featureType = "Point"; + if (props.model.area !== 0) featureType = "Polygon"; + else if (props.model.length > 0) featureType = "LineString"; + this.state = { + featureType, volume: null, // to be calculated, baseMethod: localStorage.getItem("measure_base_method") || "triangulate", task: null, @@ -36,7 +41,7 @@ export default class MeasurePopup extends React.Component { } componentDidMount(){ - this.calculateVolume(); + if (this.state.featureType == "Polygon") this.calculateVolume(); this.props.resultFeature._measurePopup = this; } @@ -46,9 +51,10 @@ export default class MeasurePopup extends React.Component { getProperties(){ const result = { - Length: this.props.model.length, - Area: this.props.model.area + Length: this.props.model.length, + Area: this.props.model.area }; + if (this.state.volume !== null && this.state.volume !== false){ result.Volume = this.state.volume; result.BaseSurface = this.state.baseMethod; @@ -160,7 +166,7 @@ export default class MeasurePopup extends React.Component { } render(){ - const { volume, error } = this.state; + const { volume, error, featureType } = this.state; const baseMethods = [ {label: _("Triangulate"), method: 'triangulate'}, {label: _("Plane"), method: 'plane'}, @@ -169,9 +175,9 @@ export default class MeasurePopup extends React.Component { {label: _("Lowest"), method: 'lowest'}]; return (
-

{_("Area:")} {this.props.model.areaDisplay}

-

{_("Perimeter:")} {this.props.model.lengthDisplay}

- {volume === null && !error &&

{_("Volume:")} {_("computing…")}

} + {featureType == "Polygon" &&

{_("Area:")} {this.props.model.areaDisplay}

} + {featureType == "Polygon" &&

{_("Perimeter:")} {this.props.model.lengthDisplay}

} + {featureType == "Polygon" && volume === null && !error &&

{_("Volume:")} {_("computing…")}

} {typeof volume === "number" ? [

{_("Volume:")} {volume.toFixed("2")} {_("Cubic Meters")} ({(volume * 35.3147).toFixed(2)} {_("Cubic Feet")})

, diff --git a/coreplugins/measure/public/app.jsx b/coreplugins/measure/public/app.jsx index f68aa9ba..43cc8485 100644 --- a/coreplugins/measure/public/app.jsx +++ b/coreplugins/measure/public/app.jsx @@ -73,18 +73,19 @@ export default class App{ map.on('measurepopupshown', ({popupContainer, model, resultFeature}) => { // Only modify area popup, length popup is fine as default + const $container = $("
"), + $popup = $(popupContainer); + if (model.area !== 0){ - const $container = $("
"), - $popup = $(popupContainer); - - $popup.children("p").empty(); - $popup.children("h3:first-child").after($container); - - ReactDOM.render(, $container.get(0)); + // Erase measurements for area + $popup.children("p").empty(); } + $popup.children("ul.tasks").before($container); + + ReactDOM.render(, $container.get(0)); }); } } \ No newline at end of file