@itwin/measure-tools-react
Version:
Frontend framework and tools for measurements
82 lines • 4.21 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 { BeUiEvent } from "@itwin/core-bentley";
/** Enumerates measurement properties for change events. */
export var MeasurementPreferencesProperty;
(function (MeasurementPreferencesProperty) {
MeasurementPreferencesProperty[MeasurementPreferencesProperty["displayMeasurementAxes"] = 1] = "displayMeasurementAxes";
MeasurementPreferencesProperty[MeasurementPreferencesProperty["displayLocationAltitude"] = 2] = "displayLocationAltitude";
MeasurementPreferencesProperty[MeasurementPreferencesProperty["displayMeasurementLabels"] = 3] = "displayMeasurementLabels";
})(MeasurementPreferencesProperty || (MeasurementPreferencesProperty = {}));
/** Measurement preferences singleton that manages the application/user's preferences for measurements. Each property when modified will emit a change event. */
export class MeasurementPreferences {
/** Gets the measurement preferences singleton. */
static get current() {
if (!MeasurementPreferences._instance)
MeasurementPreferences._instance = new MeasurementPreferences();
return MeasurementPreferences._instance;
}
/** Gets or sets if measurement axes should be displayed on newly created measurements. */
get displayMeasurementAxes() {
return this._displayMeasurementAxes;
}
set displayMeasurementAxes(v) {
if (this._displayMeasurementAxes !== v) {
this._displayMeasurementAxes = v;
this.onPreferenceChanged.emit(MeasurementPreferencesProperty.displayMeasurementAxes);
}
}
/** Gets or sets if location measurements display Altitude (Z) in the measurement widget. */
get displayLocationAltitude() {
return this._displayLocationAltitude;
}
set displayLocationAltitude(v) {
if (this._displayLocationAltitude !== v) {
this._displayLocationAltitude = v;
this.onPreferenceChanged.emit(MeasurementPreferencesProperty.displayLocationAltitude);
}
}
/** Gets or sets if measurement labels should be displayed on newly created measurements. */
get displayMeasurementLabels() {
return this._displayMeasurementLabels;
}
set displayMeasurementLabels(v) {
if (this._displayMeasurementLabels !== v) {
this._displayMeasurementLabels = v;
this.onPreferenceChanged.emit(MeasurementPreferencesProperty.displayMeasurementLabels);
}
}
constructor() {
this._displayMeasurementAxes = false;
this._displayLocationAltitude = true;
this._displayMeasurementLabels = true;
/** Event for when a preference property changes value. */
this.onPreferenceChanged = new BeUiEvent();
this.loadDefaults();
}
loadDefaults() {
this._displayMeasurementAxes = false;
this._displayLocationAltitude = true;
this._displayMeasurementLabels = true;
}
load(props, setDefaultsIfMissing = true) {
if (props.displayMeasurementAxes !== undefined)
this._displayMeasurementAxes = props.displayMeasurementAxes;
else if (setDefaultsIfMissing)
this._displayMeasurementAxes = false;
if (props.displayLocationAltitude !== undefined)
this._displayLocationAltitude = props.displayLocationAltitude;
else if (setDefaultsIfMissing)
this._displayLocationAltitude = true;
if (props.displayMeasurementLabels !== undefined)
this._displayMeasurementLabels = props.displayMeasurementLabels;
else if (setDefaultsIfMissing)
this._displayMeasurementLabels = true;
}
save() {
return { displayMeasurementAxes: this._displayMeasurementAxes, displayLocationAltitude: this._displayLocationAltitude, displayMeasurementLabels: this._displayMeasurementLabels };
}
}
//# sourceMappingURL=MeasurementPreferences.js.map