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 | 34x 34x 34x 34x 23113x 34x 1x 34x 4x 34x 42490x 2x 42488x 42488x 2x 42486x 42486x 4x 42482x 34x 1226x 1x 1225x 1x 1224x 1224x 2x 1222x 34x 21245x 21245x 21245x 21245x 15845x 5396x 34x 609x 609x 609x 609x 609x 21237x 21237x 609x | 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,
};
|