UNPKG

@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
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; }