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 | 33x 33x 33x 33x 10290x 33x 1x 33x 4x 33x 18908x 2x 18906x 18906x 2x 18904x 18904x 4x 18900x 33x 772x 1x 771x 1x 770x 770x 2x 768x 33x 9454x 9450x 9450x 9450x 7054x 2396x 33x 382x 382x 382x 382x 382x 9446x 9446x 382x | 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, }; |