{"version":3,"sources":["page/jobSearch.js"],"names":["jQuery","fn","InitializeSearchPage","option","$","extend","initialJsonData","serviceUrl","typeAheadModelUrl","typeAheadServiceUrl","viewModelJs","JSON","parse","viewModel","ko","mapping","fromJS","$scrollDefaultPosition","defaultScrollTop","height","offset","top","pageContent","this","HasSearchRun","observable","IsSearchRunning","ScrollPositionUpdate","HasPendingUpdates","SelectedFilters","observableArray","TypeAheadResultGroup","SearchBoxFocus","KeywordSearching","SearchBoxFocusThrottled","computed","throttle","LoadDataFromServer","viewModelToSend","GetRequestObject","SearchFilters","ajax","url","type","dataType","contentType","data","toJSON","cache","success","results","Skip","ResultCount","GridData","removeAll","utils","arrayForEach","item","push","HasMoreResults","KeywordFilter","DecodeHtmlInput","ReloadFilters","SetSelectedFilters","error","xhr","textStatus","errorThrown","console","log","PopulateResults","currentState","History","getState","qs","qsParms","hash","parseQueryString","currentSkip","length","newSkip","skip","parseInt","projectedTotal","Take","pop","Array","ClearAllSearchFilters","hasFilters","reloadFilters","reload","keyword","services","ServiceFilters","indexOf","ID","IsSelected","IndustryFilters","office","OfficeFilters","level","LevelFilters","scrollPosition","scroll","animate","scrollTop","LoadFromParameters","window","onstatechange","LoadNextPage","QueryString","pushState","options","initialTitle","forceScrollPosition","queryString","selectedItems","encodeURIComponent","join","Search","windowPosition","KeywordSearch","HasSelectedFilters","arrayFirst","callBack","ClearAdvancedSearchFilters","ClearLetterFilter","LetterFilters","isFunction","ClearSearchFilter","parentName","newItem","IsEnabled","Name","Label","keyWordLabel","Url","ParentName","ClearFilter","ClearSearch","ResetDropdowns","dropdowns","currentValues","find","firstValues","i","innerHTML","ResetDropdown","toLowerCase","currentValue","firstValue","encodedString","textArea","document","createElement","value","GetFilterName","filter","AddNewFilter","undefined","applyBindings","get"],"mappings":"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","file":"jobSearch.js","sourcesContent":["jQuery.fn.InitializeSearchPage = function (option) {\r\n var defaults = {\r\n initialJsonData: null,\r\n serviceUrl: null,\r\n typeAheadModelUrl: null,\r\n typeAheadServiceUrl: null\r\n };\r\n\r\n var option = $.extend({}, defaults, option);\r\n var viewModelJs = JSON.parse(option.initialJsonData);\r\n var viewModel = ko.mapping.fromJS(viewModelJs);\r\n var guidEmpty = '00000000-0000-0000-0000-000000000000';\r\n var keyWordIDKey = 'KEYWORD';\r\n var $scrollDefaultPosition = $('.js-jobs-scroll-default-position');\r\n var defaultScrollTop = $(\".homepage-navigation\").height() > 0 ? $scrollDefaultPosition.offset().top - $(\".homepage-navigation\").height() : $scrollDefaultPosition.offset().top;\r\n var typeAheadTimer;\r\n var pageContent = $(this);\r\n viewModel.HasSearchRun = ko.observable(false);\r\n viewModel.IsSearchRunning = ko.observable(false);\r\n viewModel.ScrollPositionUpdate = ko.observable(false);\r\n viewModel.HasPendingUpdates = ko.observable(false);\r\n viewModel.SelectedFilters = ko.observableArray();\r\n viewModel.TypeAheadResultGroup = ko.observableArray();\r\n viewModel.SearchBoxFocus = ko.observable(false);\r\n viewModel.KeywordSearching = ko.observable(false);\r\n viewModel.SearchBoxFocusThrottled = ko.computed(viewModel.SearchBoxFocus).extend({ throttle: 100 });\r\n\r\n // Populate Results & Grid Data\r\n\r\n viewModel.LoadDataFromServer = function () {\r\n viewModel.IsSearchRunning(true);\r\n var viewModelToSend = GetRequestObject(viewModel.SearchFilters);\r\n\r\n $.ajax({\r\n url: option.serviceUrl,\r\n type: \"POST\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n data: ko.mapping.toJSON(viewModelToSend),\r\n cache: false,\r\n success: function (data) {\r\n var results = ko.observableArray();\r\n var resultsUpcoming = ko.observableArray();\r\n if (viewModel.SearchFilters.Skip() == 0) {\r\n viewModel.ResultCount(0);\r\n viewModel.GridData.removeAll();\r\n }\r\n ko.mapping.fromJS(data.GridData, {}, results);\r\n ko.utils.arrayForEach(results(), function (item) {\r\n viewModel.GridData.push(item);\r\n });\r\n\r\n viewModel.ResultCount(data.ResultCount);\r\n viewModel.HasMoreResults(data.HasMoreResults);\r\n viewModel.SearchFilters.KeywordFilter(viewModel.DecodeHtmlInput(data.SearchFilters.KeywordFilter));\r\n viewModel.SearchFilters.ReloadFilters(data.SearchFilters.ReloadFilters);\r\n viewModel.SetSelectedFilters();\r\n viewModel.HasPendingUpdates(false);\r\n viewModel.IsSearchRunning(false);\r\n },\r\n error: function (xhr, textStatus, errorThrown) {\r\n console.log(xhr);\r\n console.log(\"textStatus : \" + textStatus);\r\n console.log(\"errorThrown : \" + errorThrown);\r\n }\r\n });\r\n };\r\n\r\n viewModel.PopulateResults = function () {\r\n var currentState = History.getState();\r\n var qs = History.getState().data['qs'];\r\n qs = typeof qs == \"undefined\" ? currentState.hash : qs;\r\n var qsParms = !!qs ? parseQueryString(qs) : {};\r\n var currentSkip = viewModel.GridData().length;\r\n var newSkip = 0;\r\n\r\n if (!!qsParms.skip && qsParms.skip > 0) {\r\n newSkip = parseInt(qsParms.skip);\r\n }\r\n\r\n var projectedTotal = newSkip + viewModel.SearchFilters.Take();\r\n if (projectedTotal < currentSkip && newSkip != 0) {\r\n // This is here for a back button after a page scroll\r\n viewModel.IsSearchRunning(true);\r\n viewModel.HasMoreResults(true);\r\n viewModel.HasSearchRun(true);\r\n viewModel.SearchFilters.Skip(newSkip);\r\n while (viewModel.GridData().length > projectedTotal) {\r\n var popped = viewModel.GridData.pop();\r\n }\r\n viewModel.IsSearchRunning(false);\r\n } else {\r\n var existingFiltersTypeFilters = new Array();\r\n\r\n viewModel.SearchFilters.ClearAllSearchFilters();\r\n var hasFilters = false;\r\n var reloadFilters = false;\r\n\r\n if (!!qsParms.reload && qsParms.reload.length > 0) {\r\n reloadFilters = (qsParms.reload == \"true\");\r\n }\r\n\r\n viewModel.SearchFilters.ReloadFilters(reloadFilters);\r\n if (!!qsParms.keyword && qsParms.keyword.length > 0) {\r\n viewModel.SearchFilters.KeywordFilter(qsParms.keyword);\r\n hasFilters = true;\r\n }\r\n\r\n viewModel.SearchFilters.Skip(newSkip);\r\n if (!!qsParms.services && qsParms.services.length > 0) {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.ServiceFilters(), function (item) {\r\n if (qsParms.services.indexOf(item.ID()) >= 0) {\r\n item.IsSelected(true);\r\n hasFilters = true;\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.IndustryFilters(), function (item) {\r\n if (qsParms.services.indexOf(item.ID()) >= 0) {\r\n item.IsSelected(true);\r\n hasFilters = true;\r\n }\r\n });\r\n }\r\n\r\n if (!!qsParms.office && qsParms.office.length > 0) {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.OfficeFilters(), function (item) {\r\n if (qsParms.office.indexOf(item.ID()) >= 0) {\r\n item.IsSelected(true);\r\n hasFilters = true;\r\n }\r\n });\r\n }\r\n\r\n if (!!qsParms.level && qsParms.level.length > 0) {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LevelFilters(), function (item) {\r\n if (qsParms.level.indexOf(item.ID()) >= 0) {\r\n item.IsSelected(true);\r\n hasFilters = true;\r\n }\r\n });\r\n }\r\n\r\n if (!viewModel.ScrollPositionUpdate()) {\r\n viewModel.LoadDataFromServer();\r\n viewModel.HasSearchRun(hasFilters);\r\n }\r\n }\r\n\r\n // Reposition by scroll position\r\n var scrollPosition = 0;\r\n if (!!qsParms.scroll && qsParms.scroll.length > 0) {\r\n scrollPosition = parseInt(qsParms.scroll);\r\n }\r\n $(\"html, body\").animate({ scrollTop: scrollPosition }, \"slow\");\r\n return;\r\n };\r\n\r\n viewModel.LoadFromParameters = function () {\r\n viewModel.PopulateResults();\r\n };\r\n\r\n window.onstatechange = function () {\r\n viewModel.PopulateResults();\r\n };\r\n\r\n // Pagination\r\n\r\n viewModel.LoadNextPage = function () {\r\n viewModel.SearchFilters.Skip(viewModel.GridData().length);\r\n var qs = viewModel.QueryString();\r\n viewModel.ScrollPositionUpdate(false);\r\n History.pushState({ qs: qs }, History.options.initialTitle, qs);\r\n };\r\n\r\n // Query string handling\r\n\r\n viewModel.QueryString = function (forceScrollPosition) {\r\n var queryString = \"\";\r\n var selectedItems = new Array();\r\n\r\n if (viewModel.SearchFilters.KeywordFilter() != null && viewModel.SearchFilters.KeywordFilter().length > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"keyword=\" + encodeURIComponent(viewModel.SearchFilters.KeywordFilter());\r\n }\r\n\r\n ko.utils.arrayForEach(viewModel.SearchFilters.ServiceFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n selectedItems.push(item.ID());\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.IndustryFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n selectedItems.push(item.ID());\r\n }\r\n });\r\n if (selectedItems.length > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"services=\" + selectedItems.join();\r\n }\r\n\r\n selectedItems = new Array();\r\n ko.utils.arrayForEach(viewModel.SearchFilters.OfficeFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n selectedItems.push(item.ID());\r\n }\r\n });\r\n if (selectedItems.length > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"office=\" + selectedItems.join();\r\n }\r\n\r\n selectedItems = new Array();\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LevelFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n selectedItems.push(item.ID());\r\n }\r\n });\r\n if (selectedItems.length > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"level=\" + selectedItems.join();\r\n }\r\n\r\n if (viewModel.SearchFilters.Skip() > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"skip=\" + viewModel.SearchFilters.Skip();\r\n }\r\n\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"reload=\" + viewModel.SearchFilters.ReloadFilters();\r\n\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n if (!!forceScrollPosition && forceScrollPosition > 0) {\r\n queryString += \"scroll=\" + forceScrollPosition;\r\n } else {\r\n queryString += \"scroll=\" + $(window).scrollTop();\r\n }\r\n return queryString;\r\n };\r\n\r\n // Searching\r\n\r\n // Run search by pushing new state\r\n viewModel.Search = function () {\r\n // var windowPosition = (viewModel.HasSelectedFilters()) ? defaultScrollTop : 1;\r\n var windowPosition = defaultScrollTop;\r\n\r\n if (viewModel.HasPendingUpdates() == false) {\r\n return;\r\n }\r\n\r\n viewModel.SearchFilters.Skip(0);\r\n var qs = viewModel.QueryString(windowPosition);\r\n viewModel.ScrollPositionUpdate(false);\r\n History.pushState({ qs: qs }, History.options.initialTitle, qs);\r\n };\r\n\r\n viewModel.KeywordSearch = function () {\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n };\r\n\r\n // Filters\r\n\r\n viewModel.HasSelectedFilters = function () {\r\n if (viewModel.SearchFilters.KeywordFilter() != null && viewModel.SearchFilters.KeywordFilter().length > 0) {\r\n return true;\r\n }\r\n var hasItem = ko.utils.arrayFirst(viewModel.SearchFilters.ServiceFilters(), function (item) {\r\n return (item.IsSelected() == true);\r\n });\r\n if (hasItem != null) {\r\n return true;\r\n }\r\n var hasItem = ko.utils.arrayFirst(viewModel.SearchFilters.IndustryFilters(), function (item) {\r\n return (item.IsSelected() == true);\r\n });\r\n if (hasItem != null) {\r\n return true;\r\n }\r\n var hasItem = ko.utils.arrayFirst(viewModel.SearchFilters.OfficeFilters(), function (item) {\r\n return (item.IsSelected() == true);\r\n });\r\n if (hasItem != null) {\r\n return true;\r\n }\r\n var hasItem = ko.utils.arrayFirst(viewModel.SearchFilters.LevelFilters(), function (item) {\r\n return (item.IsSelected() == true);\r\n });\r\n if (hasItem != null) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n viewModel.SearchFilters.ClearAllSearchFilters = function (callBack) {\r\n viewModel.SearchFilters.KeywordFilter('');\r\n viewModel.SearchFilters.ClearAdvancedSearchFilters(callBack);\r\n };\r\n\r\n viewModel.SearchFilters.ClearLetterFilter = function () {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LetterFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n };\r\n\r\n viewModel.SearchFilters.ClearAdvancedSearchFilters = function (callBack) {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.ServiceFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.IndustryFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.OfficeFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LevelFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n\r\n if (!!callBack && $.isFunction(callBack)) {\r\n callBack();\r\n }\r\n };\r\n\r\n viewModel.SearchFilters.ClearSearchFilter = function (parentName) {\r\n if (parentName === \"KeywordFilter\") {\r\n viewModel.SearchFilters.KeywordFilter('');\r\n } else if (parentName === \"IndustryFilters\") {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.IndustryFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n } else if (parentName === \"ServiceFilters\") {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.ServiceFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n } else if (parentName === \"OfficeFilters\") {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.OfficeFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n } else if (parentName === \"LevelFilters\") {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LevelFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n }\r\n };\r\n\r\n viewModel.SetSelectedFilters = function () {\r\n viewModel.SelectedFilters.removeAll();\r\n if (viewModel.SearchFilters.KeywordFilter() != null && viewModel.SearchFilters.KeywordFilter().length > 0) {\r\n var newItem = {\r\n ID: ko.observable(keyWordIDKey),\r\n IsEnabled: ko.observable(true),\r\n IsSelected: ko.observable(false),\r\n Name: ko.observable(viewModel.SearchFilters.KeywordFilter()),\r\n Label: ko.observable(option.keyWordLabel),\r\n Url: ko.observable('#0'),\r\n ParentName: ko.observable(\"KeywordFilter\")\r\n };\r\n newItem.ClearFilter = function () {\r\n viewModel.SearchFilters.KeywordFilter('');\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n };\r\n viewModel.SelectedFilters.push(newItem);\r\n }\r\n ko.utils.arrayForEach(viewModel.SearchFilters.ServiceFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n viewModel.SelectedFilters.push(item);\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.IndustryFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n viewModel.SelectedFilters.push(item);\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.OfficeFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n viewModel.SelectedFilters.push(item);\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LevelFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n viewModel.SelectedFilters.push(item);\r\n }\r\n });\r\n };\r\n\r\n viewModel.ClearSearch = function () {\r\n viewModel.SearchFilters.ClearAdvancedSearchFilters();\r\n viewModel.SearchFilters.ClearSearchFilter('KeywordFilter');\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n };\r\n\r\n viewModel.ClearFilter = function (parentName) {\r\n viewModel.SearchFilters.ClearSearchFilter(parentName);\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n };\r\n\r\n viewModel.ResetDropdowns = function () {\r\n var dropdowns = $('.header-filters-list .header-filter-dropdown');\r\n var currentValues = dropdowns.find('span');\r\n var firstValues = dropdowns.find('li.drop-down-item.default > a');\r\n\r\n if (currentValues.length === firstValues.length) {\r\n for (i = 0; i < firstValues.length; i++) {\r\n currentValues[i].innerHTML = firstValues[i].innerHTML;\r\n }\r\n }\r\n };\r\n\r\n viewModel.ResetDropdown = function (parentName) {\r\n if (parentName === \"KeywordFilter\") {\r\n\r\n } else if (parentName == \"LetterFilters\") {\r\n\r\n } else {\r\n var dropdowns = $('.header-filters-list .' + parentName.toLowerCase());\r\n var currentValue = dropdowns.find('span')[0];\r\n var firstValue = dropdowns.find('li.drop-down-item.default > a')[0];\r\n currentValue.innerHTML = firstValue.innerHTML;\r\n }\r\n }\r\n\r\n // String utilities\r\n\r\n viewModel.DecodeHtmlInput = function (encodedString) {\r\n var textArea = document.createElement('textarea');\r\n textArea.innerHTML = encodedString;\r\n return textArea.value != null && textArea.value != \"null\" ? textArea.value : \"\";\r\n };\r\n\r\n viewModel.GetFilterName = function (filter) {\r\n if (filter.ParentName() !== \"KeywordFilter\") {\r\n return filter.Name();\r\n } else {\r\n return '\"' + filter.Name() + '\"';\r\n }\r\n };\r\n\r\n viewModel.AddNewFilter = function (filter) { \r\n if (filter.ParentName !== undefined)\r\n viewModel.SearchFilters.ClearSearchFilter(filter.ParentName());\r\n\r\n filter.IsSelected(true);\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n }\r\n\r\n // Apply and load data\r\n viewModel.SetSelectedFilters();\r\n ko.applyBindings(viewModel, pageContent.get(0));\r\n viewModel.LoadFromParameters();\r\n\r\n};"]}