terriajs
Version:
Geospatial data visualization platform.
39 lines (32 loc) • 1.17 kB
text/typescript
import { makeObservable, override } from "mobx";
import AbstractConstructor from "../Core/AbstractConstructor";
import Model from "../Models/Definition/Model";
import StratumOrder from "../Models/Definition/StratumOrder";
import GetCapabilitiesTraits from "../Traits/TraitsClasses/GetCapabilitiesTraits";
type BaseType = Model<GetCapabilitiesTraits>;
function GetCapabilitiesMixin<T extends AbstractConstructor<BaseType>>(
Base: T
) {
abstract class GetCapabilitiesMixin extends Base {
protected abstract get defaultGetCapabilitiesUrl(): string | undefined;
constructor(...args: any[]) {
super(...args);
makeObservable(this);
}
get getCapabilitiesUrl(): string | undefined {
const getCapabilitiesUrl = super.getCapabilitiesUrl;
if (getCapabilitiesUrl !== undefined) {
return getCapabilitiesUrl;
} else {
return this.defaultGetCapabilitiesUrl;
}
}
}
return GetCapabilitiesMixin;
}
namespace GetCapabilitiesMixin {
export const getCapabilitiesStratumName = "getCapabilities";
StratumOrder.addLoadStratum(getCapabilitiesStratumName);
}
export default GetCapabilitiesMixin;