{"version":3,"file":"sm.portal.vm.conservatoirespecialisms.min.js","names":["jQuery","undefined","sm","window","SpecialismInfoListItemViewModel","options","settings","extend","PrimaryID","PrimaryText","SpecialismIDs","this","ko","observable","portal","vm","ConservatoireSpecialismsViewModel","self","loadSpecialismInfoListItemModel","source","target","i","length","push","DataList","observableArray","Specialisms","SpecialismCategories","StaffList","SpecialismCategoryMatrix","SpecialismStaffMatrix","sectionIncluded","DataLoaded","DataLoading","DataContainer","Touched","IsRequired","DataLoadErrorCount","WorkingItem","ConservatoireSpecialismDataItem","OriginalItem","SaveWorkingChanges","workingItem","SpecialismID","Specialism","SpecialismCategoryID","SpecialismCategory","StaffID","Staff","ReasonForStaffChange","InEditMode","SectionRequired","GetSpecialismNameById","name","GetSpecialismCategoryNameById","GetStaffNameById","IsVMValid","ui","comboBox","hide","show","not","id","Value","Text","CancelWorkingChanges","EditItem","data","event","JSON","parse","toJSON","AddItem","RemoveItem","remove","item","AnythingPopulated","computed","dataItem","utility","isNullOrEmpty","Completed","LoadModel","container","Payload","Config","viewModel","SetSectionsConfigData","smapi","access","loadListItemModels","ListData","SpecialismOptions","SpecialismCategoryOptions","StaffOptions","SpecialismChangeMatrix","SpecialismCategoryLookup","SpecialismStaffLookup","AdmissionsSpecialisms","conservatoireSpecialism","newDataItem","constant","applicationDebugFlag","console","log","err","GetModelData","blockui","applicationMID","personMID","callback","blockUI","url","_baseApiUri","formatString","ajax","type","dataType","contentType","headers","processData","crossDomain","xhrFields","withCredentials","success","textStatus","jqXHR","page","application","modelDataResponseHandler","error","exception","modelErrorHandler","handleErrorWithMessages","CheckInclusion","ApiContainerModel","Status","ValidationTitle","ValidationMessages","result","InclusionResult","sectionsToAdd","Array","sectionsToRemove","section","required","MaintainSections","BlockContainer","block","message","getResourceValue","UnBlockContainer","unblock","SetFocus","ProcessOnServer","ExtractATO","atoList","ato","toJS","ID","GID","validatedObservable","showReasonForStaffChange","editSpecialismFields","subscribe","admissions","AdmissionsSpecialismModel","Filter","specialismID","sourceMatrix","resultList","currentItem","specialismMatch","isMatch","indexOf","newItem","ListItemModel","AvailableSpecialismCategories","AvailableStaff","min","params","validate_MustBeNumeric_Key","max","number","maxLength","validate_0CharactersOrLess_Key","ModelErrors","validation","group"],"sources":["assets/js/localization/conservatoire/helpers/viewmodels/admissions/sm.portal.vm.conservatoirespecialisms.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 // Conservatoire Specialisms View Model\r\n /**************************************/\r\n function ConservatoireSpecialismsViewModel() {\r\n\r\n var self = this;\r\n\r\n /*** PROPERTIES ***/\r\n this.DataList = ko.observableArray();\r\n /*** PROPERTIES ***/\r\n\r\n /*** LIST DATA PROPERTIES ***/\r\n this.Specialisms = ko.observableArray();\r\n this.SpecialismCategories = ko.observableArray();\r\n this.StaffList = ko.observableArray();\r\n this.SpecialismCategoryMatrix = ko.observableArray();\r\n this.SpecialismStaffMatrix = ko.observableArray();\r\n this.sectionIncluded = ko.observable(false);\r\n /*** LIST DATA PROPERTIES ***/\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(\"ConservatoireSpecialismsContainer\");\r\n this.Touched = ko.observable(false);\r\n this.IsRequired = ko.observable(false);\r\n this.DataLoadErrorCount = ko.observable(0);\r\n /*** SECTION PROPERTIES ***/\r\n\r\n this.WorkingItem = ko.observable(new sm.portal.vm.ConservatoireSpecialismDataItem({\r\n Specialisms: this.Specialisms,\r\n SpecialismCategories: this.SpecialismCategories,\r\n StaffList: this.StaffList,\r\n SpecialismCategoryMatrix: this.SpecialismCategoryMatrix,\r\n SpecialismStaffMatrix: this.SpecialismStaffMatrix\r\n }));\r\n this.OriginalItem = ko.observable(new sm.portal.vm.ConservatoireSpecialismDataItem({\r\n Specialisms: this.Specialisms,\r\n SpecialismCategories: this.SpecialismCategories,\r\n StaffList: this.StaffList,\r\n SpecialismCategoryMatrix: this.SpecialismCategoryMatrix,\r\n SpecialismStaffMatrix: this.SpecialismStaffMatrix\r\n }));\r\n\r\n this.SaveWorkingChanges = function () {\r\n\r\n var workingItem = new sm.portal.vm.ConservatoireSpecialismDataItem({\r\n SpecialismID: self.WorkingItem().SpecialismID(),\r\n Specialism: self.WorkingItem().Specialism(),\r\n SpecialismCategoryID: self.WorkingItem().SpecialismCategoryID(),\r\n SpecialismCategory: self.WorkingItem().SpecialismCategory(),\r\n StaffID: self.WorkingItem().StaffID(),\r\n Staff: self.WorkingItem().Staff(),\r\n ReasonForStaffChange: self.WorkingItem().ReasonForStaffChange(),\r\n SpecialismCategoryMatrix: this.SpecialismCategoryMatrix,\r\n SpecialismStaffMatrix: this.SpecialismStaffMatrix,\r\n InEditMode: self.WorkingItem().InEditMode(),\r\n SectionRequired: self.IsRequired(),\r\n Specialisms: this.Specialisms,\r\n SpecialismCategories: this.SpecialismCategories,\r\n StaffList: this.StaffList\r\n });\r\n\r\n if (workingItem.SpecialismID()) {\r\n workingItem.Specialism(self.GetSpecialismNameById(workingItem.SpecialismID()).name);\r\n }\r\n\r\n if (workingItem.SpecialismCategoryID()) {\r\n workingItem.SpecialismCategory(self.GetSpecialismCategoryNameById(workingItem.SpecialismCategoryID()).name);\r\n }\r\n\r\n if (workingItem.StaffID()) {\r\n workingItem.Staff(self.GetStaffNameById(workingItem.StaffID()).name);\r\n }\r\n\r\n self.WorkingItem(new sm.portal.vm.ConservatoireSpecialismDataItem({\r\n Specialisms: this.Specialisms,\r\n SpecialismCategories: this.SpecialismCategories,\r\n StaffList: this.StaffList,\r\n SpecialismCategoryMatrix: this.SpecialismCategoryMatrix,\r\n SpecialismStaffMatrix: this.SpecialismStaffMatrix\r\n }));\r\n\r\n if (workingItem.IsVMValid()) {\r\n\r\n if (!workingItem.InEditMode()) {\r\n // This is an Add...\r\n self.DataList.push(workingItem);\r\n } else {\r\n // NOTE: Edits automatically bind back to the list (knockout is cool, huh?)\r\n workingItem.InEditMode(false);\r\n self.OriginalItem().SpecialismID(workingItem.SpecialismID());\r\n self.OriginalItem().Specialism(workingItem.Specialism());\r\n self.OriginalItem().SpecialismCategoryID(workingItem.SpecialismCategoryID());\r\n self.OriginalItem().SpecialismCategory(workingItem.SpecialismCategory());\r\n self.OriginalItem().StaffID(workingItem.StaffID());\r\n self.OriginalItem().Staff(workingItem.Staff());\r\n self.OriginalItem().ReasonForStaffChange(workingItem.ReasonForStaffChange());\r\n self.OriginalItem().InEditMode(workingItem.InEditMode());\r\n self.OriginalItem().SpecialismCategoryMatrix(workingItem.SpecialismCategoryMatrix());\r\n self.OriginalItem().SpecialismStaffMatrix(workingItem.SpecialismStaffMatrix());\r\n }\r\n\r\n sm.portal.ui.comboBox();\r\n\r\n // hide the data entry view\r\n jQuery('.dataEntryView').hide();\r\n\r\n // show the display view with one item\r\n jQuery('.dataDisplayView').show();\r\n jQuery('.dataDisplayView ul.detailedList li').not('.noneAdded').show();\r\n }\r\n };\r\n\r\n this.GetSpecialismNameById = function (id) {\r\n\r\n for (var i = 0; i < self.Specialisms().length; i++) {\r\n if (self.Specialisms()[i].Value() === id) {\r\n return self.Specialisms()[i].Text();\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n this.GetSpecialismCategoryNameById = function (id) {\r\n\r\n for (var i = 0; i < self.SpecialismCategories().length; i++) {\r\n if (self.SpecialismCategories()[i].Value() === id) {\r\n return self.SpecialismCategories()[i].Text();\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n this.GetStaffNameById = function (id) {\r\n\r\n for (var i = 0; i < self.StaffList().length; i++) {\r\n if (self.StaffList()[i].Value() === id) {\r\n return self.StaffList()[i].Text();\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /** ADD/EDIT LIST METHODS **/\r\n this.CancelWorkingChanges = function () {\r\n self.WorkingItem(new sm.portal.vm.ConservatoireSpecialismDataItem({\r\n Specialisms: this.Specialisms,\r\n SpecialismCategories: this.SpecialismCategories,\r\n StaffList: this.StaffList,\r\n SpecialismCategoryMatrix: this.SpecialismCategoryMatrix,\r\n SpecialismStaffMatrix: this.SpecialismStaffMatrix\r\n }));\r\n\r\n //hide the display view\r\n jQuery('.dataEntryView').hide();\r\n\r\n // show the entry view\r\n jQuery('.dataDisplayView').show();\r\n };\r\n this.EditItem = function (data, event) {\r\n self.OriginalItem(data);\r\n\r\n self.WorkingItem(\r\n new sm.portal.vm.ConservatoireSpecialismDataItem(\r\n JSON.parse(ko.toJSON(data))\r\n )\r\n );\r\n self.WorkingItem().InEditMode(true);\r\n\r\n jQuery('.dataDisplayView').hide();\r\n jQuery('.dataEntryView').show();\r\n };\r\n this.AddItem = function (data, event) {\r\n self.WorkingItem(\r\n new sm.portal.vm.ConservatoireSpecialismDataItem(\r\n JSON.parse(ko.toJSON(data))\r\n )\r\n );\r\n };\r\n this.RemoveItem = function (data, event) {\r\n self.DataList.remove(function (item) {\r\n return item.SpecialismID == data.SpecialismID &&\r\n item.SpecialismCategoryID == data.SpecialismCategoryID &&\r\n item.StaffID == data.StaffID;\r\n });\r\n };\r\n /** ADD/EDIT LIST METHODS **/\r\n\r\n /*** COMPUTED PROPERTIES ***/\r\n this.AnythingPopulated = ko.computed(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 (!sm.portal.utility.isNullOrEmpty(dataItem.SpecialismID())) return true;\r\n if (!sm.portal.utility.isNullOrEmpty(dataItem.Specialism())) return true;\r\n if (!sm.portal.utility.isNullOrEmpty(dataItem.SpecialismCategoryID())) return true;\r\n if (!sm.portal.utility.isNullOrEmpty(dataItem.SpecialismCategory())) return true;\r\n if (!sm.portal.utility.isNullOrEmpty(dataItem.StaffID())) return true;\r\n if (!sm.portal.utility.isNullOrEmpty(dataItem.Staff())) return true;\r\n }\r\n }\r\n return false;\r\n }, this);\r\n this.Completed = ko.computed(function () {\r\n if (this.IsRequired()) {\r\n return this.AnythingPopulated() && this.Touched();\r\n } else {\r\n return this.Touched();\r\n }\r\n }, this);\r\n /*** COMPUTED PROPERTIES ***/\r\n\r\n /*** SECTION METHODS ***/\r\n function loadSpecialismInfoListItemModel(source, target) {\r\n for (var i = 0; i < source.length; i++) {\r\n target.push(new SpecialismInfoListItemViewModel({\r\n PrimaryID: source[i].PrimaryID,\r\n PrimaryText: source[i].PrimaryText,\r\n SpecialismIDs: source[i].SpecialismIDs\r\n }));\r\n }\r\n return target;\r\n };\r\n\r\n this.LoadModel = function (container) {\r\n try {\r\n // update application section configurations\r\n if (container && container.Payload && container.Payload.Config) {\r\n viewModel.SetSectionsConfigData(\"ConservatoireSpecialisms\", container.Payload.Config);\r\n }\r\n this.Specialisms = smapi.access.loadListItemModels(container.Payload.ListData.SpecialismOptions, this.Specialisms);\r\n this.SpecialismCategories = smapi.access.loadListItemModels(container.Payload.ListData.SpecialismCategoryOptions, this.SpecialismCategories);\r\n this.StaffList = smapi.access.loadListItemModels(container.Payload.ListData.StaffOptions, this.StaffList);\r\n this.SpecialismCategoryMatrix = loadSpecialismInfoListItemModel(container.Payload.ListData.SpecialismChangeMatrix.SpecialismCategoryLookup, this.SpecialismCategoryMatrix);\r\n this.SpecialismStaffMatrix = loadSpecialismInfoListItemModel(container.Payload.ListData.SpecialismChangeMatrix.SpecialismStaffLookup, this.SpecialismStaffMatrix);\r\n\r\n if (container.Payload.AdmissionsSpecialisms != null) {\r\n\r\n for (var i = 0; i < container.Payload.AdmissionsSpecialisms.length; i++) {\r\n\r\n var conservatoireSpecialism = container.Payload.AdmissionsSpecialisms[i];\r\n var newDataItem = new sm.portal.vm.ConservatoireSpecialismDataItem({\r\n SpecialismID: conservatoireSpecialism.SpecialismID,\r\n Specialism: conservatoireSpecialism.Specialism,\r\n SpecialismCategoryID: conservatoireSpecialism.SpecialismCategoryID,\r\n SpecialismCategory: conservatoireSpecialism.SpecialismCategory,\r\n StaffID: conservatoireSpecialism.StaffID,\r\n Staff: conservatoireSpecialism.Staff,\r\n ReasonForStaffChange: conservatoireSpecialism.ReasonForStaffChange,\r\n Specialisms: this.Specialisms,\r\n SpecialismCategories: this.SpecialismCategories,\r\n StaffList: this.StaffList,\r\n SpecialismCategoryMatrix: this.SpecialismCategoryMatrix,\r\n SpecialismStaffMatrix: this.SpecialismStaffMatrix\r\n });\r\n\r\n this.DataList.push(newDataItem);\r\n }\r\n }\r\n\r\n this.DataLoading(false);\r\n this.DataLoaded(true);\r\n if (smapi.constant.applicationDebugFlag) {\r\n console.log('[ConservatoireSpecialismsVM] Data Loaded');\r\n }\r\n }\r\n catch(err) {\r\n\r\n }\r\n };\r\n this.GetModelData = function (blockui, applicationMID, personMID, callback) {\r\n\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=conservatoirespecialisms&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 this.CheckInclusion = function (applicationMID, personMID) {\r\n if(self.sectionIncluded()) return;\r\n \r\n var url = _baseApiUri + sm.portal.utility.formatString('api/studentportal/CheckApplicationSectionInclusion?sectionName=conservatoirespecialisms&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 self.sectionIncluded(true);\r\n var container = new smapi.access.ApiContainerModel(data.Status, data.Payload, data.ValidationTitle, data.ValidationMessages);\r\n if (data.Status == 'success') {\r\n var result = container.Payload.InclusionResult;\r\n var sectionsToAdd = Array();\r\n var sectionsToRemove = Array();\r\n\r\n console.log('Inclusion Result for Conservatoire Specialisms: ' + result);\r\n switch (result) {\r\n case \"Included\":\r\n sectionsToAdd.push({ section: 'ConservatoireSpecialisms', required: false });\r\n break;\r\n case \"Required\":\r\n sectionsToAdd.push({ section: 'ConservatoireSpecialisms', required: true });\r\n break;\r\n case \"Exclude\":\r\n sectionsToRemove.push('ConservatoireSpecialisms');\r\n break;\r\n }\r\n console.log('Calling Maintain Sections');\r\n viewModel.MaintainSections(sectionsToAdd, sectionsToRemove);\r\n }\r\n },\r\n error: function (jqXHR, exception) {\r\n sm.portal.page.application.modelErrorHandler(self, jqXHR);\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 this.UnBlockContainer = function () {\r\n jQuery(\"#\" + self.DataContainer()).unblock();\r\n viewModel.SetFocus();\r\n };\r\n this.ProcessOnServer = function () {\r\n return true;\r\n };\r\n this.ExtractATO = function () {\r\n\r\n var atoList = Array();\r\n\r\n for (var i = 0; i < self.DataList().length; i++) {\r\n var dataListItem = self.DataList()[i];\r\n var ato = dataListItem.ExtractATO();\r\n atoList.push(ko.toJS(ato));\r\n }\r\n\r\n return atoList;\r\n };\r\n /*** SECTION METHODS ***/\r\n\r\n return self;\r\n };\r\n\r\n function ConservatoireSpecialismDataItem(options) {\r\n var defaults = {\r\n SpecialismID: '',\r\n SpecialismCategoryID: '',\r\n StaffID: '',\r\n ReasonForStaffChange: '',\r\n InEditMode: false,\r\n ID: -1,\r\n GID: null,\r\n Specialisms: null,\r\n SpecialismCategories: null,\r\n StaffList: null,\r\n SpecialismCategoryMatrix: null,\r\n SpecialismStaffMatrix: null\r\n };\r\n var settings = jQuery.extend({}, defaults, options);\r\n\r\n // Self-Identification\r\n var self = this;\r\n\r\n self.SpecialismID = ko.validatedObservable(settings.SpecialismID);\r\n self.Specialism = ko.validatedObservable(settings.Specialism);\r\n self.SpecialismCategoryID = ko.validatedObservable(settings.SpecialismCategoryID);\r\n self.SpecialismCategory = ko.validatedObservable(settings.SpecialismCategory);\r\n self.StaffID = ko.validatedObservable(settings.StaffID);\r\n self.Staff = ko.validatedObservable(settings.Staff);\r\n self.ReasonForStaffChange = ko.validatedObservable(settings.ReasonForStaffChange);\r\n self.GID = ko.validatedObservable(settings.GID);\r\n self.ID = ko.validatedObservable(settings.ID);\r\n self.InEditMode = ko.observable(settings.InEditMode);\r\n\r\n if (settings.Specialisms == undefined || settings.Specialisms == null) {\r\n self.Specialisms = ko.observableArray();\r\n } else {\r\n self.Specialisms = settings.Specialisms;\r\n }\r\n\r\n if (settings.SpecialismCategories == undefined || settings.SpecialismCategories == null) {\r\n self.SpecialismCategories = ko.observableArray();\r\n } else {\r\n self.SpecialismCategories = settings.SpecialismCategories;\r\n }\r\n\r\n if (settings.StaffList == undefined || settings.StaffList == null) {\r\n self.StaffList = ko.observableArray();\r\n } else {\r\n self.StaffList = settings.StaffList;\r\n }\r\n\r\n if (settings.SpecialismCategoryMatrix == undefined || settings.SpecialismCategoryMatrix == null) {\r\n self.SpecialismCategoryMatrix = ko.observableArray();\r\n } else {\r\n self.SpecialismCategoryMatrix = settings.SpecialismCategoryMatrix;\r\n }\r\n\r\n if (settings.SpecialismStaffMatrix == undefined || settings.SpecialismStaffMatrix == null) {\r\n self.SpecialismStaffMatrix = ko.observableArray();\r\n } else {\r\n self.SpecialismStaffMatrix = settings.SpecialismStaffMatrix;\r\n }\r\n\r\n /*** PROPERTIES ***/\r\n self.showReasonForStaffChange = ko.observable(false);\r\n self.editSpecialismFields = ko.observable(true);\r\n /*** PROPERTIES ***/\r\n\r\n /*** SUBSCRIBED PROPERTIES ***/\r\n\r\n this.SpecialismID.subscribe(function () {\r\n self.showReasonForStaffChange(settings.ReasonForStaffChange.length > 0);\r\n self.editSpecialismFields(settings.ReasonForStaffChange.length === 0);\r\n });\r\n\r\n /*** SUBSCRIBED PROPERTIES ***/\r\n\r\n self.ExtractATO = function () {\r\n\r\n return new smapi.admissions.AdmissionsSpecialismModel({\r\n SpecialismID: self.SpecialismID(),\r\n SpecialismCategoryID: self.SpecialismCategoryID(),\r\n StaffID: self.StaffID(),\r\n ReasonForStaffChange: self.ReasonForStaffChange(),\r\n ID: self.ID(),\r\n GID: self.GID()\r\n });\r\n }\r\n\r\n /*** FILTER FUNCTION ***/\r\n this.Filter = function (type, specialismID) {\r\n\r\n var sourceMatrix;\r\n var resultList = Array();\r\n\r\n switch (type) {\r\n case \"SpecialismCategory\":\r\n sourceMatrix = self.SpecialismCategoryMatrix;\r\n break;\r\n case \"SpecialismStaff\":\r\n sourceMatrix = self.SpecialismStaffMatrix;\r\n break;\r\n } // End switch\r\n\r\n for (var i = 0; i < sourceMatrix.length; i++) {\r\n\r\n var currentItem = sourceMatrix[i];\r\n\r\n // Construct the Match Checkers\r\n var specialismMatch = sm.portal.utility.isNullOrEmpty(specialismID) ? '' : '|' + specialismID + '|';\r\n\r\n // Make the checks\r\n var isMatch = true;\r\n\r\n // Specialism \r\n if (!sm.portal.utility.isNullOrEmpty(specialismMatch) && currentItem.SpecialismIDs.indexOf(specialismMatch) < 0) {\r\n isMatch = false;\r\n }\r\n\r\n // Final check for NO FILTER VALUES WHATSOEVER\r\n if (sm.portal.utility.isNullOrEmpty(specialismMatch)) {\r\n isMatch = false;\r\n }\r\n\r\n if (isMatch) {\r\n var newItem = new smapi.access.ListItemModel({ Text: currentItem.PrimaryText, Value: currentItem.PrimaryID, ID: currentItem.PrimaryID });\r\n resultList.push(newItem);\r\n }\r\n }\r\n\r\n return resultList;\r\n }\r\n /*** FILTER FUNCTION ***/\r\n\r\n /*** COMPUTED LIST PROPERTIES ***/\r\n self.AvailableSpecialismCategories = ko.computed(function () {\r\n return self.Filter(\"SpecialismCategory\", this.SpecialismID());\r\n }, this);\r\n self.AvailableStaff = ko.computed(function () {\r\n return self.Filter(\"SpecialismStaff\", this.SpecialismID());\r\n }, this);\r\n /*** COMPUTED LIST PROPERTIES ***/\r\n\r\n /*** VALIDATION METHODS ***/\r\n self.SpecialismID.extend({\r\n min: {\r\n params: -9223372036854775808,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n max: {\r\n params: 9223372036854775807,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n number: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n }\r\n });\r\n self.SpecialismCategoryID.extend({\r\n min: {\r\n params: -9223372036854775808,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n max: {\r\n params: 9223372036854775807,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n number: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n }\r\n });\r\n self.StaffID.extend({\r\n min: {\r\n params: -9223372036854775808,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n max: {\r\n params: 9223372036854775807,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n },\r\n number: {\r\n params: true,\r\n message: sm.portal.utility.getResourceValue(smapi.constant.validate_MustBeNumeric_Key)\r\n }\r\n });\r\n self.ReasonForStaffChange.extend({\r\n maxLength: {\r\n params: 255,\r\n message: sm.portal.utility.formatString(sm.portal.utility.getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '255')\r\n }\r\n });\r\n\r\n \r\n // Set Model Grouping for validation\r\n this.ModelErrors = ko.validation.group(this);\r\n // Check if Model is valid \r\n // (will NOT validate attached models, unless we\r\n // init that in ui.js - currently it has performance problems)\r\n this.IsVMValid = function () {\r\n if (this.ModelErrors().length == 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n this.Completed = ko.computed(function () {\r\n var isCompleted = this.IsVMValid();\r\n return isCompleted;\r\n }, this);\r\n /*** VALIDATION METHODS ***/\r\n\r\n return self;\r\n };\r\n\r\n function SpecialismInfoListItemViewModel(options) {\r\n\r\n var defaults = {\r\n PrimaryID: 0,\r\n PrimaryText: '',\r\n SpecialismIDs: ''\r\n };\r\n var settings = jQuery.extend({}, defaults, options);\r\n\r\n // Self-Identification\r\n var self = this;\r\n\r\n this.PrimaryID = ko.observable(settings.PrimaryID);\r\n this.PrimaryText = ko.observable(settings.PrimaryText);\r\n this.SpecialismIDs = ko.observable(settings.SpecialismIDs);\r\n\r\n return self;\r\n }\r\n\r\n jQuery.extend(true, sm.portal.vm, {\r\n ConservatoireSpecialismsViewModel: ConservatoireSpecialismsViewModel,\r\n ConservatoireSpecialismDataItem: ConservatoireSpecialismDataItem,\r\n SpecialismInfoListItemViewModel: SpecialismInfoListItemViewModel\r\n });\r\n\r\n})(jQuery);"]}