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 98 99 100 101 102 103 104 | 26x 26x 26x 26x 10243x 26x 8x 8x 8x 26x 1x 26x 4x 26x 19370x 2x 19368x 19368x 2x 19366x 19366x 4x 19362x 26x 712x 1x 711x 1x 710x 710x 2x 708x 26x 9685x 9681x 9681x 9681x 7233x 2448x 26x 352x 352x 352x 352x 352x 9677x 9677x 352x | 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 qyyToYyyyq = (qyy) => { const quarter = shortQuarters.indexOf(qyy.charAt(0).toUpperCase()) + 1; const year = `20${qyy.substring(1, 3)}`; return `${year}${quarter}`; }; 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, qyyToYyyyq, fromNumericYYYYQ, toNumericYYYYQ, nextQuarter, quarterRange, qtrNumToQuarter, }; |