@golemio/pid
Version:
Golemio PID Module
40 lines • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MetroRunsMessagesTransformation = void 0;
const AbstractTransformation_1 = require("@golemio/core/dist/helpers/transformation/AbstractTransformation");
class MetroRunsMessagesTransformation extends AbstractTransformation_1.AbstractTransformation {
constructor() {
super(...arguments);
this.name = "MetroRunMessages";
this.transform = ({ data }) => {
let { $: messageData, vlak: trainData } = data.m;
if (!trainData) {
return [];
}
if (!Array.isArray(trainData)) {
trainData = [trainData];
}
const elements = trainData.map((train) => ({ messageData, trainData: train }));
return this.transformArray(elements);
};
this.transformInternal = ({ messageData, trainData }) => {
const delayOriginSeconds = parseInt(trainData.$.odch);
const messageTimestamp = new Date(messageData.tm);
const scheduledTimestamp = new Date(messageTimestamp);
// delay is in seconds, positive number means the train is ahead of time
scheduledTimestamp.setSeconds(scheduledTimestamp.getSeconds() + delayOriginSeconds);
return {
route_name: messageData.linka,
message_timestamp: messageTimestamp,
train_set_number_scheduled: trainData.$.csp.trimStart(),
train_set_number_real: trainData.$.csr.trimStart(),
train_number: trainData.$.cv,
track_id: trainData.$.ko,
delay_origin: delayOriginSeconds,
actual_position_timestamp_scheduled: scheduledTimestamp,
};
};
}
}
exports.MetroRunsMessagesTransformation = MetroRunsMessagesTransformation;
//# sourceMappingURL=MetroRunsMessagesTransformation.js.map