{"version":3,"sources":["webpack:///./src/views/administrator/StudentDetails.vue?fae2","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./src/components/NoteTakerDetails/DeleteIcon.vue?3417","webpack:///./src/components/NoteTakerDetails/DeleteIcon.vue","webpack:///./src/components/NoteTakerDetails/DeleteIcon.vue?1b36","webpack:///./src/components/Form/TextArea.vue?0a70","webpack:///./src/components/Form/TextArea.vue","webpack:///./src/components/Form/TextArea.vue?0b44","webpack:///./src/views/administrator/StudentDetails.vue","webpack:///./src/views/administrator/StudentDetails.vue?1ef3","webpack:///./src/components/Form/CheckboxInput.vue?2387","webpack:///./src/components/Form/CheckboxInput.vue","webpack:///./src/components/Form/CheckboxInput.vue?0481","webpack:///./src/views/administrator/StudentDetails.vue?d6a6","webpack:///./node_modules/core-js/modules/es.object.entries.js","webpack:///./src/interfaces/api.ts","webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./src/components/NoteTakerDetails/DeleteIcon.vue?733c","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./src/helpers/array-helper.ts","webpack:///./src/components/Form/RadioButtonGroup.vue?6a61","webpack:///./src/components/Form/RadioButtonGroup.vue","webpack:///./src/components/Form/RadioButtonGroup.vue?bb43"],"names":["n","_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","render","_ctx","_cache","$props","$setup","$data","$options","_component_DetailsHeader","_component_router_link","_component_CheckboxInput","_component_Badge","_component_Tooltip","_component_Table","_component_DetailsRow","_component_PersonDetails","title","$t","onBack","$event","navigateToOverview","onPrevious","navigateToStudent","previousStudentId","onNext","nextStudentId","isActiveNoteTaker","innerHTML","showNameMsg","to","name","params","id","noteTakerId","default","_","student","person","coordinator","functionId","this","showCoordinator","showEditButton","requiredCoordinator","updateOnChange","supportCourseOccurrencesFlat","saveButtonDisabled","hasLaterStartDates","onEditEnable","edit","onCancelEdit","cancel","onSaveEdit","save","onNewCoordinator","updateStudent","caption","laterStartDateText","rows","supportCourseRows","hiddenColumns","hiddenSupportCourseColumns","ascending","sortColumn","onSortChanged","onSortChange","td","data","col","checked","row","courseUid","getTitle","disabled","editEnable","courseOccurrenceStart","isCompletedCourse","onUpdate","value","text","statusBgText","val","bgColor","statusBgColor","rounded","backgroundColor","isCourseWithLaterStartDate","getCourseTitle","titleSv","titleEn","tooltipBgColor","courseOccurrenceId","replaceUnvailableOrFormatDate","_arrayWithHoles","arr","Array","isArray","_iterableToArrayLimit","i","_i","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","done","push","length","err","_nonIterableRest","TypeError","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_component_font_awesome_icon","icon","iconName","onClick","confirmDelete","index","props","indexToDelete","type","Number","required","items","itemText","String","itemTypeName","itemTextSubstringLength","methods","item","substring","confirmMsg","confirm","splice","__exports__","label","readonly","cols","placeholder","maxlength","onInput","updateValue","target","ariaLabel","ref","onInvalid","validityMessage","setValidityMessage","helpText","undefined","Boolean","$emit","message","$refs","input","setCustomValidity","components","DetailsHeader","DetailsRow","Table","DeleteIcon","CheckboxInput","RadioButtonGroup","TextArea","PersonDetails","Badge","Tooltip","newCheckedSupportCourseOccurrences","newUncheckedSupportCourseOccurrences","currentStudentId","NoteTakingFunctionId","supportCourseOccurrencesFlatCopy","coursesWithLaterStartDate","computed","supportCourseOccurrences","sortByProperty","hidden","allStudentIds","filteredStudentIds","getItem","FilteredStudentIds","currentIdIndex","indexOf","nextIdIndex","slice","previousIdIndex","grantedSupportDate","selectedCourses","selected","Object","entries","forEach","course","find","x","supportCourses","map","checkGrantedSupportDate","assign","getStudent","getCourseIdByUid","courseInstance","status","courseOccurrenceStatusColor","statusTextColor","courseOccurrenceStatusText","columnName","setItem","StudentTableUserPagingData","generateUserPagingData","sortCourseOccurrences","userPagingData","sortOrder","Asc","Desc","getUsersPagingData","$route","parseInt","getStudentById","then","supportCourseOccurrence","active","assignmentStart","assignmentEnd","catch","e","console","error","addOrUpdateStudent","$router","NotAvailable","getCourseTitleTooltipText","$i18n","locale","filter","dateAisBeforeDateB","onCourseCheckedChanged","localeKey","msg","full_name","firstName","lastName","resetSelectedCourses","courses","foundCourse","toLowerCase","courseStartDate","courseEndDate","mounted","localstorageLang","$root","unmounted","watch","fieldId","onChange","style","cursor","for","emits","isChecked","$","$entries","stat","O","CourseOccurrenceStatus","FeeDataExportType","Locale","NoteTakerStatus","SortOrder","DESCRIPTORS","uncurryThis","objectKeys","toIndexedObject","$propertyIsEnumerable","f","propertyIsEnumerable","createMethod","TO_ENTRIES","it","keys","result","module","exports","values","global","toAbsoluteIndex","toIntegerOrInfinity","lengthOfArrayLike","toObject","arraySpeciesCreate","createProperty","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","max","Math","min","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","proto","forced","start","deleteCount","insertCount","actualDeleteCount","A","k","from","len","actualStart","argumentsLength","arguments","ArrayHelper","array","propName","sortAscending","sort","a","b","propA","propB","reverse","verticalLayout","showFieldset","showTitle","ref_for","$slots"],"mappings":"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","file":"assets/js/chunk-cacb5baa.7ca5a2b2.js","sourcesContent":["import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eb503a98\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"container w-75\" }\nconst _hoisted_2 = { class: \"card\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"active-note-taker\"\n}\nconst _hoisted_4 = { class: \"alert-msg\" }\nconst _hoisted_5 = [\"innerHTML\"]\nconst _hoisted_6 = {\n key: 1,\n class: \"form-container\"\n}\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { class: \"alert-msg\" }\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = { key: 1 }\nconst _hoisted_11 = { key: 2 }\nconst _hoisted_12 = { key: 3 }\nconst _hoisted_13 = { key: 4 }\nconst _hoisted_14 = { key: 0 }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \" \", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_DetailsHeader = _resolveComponent(\"DetailsHeader\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_CheckboxInput = _resolveComponent(\"CheckboxInput\")!\n const _component_Badge = _resolveComponent(\"Badge\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_Table = _resolveComponent(\"Table\")!\n const _component_DetailsRow = _resolveComponent(\"DetailsRow\")!\n const _component_PersonDetails = _resolveComponent(\"PersonDetails\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_DetailsHeader, {\n title: _ctx.$t('shared.routes.student-details'),\n onBack: _cache[0] || (_cache[0] = ($event: any) => (_ctx.navigateToOverview())),\n onPrevious: _cache[1] || (_cache[1] = ($event: any) => (_ctx.navigateToStudent(_ctx.previousStudentId))),\n onNext: _cache[2] || (_cache[2] = ($event: any) => (_ctx.navigateToStudent(_ctx.nextStudentId)))\n }, null, 8, [\"title\"]),\n _createElementVNode(\"form\", _hoisted_2, [\n (_ctx.isActiveNoteTaker)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", {\n innerHTML: _ctx.showNameMsg('student-details.activeNoteTaker')\n }, null, 8, _hoisted_5),\n _createVNode(_component_router_link, {\n to: {\n name: 'NoteTakerDetails',\n params: { id: _ctx.noteTakerId },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"shared.routes.note-taker-details\")), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.student !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_component_PersonDetails, {\n person: _ctx.student,\n coordinator: _ctx.student.coordinator,\n functionId: this.functionId,\n showCoordinator: true,\n showEditButton: !_ctx.isActiveNoteTaker,\n requiredCoordinator: false,\n updateOnChange: _ctx.supportCourseOccurrencesFlat,\n saveButtonDisabled: _ctx.hasLaterStartDates,\n onEditEnable: _ctx.edit,\n onCancelEdit: _ctx.cancel,\n onSaveEdit: _ctx.save,\n onNewCoordinator: _ctx.updateStudent\n }, {\n default: _withCtx(() => [\n _createVNode(_component_DetailsRow, { caption: \"shared.courses\" }, {\n default: _withCtx(() => [\n (_ctx.hasLaterStartDates)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", _hoisted_8, _toDisplayString(_ctx.laterStartDateText), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Table, {\n rows: _ctx.supportCourseRows,\n hiddenColumns: _ctx.hiddenSupportCourseColumns,\n ascending: _ctx.ascending,\n \"onUpdate:ascending\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.ascending) = $event)),\n sortColumn: _ctx.sortColumn,\n \"onUpdate:sortColumn\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.sortColumn) = $event)),\n onSortChanged: _ctx.onSortChange\n }, {\n td: _withCtx((data) => [\n (data.col === 'courseOccurrenceId')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(_ctx.$t(\"course-occurrence.support\")), 1))\n : _createCommentVNode(\"\", true),\n (data.col === 'status')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_10, _toDisplayString(_ctx.$t(\"course-occurrence.status\")), 1))\n : (data.col === 'occurrence')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_ctx.$t(\"course-occurrence.occurrence\")), 1))\n : (data.col === 'courseOccurrenceStart')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_12, _toDisplayString(_ctx.$t(\"course-occurrence.courseStartDate\")) + \" \" + _toDisplayString(_ctx.$t(\"course-occurrence.abbreviation\")), 1))\n : (data.col === 'coordinatorName')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_13, _toDisplayString(_ctx.$t(\"course-occurrence.coordinatorName\")), 1))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx((data) => [\n (data.col === 'courseOccurrenceId')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_14, [\n _createVNode(_component_CheckboxInput, {\n class: \"pb-3 ml-1\",\n checked: _ctx.supportCourseOccurrencesFlat[data.row.courseUid],\n title: _ctx.getTitle(data.row.courseUid),\n disabled: \n !_ctx.editEnable ||\n data.row.courseOccurrenceStart ===\n '0001-01-01T00:00:00' ||\n _ctx.isCompletedCourse(data.row.courseUid)\n ,\n onUpdate: \n (value) =>\n (_ctx.supportCourseOccurrencesFlat[data.row.courseUid] =\n value)\n \n }, null, 8, [\"checked\", \"title\", \"disabled\", \"onUpdate\"])\n ]))\n : _createCommentVNode(\"\", true),\n (data.col === 'status')\n ? (_openBlock(), _createBlock(_component_Tooltip, {\n key: 1,\n text: _ctx.statusBgText(data.val),\n bgColor: _ctx.statusBgColor(data.val)\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Badge, {\n rounded: true,\n backgroundColor: _ctx.statusBgColor(data.val)\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 2\n }, 1032, [\"backgroundColor\"])\n ]),\n _: 2\n }, 1032, [\"text\", \"bgColor\"]))\n : _createCommentVNode(\"\", true),\n (data.col === 'occurrence')\n ? (_openBlock(), _createBlock(_component_Tooltip, {\n key: 2,\n class: _normalizeClass(\n _ctx.isCourseWithLaterStartDate(data.row.courseUid)\n ? 'highlighted-course'\n : ''\n ),\n text: _ctx.getCourseTitle(data.row.titleSv, data.row.titleEn),\n bgColor: _ctx.tooltipBgColor\n }, {\n default: _withCtx(() => [\n (data.row.courseOccurrenceId !== 0)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: {\n name: 'CourseOccurrenceDetails',\n params: {\n id: data.row.courseOccurrenceId,\n },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(data.val), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]))\n : (_openBlock(), _createElementBlock(\"span\", {\n key: 1,\n class: _normalizeClass(\n _ctx.isCourseWithLaterStartDate(data.row.courseUid)\n ? 'highlighted-course'\n : ''\n )\n }, _toDisplayString(data.val), 3))\n ]),\n _: 2\n }, 1032, [\"class\", \"text\", \"bgColor\"]))\n : _createCommentVNode(\"\", true),\n (data.col === 'courseOccurrenceStart' && data.val)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 3,\n class: _normalizeClass(\n _ctx.isCourseWithLaterStartDate(data.row.courseUid)\n ? 'highlighted-course'\n : ''\n )\n }, _toDisplayString(_ctx.replaceUnvailableOrFormatDate(data.val)), 3))\n : _createCommentVNode(\"\", true),\n (data.col === 'coordinatorName')\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 4,\n class: _normalizeClass(\n _ctx.isCourseWithLaterStartDate(data.row.courseUid)\n ? 'highlighted-course'\n : ''\n )\n }, _toDisplayString(data.val), 3))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"rows\", \"hiddenColumns\", \"ascending\", \"sortColumn\", \"onSortChanged\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"person\", \"coordinator\", \"functionId\", \"showEditButton\", \"updateOnChange\", \"saveButtonDisabled\", \"onEditEnable\", \"onCancelEdit\", \"onSaveEdit\", \"onNewCoordinator\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\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(), _createBlock(_component_font_awesome_icon, {\n icon: _ctx.iconName,\n title: _ctx.$t('shared.delete'),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.confirmDelete(this.index))),\n class: \"delete-icon\"\n }, null, 8, [\"icon\", \"title\"]))\n}","\nimport { PropType } from \"@vue/runtime-core\";\nimport { Options, Vue } from \"vue-class-component\";\n\n@Options({\n props: {\n /**\n * The index of the array item to delete\n */\n indexToDelete: {\n type: Number as PropType,\n required: true,\n },\n /**\n * The array of items to delete from\n */\n items: {\n type: Array,\n required: true,\n },\n /**\n * The text of the array item to delete - used in the confirm dialog\n */\n itemText: {\n type: String as PropType,\n required: true,\n },\n /**\n * The type of the array item to delete - used in the confirm dialog\n */\n itemTypeName: {\n type: String as PropType,\n required: true,\n },\n /**\n * The substring length of the text of the array item to delete to display in the confirm dialog\n */\n itemTextSubstringLength: {\n type: Number as PropType,\n required: true,\n },\n /**\n * The font awesome icon name\n */\n iconName: {\n type: String as PropType,\n required: false,\n default: \"trash-alt\",\n },\n },\n methods: {\n confirmDelete(): void {\n const item = `${this.itemTypeName}: ${this.itemText.substring(\n 0,\n this.itemTextSubstringLength\n )} ...`;\n\n const confirmMsg = this.$t(\"shared.confirm-delete-thing\", { item: item });\n\n if (confirm(confirmMsg)) {\n this.items.splice(this.indexToDelete, 1);\n }\n },\n },\n})\nexport default class DeleteIcon extends Vue {}\n","import { render } from \"./DeleteIcon.vue?vue&type=template&id=b7c48bb2&scoped=true&ts=true\"\nimport script from \"./DeleteIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./DeleteIcon.vue?vue&type=script&lang=ts\"\n\nimport \"./DeleteIcon.vue?vue&type=style&index=0&id=b7c48bb2&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-b7c48bb2\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"form-group\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"w-100\"\n}\nconst _hoisted_3 = [\"rows\", \"cols\", \"value\", \"placeholder\", \"disabled\", \"readonly\", \"required\", \"maxlength\", \"aria-label\"]\nconst _hoisted_4 = {\n key: 1,\n class: \"form-text text-muted\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.label)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_2, _toDisplayString(_ctx.label), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"textarea\", {\n class: _normalizeClass(_ctx.readonly ? 'form-control-plaintext' : 'form-control'),\n rows: _ctx.rows,\n cols: _ctx.cols,\n value: _ctx.value,\n placeholder: _ctx.placeholder,\n disabled: _ctx.disabled,\n readonly: _ctx.readonly,\n required: _ctx.required,\n maxlength: _ctx.maxlength,\n onInput: _cache[0] || (_cache[0] = ($event: any) => (_ctx.updateValue($event.target.value))),\n \"aria-label\": _ctx.ariaLabel,\n ref: \"input\",\n onInvalid: _cache[1] || (_cache[1] = ($event: any) => (_ctx.validityMessage ? _ctx.setValidityMessage(_ctx.validityMessage) : null))\n }, \"\\n \", 42, _hoisted_3),\n (_ctx.helpText)\n ? (_openBlock(), _createElementBlock(\"small\", _hoisted_4, _toDisplayString(_ctx.helpText), 1))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { PropType } from \"@vue/runtime-core\";\nimport { Options, Vue } from \"vue-class-component\";\n\n@Options({\n props: {\n value: {\n type: String as PropType,\n required: true,\n },\n ariaLabel: {\n type: String as PropType,\n required: true,\n },\n label: {\n type: String as PropType,\n required: false,\n },\n placeholder: {\n type: String as PropType,\n required: false,\n },\n rows: {\n type: Number as PropType,\n required: false,\n default: 4,\n },\n cols: {\n type: Number as PropType,\n required: false,\n default: 40,\n },\n maxlength: {\n type: Number as PropType,\n required: false,\n default: undefined, // omit this attribute if no value is supplied\n },\n disabled: {\n type: Boolean as PropType,\n required: false,\n default: false,\n },\n readonly: {\n type: Boolean as PropType,\n required: false,\n default: false,\n },\n helpText: {\n type: String as PropType,\n required: false,\n },\n /**\n * Custom validity message\n */\n validityMessage: {\n type: String as PropType,\n required: 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 methods: {\n /**\n * Gets called when the user updates value\n *\n * @param {string} value The value\n */\n updateValue(value: string): void {\n this.setValidityMessage(\"\");\n this.$emit(\"update:value\", value);\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})\nexport default class TextArea extends Vue {}\n","import { render } from \"./TextArea.vue?vue&type=template&id=3a12e98c&ts=true\"\nimport script from \"./TextArea.vue?vue&type=script&lang=ts\"\nexport * from \"./TextArea.vue?vue&type=script&lang=ts\"\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]])\n\nexport default __exports__","\nimport { Options, Vue } from \"vue-class-component\";\nimport PersonDetails from \"@/components/PersonDetails.vue\";\nimport DetailsHeader from \"@/components/DetailsHeader.vue\";\nimport DetailsRow from \"@/components/DetailsRow.vue\";\nimport Table from \"@/components/Table.vue\";\nimport Tooltip from \"@/components/Tooltip.vue\";\nimport Badge from \"@/components/Badge.vue\";\nimport DeleteIcon from \"@/components/NoteTakerDetails/DeleteIcon.vue\";\nimport CheckboxInput from \"@/components/Form/CheckboxInput.vue\";\nimport RadioButtonGroup from \"@/components/Form/RadioButtonGroup.vue\";\nimport TextArea from \"@/components/Form/TextArea.vue\";\nimport StudentService from \"@/services/student-service\";\nimport LocalStorageService from \"@/services/localstorage-service\";\nimport CourseService from \"@/services/course-service\";\nimport {\n Course,\n PersonResponse,\n SortOrder,\n Student,\n SupportCourseOccurrence,\n} from \"@/interfaces/api\";\nimport { Constants } from \"@/constants/constants\";\nimport DateHelper from \"@/helpers/date-helper\";\nimport ArrayHelper from \"@/helpers/array-helper\";\nimport { IUserPagingData } from \"@/interfaces/IUserPagingData\";\n\n@Options({\n components: {\n DetailsHeader,\n DetailsRow,\n Table,\n DeleteIcon,\n CheckboxInput,\n RadioButtonGroup,\n TextArea,\n PersonDetails,\n Badge,\n Tooltip,\n },\n data: () => ({\n /*\n * Holds the checked support course instances\n */\n newCheckedSupportCourseOccurrences: [],\n /*\n * Holds the unchecked support course instances\n */\n newUncheckedSupportCourseOccurrences: [],\n /*\n * Holds the emited boolean value from PersonDetails\n */\n editEnable: false,\n /*\n * Holds the id of the student and is populated from the route's id parameter when the page loads\n */\n currentStudentId: 0,\n /*\n * Holds the student data and is populated by a call to the student service when the page loads\n */\n student: null,\n /**\n * Required if showCoordinator\n * The functionId to fetch coordinators from\n */\n functionId: Constants.NoteTakingFunctionId,\n /*\n * The background color for the tooltip when mousing over course occurrence\n */\n tooltipBgColor: \"#875E29\",\n /**\n * The current sort column\n */\n sortColumn: \"courseOccurrenceStart\",\n /**\n * If sort order is ascending\n */\n ascending: true,\n /**\n * Holds the help state of supportCourseOccurrences\n */\n supportCourseOccurrencesFlat: {},\n /**\n * Holds the copy of help state of supportCourseOccurrences\n */\n supportCourseOccurrencesFlatCopy: null,\n /**\n * Holds the course occurrence id\n */\n courseOccurrenceId: 0,\n /**\n * Populated with student courses which have a start date later than the granted support date\n */\n coursesWithLaterStartDate: new Array(),\n /**\n * If the student is an active note-taker\n */\n isActiveNoteTaker: false,\n /**\n * The id of the active note-taker\n */\n noteTakerId: 0,\n }),\n computed: {\n /**\n * Get student support course occurrences\n */\n supportCourseRows() {\n const student: Student = this.student;\n const supportCourseOccurrences =\n student.supportCourseOccurrences as SupportCourseOccurrence[];\n ArrayHelper.sortByProperty(\n supportCourseOccurrences,\n this.sortColumn,\n this.ascending\n );\n return supportCourseOccurrences;\n },\n /**\n * Hides all unwanted columns\n */\n hiddenSupportCourseColumns() {\n const hidden = [\n \"titleEn\",\n \"titleSv\",\n \"courseUid\",\n \"offerDate\",\n \"assignmentStart\",\n \"assignmentEnd\",\n \"offerConfirmedDate\",\n \"deletedByAdmin\",\n ];\n return hidden;\n },\n /*\n * Used by the previous/next button logic\n */\n allStudentIds() {\n const filteredStudentIds = LocalStorageService.getItem(\n Constants.FilteredStudentIds\n );\n return filteredStudentIds;\n },\n\n /*\n * The id of the student to load when the next button is clicked\n */\n nextStudentId() {\n const currentIdIndex = this.allStudentIds.indexOf(this.currentStudentId);\n let nextIdIndex = currentIdIndex + 1;\n if (nextIdIndex >= this.allStudentIds.length) {\n nextIdIndex = 0;\n }\n return this.allStudentIds.slice(nextIdIndex, nextIdIndex + 1)[0];\n },\n /*\n * The id of the student to load when the previous button is clicked\n */\n previousStudentId() {\n const currentIdIndex = this.allStudentIds.indexOf(this.currentStudentId);\n let previousIdIndex = currentIdIndex - 1;\n if (previousIdIndex < 0) {\n previousIdIndex = this.allStudentIds.length - 1;\n }\n return this.allStudentIds.slice(previousIdIndex, previousIdIndex + 1)[0];\n },\n /**\n * The date that the student is granted support until\n */\n grantedSupportDate(): string {\n return this.student ? this.student.grantedSupportDate : null;\n },\n /**\n * Indicates if the granted support date is earlier than any of the selected course start dates\n */\n hasLaterStartDates(): boolean {\n return this.coursesWithLaterStartDate.length > 0;\n },\n /**\n * The text displayed to the user if the granted support date is earlier than any of the selected course start dates\n */\n laterStartDateText(): string {\n return this.$t(\"add-student.later-start-date\");\n },\n /*\n * Selected courses\n */\n selectedCourses(): Array {\n const selected = new Array();\n Object.entries(this.supportCourseOccurrencesFlat).forEach(\n ([key, value]) => {\n if (value) {\n const course = this.supportCourseRows.find(\n (x: SupportCourseOccurrence) => x.courseUid === key\n );\n if (course) {\n selected.push(course);\n }\n }\n }\n );\n if (this.student && this.student.supportCourses) {\n this.student.supportCourses = selected.map(\n (course: SupportCourseOccurrence) => {\n return {\n courseUid: course.courseUid,\n courseOccurrenceId: course.courseOccurrenceId,\n };\n }\n );\n }\n return selected;\n },\n },\n methods: {\n /*\n * Enables edit to activate checkboxes\n */\n edit() {\n this.editEnable = true;\n this.supportCourseOccurrencesFlatCopy = {\n ...this.supportCourseOccurrencesFlat,\n };\n },\n /*\n * Cancels edit to disable checkboxes\n */\n cancel() {\n this.checkGrantedSupportDate();\n this.editEnable = false;\n Object.assign(\n this.supportCourseOccurrencesFlat,\n this.supportCourseOccurrencesFlatCopy\n );\n this.supportCourseOccurrencesFlatCopy = null;\n },\n /*\n * Save edit\n */\n save() {\n this.getStudent();\n this.editEnable = false;\n },\n /*\n * Get course Id for the given course Uid\n */\n getCourseIdByUid(courseUid: string): number | undefined {\n const student = this.student as Student;\n const courseInstance = student.supportCourseOccurrences?.find(\n (courseInstance) => {\n return courseInstance.courseUid == courseUid;\n }\n );\n return courseInstance?.courseOccurrenceId;\n },\n /**\n * Returns a color based on status\n *\n * @param {string} status The status we want a color for\n */\n statusBgColor(status: string): string {\n return CourseService.courseOccurrenceStatusColor(status);\n },\n /**\n * Returns a color based on status\n *\n * @param {string} status The status we want a color for\n */\n statusTextColor(status: string): string {\n return status === \"Yellow\" ? \"black\" : \"white\";\n },\n /**\n * Returns a text based on status\n *\n * @param {string} status The status we want a tooltip text for\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n statusBgText(status: string): string {\n return this.$t(CourseService.courseOccurrenceStatusText(status));\n },\n /**\n * Triggered when the user changes the sort column/order of the course table\n */\n onSortChange(columnName: string, ascending: boolean): void {\n this.sortColumn = columnName;\n this.ascending = ascending;\n LocalStorageService.setItem(\n Constants.StudentTableUserPagingData,\n this.generateUserPagingData()\n );\n this.sortCourseOccurrences();\n },\n /**\n * Triggered when the user changes the sort column/order of the course table\n */\n sortCourseOccurrences(): void {\n ArrayHelper.sortByProperty(\n this.supportCourseRows,\n this.sortColumn,\n this.ascending\n );\n },\n /**\n * Generates user paging data to be saved to local storage\n */\n generateUserPagingData(): Partial {\n const userPagingData: Partial = {\n sortColumn: this.sortColumn,\n sortOrder: this.ascending ? SortOrder.Asc : SortOrder.Desc,\n };\n\n return userPagingData;\n },\n /**\n * Gets the user's paging data that has been saved to local storage\n */\n getUsersPagingData(): void {\n const userPagingData = LocalStorageService.getItem<\n Partial\n >(Constants.StudentTableUserPagingData);\n\n if (userPagingData) {\n this.sortColumn = userPagingData.sortColumn;\n this.ascending = userPagingData.sortOrder === SortOrder.Asc;\n }\n },\n /**\n * Fetches the student with the id from route parameter\n */\n getStudent(): void {\n if (this.$route.name === \"StudentDetails\" && this.$route.params.id) {\n this.currentStudentId = parseInt(this.$route.params.id);\n StudentService.getStudentById(this.currentStudentId)\n .then((data: PersonResponse) => {\n this.student = data.student;\n this.isActiveNoteTaker = data.isActiveNoteTaker;\n this.noteTakerId = data.noteTakerId;\n data.student?.supportCourseOccurrences?.forEach(\n (supportCourseOccurrence) => {\n const active =\n supportCourseOccurrence.assignmentStart !== null &&\n supportCourseOccurrence.assignmentEnd === null;\n if (\n !this.supportCourseOccurrencesFlat[\n supportCourseOccurrence.courseUid\n ]\n ) {\n this.supportCourseOccurrencesFlat[\n supportCourseOccurrence.courseUid\n ] = active;\n }\n }\n );\n })\n .catch((e: Error) => {\n console.error(e);\n });\n }\n },\n /*\n * Changes and saves coordiantor to student\n */\n updateStudent(): void {\n StudentService.addOrUpdateStudent(this.student);\n },\n /*\n * Navigates to a student with the specified id\n * Called from the next/previous button click\n */\n navigateToStudent(id: number): void {\n this.$router.push({\n name: \"StudentDetails\",\n params: { id: id },\n });\n },\n navigateToOverview(): void {\n this.$router.push({\n name: \"StudentList\",\n });\n },\n /**\n * Checks if the specified value is unavailable and if so,\n * replaces it with the the unavailable translation for the current locale\n * Also checks if the value is a date and if so, formats it to YYYY-MM-DD\n */\n replaceUnvailableOrFormatDate(value: string): string {\n return CourseService.replaceUnvailableOrFormatDate(\n value,\n this.$t(\"course-occurrence.unavailable\")\n );\n },\n /**\n * Sets the course title to be used as text for tooltip over link to course detail\n */\n getCourseTitle(titleSv: string, titleEn: string): string {\n if (titleSv === Constants.NotAvailable) {\n return CourseService.getCourseTitleTooltipText(\n this.$t(\"course-occurrence.title\"),\n this.$t(\"course-occurrence.unavailable\")\n );\n }\n\n return this.$i18n.locale === \"sv\" ? titleSv : titleEn;\n },\n /**\n * Checks if the granted support date is earlier than any of the selected course start dates\n */\n checkGrantedSupportDate(): void {\n if (this.editEnable && this.grantedSupportDate) {\n this.coursesWithLaterStartDate = this.selectedCourses.filter(\n (course: SupportCourseOccurrence) =>\n DateHelper.dateAisBeforeDateB(\n this.grantedSupportDate,\n course.courseOccurrenceStart as string\n )\n );\n }\n },\n /**\n * Checks if the speified course has a later date than the granted support date\n * Used to highlight the course in the GUI\n */\n isCourseWithLaterStartDate(courseUid: string): boolean {\n return (\n this.coursesWithLaterStartDate.find(\n (x: SupportCourseOccurrence) => x.courseUid === courseUid\n ) !== undefined\n );\n },\n /**\n * Regulates the coursesWithLaterStartDate array\n */\n onCourseCheckedChanged(): void {\n this.checkGrantedSupportDate();\n },\n /*\n * The message displayed in the GUI if the person's name is to be used\n */\n showNameMsg(localeKey: string): string {\n const msg = this.$t(localeKey, {\n full_name: `${this.student.firstName} ${this.student.lastName}`,\n });\n return msg;\n },\n /**\n * Resets the selected courses\n */\n resetSelectedCourses(): void {\n this.supportCourseOccurrencesFlat = {};\n this.selectedCourses = new Array();\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 * @returns {boolean} whether the course has an end date that has passed\n */\n isCompletedCourse(courseUid: string): boolean {\n return CourseService.isCompletedCourse(courseUid, this.student.courses);\n },\n /**\n * Gets a title attribute value for the course checkbox\n *\n * @param {string} courseUid The course Uid\n * @returns {boolean} A string containing the course's start and end dates\n */\n getTitle(courseUid: string): string {\n if (!this.student.courses) {\n return \"\";\n }\n\n const foundCourse = this.student.courses.find(\n (course: Course) =>\n course.courseUid.toLowerCase() === courseUid.toLowerCase()\n );\n\n if (!foundCourse) {\n return \"\";\n }\n\n return `${this.$t(\"course-occurrence.courseStartDate\")}: ${\n foundCourse.courseStartDate\n } | ${this.$t(\"course-occurrence.courseEndDate\")}: ${\n foundCourse.courseEndDate\n }`;\n },\n },\n mounted() {\n this.getUsersPagingData();\n this.getStudent();\n const localstorageLang = LocalStorageService.getItem(\"language\");\n this.$root.$i18n.locale = localstorageLang;\n },\n unmounted() {\n this.resetSelectedCourses();\n },\n watch: {\n $route() {\n this.resetSelectedCourses();\n this.getStudent();\n },\n selectedCourses() {\n this.onCourseCheckedChanged();\n },\n grantedSupportDate() {\n this.checkGrantedSupportDate();\n },\n },\n})\nexport default class StudentDetails extends Vue {}\n","import { render } from \"./StudentDetails.vue?vue&type=template&id=eb503a98&scoped=true&ts=true\"\nimport script from \"./StudentDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./StudentDetails.vue?vue&type=script&lang=ts\"\n\nimport \"./StudentDetails.vue?vue&type=style&index=0&id=eb503a98&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-eb503a98\"]])\n\nexport default __exports__","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"form-group form-check\" }\nconst _hoisted_2 = [\"aria-label\", \"id\", \"checked\", \"disabled\", \"required\"]\nconst _hoisted_3 = [\"for\"]\nconst _hoisted_4 = {\n key: 1,\n class: \"form-text text-muted\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n class: \"form-check-input\",\n \"aria-label\": _ctx.ariaLabel,\n id: _ctx.fieldId,\n checked: _ctx.checked,\n disabled: _ctx.disabled,\n required: _ctx.required,\n onChange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onUpdate($event.target.checked))),\n style: _normalizeStyle({ cursor: _ctx.disabled ? 'not-allowed' : 'pointer' }),\n ref: \"input\",\n onInvalid: _cache[1] || (_cache[1] = ($event: any) => (_ctx.validityMessage ? _ctx.setValidityMessage(_ctx.validityMessage) : null))\n }, null, 44, _hoisted_2),\n (_ctx.label)\n ? (_openBlock(), _createElementBlock(\"label\", {\n key: 0,\n class: \"form-check-label\",\n for: _ctx.fieldId\n }, _toDisplayString(_ctx.label), 9, _hoisted_3))\n : _createCommentVNode(\"\", true),\n (_ctx.helpText)\n ? (_openBlock(), _createElementBlock(\"small\", _hoisted_4, _toDisplayString(_ctx.helpText), 1))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { PropType } from \"@vue/runtime-core\";\nimport { Options, Vue } from \"vue-class-component\";\n\n@Options({\n props: {\n /**\n * The Id of the checkbox\n */\n fieldId: {\n type: String as PropType,\n required: false,\n },\n /**\n * The label value for the checkbox\n */\n label: {\n type: String as PropType,\n required: false,\n },\n /**\n * The aria label value for the checkbox\n */\n ariaLabel: {\n type: String as PropType,\n required: false,\n },\n /**\n * If the checkbox is checked\n */\n checked: {\n type: Boolean as PropType,\n required: false,\n default: false,\n },\n /**\n * If the checkbox is disabled\n */\n disabled: {\n type: Boolean as PropType,\n required: false,\n default: false,\n },\n /**\n * The help text for the checkbox\n */\n helpText: {\n type: String as PropType,\n required: 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 emits: [\"update:checked\", \"update\"],\n methods: {\n /**\n * Gets called when the value changes\n */\n onUpdate(isChecked: boolean): void {\n this.setValidityMessage(\"\");\n this.$emit(\"update:checked\", isChecked);\n this.$emit(\"update\", isChecked);\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})\nexport default class CheckboxInput extends Vue {}\n","import { render } from \"./CheckboxInput.vue?vue&type=template&id=77a7f6a0&ts=true\"\nimport script from \"./CheckboxInput.vue?vue&type=script&lang=ts\"\nexport * from \"./CheckboxInput.vue?vue&type=script&lang=ts\"\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]])\n\nexport default __exports__","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!./StudentDetails.vue?vue&type=style&index=0&id=eb503a98&scoped=true&lang=css\"","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","// ..\\student-portal-backend\\LU.STP.Common\\Models\\Assignment.cs\nexport interface Assignment {\n noteTakerLuEduPersonPrimaryId: string;\n studentLuEduPersonPrimaryId: string;\n courseCode: string;\n term: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\Coordinator.cs\nexport interface Coordinator extends CoordinatorBase {\n email: string;\n functionId: number;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\CoordinatorBase.cs\nexport interface CoordinatorBase {\n id: number;\n name: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\Course.cs\nexport interface Course {\n courseUid: string;\n courseCode: string;\n titleSv: string;\n titleEn: string;\n courseStartDate: string;\n courseEndDate: string;\n term: string;\n occasionCode: string;\n facultySv: string;\n facultyEn: string;\n institutionSv: string;\n institutionEn: string;\n studyPoints: number;\n event: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\CourseOccurrence.cs\nexport interface CourseOccurrence extends CourseOccurrenceBase {\n students?: Student[];\n noteTakers?: NoteTaker[];\n inactiveStudents?: Student[];\n inactiveNoteTakers?: NoteTaker[];\n proposedNoteTakers?: NoteTakerProposedCourse[];\n noteTakerOffers?: NoteTakerOffer[];\n noteTakerUploadSummaries?: NoteTakerUploadSummary[];\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\CourseOccurrenceBase.cs\nexport interface CourseOccurrenceBase extends Course, IHasIntId {\n id: number;\n coordinatorName?: string;\n coordinatorId?: number;\n occurrence: string;\n studentCount: number;\n noteTakerCount: number;\n proposedNoteTakersCount: number;\n status: CourseOccurrenceStatus;\n latestNoteTakerOffer: string;\n studyPoints: number;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\Faculty.cs\nexport interface Faculty {\n id: number;\n nameSv: string;\n nameEn: string;\n isCampus: boolean;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTaker.cs\nexport interface NoteTaker\n extends NoteTakerBase,\n INoteTaker,\n ISupportCourseParticipant {\n students?: Student[];\n proposedCourses?: ProposedCourse[];\n supportCourses?: PersonCourse[];\n supportCourseOccurrences?: SupportCourseOccurrence[];\n isAnActiveStudentInNeed: boolean;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerBase.cs\nexport interface NoteTakerBase extends Person {\n status: NoteTakerStatus;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerNotes.cs\nexport interface NoteTakerNotes {\n courseOccurrenceId: number;\n courseUid: string;\n courseCode: string;\n courseTerm: string;\n courseTitleEn: string;\n courseTitleSv: string;\n noteTakerId: number;\n noteTakerFirstName: string;\n noteTakerLastName: string;\n date: string;\n time: string;\n file: UploadFile;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerOffer.cs\nexport interface NoteTakerOffer {\n id: number;\n courseOccurrenceId: number;\n noteTakerId: number;\n sent: string;\n confirmed?: string;\n canceled?: string;\n courseOccurrence: CourseOccurrence;\n noteTaker: NoteTaker;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerParameters.cs\nexport interface NoteTakerParameters extends QueryStringParameters {\n status: NoteTakerStatus[];\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerProposedCourse.cs\nexport interface NoteTakerProposedCourse {\n noteTakerId: number;\n noteTaker: NoteTaker;\n courseUid: string;\n inserted?: string;\n deleted?: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerStatusCount.cs\nexport interface NoteTakerStatusCount {\n status: string;\n count: number;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerUploadSummary.cs\nexport interface NoteTakerUploadSummary {\n noteTakerId: number;\n noteTakerName: string;\n totalUploads: number;\n lastUpload?: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\OverviewNoteTaker.cs\nexport interface OverviewNoteTaker extends OverviewPerson, INoteTaker {\n status: NoteTakerStatus;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\OverviewPerson.cs\nexport interface OverviewPerson extends IPerson, IHasIntId {\n id: number;\n personalId: string;\n luEduPersonPrimaryId: string;\n firstName: string;\n lastName: string;\n email: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\OverviewStudent.cs\nexport interface OverviewStudent extends OverviewPerson, IStudent {\n coordinatorName?: string;\n coordinatorId?: number;\n grantedSupportDate?: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\PagedList.cs\nexport interface PagedList {\n items: T[];\n currentPage: number;\n totalPages: number;\n pageSize: number;\n totalCount: number;\n hasPrevious: boolean;\n hasNext: boolean;\n sortedIds: number[];\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\PageSection.cs\nexport interface PageSection {\n id: number;\n pageTypeId: number;\n titleSv: string;\n contentSv: string;\n linkTextSv: string;\n menuTitleSv: string;\n titleEn: string;\n contentEn: string;\n linkTextEn: string;\n menuTitleEn: string;\n routerLinkUrl?: string;\n externalLinkUrl?: string;\n modified: string;\n modifiedBy: string;\n sortOrder: number;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\PageType.cs\nexport interface PageType {\n id: number;\n name: string;\n modified: string;\n modifiedBy: string;\n pageSections: PageSection[];\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\Person.cs\nexport interface Person extends PersonBase, IHasIntId {\n id: number;\n luEduPersonPrimaryId: string;\n personalId: string;\n telephoneNumber: string;\n address: string;\n postcode: string;\n city: string;\n courses: Course[];\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\PersonBase.cs\nexport interface PersonBase {\n firstName: string;\n lastName: string;\n email: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\PersonCourse.cs\nexport interface PersonCourse {\n courseUid: string;\n courseOccurrenceId: number;\n started?: string;\n ended?: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\PersonResponse.cs\nexport interface PersonResponse {\n studentExists: boolean;\n student: Student;\n isActiveNoteTaker: boolean;\n noteTakerId: number;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\ProposedCourse.cs\nexport interface ProposedCourse extends Course {\n id: number;\n courseOccurrenceId: number;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\QueryStringParameters.cs\nexport interface QueryStringParameters {\n search?: string;\n sortBy: string;\n sortOrder: SortOrder;\n pageNumber: number;\n pageSize: number;\n coordinatorId?: number;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\Student.cs\nexport interface Student extends Person, ISupportCourseParticipant, IStudent {\n coordinatorId?: number;\n noteTakers?: NoteTaker[];\n coordinator?: Coordinator;\n coordinatorName?: string;\n grantedSupportDate?: string;\n ladokCourseCount: number;\n supportCourses?: PersonCourse[];\n supportCourseOccurrences?: SupportCourseOccurrence[];\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\StudentCourse.cs\nexport interface StudentCourse {\n id: number;\n studentId?: number;\n courseUid: string;\n inserted?: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\StudentParameters.cs\nexport type StudentParameters = QueryStringParameters;\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\StudyTermInfo.cs\nexport interface StudyTermInfo {\n previousTerm: string;\n thisTerm: string;\n nextTerm: string;\n startOfPreviousTerm: string;\n startOfThisTerm: string;\n startOfNextTerm: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\SupportCourseOccurrence.cs\nexport interface SupportCourseOccurrence {\n courseUid: string;\n courseOccurrenceId: number;\n titleSv: string;\n titleEn: string;\n status: CourseOccurrenceStatus;\n occurrence: string;\n courseOccurrenceStart?: string;\n offerDate?: string;\n offerConfirmedDate?: string;\n assignmentStart?: string;\n assignmentEnd?: string;\n coordinatorName: string;\n deletedByAdmin?: boolean;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\UploadFile.cs\nexport interface UploadFile {\n name: string;\n extension: string;\n size: number;\n binaryData?: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Interfaces\\IHasIntId.cs\nexport interface IHasIntId {\n id: number;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Interfaces\\INoteTaker.cs\nexport interface INoteTaker extends IPerson {\n status: NoteTakerStatus;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Interfaces\\IPerson.cs\nexport interface IPerson {\n id: number;\n personalId: string;\n luEduPersonPrimaryId: string;\n firstName: string;\n lastName: string;\n email: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Interfaces\\IStudent.cs\nexport interface IStudent extends IPerson {\n coordinatorName?: string;\n grantedSupportDate?: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Interfaces\\ISupportCourseParticipant.cs\nexport interface ISupportCourseParticipant {\n supportCourses?: PersonCourse[];\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Enums\\CourseOccurrenceStatus.cs\nexport enum CourseOccurrenceStatus {\n Grey = \"grey\",\n Yellow = \"yellow\",\n Green = \"green\",\n Orange = \"orange\",\n Red = \"red\",\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Enums\\FeeDataExportType.cs\nexport enum FeeDataExportType {\n Basis = \"basis\",\n Accounting = \"accounting\",\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Enums\\Locale.cs\nexport enum Locale {\n Sv = \"sv\",\n En = \"en\",\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Enums\\NoteTakerStatus.cs\nexport enum NoteTakerStatus {\n Incoming = \"incoming\",\n Active = \"active\",\n Inactive = \"inactive\",\n Completed = \"completed\",\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Enums\\SortOrder.cs\nexport enum SortOrder {\n Asc = \"asc\",\n Desc = \"desc\",\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\WebForm\\WF_NationalIdentityNumberChange.cs\nexport interface WF_NationalIdentityNumberChange {\n luEduPersonPrimaryId: string;\n newNationalIdentityNumber: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\TuitionFees\\RegisterCardRequest.cs\nexport interface RegisterCardRequest {\n invoiceNo: string;\n customerEmail: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\TuitionFees\\RegisterCardResponse.cs\nexport interface RegisterCardResponse {\n resourceUrl: string;\n error: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\TuitionFees\\TfPerson.cs\nexport interface TfPerson {\n luEduPersonPrimaryId: string;\n personalId: string;\n firstName: string;\n lastName: string;\n email: string;\n displayName: string;\n eduPersonAffiliation: string;\n eduPersonPrimaryAffiliation: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\TuitionFees\\Invoice\\Invoice.cs\nexport interface Invoice {\n customerTrxId: number;\n kund: string;\n kundNr: string;\n nationalIdentification: string;\n fakNr: string;\n totalAmount: string;\n amountDue: string;\n transferDate: string;\n dueDate: string;\n payFlag: string;\n description: string;\n pending: boolean;\n lines: InvoiceLine[];\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\TuitionFees\\Invoice\\InvoiceLine.cs\nexport interface InvoiceLine {\n description: string;\n amount: string;\n}\n\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\TuitionFees\\Nets\\NetsTerminalResponse.cs\nexport interface NetsTerminalResponse {\n invoiceNumber: string;\n transactionId: string;\n responseCode: string;\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\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!./DeleteIcon.vue?vue&type=style&index=0&id=b7c48bb2&scoped=true&lang=css\"","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar TypeError = global.TypeError;\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","class ArrayHelper {\n sortByProperty(\n array: T[],\n propName: keyof T,\n sortAscending: boolean\n ): void {\n array.sort((a, b) => {\n const propA = a[propName] === null ? \"\" : a[propName];\n const propB = b[propName] === null ? \"\" : b[propName];\n\n return propA < propB ? -1 : propA > propB ? 1 : 0;\n });\n\n if (!sortAscending) {\n array.reverse();\n }\n }\n}\n\nexport default new ArrayHelper();\n","import { toDisplayString as _toDisplayString, vShow as _vShow, createElementVNode as _createElementVNode, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"name\"]\nconst _hoisted_2 = { class: \"custom-control custom-radio mr-3\" }\nconst _hoisted_3 = [\"id\", \"name\", \"value\", \"checked\", \"disabled\", \"required\", \"onChange\"]\nconst _hoisted_4 = [\"for\"]\nconst _hoisted_5 = {\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 return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"fieldset\", {\n name: `${_ctx.name}_RadioGroup`,\n class: _normalizeClass([\"d-flex\", [\n this.verticalLayout ? 'flex-column' : 'flex-row',\n this.showFieldset ? '' : 'border-0',\n !this.showTitle && this.showFieldset ? 'pt-3' : '',\n ]])\n }, [\n _withDirectives(_createElementVNode(\"legend\", null, _toDisplayString(_ctx.name), 513), [\n [_vShow, _ctx.showTitle]\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.values, (value) => {\n return (_openBlock(), _createElementBlock(\"div\", { key: value }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n class: \"custom-control-input\",\n id: `${_ctx.name}_RadioGroup_${value}`,\n name: `${_ctx.name}_RadioGroup`,\n value: value,\n checked: value === _ctx.selected,\n disabled: _ctx.disabled,\n required: _ctx.required,\n onChange: ($event: any) => (_ctx.onChange(value)),\n ref_for: true,\n ref: \"input\",\n onInvalid: _cache[0] || (_cache[0] = ($event: any) => (\n _ctx.validityMessage ? _ctx.setValidityMessage(_ctx.validityMessage) : null\n ))\n }, null, 40, _hoisted_3),\n _createElementVNode(\"label\", {\n class: \"custom-control-label\",\n for: `${_ctx.name}_RadioGroup_${value}`\n }, [\n _renderSlot(_ctx.$slots, \"default\", { value: value }, () => [\n _createTextVNode(_toDisplayString(value), 1)\n ])\n ], 8, _hoisted_4)\n ])\n ]))\n }), 128))\n ], 10, _hoisted_1),\n (_ctx.helpText)\n ? (_openBlock(), _createElementBlock(\"small\", _hoisted_5, _toDisplayString(_ctx.helpText), 1))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","\nimport { PropType } from \"@vue/runtime-core\";\nimport { Options, Vue } from \"vue-class-component\";\n\n@Options({\n props: {\n /**\n * The name of the radiobutton group\n */\n name: {\n type: String as PropType,\n required: true,\n },\n /**\n * The value options\n */\n values: {\n type: Array,\n required: true,\n },\n /**\n * The current selected option\n */\n selected: {\n type: String as PropType,\n required: true,\n },\n /**\n * If the radiobuttons should be stack on top of each other\n */\n verticalLayout: {\n type: Boolean as PropType,\n required: false,\n default: true,\n },\n /**\n * If title should be visible\n */\n showTitle: {\n type: Boolean as PropType,\n required: false,\n default: true,\n },\n /**\n * If fieldset should be visible\n */\n showFieldset: {\n type: Boolean as PropType,\n required: false,\n default: true,\n },\n /**\n * If the input is disabled\n */\n disabled: {\n type: Boolean as PropType,\n required: false,\n default: false,\n },\n /**\n * The help text for the input\n */\n helpText: {\n type: String as PropType,\n required: 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 methods: {\n /**\n * Gets called when the value changes\n */\n onChange(value: string): void {\n this.setValidityMessage(\"\");\n this.$emit(\"update:selected\", value);\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[0].setCustomValidity(message);\n },\n },\n})\nexport default class RadioButtonGroup extends Vue {}\n","import { render } from \"./RadioButtonGroup.vue?vue&type=template&id=21a30830&ts=true\"\nimport script from \"./RadioButtonGroup.vue?vue&type=script&lang=ts\"\nexport * from \"./RadioButtonGroup.vue?vue&type=script&lang=ts\"\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]])\n\nexport default __exports__"],"sourceRoot":""}