terriajs
Version:
Geospatial data visualization platform.
34 lines • 1.06 kB
JavaScript
import { computed } from "mobx";
import Result from "../../Core/Result";
import Trait from "../Trait";
export default function anyTrait(options) {
return function (target, propertyKey) {
const constructor = target.constructor;
if (!constructor.traits) {
constructor.traits = {};
}
constructor.traits[propertyKey] = new AnyTrait(propertyKey, options, constructor);
};
}
export class AnyTrait extends Trait {
decoratorForFlattened = computed.struct;
getValue(model) {
for (const stratum of model.strataTopToBottom.values()) {
const stratumAny = stratum;
if (stratumAny !== undefined && stratumAny[this.id] !== undefined) {
return stratumAny[this.id];
}
}
return undefined;
}
fromJson(_model, _stratumName, jsonValue) {
return new Result(jsonValue);
}
toJson(value) {
return value;
}
isSameType(trait) {
return trait instanceof AnyTrait;
}
}
//# sourceMappingURL=anyTrait.js.map