@rr0/data
Version:
RR0 data model
31 lines (30 loc) • 1.09 kB
JavaScript
import { TypedDataFactory } from "../TypedDataFactory.js";
import { NamedPlace } from "@rr0/place";
import { Level2Date as EdtfDate } from "@rr0/time";
/**
* A RR0Data factory which can read either <someType>.json files of index.json with a "type": "<someType>" property.
*/
export class EventDataFactory extends TypedDataFactory {
constructor(eventFactory, eventTypes, fileNames = eventTypes) {
super(eventFactory, "event", fileNames);
this.eventTypes = eventTypes;
this.fileNames = fileNames;
}
parse(dataJson) {
const data = super.parse(dataJson);
Object.assign(data, {
eventType: dataJson.eventType,
time: EdtfDate.fromString(dataJson.time),
place: new NamedPlace(dataJson.place)
});
return data;
}
createFromFile(file) {
const event = super.createFromFile(file);
let eventData;
if (this.eventTypes.includes(event === null || event === void 0 ? void 0 : event.eventType)) {
eventData = event;
}
return eventData;
}
}