@golemio/pid
Version:
Golemio PID Module
97 lines • 3.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getGtfsEffectByEventType = void 0;
const AlertEffectEnum_1 = require("./enums/AlertEffectEnum");
const RopidVyMiEventType = {
PROVOZ_ZASTAVEN: 1,
PROVOZ_OMEZEN: 3,
PROVOZ_OBNOVEN: 4,
PRERUSENI_PROVOZU_METRA: 5,
PRERUSENI_PROVOZU_TRAMVAJI: 6,
NEODJETI_SPOJE: 8,
ZPOZDENI_SPOJE: 12,
ZPOZDENI_SPOJU: 13,
STANICE_UZAVRENA: 14,
PRISTUP_OMEZEN: 15,
OMEZENI_BEZBARIEROVEHO_PRISTUPU: 16,
ZMENA_TRASY_A_ZASTAVEK: 17,
POSILENI_SPOJU: 18,
ROZVAZANI_PRESTUPNI_VAZBY: 19,
OSTATNI: 20,
ODKLON: 21,
ZRUSENI_ZASTAVKY: 22,
PREMISTENI_ZASTAVKY: 23,
NAHRADNI_DOPRAVA: 24,
PRERUSENI_PROVOZU: 25,
ZRUSENI_LINKY: 26,
ZAVEDENI_LINKY: 27,
ZMENA_TRASY: 28,
ZMENA_ZASTAVEK: 29,
ZMENA_JIZDNIHO_RADU: 30,
OMEZENI_PROVOZU: 31,
};
/**
* Mapuje eventType na dopravní efekt. EventType může být i součet několika čísel RopidVyMiEventType.
* @param eventType number
*/
function getGtfsEffectByEventType(eventType) {
const values = findFromBin(eventType);
if (values.includes(RopidVyMiEventType.ODKLON)) {
return AlertEffectEnum_1.GtfsAlertEffectEnum.DETOUR;
}
if (values.includes(RopidVyMiEventType.ROZVAZANI_PRESTUPNI_VAZBY) || values.includes(RopidVyMiEventType.NAHRADNI_DOPRAVA)) {
return AlertEffectEnum_1.GtfsAlertEffectEnum.MODIFIED_SERVICE;
}
if (values.includes(RopidVyMiEventType.PROVOZ_ZASTAVEN) ||
values.includes(RopidVyMiEventType.PROVOZ_OMEZEN) ||
values.includes(RopidVyMiEventType.NEODJETI_SPOJE) ||
values.includes(RopidVyMiEventType.PRERUSENI_PROVOZU_METRA) ||
values.includes(RopidVyMiEventType.PRERUSENI_PROVOZU_TRAMVAJI) ||
values.includes(RopidVyMiEventType.PRERUSENI_PROVOZU) ||
values.includes(RopidVyMiEventType.OMEZENI_PROVOZU)) {
return AlertEffectEnum_1.GtfsAlertEffectEnum.REDUCED_SERVICE;
}
if (values.includes(RopidVyMiEventType.ZPOZDENI_SPOJE) || values.includes(RopidVyMiEventType.ZPOZDENI_SPOJU)) {
return AlertEffectEnum_1.GtfsAlertEffectEnum.SIGNIFICANT_DELAYS;
}
if (values.includes(RopidVyMiEventType.POSILENI_SPOJU) || values.includes(RopidVyMiEventType.ZAVEDENI_LINKY)) {
return AlertEffectEnum_1.GtfsAlertEffectEnum.ADDITIONAL_SERVICE;
}
if (values.includes(RopidVyMiEventType.OSTATNI) ||
values.includes(RopidVyMiEventType.PROVOZ_OBNOVEN) ||
values.includes(RopidVyMiEventType.PRISTUP_OMEZEN) ||
values.includes(RopidVyMiEventType.OMEZENI_BEZBARIEROVEHO_PRISTUPU)) {
return AlertEffectEnum_1.GtfsAlertEffectEnum.OTHER_EFFECT;
}
if (values.includes(RopidVyMiEventType.STANICE_UZAVRENA) ||
values.includes(RopidVyMiEventType.ZRUSENI_ZASTAVKY) ||
values.includes(RopidVyMiEventType.ZRUSENI_LINKY)) {
return AlertEffectEnum_1.GtfsAlertEffectEnum.NO_SERVICE;
}
if (values.includes(RopidVyMiEventType.ZMENA_ZASTAVEK)) {
return AlertEffectEnum_1.GtfsAlertEffectEnum.MODIFIED_SERVICE;
}
return AlertEffectEnum_1.GtfsAlertEffectEnum.UNKNOWN_EFFECT;
}
exports.getGtfsEffectByEventType = getGtfsEffectByEventType;
/**
* Odhalil @OICT_ParoubekMartin
* Příklad jak 10551296 přeložit na 17, 22 a 24
* Desítková: 10551296
* Binárně: 1010 0001 0000 0000 0000 0000
* Na 17 místě zprava je 1
* Na 22 místě zprava je 1
* Na 24 místě zprava je 1
*
* @param num číslo v desítkové soustavě
**/
const findFromBin = (num) => {
let result = [];
const bin = (num >>> 0).toString(2);
for (let i = 0; i < bin.length; i++) {
if (bin[i] === "1")
result.push(bin.length - i);
}
return result;
};
//# sourceMappingURL=AlertEffectMapper.js.map