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 | 32x 32x 32x 32x 10527x 32x 1x 32x 4x 32x 19388x 2x 19386x 19386x 2x 19384x 19384x 4x 19380x 32x 752x 1x 751x 1x 750x 750x 2x 748x 32x 9694x 9690x 9690x 9690x 7239x 2451x 32x 372x 372x 372x 372x 372x 9686x 9686x 372x | 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, }; |