@itwin/measure-tools-react
Version:
Frontend framework and tools for measurements
87 lines • 3.64 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
import { MeasurementPreferences } from "../api/MeasurementPreferences.js";
import { MeasurementToolModel } from "../api/MeasurementToolModel.js";
import { DistanceMeasurement } from "../measurements/DistanceMeasurement.js";
var State;
(function (State) {
State[State["SetMeasurementViewport"] = 0] = "SetMeasurementViewport";
State[State["SetStartPoint"] = 1] = "SetStartPoint";
State[State["SetEndPoint"] = 2] = "SetEndPoint";
})(State || (State = {}));
export class MeasureDistanceToolModel extends MeasurementToolModel {
constructor() {
super();
this._currentState = State.SetMeasurementViewport;
}
get currentState() { return this._currentState; }
get dynamicMeasurement() { return this._currentMeasurement; }
get drawingMetadata() {
return this._currentMeasurement?.drawingMetadata;
}
set drawingMetadata(data) {
if (this._currentMeasurement)
this._currentMeasurement.drawingMetadata = data;
}
set sheetViewId(id) {
if (this._currentMeasurement)
this._currentMeasurement.sheetViewId = id;
}
get sheetViewId() {
return this._currentMeasurement?.sheetViewId;
}
setMeasurementViewport(viewType) {
if (State.SetMeasurementViewport !== this._currentState)
return false;
this._currentViewportType = viewType;
this.moveToNextState();
return true;
}
setStartPoint(viewType, point) {
if (State.SetStartPoint !== this._currentState)
return false;
if (viewType !== this._currentViewportType)
return false;
this._currentMeasurement = DistanceMeasurement.create(point, point, this._currentViewportType);
this._currentMeasurement.isDynamic = true;
this._currentMeasurement.showAxes = false; // Turn off axes for new dynamic measurements
this.notifyNewMeasurement();
this.moveToNextState();
return true;
}
setEndPoint(viewType, point, isDynamic) {
if (State.SetEndPoint !== this._currentState)
return false;
if (viewType !== this._currentViewportType)
return false;
this._currentMeasurement.setEndPoint(point);
this.notifyDynamicMeasurementChanged();
if (!isDynamic)
this.moveToNextState();
return true;
}
moveToNextState() {
switch (this._currentState) {
case State.SetMeasurementViewport:
this._currentState = State.SetStartPoint;
break;
case State.SetStartPoint:
this._currentState = State.SetEndPoint;
break;
case State.SetEndPoint:
this._currentMeasurement.isDynamic = false;
this._currentMeasurement.showAxes = MeasurementPreferences.current.displayMeasurementAxes; // Turn axes on if its preferred
this.addMeasurementAndReset(this._currentMeasurement);
break;
}
}
reset(clearMeasurements) {
super.reset(clearMeasurements);
this._currentMeasurement = undefined;
this._currentState = State.SetMeasurementViewport;
}
}
MeasureDistanceToolModel.State = State;
//# sourceMappingURL=MeasureDistanceToolModel.js.map