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 13829x 32x 1x 32x 4x 32x 26484x 2x 26482x 26482x 2x 26480x 26480x 4x 26476x 32x 868x 1x 867x 1x 866x 866x 2x 864x 32x 13242x 13238x 13238x 13238x 9887x 3351x 32x 430x 430x 430x 430x 430x 13234x 13234x 430x | 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, }; |