{"version":3,"file":"sm.portal.vm.studentCourseSchedule.widget.min.js","names":["jQuery","sm","window","portal","extend","widget","StudentCourseScheduleViewModel","this","DataList","ko","observableArray","CourseScheduleTemplate","observable","RoomText","vm","custom","setCustomLocalizeKey","DataItem","ID","CourseID","CourseTitle","EnrollmentModeName","CreditHours","ClockHours","CourseOfferingID","Schedules","DataSubItem","PeriodOrDateRange","Timing","RoomScheduleType","RoomInfo","DaysAndTimesInfo","FacultyInfo","LoadModel","container","coursesAdditionalInfo","list","removeAll","utility","isNullOrEmpty","i","length","listItem","newCourseModel","courseData","courseScheduleData","callCustomization","j","CourseSchedule","scheduleItem","newScheduleModel","ScheduleTiming","courseScheduleArgs","courseScheduleWidgetData","RoomDetails","obj","DayAndTimeDetails","reqFormatDate","k","FacultyDetails","facultyItem","push","DisplayName","FullName","PrimaryEmailAddress","EmailFaculty","email","display","msgSubject","formatString","viewModel","ContextStudent","Profile","PersonDisplayName","newMsg","SendCommunicationViewModel","ToAddress","FromAddress","ContextID","PersonID","CurrentUserID","_currentPersonId","Html","Subject","SendCommunicationData","ShowFacultyCommunication","ui","lightBox","on","Loaded","StandAlone","GetModelData","studentID","goalID","url","_baseApiUri","ajax","type","dataType","contentType","headers","processData","crossDomain","xhrFields","withCredentials","success","data","textStatus","jqXHR","smapi","access","ApiContainerModel","Status","Payload","ValidationTitle","ValidationMessages","self","readyPage","error","exception","statusText","responseMsg","getResourceValue","responseText","parseJSON","Message","messageToUser","HandleError","e"],"sources":["assets/js/viewmodels/academic/sm.portal.vm.studentCourseSchedule.widget.js"],"mappings":"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","ignoreList":[],"sourcesContent":["(function (jQuery, undefined) {\r\n var sm = window.sm = window.sm || {};\r\n var windowProxy;\r\n var actionQueue = [];\r\n\r\n if (typeof sm.portal === \"undefined\") {\r\n jQuery.extend(sm, { portal: {} });\r\n }\r\n if (typeof sm.portal.widget === \"undefined\") {\r\n jQuery.extend(sm.portal, { widget: {} });\r\n }\r\n\r\n // Schedule View Model \r\n // Array Model\r\n function StudentCourseScheduleViewModel() {\r\n // Array List\r\n this.DataList = ko.observableArray();\r\n this.CourseScheduleTemplate = ko.observable('');\r\n this.RoomText = ko.observable('Room');\r\n\r\n sm.portal.vm.custom.setCustomLocalizeKey(this);\r\n // List Item\r\n this.DataItem = function () {\r\n this.ID = ko.observable();\r\n this.CourseID = ko.observable();\r\n this.CourseTitle = ko.observable();\r\n this.EnrollmentModeName = ko.observable();\r\n this.CreditHours = ko.observable();\r\n this.ClockHours = ko.observable();\r\n this.CourseOfferingID = ko.observable();\r\n\r\n // TODO: Schedule Pieces\r\n this.Schedules = ko.observableArray();\r\n };\r\n this.DataSubItem = function () {\r\n this.PeriodOrDateRange = ko.observable();\r\n this.Timing = ko.observable();\r\n this.RoomScheduleType = ko.observable();\r\n this.RoomInfo = ko.observable();\r\n this.DaysAndTimesInfo = ko.observable();\r\n this.FacultyInfo = ko.observableArray();\r\n };\r\n\r\n // Loading\r\n\r\n this.LoadModel = function (container, coursesAdditionalInfo) {\r\n var list = container; //.Payload.Schedule;\r\n\r\n // Clear existing data\r\n this.DataList.removeAll();\r\n\r\n if (!sm.portal.utility.isNullOrEmpty(list)) {\r\n // Create DataItems for each result and add to DataList\r\n for (var i = 0; i < list.length; i++) {\r\n\r\n var listItem = list[i];\r\n var newCourseModel = new this.DataItem();\r\n var msgSubjectFormat = \"\";\r\n var msgContentFormat = \"\";\r\n\r\n newCourseModel.ID(listItem.ID)\r\n newCourseModel.CourseID(listItem.CourseID);\r\n newCourseModel.CourseTitle(listItem.CourseTitle);\r\n newCourseModel.EnrollmentModeName(listItem.EnrollmentModeName);\r\n newCourseModel.CreditHours(listItem.CreditHours);\r\n newCourseModel.ClockHours(listItem.ClockHours);\r\n newCourseModel.CourseOfferingID(listItem.CourseOfferingID);\r\n\r\n msgSubjectFormat = \"RE: {0} in {1} for {2}\";\r\n\r\n var courseData = {\r\n listItem : listItem,\r\n coursesAdditionalInfo : coursesAdditionalInfo\r\n };\r\n var courseScheduleData = sm.portal.vm.custom.callCustomization('LoadCourseData', courseData);\r\n\r\n // TODO: Schedules\r\n for (var j = 0; j < listItem.CourseSchedule.length; j++) {\r\n var scheduleItem = listItem.CourseSchedule[j];\r\n var newScheduleModel = new this.DataSubItem();\r\n newScheduleModel.PeriodOrDateRange(scheduleItem.PeriodOrDateRange); // TODO: Get Name\r\n newScheduleModel.Timing(scheduleItem.ScheduleTiming); // TODO: Get Name\r\n newScheduleModel.RoomScheduleType(scheduleItem.RoomScheduleType);\r\n\r\n var courseScheduleArgs = {\r\n listItem : listItem,\r\n newScheduleModel : newScheduleModel,\r\n courseScheduleData : courseScheduleData\r\n }\r\n var courseScheduleWidgetData = sm.portal.vm.custom.callCustomization('LoadCourseScheduleWidget', courseScheduleArgs);\r\n if (!sm.portal.utility.isNullOrEmpty(courseScheduleWidgetData)) {\r\n newScheduleModel = courseScheduleWidgetData;\r\n }\r\n\r\n newScheduleModel.RoomInfo(scheduleItem.RoomDetails);\r\n\r\n var obj = {\r\n DayAndTimeDetails: scheduleItem.DayAndTimeDetails,\r\n PeriodOrDateRange: scheduleItem.PeriodOrDateRange\r\n }\r\n var reqFormatDate = sm.portal.vm.custom.callCustomization('DateFormat', obj);\r\n if(sm.portal.utility.isNullOrEmpty(reqFormatDate)) {\r\n newScheduleModel.DaysAndTimesInfo(scheduleItem.DayAndTimeDetails);\r\n } else {\r\n newScheduleModel.DaysAndTimesInfo(reqFormatDate);\r\n }\r\n\r\n for (var k = 0; k < scheduleItem.FacultyDetails.length; k++) {\r\n var facultyItem = scheduleItem.FacultyDetails[k];\r\n newScheduleModel.FacultyInfo.push({\r\n DisplayName: ko.observable(facultyItem.DisplayName),\r\n FullName: ko.observable(facultyItem.FullName),\r\n PrimaryEmailAddress: ko.observable(facultyItem.PrimaryEmailAddress),\r\n EmailFaculty: function (email, display) {\r\n // Set the Data\r\n\r\n var msgSubject = sm.portal.utility.formatString(msgSubjectFormat, viewModel.ContextStudent().Profile().PersonDisplayName(), scheduleItem.PeriodOrDateRange, listItem.CourseID);\r\n var newMsg = new sm.portal.vm.SendCommunicationViewModel();\r\n newMsg.DisplayName(display);\r\n newMsg.ToAddress(email);\r\n newMsg.FromAddress(\"TEMP\");\r\n newMsg.ContextID(viewModel.ContextStudent().Profile().PersonID());\r\n newMsg.CurrentUserID(_currentPersonId);\r\n newMsg.Html(\"\");\r\n newMsg.Subject(msgSubject);\r\n viewModel.SendCommunicationData(newMsg);\r\n\r\n // Show the new message form\r\n viewModel.ShowFacultyCommunication(true);\r\n\r\n // Now run the functions for Partial app popup\r\n sm.portal.ui.lightBox('Send Communication', jQuery('#sendFacultyCommunicationContainer'), 'mediumDialog', function () {\r\n jQuery('.smModal .smModalClose').on('click', function () {\r\n viewModel.ShowFacultyCommunication(false);\r\n });\r\n }, true);\r\n }\r\n });\r\n }\r\n newCourseModel.Schedules.push(newScheduleModel);\r\n }\r\n this.DataList.push(newCourseModel);\r\n }\r\n }\r\n this.Loaded(true);\r\n };\r\n this.Loaded = ko.observable(false);\r\n this.StandAlone = ko.observable(false);\r\n\r\n // Data Retrieval (NOTE: this could be handled via the parent view model, but this is here as a stand-alone)\r\n this.GetModelData = function (studentID, goalID) {\r\n\r\n var url = _baseApiUri + 'api/student360/getprofilesection/?sec=schedules&studentid=' + studentID + '&goalid=' + goalID;\r\n jQuery.ajax({\r\n url: url,\r\n type: 'GET',\r\n dataType: 'json',\r\n contentType: 'application/json; charset=utf-8',\r\n headers: {\r\n \"x-api-version\": '1' //,\r\n },\r\n processData: false,\r\n crossDomain: true,\r\n\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n success: function (data, textStatus, jqXHR) {\r\n var container = new smapi.access.ApiContainerModel(data.Status, data.Payload, data.ValidationTitle, data.ValidationMessages);\r\n\r\n if (data.Status == 'success') {\r\n self.LoadModel(container);\r\n }\r\n sm.portal.ui.readyPage();\r\n },\r\n error: function (jqXHR, exception) {\r\n\r\n var statusText = jqXHR.statusText;\r\n var responseMsg = sm.portal.utility.getResourceValue('UnknownError');\r\n if (jqXHR != null && jqXHR.responseText != null) {\r\n responseMsg = jQuery.parseJSON(jqXHR.responseText).Message;\r\n }\r\n var messageToUser = sm.portal.utility.formatString(\"{0} - {1}\", statusText, responseMsg);\r\n try {\r\n viewModel.HandleError(sm.portal.utility.getResourceValue('ErrorAccessingPage'), [messageToUser]);\r\n } catch (e) { }\r\n }\r\n });\r\n };\r\n\r\n var self = this;\r\n return self;\r\n };\r\n\r\n jQuery.extend(true, sm.portal.widget, {\r\n StudentCourseScheduleViewModel: StudentCourseScheduleViewModel\r\n });\r\n})(jQuery);"]}