terriajs
Version:
Geospatial data visualization platform.
106 lines • 4.29 kB
JavaScript
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