terriajs
Version:
Geospatial data visualization platform.
83 lines • 3.24 kB
JavaScript
import i18next from "i18next";
import { runInAction } from "mobx";
import ReferenceMixin from "../../../ModelMixins/ReferenceMixin";
import UrlMixin from "../../../ModelMixins/UrlMixin";
import ThreddsItemReferenceTraits from "../../../Traits/TraitsClasses/ThreddsItemReferenceTraits";
import CatalogMemberFactory from "../CatalogMemberFactory";
import CreateModel from "../../Definition/CreateModel";
import LoadableStratum from "../../Definition/LoadableStratum";
import StratumOrder from "../../Definition/StratumOrder";
import WebMapServiceCatalogGroup from "../Ows/WebMapServiceCatalogGroup";
export class ThreddsDatasetStratum extends LoadableStratum(ThreddsItemReferenceTraits) {
threddsItemReference;
threddsDataset;
static stratumName = "threddsDataset";
constructor(threddsItemReference, threddsDataset) {
super();
this.threddsItemReference = threddsItemReference;
this.threddsDataset = threddsDataset;
}
duplicateLoadableStratum(_newModel) {
return new ThreddsDatasetStratum(this.threddsItemReference, this.threddsDataset);
}
static load(threddsItemReference, threddsDataset) {
return new ThreddsDatasetStratum(threddsItemReference, threddsDataset);
}
get name() {
if (this.threddsDataset === undefined)
return undefined;
return this.threddsDataset.name;
}
get url() {
if (this.threddsDataset === undefined)
return undefined;
return this.threddsDataset.wmsUrl;
}
}
StratumOrder.addLoadStratum(ThreddsDatasetStratum.stratumName);
export default class ThreddsItemReference extends UrlMixin(ReferenceMixin(CreateModel(ThreddsItemReferenceTraits))) {
static type = "thredds-item";
get type() {
return ThreddsItemReference.type;
}
get typeName() {
return i18next.t("models.threddsItem.name");
}
_threddsDataset = undefined;
_threddsCatalogGroup = undefined;
setDataset(dataset) {
this._threddsDataset = dataset;
}
setThreddsCatalogGroup(group) {
this._threddsCatalogGroup = group;
}
setThreddsStrata(model) {
if (this._threddsDataset === undefined)
return;
if (model.strata.get(ThreddsDatasetStratum.stratumName) !== undefined)
return;
const stratum = ThreddsDatasetStratum.load(this, this._threddsDataset);
if (stratum === undefined)
return;
runInAction(() => {
model.strata.set(ThreddsDatasetStratum.stratumName, stratum);
});
}
passThreddsStrata(model) {
const threddsStrata = this.strata.get(ThreddsDatasetStratum.stratumName);
if (threddsStrata === undefined)
return;
runInAction(() => {
model.strata.set(ThreddsDatasetStratum.stratumName, threddsStrata);
});
}
async forceLoadReference(_previousTarget) {
this.setThreddsStrata(this);
const model = CatalogMemberFactory.create(WebMapServiceCatalogGroup.type, this.uniqueId, this.terria, this);
if (model === undefined)
return;
this.setThreddsStrata(model);
return model;
}
}
//# sourceMappingURL=ThreddsItemReference.js.map