{"version":3,"sources":["webpack:///./node_modules/core-js/internals/engine-ff-version.js","webpack:///./src/components/Form/SelectItem.vue?6912","webpack:///./src/components/Form/SelectItem.vue?8347","webpack:///./src/components/Form/SelectItem.vue","webpack:///./src/components/Form/SelectItem.vue?1a07","webpack:///./src/helpers/date-helper.ts","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/internals/engine-webkit-version.js","webpack:///./src/helpers/mapping-helper.ts","webpack:///./node_modules/dayjs/dayjs.min.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./src/helpers/querystring-helper.ts","webpack:///./src/services/coordinator-service.ts","webpack:///./src/services/course-service.ts","webpack:///./node_modules/core-js/internals/engine-is-ie-or-edge.js"],"names":["userAgent","firefox","match","module","exports","_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","style","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","label","disabled","required","value","onChange","$event","updateValue","target","ref","onInvalid","validityMessage","setValidityMessage","placeholder","placeholderValue","selected","options","includes","option","id","$slots","name","enableReset","icon","title","$t","onClick","resetSelected","helpText","props","type","Array","String","Number","default","Boolean","emits","methods","parseInt","selectedOptionText","this","find","emitAndResetValidityMessage","message","$refs","input","setCustomValidity","$emit","__exports__","DateHelper","dateA","dateB","a","b","isBefore","isAfter","date","format","DateFormat","earlierDate","laterDate","diff","days","result","add","toDate","$","uncurryThis","aCallable","toObject","lengthOfArrayLike","toString","fails","internalSort","arrayMethodIsStrict","FF","IE_OR_EDGE","V8","WEBKIT","test","un$Sort","sort","push","FAILS_ON_UNDEFINED","undefined","FAILS_ON_NULL","STRICT_METHOD","STABLE_SORT","code","chr","index","fromCharCode","k","v","length","charAt","FORCED","getSortCompare","comparefn","x","y","proto","forced","array","itemsLength","items","arrayLength","webkit","MappingHelper","courseOccurrences","map","courseOccurrence","occurrence","titleEn","titleSv","courseStartDate","courseEndDate","status","coordinatorName","studentCount","noteTakerCount","proposedNoteTakersCount","latestNoteTakerOffer","courses","i18nLocale","mappedCourses","course","courseCode","term","personList","detailsViewRoute","links","person","firstName","lastName","t","e","n","r","i","s","u","o","f","h","c","d","l","M","weekdays","split","months","m","join","g","z","utcOffset","Math","abs","floor","year","month","clone","ceil","p","w","D","ms","Q","toLowerCase","replace","_","S","args","arguments","O","locale","$L","utc","$u","$x","$offset","parse","prototype","$d","Date","NaN","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","$g","set","unix","valueOf","getTime","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","round","subtract","invalidDate","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","H","HH","hh","A","mm","ss","SSS","Z","getTimezoneOffset","toJSON","toISOString","toUTCString","T","forEach","extend","$i","isDayjs","en","Ls","$find","addToUnscopables","FIND","SKIPS_HOLES","callbackfn","QuerystringHelper","parameters","queryString","search","sortBy","sortOrder","pageNumber","pageSize","CoordinatorService","functionId","endpointController","parameterName","parameterArgument","getCoordinatorByFunctionId","baseApiUrl","fetch","coordinators","setItem","Coordinators","getItem","getCoordinatorsByFunctionId","CourseService","luEduPersonPrimaryId","endpointRoute","paramName","paramValue","querystring","getCoursesByLuEduPersonPrimaryId","enpointRoute","generateQuerystring","getCourseOccurrences","getCourseOccurrenceById","updateCourseOccurrence","method","headers","body","JSON","stringify","courseOccurrenceId","noteTakerId","parameterName2","parameterArgument2","DeleteNoteTakerFromCourseOccurrence","studentId","paramName2","paramValue2","DeleteStudentFromCourseOccurrence","SendOfferToNoteTaker","offerId","CancelOffer","addStudentToCourseInstance","coordinatorId","generateSearchAndPagingParameters","replacement","NotAvailable","startsWith","MinDateValue","startsWithIsoShortDate","formatDate","isoShortDatePattern","unavailable","grantedSupportDate","selectedCourses","filter","dateAisBeforeDateB","courseUid","completedCourse","UA"],"mappings":"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","file":"assets/js/chunk-a0532434.878fc785.js","sourcesContent":["var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SelectItem.vue?vue&type=style&index=0&id=497603bf&scoped=true&lang=css\"","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, renderSlot as _renderSlot, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-497603bf\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"form-group\" }\nconst _hoisted_2 = { class: \"w-100\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { class: \"d-flex justify-content-start align-items-center\" }\nconst _hoisted_5 = [\"disabled\", \"required\", \"value\", \"aria-label\"]\nconst _hoisted_6 = [\"value\", \"selected\"]\nconst _hoisted_7 = [\"value\", \"selected\"]\nconst _hoisted_8 = {\n key: 0,\n style: {\"margin-left\":\"10px\"}\n}\nconst _hoisted_9 = {\n key: 0,\n class: \"form-text text-muted\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", _hoisted_2, [\n (_ctx.label)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, _toDisplayString(_ctx.label), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", _hoisted_4, [\n _createElementVNode(\"select\", {\n class: \"form-control custom-select\",\n disabled: _ctx.disabled,\n required: _ctx.required,\n value: _ctx.value,\n onChange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.updateValue($event.target.value))),\n \"aria-label\": _ctx.label ? _ctx.label : '',\n ref: \"input\",\n onInvalid: _cache[1] || (_cache[1] = ($event: any) => (\n _ctx.validityMessage ? _ctx.setValidityMessage(_ctx.validityMessage) : null\n ))\n }, [\n (_ctx.placeholder)\n ? (_openBlock(), _createElementBlock(\"option\", {\n key: 0,\n value: _ctx.placeholderValue,\n disabled: \"\",\n selected: !_ctx.options.includes(_ctx.value)\n }, _toDisplayString(_ctx.placeholder), 9, _hoisted_6))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (option) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n key: option.id,\n value: option.id,\n selected: option === _ctx.value\n }, [\n _renderSlot(_ctx.$slots, \"default\", { value: option }, () => [\n _createTextVNode(_toDisplayString(option.name), 1)\n ], true)\n ], 8, _hoisted_7))\n }), 128))\n ], 40, _hoisted_5),\n (_ctx.enableReset)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_8, [\n _createVNode(_component_font_awesome_icon, {\n class: \"icon\",\n icon: 'undo',\n title: _ctx.$t('shared.reset'),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.resetSelected()))\n }, null, 8, [\"title\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n (_ctx.helpText)\n ? (_openBlock(), _createElementBlock(\"small\", _hoisted_9, _toDisplayString(_ctx.helpText), 1))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { Options, Vue } from \"vue-class-component\";\nimport { PropType } from \"@vue/runtime-core\";\nimport { INameAndId } from \"@/interfaces/INameAndId\";\n\n@Options({\n props: {\n /**\n * The select options\n */\n options: {\n type: Array as PropType>,\n required: true,\n },\n /**\n * The value of the current option\n */\n value: {\n type: [String, Number] as PropType,\n required: false,\n },\n /**\n * The name of the current option\n */\n name: {\n type: [String, Number] as PropType,\n required: false,\n },\n /**\n * The label for the select input\n */\n label: {\n type: String as PropType,\n required: false,\n },\n /**\n * The place holder text for the select input\n */\n placeholder: {\n type: String as PropType,\n required: false,\n },\n /**\n * The place holder value for the select input\n */\n placeholderValue: {\n type: String as PropType,\n required: false,\n default: \"\",\n },\n /**\n * The help text for the select input\n */\n helpText: {\n type: String as PropType,\n required: false,\n },\n /**\n * If the select input is disabled\n */\n disabled: {\n type: Boolean as PropType,\n required: false,\n default: false,\n },\n /**\n * If the input is required\n */\n required: {\n type: Boolean as PropType,\n required: false,\n default: false,\n },\n /**\n * Custom validity message\n */\n validityMessage: {\n type: String as PropType,\n required: false,\n },\n /**\n * If set to true, a reset button is displayed beside the select list\n */\n enableReset: {\n type: Boolean as PropType,\n required: false,\n default: false,\n },\n },\n emits: [\"update:value\", \"update:name\", \"selectionChanged\"],\n methods: {\n /**\n * Gets called when the user selects an option\n *\n * @param {string} value The value of the selected option\n */\n updateValue(value: string): void {\n const id = parseInt(value);\n\n const selectedOptionText = this.options.find(\n (option: INameAndId) => option.id === id\n ).name;\n\n this.emitAndResetValidityMessage(id, selectedOptionText);\n },\n /**\n * Sets a custom validity message\n *\n * @param {string} message The message\n */\n setValidityMessage(message: string): void {\n this.$refs.input.setCustomValidity(message);\n },\n /**\n * Resets the selected option to place holder\n */\n resetSelected(): void {\n this.emitAndResetValidityMessage(0, \"\");\n },\n /**\n * Gets called when the user selects an option\n *\n * @param {number} id The value of the selected option\n * @param {string} name The text of the selected option\n */\n emitAndResetValidityMessage(id: number, name: string): void {\n this.$emit(\"update:value\", id);\n this.$emit(\"update:name\", name);\n this.$emit(\"selectionChanged\", { id: id, name: name });\n\n this.setValidityMessage(\"\");\n },\n },\n})\nexport default class SelectItem extends Vue {}\n","import { render } from \"./SelectItem.vue?vue&type=template&id=497603bf&scoped=true&ts=true\"\nimport script from \"./SelectItem.vue?vue&type=script&lang=ts\"\nexport * from \"./SelectItem.vue?vue&type=script&lang=ts\"\n\nimport \"./SelectItem.vue?vue&type=style&index=0&id=497603bf&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\GIT\\\\StudentPortal\\\\student-portal-web\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-497603bf\"]])\n\nexport default __exports__","import dayjs from \"dayjs\";\nimport { Constants } from \"@/constants/constants\";\n\ntype DateType = dayjs.Dayjs | Date | string;\n\nclass DateHelper {\n /*\n * Compared the two dates\n * Returns 0 if the dates are equal\n * Returns -1 if dateA is before dateB\n * Returns 1 if dateA is after dateB\n */\n dateCompareFunction(dateA: DateType, dateB: DateType): -1 | 0 | 1 {\n const a = dayjs(dateA);\n const b = dayjs(dateB);\n if (a.isBefore(b)) return -1;\n if (a.isAfter(b)) return 1;\n return 0;\n }\n\n /*\n * Formats the date to the specific format\n * Defaults to YYYY-MM-DD\n */\n formatDate(date: DateType, format: string = Constants.DateFormat): string {\n return date ? dayjs(date).format(format) : \"\";\n }\n\n /*\n * Returns a boolean value indicating whether dateA is before dateB\n */\n dateAisBeforeDateB(\n dateA: string | DateType,\n dateB: string | DateType\n ): boolean {\n return dayjs(dateA).isBefore(dayjs(dateB));\n }\n\n /*\n * Returns the number of days between the 2 specified dates\n */\n daysBetweenDates(\n earlierDate: string | DateType,\n laterDate: string | DateType\n ): number {\n return dayjs(laterDate).diff(dayjs(earlierDate), \"days\");\n }\n\n /*\n * Adds the number of specified days to the specified date\n */\n addDaysToDate(date: DateType, days: number): Date {\n const result = dayjs(date).add(days, \"day\");\n return dayjs(result).toDate();\n }\n}\n\nexport default new DateHelper();\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = items.length;\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) delete array[index++];\n\n return array;\n }\n});\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","import { Course, CourseOccurrenceBase, Person } from \"@/interfaces/api\";\n\nclass MappingHelper {\n /**\n * Maps an array of full CourseOccurrenceBase objects to an array of partial CourseOccurrenceBase objects\n *\n * @param {Array} courseOccurrences - An array of full CourseOccurrenceBase objects\n *\n * @returns {Array>>} An array of partial CourseOccurrenceBase objects\n */\n mapToPartialCourseOccurrenceOverviewArray(\n courseOccurrences: Array\n ): Array> {\n return courseOccurrences.map((courseOccurrence: CourseOccurrenceBase) => {\n return {\n id: courseOccurrence.id,\n occurrence: courseOccurrence.occurrence,\n titleEn: courseOccurrence.titleEn,\n titleSv: courseOccurrence.titleSv,\n courseStartDate: courseOccurrence.courseStartDate,\n courseEndDate: courseOccurrence.courseEndDate,\n status: courseOccurrence.status,\n coordinatorName: courseOccurrence.coordinatorName,\n studentCount: courseOccurrence.studentCount,\n noteTakerCount: courseOccurrence.noteTakerCount,\n proposedNoteTakersCount: courseOccurrence.proposedNoteTakersCount,\n latestNoteTakerOffer: courseOccurrence.latestNoteTakerOffer,\n };\n });\n }\n\n /*\n * Maps the course array to an array of strings with course code, term and title (acoording to specified locale)\n *\n * @param {Array} courses - An array of full Course objects\n * @param {string} i18nLocale - The value of the locale property of the VueI18n instance\n *\n * @returns {Array} An array of strings with course code, term and title (acoording to specified locale)\n */\n mapCourseOccurrenceAndTitles(\n courses: Array,\n i18nLocale: string\n ): Array {\n const mappedCourses = courses.map((course: Course) =>\n i18nLocale === \"sv\"\n ? `${course.courseCode} ${course.term}: ${course.titleSv}`\n : `${course.courseCode} ${course.term}: ${course.titleEn}`\n );\n return mappedCourses;\n }\n\n /*\n * Maps the person array to an array of strings which are links to the relevant details view\n *\n * @param {Array} personList - An array of Person objects\n * @param {string} detailsViewRoute - The route to the details view\n *\n * @returns {Array} An array of strings which are links to the relevant details view\n */\n mapPersonToDetailViewLinks(\n personList: Array,\n detailsViewRoute: string\n ): Array {\n const links = personList.map((person: Person) => {\n return `${person.firstName} ${person.lastName}`;\n });\n return links;\n }\n}\n\nexport default new MappingHelper();\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",$=\"Invalid Date\",l=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(v=i),i||!r&&v},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t) 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","import { QueryStringParameters } from \"@/interfaces/api\";\n\nclass QuerystringHelper {\n generateSearchAndPagingParameters(parameters: QueryStringParameters): string {\n let queryString = \"\";\n\n if (parameters.search) {\n queryString += `Search=${parameters.search}&`;\n }\n\n queryString += `SortBy=${parameters.sortBy}&`;\n\n queryString += `SortOrder=${parameters.sortOrder}&`;\n\n queryString += `PageNumber=${parameters.pageNumber}&`;\n\n queryString += `PageSize=${parameters.pageSize}`;\n\n return queryString;\n }\n}\n\nexport default new QuerystringHelper();\n","import { SessionStorageKeys } from \"@/constants/constants\";\nimport { CoordinatorBase } from \"@/interfaces/api\";\nimport BaseService from \"@/services/base-service\";\nimport SessionStorageService from \"@/services/sessionstorage-service\";\n\nclass CoordinatorService extends BaseService {\n /**\n * Fetches the coordinators with the specified function id\n *\n * @param {number} functionId - The function id of the coordinators to fetch\n * @returns {Promise} A Promise with the coordinators\n */\n async getCoordinatorsByFunctionId(\n functionId: number\n ): Promise {\n const endpointController = \"Coordinator\";\n const parameterName = \"functionId\";\n const parameterArgument = functionId;\n const getCoordinatorByFunctionId = `${this.baseApiUrl}api/${endpointController}?${parameterName}=${parameterArgument}`;\n\n const coordinators = await this.fetch(\n getCoordinatorByFunctionId\n );\n\n if (coordinators) {\n SessionStorageService.setItem(\n SessionStorageKeys.Coordinators,\n coordinators\n );\n }\n\n return coordinators;\n }\n\n /**\n * Fetches the coordinators with the specified function id from session storage\n * if it exists, otherwise it fetches it from the API and stores it in session storage\n *\n * @param {number} functionId - The function id of the coordinators to fetch\n * @returns {Promise} A Promise with the coordinators\n */\n async getCachedCoordinatorsByFunctionId(\n functionId: number\n ): Promise {\n let coordinators = SessionStorageService.getItem(\n SessionStorageKeys.Coordinators\n );\n\n if (coordinators) {\n return coordinators;\n }\n\n coordinators = await this.getCoordinatorsByFunctionId(functionId);\n return coordinators;\n }\n}\n\nexport default new CoordinatorService();\n","import { Constants } from \"@/constants/constants\";\nimport DateHelper from \"@/helpers/date-helper\";\nimport QuerystringHelper from \"@/helpers/querystring-helper\";\nimport {\n Course,\n CourseOccurrence,\n CourseOccurrenceBase,\n PagedList,\n QueryStringParameters,\n} from \"@/interfaces/api\";\nimport { PersonCourse } from \"@/interfaces/PersonCourse\";\nimport BaseService from \"@/services/base-service\";\n\nclass CourseService extends BaseService {\n /**\n * Fetches all the courses for a person with a specific luEduPersonPrimaryId\n *\n * @param {string} luEduPersonPrimaryId - The luEduPersonPrimaryId of the person\n * @returns {Promise>} A promise with all the courses\n */\n getCoursesByLuEduPersonPrimaryId(\n luEduPersonPrimaryId: string\n ): Promise> {\n const endpointController = \"Course\";\n const endpointRoute = \"luEduPersonPrimaryId\";\n const paramName = \"luEduPersonPrimaryId\";\n const paramValue = luEduPersonPrimaryId;\n const querystring = `${paramName}=${paramValue}`;\n const getCoursesByLuEduPersonPrimaryId = `${this.baseApiUrl}api/${endpointController}/${endpointRoute}?${querystring}`;\n return this.fetch>(getCoursesByLuEduPersonPrimaryId);\n }\n\n /**\n * Fetches all course occurrences according to the specified paging parameters\n *\n * @param {QueryStringParameters} parameters - A Promise with a paged list containing paging data and a list of\n * all the course occurrences sorted according to the specified parameters\n */\n getCourseOccurrences(\n parameters: QueryStringParameters\n ): Promise> {\n const endpointController = \"Course\";\n const enpointRoute = \"courseOccurrences\";\n const queryString = this.generateQuerystring(parameters);\n const getCourseOccurrences = `${this.baseApiUrl}api/${endpointController}/${enpointRoute}${queryString}`;\n return this.fetch>(getCourseOccurrences);\n }\n\n /**\n * Fetches the note taker with the specified id\n *\n * @param {number} id - The id of the note taker to fetch\n * @returns {Promise} A Promise with the note taker\n */\n getCourseOccurrenceById(id: number): Promise {\n const endpointController = \"Course\";\n const enpointRoute = \"courseOccurrenceId\";\n const paramName = \"id\";\n const paramValue = id;\n const getCourseOccurrenceById = `${this.baseApiUrl}api/${endpointController}/${enpointRoute}?${paramName}=${paramValue}`;\n return this.fetch(getCourseOccurrenceById);\n }\n\n /**\n * Updates a course occurrence\n *\n * @param {CourseOccurrence} course - The course to update\n *\n * @returns {Promise} A promise with a boolean value indicating whether or not the operation was successful\n */\n updateCourseOccurrence(course: CourseOccurrence): Promise {\n const endpointController = \"Course\";\n const updateCourseOccurrence = `${this.baseApiUrl}api/${endpointController}`;\n return this.fetch(updateCourseOccurrence, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(course),\n });\n }\n\n deleteNoteTakerFromCourseOccurrence(\n courseOccurrenceId: number,\n noteTakerId: number\n ): Promise {\n const endpointController = \"Course\";\n const endpointRoute = \"courseOccurrences/noteTaker\";\n const parameterName = \"courseOccurrenceId\";\n const parameterArgument = courseOccurrenceId;\n const parameterName2 = \"noteTakerId\";\n const parameterArgument2 = noteTakerId;\n const queryString = `${parameterName}=${parameterArgument}&${parameterName2}=${parameterArgument2}`;\n const DeleteNoteTakerFromCourseOccurrence = `${this.baseApiUrl}api/${endpointController}/${endpointRoute}?${queryString}`;\n return this.fetch(DeleteNoteTakerFromCourseOccurrence, {\n method: \"DELETE\",\n });\n }\n\n deleteStudentFromCourseOccurrence(\n courseOccurrenceId: number,\n studentId: number\n ): Promise {\n const endpointController = \"Course\";\n const endpointRoute = \"courseOccurrences/student\";\n const paramName = \"courseOccurrenceId\";\n const paramValue = courseOccurrenceId;\n const paramName2 = \"studentId\";\n const paramValue2 = studentId;\n const queryString = `${paramName}=${paramValue}&${paramName2}=${paramValue2}`;\n const DeleteStudentFromCourseOccurrence = `${this.baseApiUrl}api/${endpointController}/${endpointRoute}?${queryString}`;\n return this.fetch(DeleteStudentFromCourseOccurrence, {\n method: \"DELETE\",\n });\n }\n\n sendOfferToNoteTaker(\n courseOccurrenceId: number,\n noteTakerId: number\n ): Promise {\n const endpointController = \"Course\";\n const endpointRoute = \"courseOccurrences/offer\";\n const paramName = \"courseOccurrenceId\";\n const paramValue = courseOccurrenceId;\n const paramName2 = \"noteTakerId\";\n const paramValue2 = noteTakerId;\n const queryString = `${paramName}=${paramValue}&${paramName2}=${paramValue2}`;\n const SendOfferToNoteTaker = `${this.baseApiUrl}api/${endpointController}/${endpointRoute}?${queryString}`;\n return this.fetch(SendOfferToNoteTaker, { method: \"POST\" });\n }\n\n cancelOffer(offerId: number): Promise {\n const endpointController = \"Course\";\n const endpointRoute = \"courseOccurrences/offer\";\n const paramName = \"offerId\";\n const paramValue = offerId;\n const CancelOffer = `${this.baseApiUrl}api/${endpointController}/${endpointRoute}?${paramName}=${paramValue}`;\n return this.fetch(CancelOffer, { method: \"DELETE\" });\n }\n\n /**\n * Returns a color based on course occurrence status\n *\n * @param {string} status The status we want a color for\n */\n courseOccurrenceStatusColor(status: string): string {\n switch (status) {\n case \"Green\":\n return \"#3d7d40\";\n case \"Orange\":\n return \"#ef8943\";\n case \"Yellow\":\n return \"#f8dc7b\";\n case \"Red\":\n return \"#c83532\";\n case \"Grey\":\n return \"#909090\";\n default:\n return \"\";\n }\n }\n\n /**\n * Returns a text based on course occurrence status\n *\n * @param {string} status The status we want text for\n */\n courseOccurrenceStatusText(status: string): string {\n return `course-occurrence.statusText.${status}`;\n }\n\n /**\n * Adds student to a course instance\n *\n * @param {number} studentId The id of the student\n * @param {string} courseUid The course Uid of where the student should be added\n * @param {string} facultySv The course's faculty name in Swedish\n * @param {string} occurrence A concatenation of the course code and term\n * @param {string} courseEndDate The course's end date\n *\n * @returns {Promise} A promise with a boolean value indicating whether or not the operation was successful\n */\n addStudentToCourseInstance(\n studentId: number,\n course: Course\n ): Promise {\n const endpointController = \"Course\";\n const endpointRoute = \"courseOccurrences/student\";\n const paramName = \"studentId\";\n const paramValue = studentId;\n const queryString = `${paramName}=${paramValue}`;\n const addStudentToCourseInstance = `${this.baseApiUrl}api/${endpointController}/${endpointRoute}?${queryString}`;\n return this.fetch(addStudentToCourseInstance, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(course),\n });\n }\n\n /**\n * Returns a query string according to the specified filter parameters\n *\n * @param {QueryStringParameters} parameters - The filter/paging parameters to be added to the resource querystring\n * @returns {string} The generated query string\n */\n private generateQuerystring(parameters: QueryStringParameters): string {\n let queryString = \"?\";\n\n queryString += `CoordinatorId=${parameters.coordinatorId}&`;\n\n queryString +=\n QuerystringHelper.generateSearchAndPagingParameters(parameters);\n\n return queryString;\n }\n\n /**\n * Checks if the specified value is \"unavailable\" and if so, replaces it with the specified replacement.\n * This occurs when the backend could not find the course in Ladok\n *\n * Also checks if the value is a date and if so, formats it\n * This is in conjunction with the backend now using a DateTime type for dates instead of a string\n *\n * @param {string} value - The value to check\n * @param {string} replacement - The replacement value\n *\n * @returns {string} The checked string\n */\n replaceUnvailableOrFormatDate(value: string, replacement: string): string {\n if (\n value === Constants.NotAvailable ||\n value.startsWith(Constants.MinDateValue)\n ) {\n value = replacement;\n } else if (this.startsWithIsoShortDate(value)) {\n value = DateHelper.formatDate(value);\n }\n\n return value;\n }\n\n /**\n * Checks if the specified string starts with an ISO short date\n *\n * @param {string} input - The string to check\n *\n * @returns {boolean} Whether the string starts with an ISO short date\n */\n startsWithIsoShortDate(input: string): boolean {\n const isoShortDatePattern = /^\\d{4}-\\d{2}-\\d{2}/;\n return isoShortDatePattern.test(input);\n }\n\n /**\n * Sets the course title to be used as text for tooltip over link to course detail view\n * because just the text \"unavailable\" could be misunderstood to mean the linked view is unavailable\n */\n getCourseTitleTooltipText(title: string, unavailable: string): string {\n return `${title} ${unavailable.toLowerCase()}`;\n }\n\n /**\n * Checks if the granted support date is earlier than any of the selected course start dates\n *\n * @param {Date | string} grantedSupportDate The granted support date\n * @returns {Array} selectedCourses The selected courses\n *\n * @returns {Array} The courses that match the criteria\n */\n checkGrantedSupportDate(\n grantedSupportDate: Date | string,\n selectedCourses: Array\n ): Array {\n if (grantedSupportDate) {\n return selectedCourses.filter((course: PersonCourse) =>\n DateHelper.dateAisBeforeDateB(\n grantedSupportDate,\n course.courseStartDate\n )\n );\n }\n return new Array();\n }\n\n /**\n * Checks whether the course with the specified course Uid has an end date that has passed\n * Used for setting the disabled attribute on the course checkbox\n *\n * @param {string} courseUid The course Uid\n * @param {Array} courses The courses to search\n *\n * @returns {boolean} whether the course has an end date that has passed\n */\n isCompletedCourse(courseUid: string, courses: Array): boolean {\n if (!courses) {\n return false;\n }\n\n const completedCourse = courses.find(\n (course: Course) =>\n course.courseUid.toLowerCase() === courseUid.toLowerCase() &&\n DateHelper.dateAisBeforeDateB(course.courseEndDate, new Date())\n );\n\n return completedCourse != null;\n }\n}\n\nexport default new CourseService();\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n"],"sourceRoot":""}