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 13707x 32x 1x 32x 4x 32x 26194x 2x 26192x 26192x 2x 26190x 26190x 4x 26186x 32x 868x 1x 867x 1x 866x 866x 2x 864x 32x 13097x 13093x 13093x 13093x 9779x 3314x 32x 430x 430x 430x 430x 430x 13089x 13089x 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, }; |