terriajs
Version:
Geospatial data visualization platform.
42 lines (33 loc) • 1.06 kB
text/typescript
import { JsonObject } from "../../Core/Json";
import { BaseModel } from "./Model";
import saveStratumToJson from "./saveStratumToJson";
export interface SaveModelOptions {
includeStrata?: string[];
excludeStrata?: string[];
}
export default function saveModelToJson(
model: BaseModel,
options: SaveModelOptions = {}
): JsonObject {
const includeStrata = options.includeStrata
? options.includeStrata
: Array.from(model.strata.keys());
const excludeStrata = options.excludeStrata ? options.excludeStrata : [];
const strata = includeStrata.filter(
(stratum) => excludeStrata.indexOf(stratum) < 0
);
const result: JsonObject = {};
strata.forEach((stratumId) => {
const stratum = model.strata.get(stratumId);
if (stratum === undefined) {
return;
}
result[stratumId] = saveStratumToJson(model.traits, stratum);
});
if (model.uniqueId !== undefined) {
// TODO: should the JSON property be named `uniqueId` too?
result.id = model.uniqueId;
}
result.type = model.type;
return result;
}