{"version":3,"file":"sm.portal.vm.placementTest.min.js","names":["jQuery","sm","window","portal","extend","vm","PlacementTestViewModel","self","this","SectionRequired","ko","observable","DataList","observableArray","DataSectionTracker","ACTWorkingItem","SATWorkingItem","GMATWorkingItem","GREWorkingItem","TOEFLWorkingItem","PRAXISWorkingItem","PRAXISIIWorkingItem","TestScoreIndexCounter","Completed","StoredTestViewModels","SaveItem","data","event","Mode","orignalTestViewModel","TestViewModelByIndex","Index","length","remove","newTestViewModel","Copy","push","Clone","Clear","show","hide","ui","readyPage","EditItem","selectedTestScore","AnythingPopulated","PlacementTestType","page","application","additionalFieldsToggle","RemoveItem","item","TestDate","CancelItem","AddACT","placementTest","ACTViewModel","index","AddSAT","SATViewModel","AddGMAT","GMATViewModel","AddGRE","GREViewModel","AddTOEFL","TOEFLViewModel","AddPRAXIS","PRAXISViewModel","AddPRAXISII","PRAXISIIViewModel","RemoveAllTests","is","DataLoaded","DataLoading","DataContainer","Touched","DataLoadErrorCount","ExtractATO","SATTestList","Array","ACTTestList","TOEFLTestList","PRAXISTestList","PRAXISIITestList","GRETestList","GMATTestList","i","test","toJS","SAT","ACT","TOEFL","PRAXIS","PRAXISII","GREGeneral","GMAT","subscribe","newValue","UpdateSectionsByTests","value","sectionsToAdd","sectionsToRemove","section","required","viewModel","MaintainSections","CompletedOLD","computed","SectionsCompleted","name","ItemName","req","Section","Required","detailItems","FilteredItems","comp","x","LoadModel","container","Payload","Config","SetSectionsConfigData","TestSections","TrackAndLoadSections","detailedList","smapi","constant","applicationDebugFlag","console","log","Details","testDetails","sections","theListObj","grep","n","AdmissionStepBusinessName","totalViewModelsCount","ID","splice","testDetail","testViewModel","sectionExists","SectionExists","utility","isNullOrEmpty","GetEmptyViewModel","AddTestViewModelToDataList","LineItems","j","lineItem","GetAndPopulateViewModel","TestViewModelExists","GetModelData","blockui","applicationMID","personMID","callback","blockUI","url","_baseApiUri","formatString","ajax","type","dataType","contentType","headers","processData","crossDomain","xhrFields","withCredentials","success","textStatus","jqXHR","modelDataResponseHandler","error","exception","modelErrorHandler","handleErrorWithMessages","BlockContainer","block","message","getResourceValue","UnBlockContainer","unblock","SetFocus","ProcessOnServer","FilteredStoredItems","utils","arrayFilter","SortedFilteredStoredTestViewModels","sort","left","right","Date","parse","FilteredItemsPopulated","populated","items","SectionsByName","TestViewModelByID","id","businessMeaningName","obj","formatDate","Math","English","Reading","Science","Composite","UsageMech","RhetSkills","PreAlgEleAlg","AlgCooGeo","PlaneGeoTrig","SocStuSci","ArtLit","Writing","Essay","Score","ETSID","TestName","PassingScore","Quantitative","Verbal","AWA","Total","AnalyticalWriting","foundIt"],"sources":["assets/js/viewmodels/admissions/sm.portal.vm.placementTest.js"],"mappings":"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","ignoreList":[],"sourcesContent":["/// \r\n\r\n(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.vm === \"undefined\") {\r\n jQuery.extend(sm.portal, { vm: {} });\r\n }\r\n\r\n /**************************************/\r\n // Placement Test View Model\r\n // Holds a placement test data\r\n /**************************************/\r\n function PlacementTestViewModel() {\r\n\r\n var self = this;\r\n\r\n /*** PROPERTIES ***/\r\n this.SectionRequired = ko.observable(false);\r\n this.DataList = ko.observableArray([]);\r\n this.DataSectionTracker = ko.observableArray();\r\n\r\n this.ACTWorkingItem = ko.observable(null);\r\n this.SATWorkingItem = ko.observable(null);\r\n this.GMATWorkingItem = ko.observable(null);\r\n this.GREWorkingItem = ko.observable(null);\r\n this.TOEFLWorkingItem = ko.observable(null);\r\n this.PRAXISWorkingItem = ko.observable(null);\r\n this.PRAXISIIWorkingItem = ko.observable(null);\r\n this.TestScoreIndexCounter = 0;\r\n\r\n /*** PROPERTIES ***/\r\n\r\n this.Completed = ko.observable(false);\r\n this.StoredTestViewModels = ko.observableArray();\r\n\r\n this.SaveItem = function (data, event) {\r\n // save to database \r\n if (data.Mode() == 'EDIT') {\r\n // get a copy of the viewModel\r\n var orignalTestViewModel = self.TestViewModelByIndex(data.Index());\r\n if (orignalTestViewModel.length == 0) {\r\n return;\r\n } else {\r\n orignalTestViewModel = orignalTestViewModel[0];\r\n }\r\n\r\n self.StoredTestViewModels.remove(orignalTestViewModel);\r\n\r\n var newTestViewModel = orignalTestViewModel.Copy(data);\r\n self.StoredTestViewModels.push(newTestViewModel);\r\n\r\n } else {\r\n // new record\r\n var newTestViewModel = data.Clone();\r\n newTestViewModel.Index(self.StoredTestViewModels().length);\r\n\r\n self.StoredTestViewModels.push(newTestViewModel);\r\n }\r\n\r\n self.Completed(true);\r\n data.Clear();\r\n\r\n // show the display form\r\n jQuery('.dataDisplayView').show();\r\n\r\n // hide the input form\r\n jQuery('.dataEntryView').hide();\r\n\r\n self.ACTWorkingItem(null);\r\n self.SATWorkingItem(null);\r\n self.GMATWorkingItem(null);\r\n self.GREWorkingItem(null);\r\n self.TOEFLWorkingItem(null);\r\n self.PRAXISWorkingItem(null);\r\n self.PRAXISIIWorkingItem(null);\r\n\r\n sm.portal.ui.readyPage();\r\n\r\n };\r\n\r\n this.EditItem = function (data, event) {\r\n // hide the display form\r\n jQuery('.dataDisplayView').hide();\r\n\r\n // show the input form\r\n jQuery('.dataEntryView').show();\r\n\r\n var selectedTestScore = self.TestViewModelByIndex(data.Index());\r\n if (selectedTestScore.length === 0) {\r\n return;\r\n } else {\r\n selectedTestScore = selectedTestScore[0];\r\n }\r\n\r\n if (selectedTestScore.AnythingPopulated()) {\r\n switch (data.PlacementTestType()) {\r\n case \"SAT\":\r\n selectedTestScore.Mode('EDIT');\r\n self.SATWorkingItem(selectedTestScore.Clone());\r\n break;\r\n\r\n case \"ACT\":\r\n selectedTestScore.Mode('EDIT');\r\n self.ACTWorkingItem(selectedTestScore.Clone());\r\n sm.portal.page.application.additionalFieldsToggle();\r\n break;\r\n\r\n case \"GMAT\":\r\n selectedTestScore.Mode('EDIT');\r\n self.GMATWorkingItem(selectedTestScore.Clone());\r\n break;\r\n\r\n case \"GRE\":\r\n selectedTestScore.Mode('EDIT');\r\n self.GREWorkingItem(selectedTestScore.Clone());\r\n break;\r\n\r\n case \"PRAXIS\":\r\n selectedTestScore.Mode('EDIT');\r\n self.PRAXISWorkingItem(selectedTestScore.Clone());\r\n break;\r\n\r\n case \"PRAXISSII\":\r\n selectedTestScore.Mode('EDIT');\r\n self.PRAXISIIWorkingItem(selectedTestScore.Clone());\r\n break;\r\n\r\n case \"TOEFL\":\r\n selectedTestScore.Mode('EDIT');\r\n self.TOEFLWorkingItem(selectedTestScore.Clone());\r\n break;\r\n }\r\n }\r\n };\r\n\r\n this.RemoveItem = function (data, event) {\r\n self.StoredTestViewModels.remove(function (item) { return item.PlacementTestType == data.PlacementTestType && item.TestDate == data.TestDate });\r\n if (self.StoredTestViewModels().length == 0) {\r\n self.Completed(false);\r\n }\r\n };\r\n\r\n this.CancelItem = function (data, event) {\r\n\r\n //// show all display views\r\n jQuery('.dataDisplayView').show();\r\n\r\n self.ACTWorkingItem(null);\r\n self.SATWorkingItem(null);\r\n self.GMATWorkingItem(null);\r\n self.GREWorkingItem(null);\r\n self.TOEFLWorkingItem(null);\r\n self.PRAXISWorkingItem(null);\r\n self.PRAXISIIWorkingItem(null);\r\n\r\n sm.portal.ui.readyPage();\r\n };\r\n\r\n\r\n this.AddACT = function () {\r\n jQuery('.dataDisplayView').hide();\r\n this.ACTWorkingItem(new sm.portal.vm.placementTest.ACTViewModel({ index: self.TestScoreIndexCounter++ }));\r\n sm.portal.page.application.additionalFieldsToggle();\r\n };\r\n this.AddSAT = function () {\r\n jQuery('.dataDisplayView').hide();\r\n this.SATWorkingItem(new sm.portal.vm.placementTest.SATViewModel({ index: self.TestScoreIndexCounter++ }));\r\n };\r\n this.AddGMAT = function () {\r\n jQuery('.dataDisplayView').hide();\r\n this.GMATWorkingItem(new sm.portal.vm.placementTest.GMATViewModel({ index: self.TestScoreIndexCounter++ }));\r\n };\r\n this.AddGRE = function () {\r\n jQuery('.dataDisplayView').hide();\r\n this.GREWorkingItem(new sm.portal.vm.placementTest.GREViewModel({ index: self.TestScoreIndexCounter++ }));\r\n };\r\n this.AddTOEFL = function () {\r\n jQuery('.dataDisplayView').hide();\r\n this.TOEFLWorkingItem(new sm.portal.vm.placementTest.TOEFLViewModel({ index: self.TestScoreIndexCounter++ }));\r\n };\r\n this.AddPRAXIS = function () {\r\n jQuery('.dataDisplayView').hide();\r\n this.PRAXISWorkingItem(new sm.portal.vm.placementTest.PRAXISViewModel({ index: self.TestScoreIndexCounter++ }));\r\n };\r\n this.AddPRAXISII = function () {\r\n jQuery('.dataDisplayView').hide();\r\n this.PRAXISIIWorkingItem(new sm.portal.vm.placementTest.PRAXISIIViewModel({ index: self.TestScoreIndexCounter++ }));\r\n };\r\n\r\n this.RemoveAllTests = function () {\r\n\r\n if (jQuery('.dataDisplayView').is(':visible') || (!jQuery('.dataDisplayView').is(':visible') && self.ACTWorkingItem() == null)) {\r\n self.ACTWorkingItem(null);\r\n }\r\n if (jQuery('.dataDisplayView').is(':visible') || (!jQuery('.dataDisplayView').is(':visible') && self.SATWorkingItem() == null)) {\r\n self.SATWorkingItem(null);\r\n }\r\n if (jQuery('.dataDisplayView').is(':visible') || (!jQuery('.dataDisplayView').is(':visible') && self.GMATWorkingItem() == null)) {\r\n self.GMATWorkingItem(null);\r\n }\r\n if (jQuery('.dataDisplayView').is(':visible') || (!jQuery('.dataDisplayView').is(':visible') && self.GREWorkingItem() == null)) {\r\n self.GREWorkingItem(null);\r\n }\r\n if (jQuery('.dataDisplayView').is(':visible') || (!jQuery('.dataDisplayView').is(':visible') && self.TOEFLWorkingItem() == null)) {\r\n self.TOEFLWorkingItem(null);\r\n }\r\n if (jQuery('.dataDisplayView').is(':visible') || (!jQuery('.dataDisplayView').is(':visible') && self.PRAXISWorkingItem() == null)) {\r\n self.PRAXISWorkingItem(null);\r\n }\r\n if (jQuery('.dataDisplayView').is(':visible') || (!jQuery('.dataDisplayView').is(':visible') && self.PRAXISIIWorkingItem() == null)) {\r\n self.PRAXISIIWorkingItem(null);\r\n }\r\n };\r\n\r\n /*** SECTION PROPERTIES ***/\r\n this.DataLoaded = ko.observable(false);\r\n this.DataLoading = ko.observable(false);\r\n this.DataContainer = ko.observable(\"TestScoreContainer\");\r\n this.Touched = ko.observable(false);\r\n this.DataLoadErrorCount = ko.observable(0);\r\n this.ExtractATO = function () {\r\n\r\n var SATTestList = Array();\r\n var ACTTestList = Array();\r\n var TOEFLTestList = Array();\r\n var PRAXISTestList = Array();\r\n var PRAXISIITestList = Array();\r\n var GRETestList = Array();\r\n var GMATTestList = Array();\r\n\r\n for (var i = 0; i < self.StoredTestViewModels().length; i++) {\r\n\r\n if (self.StoredTestViewModels()[i].AnythingPopulated()) {\r\n\r\n var test = self.StoredTestViewModels()[i];\r\n\r\n switch (test.PlacementTestType()) {\r\n\r\n case \"SAT\":\r\n SATTestList.push(ko.toJS(test.ExtractATO()));\r\n break;\r\n case \"ACT\":\r\n ACTTestList.push(ko.toJS(test.ExtractATO()));\r\n break;\r\n case \"TOEFL\":\r\n TOEFLTestList.push(ko.toJS(test.ExtractATO()));\r\n break;\r\n case \"PRAXIS\":\r\n PRAXISTestList.push(ko.toJS(test.ExtractATO()));\r\n break;\r\n case \"PRAXISII\":\r\n PRAXISIITestList.push(ko.toJS(test.ExtractATO()));\r\n break;\r\n case \"GRE\":\r\n GRETestList.push(ko.toJS(test.ExtractATO()));\r\n break;\r\n case \"GMAT\":\r\n GMATTestList.push(ko.toJS(test.ExtractATO()));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n var testScoreData = {\r\n SAT: SATTestList,\r\n ACT: ACTTestList,\r\n TOEFL: TOEFLTestList,\r\n PRAXIS: PRAXISTestList,\r\n PRAXISII: PRAXISIITestList,\r\n GREGeneral: GRETestList,\r\n GMAT: GMATTestList\r\n };\r\n\r\n return testScoreData;\r\n\r\n };\r\n /*** SECTION PROPERTIES ***/\r\n\r\n /*** SECTION DRIVING SUBSCRIPTION PROPERTIES ***/\r\n this.DataList.subscribe(function (newValue) {\r\n self.UpdateSectionsByTests(newValue);\r\n }, this);\r\n\r\n this.UpdateSectionsByTests = function (value) {\r\n var sectionsToAdd = Array();\r\n var sectionsToRemove = Array();\r\n\r\n if (value != null && value.length > 0) {\r\n sectionsToAdd.push({ section: 'TestScore', required: this.SectionRequired() });\r\n }\r\n else {\r\n sectionsToRemove.push('TestScore');\r\n }\r\n\r\n viewModel.MaintainSections(sectionsToAdd, sectionsToRemove);\r\n };\r\n /*** SECTION DRIVING SUBSCRIPTION PROPERTIES ***/\r\n\r\n /*** SECTION METHODS ***/\r\n this.AnythingPopulated = function () {\r\n if (this.DataList().length > 0) {\r\n for (var i = 0; i < this.DataList().length; i++) {\r\n var dataItem = this.DataList()[i];\r\n if (dataItem.AnythingPopulated()) return true;\r\n }\r\n }\r\n return false;\r\n };\r\n this.CompletedOLD = ko.computed(function () {\r\n if (!this.SectionRequired) {\r\n return true;\r\n }\r\n else {\r\n //Loop Through each section to see if there is required sections\r\n if (this.DataSectionTracker().length > 0) {\r\n var SectionsCompleted = 0;\r\n for (var i = 0; i < this.DataSectionTracker().length; i++) {\r\n var name = this.DataSectionTracker()[i].ItemName;\r\n var stepName = this.DataSectionTracker()[i].Section;\r\n var req = this.DataSectionTracker()[i].Required;\r\n\r\n if (req != null && req == false) {\r\n SectionsCompleted++;\r\n }\r\n else {\r\n var detailItems = this.FilteredItems(name);\r\n var comp = false;\r\n for (var x = 0; x < detailItems.length; x++) {\r\n if (detailItems[x].AnythingPopulated() && comp == false) {\r\n comp = true;\r\n SectionsCompleted++;\r\n }\r\n }\r\n }\r\n }\r\n return this.DataSectionTracker().length == SectionsCompleted;\r\n }\r\n }\r\n }, this);\r\n\r\n this.LoadModel = function (container) {\r\n\r\n // update application section configurations\r\n if (container && container.Payload && container.Payload.Config) {\r\n viewModel.SetSectionsConfigData(\"TestScore\", container.Payload.Config, true);\r\n }\r\n // no result for test are being returned... probably need to clear everything out.\r\n //self.StoredTestViewModels([]);\r\n //self.DataList([]);\r\n //self.DataSectionTracker([]);\r\n\r\n this.RemoveAllTests();\r\n\r\n if (container != null\r\n && container.Payload != null\r\n && container.Payload.TestSections != null\r\n && container.Payload.TestSections.length > 0) {\r\n\r\n for (var i = 0; i < container.Payload.TestSections.length; i++) {\r\n this.TrackAndLoadSections(container.Payload.TestSections[i]);\r\n }\r\n }\r\n this.DataLoading(false);\r\n this.DataLoaded(true);\r\n\r\n sm.portal.ui.detailedList();\r\n\r\n if (smapi.constant.applicationDebugFlag) { console.log('[TestScoreVM] Data Loaded'); }\r\n\r\n };\r\n\r\n this.TrackAndLoadSections = function (test) {\r\n\r\n if (test != null && test.Details != null) {\r\n\r\n var testDetails = test.Details;\r\n var sections = this.DataSectionTracker();\r\n\r\n if (sections.length > 0) {\r\n //Clear out non matching existing sections\r\n for (var i = 0; i < sections.length; i++) {\r\n var theListObj = sections[i];\r\n var foundItem = jQuery.grep(testDetails, function (n, i) {\r\n return n.AdmissionStepBusinessName == theListObj.Section;\r\n });\r\n\r\n if (foundItem.length == 0) {\r\n //this.DataSectionTracker(jQuery.grep(this.DataSectionTracker(), function (value) {\r\n // return value.Section != foundItem[0].AdmissionStepBusinessName;\r\n //}));\r\n\r\n //TODO cleanup for existing data item using the type or clear DB records...\r\n }\r\n }\r\n }\r\n\r\n // remove newly created items\r\n var totalViewModelsCount = self.StoredTestViewModels().length;\r\n while (totalViewModelsCount--) {\r\n if (self.StoredTestViewModels()[totalViewModelsCount].ID() == 0)\r\n self.StoredTestViewModels.splice(totalViewModelsCount, 1);\r\n }\r\n\r\n //Add any missing items, ignoring ones that already exist\r\n for (var i = 0; i < testDetails.length; i++) {\r\n\r\n var testDetail = testDetails[i];\r\n var testViewModel = null;\r\n var sectionExists = this.SectionExists(testDetail.AdmissionStepBusinessName);\r\n\r\n // If any step is required, mark the section required\r\n if (!sm.portal.utility.isNullOrEmpty(testDetail.Required) && testDetail.Required == true) {\r\n this.SectionRequired(true);\r\n }\r\n\r\n // Marking which tests are being asked for, just create an Empty test view model\r\n testViewModel = this.GetEmptyViewModel(testDetail.AdmissionStepBusinessName);\r\n this.AddTestViewModelToDataList(testViewModel, sectionExists);\r\n\r\n if (!sectionExists && testViewModel != null) {\r\n this.DataSectionTracker.push({ Section: testDetail.AdmissionStepBusinessName, Required: testDetail.Required, ItemName: testViewModel.PlacementTestType() });\r\n }\r\n\r\n // Add in new test view models\r\n if (testDetail.LineItems != null && testDetail.LineItems.length > 0) {\r\n\r\n for (var j = 0; j < testDetail.LineItems.length; j++) {\r\n var lineItem = testDetail.LineItems[j];\r\n var newTestViewModel = this.GetAndPopulateViewModel(testDetail.AdmissionStepBusinessName, lineItem);\r\n if (newTestViewModel !== null) {\r\n if (newTestViewModel.ID() === 0 || !this.TestViewModelExists(newTestViewModel.ID())) {\r\n // add it to the list\r\n self.StoredTestViewModels.push(newTestViewModel);\r\n }\r\n }\r\n }\r\n\r\n self.Completed(self.StoredTestViewModels().length > 0);\r\n }\r\n }\r\n }\r\n else {\r\n // no result for test are being returned... probably need to clear everything out.\r\n self.StoredTestViewModels([]);\r\n self.DataList([]);\r\n self.DataSectionTracker([]);\r\n }\r\n\r\n };\r\n\r\n this.GetModelData = function (blockui, applicationMID, personMID, callback) {\r\n //This will be in the next story of getting data from an exisint saved Application\r\n if (!this.DataLoaded() && !this.DataLoading()) {\r\n\r\n this.DataLoading(true);\r\n if (blockui) { jQuery.blockUI(); }\r\n var url = _baseApiUri + sm.portal.utility.formatString('api/studentportal/getapplicationsection?sectionName=testscore&attemptmid={0}', applicationMID);\r\n\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 sm.portal.page.application.modelDataResponseHandler(self, data, applicationMID, personMID);\r\n callback && callback(data);\r\n },\r\n error: function (jqXHR, exception) {\r\n sm.portal.page.application.modelErrorHandler(self, jqXHR);\r\n sm.portal.page.application.handleErrorWithMessages(self, jqXHR, 'fetch');\r\n callback && callback();\r\n }\r\n });\r\n } else {\r\n callback && callback();\r\n }\r\n\r\n if (!this.DataLoaded() && !this.DataLoading()) {\r\n this.DataLoading(true);\r\n this.LoadModel(null);\r\n }\r\n };\r\n\r\n this.BlockContainer = function () {\r\n jQuery(\"#\" + self.DataContainer()).block({ message: sm.portal.utility.getResourceValue('Loading') });\r\n };\r\n\r\n this.UnBlockContainer = function () {\r\n jQuery(\"#\" + self.DataContainer()).unblock();\r\n viewModel.SetFocus();\r\n };\r\n\r\n this.ProcessOnServer = function () {\r\n return true;\r\n };\r\n\r\n this.FilteredStoredItems = function (type) {\r\n return ko.utils.arrayFilter(this.StoredTestViewModels(), function (item) {\r\n return item.PlacementTestType() == type;\r\n });\r\n };\r\n\r\n this.SortedFilteredStoredTestViewModels = function (type) {\r\n var list = ko.utils.arrayFilter(this.StoredTestViewModels(), function (item) {\r\n return item.PlacementTestType() == type;\r\n });\r\n\r\n // no sort it\r\n return list.sort(function (left, right) {\r\n return Date.parse(left.TestDate()) == Date.parse(right.TestDate()) ?\r\n 0 :\r\n (Date.parse(left.TestDate()) < Date.parse(right.TestDate()) ? -1 : 1);\r\n });\r\n\r\n };\r\n\r\n this.FilteredItems = function (type) {\r\n return ko.utils.arrayFilter(this.DataList(), function (item) {\r\n if (item == null) return false;\r\n return item.PlacementTestType() == type;\r\n });\r\n };\r\n this.FilteredItemsPopulated = function (type) {\r\n var populated = false;\r\n var items = this.FilteredStoredItems(type);\r\n for (var i = 0; i < items.length; i++) {\r\n if (!populated) {\r\n if (items[i].AnythingPopulated())\r\n populated = true;\r\n }\r\n }\r\n return populated;\r\n };\r\n this.SectionsByName = function (section) {\r\n return ko.utils.arrayFilter(this.DataSectionTracker(), function (item) {\r\n return item.Section == section;\r\n });\r\n };\r\n this.SectionExists = function (section) {\r\n return this.SectionsByName(section).length > 0;\r\n };\r\n this.TestViewModelByID = function (id) {\r\n return ko.utils.arrayFilter(this.StoredTestViewModels(), function (item) {\r\n return item.ID() == id;\r\n });\r\n };\r\n\r\n this.TestViewModelByIndex = function (index) {\r\n return ko.utils.arrayFilter(this.StoredTestViewModels(), function (item) {\r\n return item.Index() === index;\r\n });\r\n };\r\n\r\n this.TestViewModelExists = function (id) {\r\n return this.TestViewModelByID(id).length > 0;\r\n };\r\n\r\n\r\n this.GetEmptyViewModel = function (businessMeaningName) {\r\n var obj = null;\r\n switch (businessMeaningName) {\r\n case \"Application.ACTScore\":\r\n obj = new sm.portal.vm.placementTest.ACTViewModel({ index: self.TestScoreIndexCounter++ });\r\n break;\r\n case \"Application.SATScore\":\r\n obj = new sm.portal.vm.placementTest.SATViewModel({ index: self.TestScoreIndexCounter++ });\r\n break;\r\n case \"Application.TOEFL\":\r\n obj = new sm.portal.vm.placementTest.TOEFLViewModel({ index: self.TestScoreIndexCounter++ });\r\n break;\r\n case \"Application.PraxisScore\":\r\n obj = new sm.portal.vm.placementTest.PRAXISViewModel({ index: self.TestScoreIndexCounter++ });\r\n break;\r\n case \"Application.PraxisIIScore\":\r\n obj = new sm.portal.vm.placementTest.PRAXISIIViewModel({ index: self.TestScoreIndexCounter++ });\r\n break;\r\n case \"Application.GMATScore\":\r\n obj = new sm.portal.vm.placementTest.GMATViewModel({ index: self.TestScoreIndexCounter++ });\r\n break;\r\n case \"Application.GREScore\":\r\n obj = new sm.portal.vm.placementTest.GREViewModel({ index: self.TestScoreIndexCounter++ });\r\n break;\r\n }\r\n return obj;\r\n };\r\n\r\n // return a view model based on businessMeaningName, populated by data\r\n this.GetAndPopulateViewModel = function (businessMeaningName, data) {\r\n var obj = null;\r\n switch (businessMeaningName) {\r\n case \"ACT\":\r\n case \"Application.ACTScore\":\r\n obj = new sm.portal.vm.placementTest.ACTViewModel({\r\n PlacementTestType: 'ACT',\r\n ID: data.ID,\r\n TestDate: sm.portal.utility.formatDate(data.TestDate, true),\r\n Math: data.Math,\r\n English: data.English,\r\n Reading: data.Reading,\r\n Science: data.Science,\r\n Composite: data.Composite,\r\n UsageMech: data.UsageMech,\r\n RhetSkills: data.RhetSkills,\r\n PreAlgEleAlg: data.PreAlgEleAlg,\r\n AlgCooGeo: data.AlgCooGeo,\r\n PlaneGeoTrig: data.PlaneGeoTrig,\r\n SocStuSci: data.SocStuSci,\r\n ArtLit: data.ArtLit,\r\n Index: self.TestScoreIndexCounter++\r\n });\r\n break;\r\n\r\n case \"SAT\":\r\n case \"Application.SATScore\":\r\n obj = new sm.portal.vm.placementTest.SATViewModel({\r\n PlacementTestType: 'SAT',\r\n ID: data.ID,\r\n TestDate: sm.portal.utility.formatDate(data.TestDate, true),\r\n Reading: data.Reading,\r\n Math: data.Math,\r\n Writing: data.Writing,\r\n Essay: data.Essay,\r\n Composite: data.Composite,\r\n Index: self.TestScoreIndexCounter++\r\n });\r\n break;\r\n\r\n case \"TOEFL\":\r\n case \"Application.TOEFL\":\r\n obj = new sm.portal.vm.placementTest.TOEFLViewModel({\r\n PlacementTestType: 'TOEFL',\r\n ID: data.ID,\r\n TestDate: sm.portal.utility.formatDate(data.TestDate, true),\r\n Score: data.Score,\r\n Index: self.TestScoreIndexCounter++\r\n });\r\n break;\r\n\r\n case \"Praxis\":\r\n case \"Application.PraxisScore\":\r\n obj = new sm.portal.vm.placementTest.PRAXISViewModel({\r\n PlacementTestType: 'PRAXIS',\r\n ID: data.ID,\r\n TestDate: sm.portal.utility.formatDate(data.TestDate, true),\r\n ETSID: data.ETSID,\r\n TestName: data.TestName,\r\n Score: data.Score,\r\n PassingScore: data.PassingScore,\r\n Index: self.TestScoreIndexCounter++\r\n });\r\n break;\r\n\r\n case \"PraxisII\":\r\n case \"Application.PraxisIIScore\":\r\n obj = new sm.portal.vm.placementTest.PRAXISIIViewModel({\r\n PlacementTestType: 'PRAXISII',\r\n ID: data.ID,\r\n TestDate: sm.portal.utility.formatDate(data.TestDate, true),\r\n ETSID: data.ETSID,\r\n TestName: data.TestName,\r\n Score: data.Score,\r\n PassingScore: data.PassingScore,\r\n Index: self.TestScoreIndexCounter++\r\n });\r\n break;\r\n\r\n case \"GMAT\":\r\n case \"Application.GMATScore\":\r\n obj = new sm.portal.vm.placementTest.GMATViewModel({\r\n PlacementTestType: 'GMAT',\r\n ID: data.ID,\r\n TestDate: sm.portal.utility.formatDate(data.TestDate, true),\r\n Quantitative: data.Quantitative,\r\n Verbal: data.Verbal,\r\n AWA: data.AWA,\r\n Total: data.Total,\r\n Index: self.TestScoreIndexCounter++\r\n });\r\n break;\r\n\r\n case \"GREScore\":\r\n case \"Application.GREScore\":\r\n obj = new sm.portal.vm.placementTest.GREViewModel({\r\n PlacementTestType: 'GRE',\r\n ID: data.ID,\r\n TestDate: sm.portal.utility.formatDate(data.TestDate, true),\r\n Verbal: data.Verbal,\r\n Quantitative: data.Quantitative,\r\n AnalyticalWriting: data.AnalyticalWriting,\r\n Index: self.TestScoreIndexCounter++\r\n });\r\n break;\r\n } // End Switch\r\n return obj;\r\n };\r\n\r\n //Add view model \r\n this.AddTestViewModelToDataList = function (testViewModel, sectionExists) {\r\n\r\n if (!sectionExists && testViewModel) {\r\n this.DataList.push(testViewModel);\r\n } else {\r\n\r\n var foundIt = false;\r\n for (var i = 0; i < this.DataList().length; i++) {\r\n if (this.DataList()[i] != null && testViewModel) {\r\n if (this.DataList()[i].PlacementTestType() == testViewModel.PlacementTestType()) {\r\n this.DataList()[i] = testViewModel;\r\n foundIt = true;\r\n break;\r\n }\r\n }\r\n }\r\n // If we didn't find a match, add it to the list.\r\n if (!foundIt) {\r\n this.DataList.push(testViewModel);\r\n }\r\n\r\n }\r\n\r\n };\r\n /*** SECTION METHODS ***/\r\n\r\n\r\n return self;\r\n };\r\n\r\n jQuery.extend(true, sm.portal.vm, {\r\n PlacementTestViewModel: PlacementTestViewModel,\r\n });\r\n\r\n})(jQuery);\r\n"]}