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 20746x 34x 1x 34x 4x 34x 34564x 2x 34562x 34562x 2x 34560x 34560x 4x 34556x 34x 1066x 1x 1065x 1x 1064x 1064x 2x 1062x 34x 17282x 17282x 17282x 17282x 12894x 4384x 34x 529x 529x 529x 529x 529x 17274x 17274x 529x | 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,
};
|