ahbeng/NUSMods

View on GitHub
website/src/types/mpe.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { ModuleTitle, ModuleCode } from './modules';

export type MpePreference = {
  rank?: number;
  moduleTitle?: ModuleTitle;
  moduleCredits?: number;
  moduleCode: ModuleCode;
  moduleType: '01' | '02' | '03' | '04';
};

export type MpeSubmission = {
  nusExchangeId?: string;
  intendedMCs: number;
  preferences: Array<MpePreference>;
};

export type MpeModule = {
  title: ModuleTitle;
  moduleCode: ModuleCode;
  moduleCredit: string;
  inS1CPEx?: boolean;
  inS2CPEx?: boolean;
};

interface ModuleTypeInfo {
  label: string;
}

export const MODULE_TYPES: Record<MpePreference['moduleType'], ModuleTypeInfo> = {
  '01': {
    label: 'Essential Major',
  },
  '02': {
    label: 'Essential Second Major',
  },
  '03': {
    label: 'Elective',
  },
  '04': {
    label: 'Unrestricted Elective',
  },
};