UNPKG

terriajs

Version:

Geospatial data visualization platform.

106 lines 4.29 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { computed, makeObservable, override } from "mobx"; import JulianDate from "terriajs-cesium/Source/Core/JulianDate"; import LoadableStratum from "../Models/Definition/LoadableStratum"; import createStratumInstance from "../Models/Definition/createStratumInstance"; import DiffableTraits from "../Traits/TraitsClasses/DiffableTraits"; import LegendTraits from "../Traits/TraitsClasses/LegendTraits"; import TimeFilterMixin from "./TimeFilterMixin"; export class DiffStratum extends LoadableStratum(DiffableTraits) { catalogItem; static stratumName = "diffStratum"; constructor(catalogItem) { super(); this.catalogItem = catalogItem; makeObservable(this); } duplicateLoadableStratum(model) { return new DiffStratum(model); } get legends() { if (this.catalogItem.isShowingDiff && this.diffLegendUrl) { const urlMimeType = new URL(this.diffLegendUrl).searchParams.get("format") || undefined; return [ createStratumInstance(LegendTraits, { url: this.diffLegendUrl, urlMimeType }) ]; } return undefined; } get diffLegendUrl() { const diffStyleId = this.catalogItem.diffStyleId; const firstDate = this.catalogItem.firstDiffDate; const secondDate = this.catalogItem.secondDiffDate; if (diffStyleId && firstDate && secondDate) { return this.catalogItem.getLegendUrlForStyle(diffStyleId, JulianDate.fromIso8601(firstDate), JulianDate.fromIso8601(secondDate)); } return undefined; } get disableDateTimeSelector() { return this.catalogItem.isShowingDiff; } get disableExport() { // disable export if showing diff // currently there is no way to generate export for the difference layer as // it requires 2 time parameters which is not supported in standard WCS return this.catalogItem.isShowingDiff; } get disableSplitter() { // disable splitter if showing diff // currently there is no use splitting the difference layer because // most comparable features like style, datetime etc are disabled. return this.catalogItem.isShowingDiff; } } __decorate([ computed ], DiffStratum.prototype, "legends", null); __decorate([ computed ], DiffStratum.prototype, "diffLegendUrl", null); __decorate([ computed ], DiffStratum.prototype, "disableDateTimeSelector", null); __decorate([ computed ], DiffStratum.prototype, "disableExport", null); __decorate([ computed ], DiffStratum.prototype, "disableSplitter", null); function DiffableMixin(Base) { class DiffableMixin extends TimeFilterMixin(Base) { constructor(...args) { super(...args); makeObservable(this); const diffStratum = new DiffStratum(this); this.strata.set(DiffStratum.stratumName, diffStratum); } get hasDiffableMixin() { return true; } get canFilterTimeByFeature() { // Hides the SatelliteImageryTimeFilterSection for the item if it is // currently showing difference image return super.canFilterTimeByFeature && !this.isShowingDiff; } } __decorate([ override ], DiffableMixin.prototype, "canFilterTimeByFeature", null); return DiffableMixin; } (function (DiffableMixin) { function isMixedInto(model) { return model?.hasDiffableMixin; } DiffableMixin.isMixedInto = isMixedInto; })(DiffableMixin || (DiffableMixin = {})); export default DiffableMixin; //# sourceMappingURL=DiffableMixin.js.map