@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
118 lines (115 loc) • 8.37 kB
TypeScript
import type Accessor from "../../core/Accessor.js";
import type SceneView from "../../views/SceneView.js";
import type DiscreteOptions from "./DiscreteOptions.js";
import type DurationOptions from "./DurationOptions.js";
import type ThresholdOptions from "./ThresholdOptions.js";
import type { ScreenPoint } from "../../core/types.js";
import type { ShadowVisualizationType } from "./types.js";
import type { ThresholdOptionsProperties } from "./ThresholdOptions.js";
import type { DurationOptionsProperties } from "./DurationOptions.js";
import type { DiscreteOptionsProperties } from "./DiscreteOptions.js";
/** @deprecated since version 5.0. Use the [ShadowCastAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/ShadowCastAnalysis/) or [Shadow Cast component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-shadow-cast/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/). */
export interface ShadowCastViewModelProperties extends Partial<Pick<ShadowCastViewModel, "endTimeOfDay" | "startTimeOfDay" | "utcOffset" | "view" | "visualizationType">> {
/**
* The calendar date used to calculate the shadow cast. This date excludes
* the time. If a date with a time is set, the time value will be set to midnight (`00:00:00`) of that date in local system time.
* If no date is set, then it defaults to the current date in local system time.
*
* @example widget.viewModel.date = new Date('June 1, 2021');
*/
date?: (Date | number | string);
/** The configuration used when the widget's [visualizationType](https://developers.arcgis.com/javascript/latest/references/core/widgets/ShadowCast/ShadowCastViewModel/#visualizationType) is set to "discrete". */
discreteOptions?: DiscreteOptionsProperties;
/** The configuration used when the widget's [visualizationType](https://developers.arcgis.com/javascript/latest/references/core/widgets/ShadowCast/ShadowCastViewModel/#visualizationType) is set to "duration". */
durationOptions?: DurationOptionsProperties;
/** The configuration used when the widget's [visualizationType](https://developers.arcgis.com/javascript/latest/references/core/widgets/ShadowCast/ShadowCastViewModel/#visualizationType) is set to "threshold". */
thresholdOptions?: ThresholdOptionsProperties;
}
/** @deprecated since version 5.0. Use the [ShadowCastAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/ShadowCastAnalysis/) or [Shadow Cast component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-shadow-cast/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/). */
export type ShadowCastState = "disabled" | "ready";
/**
* Provides the logic for the [ShadowCast](https://developers.arcgis.com/javascript/latest/references/core/widgets/ShadowCast/) widget and [component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-shadow-cast/).
*
* @deprecated since version 5.0. Use the [Shadow Cast component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-shadow-cast/) or [ShadowCastAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/ShadowCastAnalysis/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/).
* @since 4.21
* @see [ShadowCast](https://developers.arcgis.com/javascript/latest/references/core/widgets/ShadowCast/) widget - _Deprecated since 5.0. Use the [Shadow Cast component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-shadow-cast/) instead._
* @see [Shadow Cast component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-shadow-cast/)
* @see [Sample - Shadow cast](https://developers.arcgis.com/javascript/latest/sample-code/widgets-shadow-cast/)
* @see [Programming patterns: Widget viewModel pattern](https://developers.arcgis.com/javascript/latest/programming-patterns/#widget-viewmodel-pattern)
*/
export default class ShadowCastViewModel extends Accessor {
constructor(properties?: ShadowCastViewModelProperties);
/**
* The calendar date used to calculate the shadow cast. This date excludes
* the time. If a date with a time is set, the time value will be set to midnight (`00:00:00`) of that date in local system time.
* If no date is set, then it defaults to the current date in local system time.
*
* @example widget.viewModel.date = new Date('June 1, 2021');
*/
get date(): Date;
set date(value: (Date | number | string));
/** The configuration used when the widget's [visualizationType](https://developers.arcgis.com/javascript/latest/references/core/widgets/ShadowCast/ShadowCastViewModel/#visualizationType) is set to "discrete". */
get discreteOptions(): DiscreteOptions;
set discreteOptions(value: DiscreteOptionsProperties);
/** The configuration used when the widget's [visualizationType](https://developers.arcgis.com/javascript/latest/references/core/widgets/ShadowCast/ShadowCastViewModel/#visualizationType) is set to "duration". */
get durationOptions(): DurationOptions;
set durationOptions(value: DurationOptionsProperties);
/**
* Time (in milliseconds from midnight of the [date](https://developers.arcgis.com/javascript/latest/references/core/widgets/ShadowCast/ShadowCastViewModel/#date)) when the shadow cast computation should stop.
* By default the shadow cast end time is set to 4PM (16 * 3600 * 1000ms).
*
* @default 16 * 3600 * 1000
*/
accessor endTimeOfDay: number;
/**
* Time (in milliseconds from midnight of the [date](https://developers.arcgis.com/javascript/latest/references/core/widgets/ShadowCast/ShadowCastViewModel/#date))
* when the shadow cast computation should start. By default the shadow
* cast start time is set to 10AM (10 * 3600 * 1000ms).
*
* @default 10 * 3600 * 1000
*/
accessor startTimeOfDay: number;
/**
* The current state of the view model that can be used for rendering the UI
* of the widget.
*
* Value | Description
* ------------|-------------
* disabled | widget is being created
* ready | widget is ready
*
* @default "disabled"
*/
get state(): ShadowCastState;
/** The configuration used when the widget's [visualizationType](https://developers.arcgis.com/javascript/latest/references/core/widgets/ShadowCast/ShadowCastViewModel/#visualizationType) is set to "threshold". */
get thresholdOptions(): ThresholdOptions;
set thresholdOptions(value: ThresholdOptionsProperties);
/** The difference in hours between UTC time and the times displayed in the widget. */
accessor utcOffset: number;
/**
* A reference to the [View](https://developers.arcgis.com/javascript/latest/references/core/views/View/). This widget is only supported in a
* [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).
*/
accessor view: SceneView | null | undefined;
/**
* Type of visualization to use when showing the shadows. There are 3 types of visualization:
* - "threshold" only displays areas that receive shadows for a period longer than
* a given threshold value
* - "duration" displays all areas that receive shadows either in a continuous mode or in 1 hour time intervals
* - "discrete" mode displays individual shadows cast at a given time interval
*
* @default "threshold"
*/
accessor visualizationType: ShadowVisualizationType;
/**
* Returns the time (in milliseconds) spent in shadow for a certain point on the screen.
*
* @param point - The point on the screen for which shadow cast is calculated.
* @returns Resolves with the time in milliseconds spent in shadow for the given screenpoint.
*/
getDuration(point: ScreenPoint): Promise<number>;
/** Starts the widget. While running it will automatically perform shadow accumulation. */
start(): void;
/** Stops the widget. */
stop(): void;
}