mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-10 03:32:52 +00:00
fix: semster boosting
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
// tslint:disable:no-default-export
|
||||
// tslint:disable:no-magic-numbers
|
||||
import {
|
||||
SCAboutPageContentType,
|
||||
SCConfigFile,
|
||||
@@ -13,21 +11,31 @@ import {readFileSync} from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
/**
|
||||
* Evaluates if a number is within the given range
|
||||
* Generates a range of numbers that represent consecutive calendric months
|
||||
*
|
||||
* @param number_ The number that should be checked
|
||||
* @param range Array of two numbers representing a range (inclusive interval)
|
||||
* @param startMonth The month to start with (inclusive)
|
||||
* @param endMonth The month to end with (inclusive)
|
||||
*/
|
||||
export function inRangeInclusive(number_: number, range: number[]): boolean {
|
||||
return number_ >= range[0] && number_ <= range[1];
|
||||
export function yearSlice(startMonth: number, endMonth: number) {
|
||||
let months = [...Array.from({length: 13}).keys()].slice(1);
|
||||
months = [...months, ...months];
|
||||
if (!months.includes(startMonth) || !months.includes(endMonth)) {
|
||||
throw new Error(`Given months not part of a year! Check ${startMonth} or ${endMonth}!`);
|
||||
}
|
||||
|
||||
const startIndex = months.indexOf(startMonth);
|
||||
const endIndex =
|
||||
months.indexOf(endMonth) <= startIndex ? months.lastIndexOf(endMonth) : months.indexOf(endMonth);
|
||||
|
||||
return months.slice(startIndex, endIndex + 1);
|
||||
}
|
||||
|
||||
const sommerRange = [4, 1];
|
||||
const winterRange = [10, 1];
|
||||
const sommerRange = yearSlice(3, 8);
|
||||
const winterRange = yearSlice(9, 2);
|
||||
const month = new Date().getMonth();
|
||||
const year = new Date().getFullYear();
|
||||
const winterYearOffset = month < winterRange[0] ? -1 : 0;
|
||||
const sommerYear = year + (month <= winterRange[1] ? -1 : 0);
|
||||
const sommerYear = year + (month <= winterRange[winterRange.length] ? -1 : 0);
|
||||
const winterYear = `${year + winterYearOffset}/${(year + 1 + winterYearOffset).toString().slice(-2)}`;
|
||||
|
||||
const wsAcronymShort = `WS ${winterYear}`;
|
||||
@@ -643,10 +651,10 @@ const config: SCConfigFile = {
|
||||
factor: 1,
|
||||
fields: {
|
||||
'academicTerms.acronym': {
|
||||
[ssAcronymShort]: inRangeInclusive(month, sommerRange) ? 1.1 : 1.05,
|
||||
[wsAcronymShort]: inRangeInclusive(month, winterRange) ? 1.1 : 1.05,
|
||||
[ssAcronymLong]: inRangeInclusive(month, sommerRange) ? 1.1 : 1.05,
|
||||
[wsAcronymLong]: inRangeInclusive(month, winterRange) ? 1.1 : 1.05,
|
||||
[ssAcronymShort]: sommerRange.includes(month) ? 1.1 : 1.05,
|
||||
[wsAcronymShort]: winterRange.includes(month) ? 1.1 : 1.05,
|
||||
[ssAcronymLong]: sommerRange.includes(month) ? 1.1 : 1.05,
|
||||
[wsAcronymLong]: winterRange.includes(month) ? 1.1 : 1.05,
|
||||
},
|
||||
},
|
||||
type: SCThingType.AcademicEvent,
|
||||
|
||||
@@ -13,21 +13,21 @@
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import {inRangeInclusive} from '../config/default';
|
||||
import {yearSlice} from '../config/default';
|
||||
import {expect} from 'chai';
|
||||
|
||||
describe('Common', function () {
|
||||
describe('inRangeInclusive', function () {
|
||||
it('should provide true if the given number is in the range', function () {
|
||||
expect(inRangeInclusive(1, [1, 3])).to.be.true;
|
||||
expect(inRangeInclusive(2, [1, 3])).to.be.true;
|
||||
expect(inRangeInclusive(1.1, [1, 3])).to.be.true;
|
||||
expect(inRangeInclusive(3, [1, 3])).to.be.true;
|
||||
describe('yearSlice', function () {
|
||||
it('should provide correct ascending month number ranges', function () {
|
||||
expect(yearSlice(1, 12)).to.eql([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]);
|
||||
});
|
||||
|
||||
it('should provide false if the given number is not in the range', function () {
|
||||
expect(inRangeInclusive(3.1, [1, 3])).to.be.false;
|
||||
expect(inRangeInclusive(0, [1, 3])).to.be.false;
|
||||
it('should provide correct month number ranges for year rollovers', function () {
|
||||
expect(yearSlice(12, 1)).to.eql([12, 1]);
|
||||
});
|
||||
|
||||
it('should provide correct month number ranges for a whole year', function () {
|
||||
expect(yearSlice(12, 12)).to.eql([12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user