@naimi/alib
Version:
113 lines (97 loc) • 2.85 kB
JavaScript
const fs = require('fs')
//! multiply all array elements by n. works on any dimension arrays
arr_multiply = function (arr, n, len) {
if (typeof len == "undefined")
len = 0;
if (arr.length === len) return 0;
if (Array.isArray(arr[len]))
arr_multiply(arr[len], n);
else
arr[len] = arr[len] * n;
arr_multiply(arr, n, len + 1);
}
//! convert all floats > int. works on any dimension arrays
arr2fixed = function (arr, n, len) {
if (typeof len == "undefined")
len = 0;
if (arr.length === len) return 0;
if (Array.isArray(arr[len]))
arr2fixed(arr[len], n);
else
arr[len] = parseFloat(arr[len].toFixed(n));
arr2fixed(arr, n, len + 1);
}
var inp_fn = process.argv[2]
if (process.argv[3] === undefined)
var out_fn = inp_fn.replace(".json", "") + "_peak-hour.json"
else
var out_fn = process.argv[3];
const fsp = fs.promises;
async function dir(pth) {
try {
return fsp.readdir(pth);
} catch (e) {
console.log(e);
}
}
async function readf(inp) {
try {
console.log("reading :" + inp);
return await fsp.readFile(inp, {
encoding: 'utf8'
});
} catch (e) {
console.log(e);
}
}
async function savef(fn, txt) {
try {
console.log("saving :" + fn);
return await fsp.writeFile(fn, txt);
} catch (e) {
console.log(e);
}
}
async function remove_per(inp) {
return inp.replace(/%22/g, "\"").replace(/%20/g, " ").replace(/%3F/g, "?").replace(/%26/g, "&").replace(/%3C/g, "<").replace(/%3D/g, "=");
}
const main = async () => {
const res = await dir("c:/");
var int0_str = await readf(inp_fn);
var int0 = JSON.parse(int0_str);
factor_am = 0.417
factor_pm = 0.294
if (inp_fn.toLowerCase().includes("bmc")) {
//! For MWCOG model:
//! AM peak period 3 Hrs. (6 AM - 9 AM) (41.7%)
//! Midday period 6 Hrs. (9 AM - 3 PM) (17.7%)
//! PM peak period 4 Hrs. (3 PM - 7 PM) (29.4%)
//! Night period 11 Hrs. (7 PM - 6 AM) (15.0%)
//!
//! For BMC Model:
//! AM = 6:30a - 9:30a (37.2%)
//! MD = 9:30a - 3:30p (18.4%)
//! PM = 3:30p - 6:30p (36.0%)
//! NT = 6:30p - 6:30a (18.9%)
factor_am = 0.372
factor_pm = 0.360
}
//! int0_ph = clone_obj(int0)
int0_ph = int0
arr_multiply(int0_ph.AMVol, factor_am);
arr_multiply(int0_ph.PMVol, factor_pm);
arr_multiply(int0_ph.AMTot_inp, factor_am);
arr_multiply(int0_ph.PMTot_inp, factor_pm);
arr_multiply(int0_ph.AMTot_out, factor_am);
arr_multiply(int0_ph.PMTot_out, factor_pm);
arr2fixed(int0_ph.AMVol, 0);
arr2fixed(int0_ph.PMVol, 0);
arr2fixed(int0_ph.AMTot_inp, 0);
arr2fixed(int0_ph.PMTot_inp, 0);
arr2fixed(int0_ph.AMTot_out, 0);
arr2fixed(int0_ph.PMTot_out, 0);
strOut_ph = JSON.stringify(int0_ph, 2); //! js
// strOut_ph = beautify(strOut_ph); //! npm
var done_fy = await savef(out_fn, strOut_ph)
}
main();