Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | 37x 37x 37x 37x 23955x 37x 1x 37x 4x 37x 43586x 2x 43584x 43584x 2x 43582x 43582x 4x 43578x 37x 1412x 1x 1411x 1x 1410x 1410x 2x 1408x 37x 21793x 21793x 21793x 21793x 16293x 5496x 37x 702x 702x 702x 702x 702x 21785x 21785x 702x | const quarters = ["WINTER", "SPRING", "SUMMER", "FALL"];
const shortQuarters = ["W", "S", "M", "F"];
const qtrNumToQuarter = {
1: "WINTER",
2: "SPRING",
3: "SUMMER",
4: "FALL",
};
const yyyyqToQyy = (yyyyq) => {
return `${shortQuarters[parseInt(yyyyq.charAt(4)) - 1]}${yyyyq.substring(
2,
4,
)}`;
};
const toFormat = (quarter, year) => {
return year.toString() + parseInt(quarter).toString();
};
const fromFormat = (format) => {
return `${quarters[parseInt(format.charAt(4)) - 1]} ${format.substring(
0,
4,
)}`;
};
const fromNumericYYYYQ = (yyyyqInt) => {
if (typeof yyyyqInt != "number") {
throw new Error("param should be a number");
}
const yyyyqStr = yyyyqInt.toString();
if (yyyyqStr.length !== 5) {
throw new Error("param should be five digits");
}
const qStr = yyyyqStr.substring(4, 5);
if (!(qStr in qtrNumToQuarter)) {
throw new Error("param should end in 1,2,3 or 4");
}
return yyyyqStr;
};
const toNumericYYYYQ = (yyyyqStr) => {
if (typeof yyyyqStr !== "string") {
throw new Error("param should be a string");
}
if (yyyyqStr.length !== 5) {
throw new Error("param should be five digits");
}
const qStr = yyyyqStr.substring(4, 5);
if (!(qStr in qtrNumToQuarter)) {
throw new Error("param should end in 1,2,3 or 4");
}
return parseInt(yyyyqStr);
};
const nextQuarter = (yyyyqInt) => {
const _yyyyqStr = fromNumericYYYYQ(yyyyqInt); // just for type/format checking
const qInt = yyyyqInt % 10;
const yyyyInt = Math.floor(yyyyqInt / 10);
if (qInt < 4) {
return yyyyqInt + 1;
}
return (yyyyInt + 1) * 10 + 1;
};
const quarterRange = (beginYYYYQStr, endYYYYQStr) => {
let quarterList = [];
const beginYYYYQInt = toNumericYYYYQ(beginYYYYQStr);
const endYYYYQInt = toNumericYYYYQ(endYYYYQStr);
for (
let yyyyqInt = beginYYYYQInt;
yyyyqInt <= endYYYYQInt;
yyyyqInt = nextQuarter(yyyyqInt)
) {
const yyyyqStr = fromNumericYYYYQ(yyyyqInt);
quarterList.push({
yyyyq: yyyyqStr,
qyy: yyyyqToQyy(yyyyqStr),
});
}
return quarterList;
};
export {
fromFormat,
toFormat,
yyyyqToQyy,
fromNumericYYYYQ,
toNumericYYYYQ,
nextQuarter,
quarterRange,
qtrNumToQuarter,
};
|