{"version":3,"file":"uppsala.trustees-filter.min.js","names":["define","$","mustache","originalTitle","document","title","trusteesFilter","$resultsContainer","init","window","History","enabled","hide","UpdateHistory","InitializeHistoryStuff","timer","change","keyup","clearTimeout","setTimeout","Adapter","bind","state","getState","UpdateInputFields","UpdateResultList","GetQueryStringPart","url","key","hash","vars","questionmarkIndex","indexOf","hashes","slice","split","i","length","push","hasOwnProperty","GetSortFromQueryString","querySort","location","search","hashSort","substring","val","isInitial","query","board","party","sort","page","history","scrollPos","offset","top","scrollTop","queryString","encodeURIComponent","replaceState","pushState","historyState","data","prop","historyBaseUrl","historyQueryString","ajax","type","success","response","resultList","filterSummary","paging","hitsHtml","render","Politicians","html","summaryHtml","pagingHtml"],"sources":["uppsala.trustees-filter.js"],"mappings":"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","ignoreList":[],"sourcesContent":["define([\"jquery\", \"mustache\", \"history\"], function ($, mustache) {\r\n var originalTitle = document.title;\r\n var trusteesFilter = {\r\n\r\n $resultsContainer: $(\"#filter-results\"),\r\n init: function () {\r\n if (window.History.enabled) {\r\n $(\"#filter input[type=submit]\").hide();\r\n\r\n //Fix för att första sidladdningen utan KOMPLETT querystring blir en dubblett i history-listan, och därmed failar hela history-hanteringen.\r\n //Denna rad måste stå före initializeHistoryStuff(), annars funkar det inte i Chrome!\r\n trusteesFilter.UpdateHistory(true);\r\n\r\n trusteesFilter.InitializeHistoryStuff();\r\n }\r\n },\r\n InitializeHistoryStuff: function () {\r\n // SELECT ON-CHANGE\r\n $(\"#board\").change(function () {\r\n trusteesFilter.UpdateHistory(false);\r\n });\r\n\r\n // SELECT ON-CHANGE\r\n $(\"#party\").change(function () {\r\n trusteesFilter.UpdateHistory(false);\r\n });\r\n\r\n // INPUT ON-KEYUP\r\n var timer;\r\n $(\"#q\").keyup(function () {\r\n var delay = 500;\r\n clearTimeout(timer);\r\n timer = setTimeout(function () {\r\n trusteesFilter.UpdateHistory(false);\r\n }, delay);\r\n });\r\n\r\n History.Adapter.bind(window, \"statechange\", function () {\r\n var state = window.History.getState();\r\n\r\n //Uppdatera inmatningsfälten\r\n trusteesFilter.UpdateInputFields(state);\r\n\r\n //Uppdatera resultatlistan\r\n trusteesFilter.UpdateResultList(state);\r\n });\r\n },\r\n GetQueryStringPart: function (url, key) {\r\n var vars = [], hash;\r\n\r\n var questionmarkIndex = url.indexOf(\"?\");\r\n if (questionmarkIndex == -1) return \"\";\r\n\r\n var queryString = url.slice(questionmarkIndex + 1);\r\n\r\n var hashes = queryString.split(\"&\");\r\n\r\n for (var i = 0; i < hashes.length; i++) {\r\n hash = hashes[i].split(\"=\");\r\n vars.push(hash[0]);\r\n vars[hash[0]] = hash[1];\r\n }\r\n\r\n if (!vars.hasOwnProperty(key)) {\r\n return \"\";\r\n }\r\n\r\n return vars[key];\r\n },\r\n\r\n GetSortFromQueryString: function () {\r\n var sort;\r\n var querySort = trusteesFilter.GetQueryStringPart(window.location.search, \"sort\");\r\n if (querySort == \"\")\r\n return \"\";\r\n\r\n var hashSort = querySort.indexOf(\"#\");\r\n if (hashSort > 0) {\r\n querySort = querySort.substring(0, hashSort);\r\n }\r\n if (querySort.indexOf(\"Assignment\") > -1 && $(\"#board\").val() == \"\") {\r\n sort = \"\";\r\n }\r\n else {\r\n sort = querySort;\r\n }\r\n\r\n return sort;\r\n },\r\n\r\n //Pushes the \"filter input control state\" into history\r\n UpdateHistory: function (isInitial) {\r\n var query = $(\"#q\").val();\r\n var board = $(\"#board\").val();\r\n var party = $(\"#party\").val();\r\n var sort = trusteesFilter.GetSortFromQueryString();\r\n var page = isInitial ? trusteesFilter.GetQueryStringPart(window.location.search, \"page\") : \"\";\r\n var history = window.History;\r\n var state = history.getState();\r\n\r\n state.title = query ? query + ' - ' + originalTitle : originalTitle; \r\n\r\n var hash = window.location.hash;\r\n\r\n if (hash !== \"\") {\r\n var scrollPos = trusteesFilter.$resultsContainer.offset().top;\r\n $(window).scrollTop(scrollPos);\r\n }\r\n\r\n var queryString = \"?q=\" + encodeURIComponent(query) + \"&board=\" + encodeURIComponent(board) + \"&party=\" + encodeURIComponent(party) + \"&sort=\" + encodeURIComponent(sort) + \"&page=\" + encodeURIComponent(page);\r\n if (isInitial) {\r\n //Ser till att querystring är komplett vid första första sidladdningen och gör sedan replace på history entryt.\r\n document.title = state.title;\r\n history.replaceState({\r\n state: { query: query, board: board, party: party, sort: sort, page: page }\r\n }, state.title, queryString);\r\n } else {\r\n history.pushState({\r\n state: { query: query, board: board, party: party, sort: sort, page: page }\r\n }, state.title, queryString);\r\n }\r\n },\r\n //UPDATE HTML FOR INPUT FIELDS\r\n UpdateInputFields: function (historyState) {\r\n if (historyState.data != null) {\r\n if (historyState.data.state.query != null) {\r\n $(\"#q\").val(historyState.data.state.query);\r\n }\r\n else {\r\n $(\"#q\").val(\"\");\r\n }\r\n if (historyState.data.state.board != null) {\r\n $('#board option[value=\"' + historyState.data.state.board + '\"]').prop(\"selected\", true);\r\n }\r\n else {\r\n $('#board option[value=\"' + \"\" + '\"]').prop(\"selected\", true);\r\n }\r\n\r\n if (historyState.data.state.party != null) {\r\n $('#party option[value=\"' + historyState.data.state.party + '\"]').prop(\"selected\", true);\r\n }\r\n else {\r\n $('#party option[value=\"' + \"\" + '\"]').prop(\"selected\", true);\r\n }\r\n }\r\n },\r\n\r\n //GET ResultList HTML AND UPDATE HTML\r\n UpdateResultList: function (historyState) {\r\n var historyBaseUrl = historyState.url;\r\n var historyQueryString = \"\";\r\n var questionmarkIndex = historyState.url.indexOf(\"?\");\r\n\r\n if (questionmarkIndex > -1) {\r\n historyBaseUrl = historyBaseUrl.substring(0, questionmarkIndex);\r\n historyQueryString = historyState.url.slice(questionmarkIndex + 1);\r\n\r\n //Fix för att \"lura\" history-listan i IE och Chrome som cache:ar entrys,\r\n //vilket gör att ajax-anropens fejkade entrys blir korrupta. Genom att\r\n //ge ajax-anropen en url som skiljer sig från de vanliga anropen lurar\r\n //vi history-cachen att cache:a på rätt sätt.\r\n historyQueryString = \"ajax=1&\" + historyQueryString;\r\n }\r\n\r\n $.ajax({\r\n url: historyBaseUrl,\r\n type: \"get\",\r\n data: historyQueryString,\r\n success: function (response) {\r\n var resultList = $(\"#result-list\");\r\n var filterSummary = $(\"#filter-summary\");\r\n var paging = $(\"#paging\");\r\n\r\n // HITS\r\n var hitsTemplate =\r\n \"{{#Hits}}\" +\r\n \"
  • \" +\r\n '
    ' +\r\n '

    {{FullName}} ({{Party.PartyCode}})

    ' +\r\n \"{{#Title}}{{Title}}{{/Title}}\" +\r\n \"
    \" +\r\n \"{{#ProfileImageUrl}}\" +\r\n '
    ' +\r\n \"
    \" +\r\n '\"{{FullName}}\"' +\r\n \"
    \" +\r\n \"
    \" +\r\n \"{{/ProfileImageUrl}}\" +\r\n \"
  • \" +\r\n \"{{/Hits}}\";\r\n var hitsHtml = mustache.render(hitsTemplate, response.Politicians);\r\n resultList.html(hitsHtml);\r\n\r\n // FILTER SUMMARY\r\n var summaryTemplate =\r\n \"{{#HasPaging}}\" +\r\n '
    Lista med förtroendevalda sida {{Politicians.PageNumber}}
    ' +\r\n \"{{/HasPaging}}\" +\r\n \"{{^HasPaging}}\" +\r\n '
    Lista med förtroendevalda
    ' +\r\n \"{{/HasPaging}}\" +\r\n '
    ' +\r\n \"{{HitCount}}\" +\r\n \"
    \" + \" \" +\r\n '
    ' +\r\n \"\" +\r\n \"{{HitCountText}}\" +\r\n \"\" +\r\n \"{{#FormFilterCollection.ActiveFilters}} \" +\r\n '{{Preposition}} {{Value}} ×' +\r\n \"{{/FormFilterCollection.ActiveFilters}}\" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"{{#BoardMembersAndVacancies.VacanciesText}}\" +\r\n '

    {{BoardMembersAndVacancies.VacanciesText}}

    ' +\r\n \"{{/BoardMembersAndVacancies.VacanciesText}}\" +\r\n '
    ' +\r\n \"{{SortLabel}} \" +\r\n \"\" +\r\n \"
    \";\r\n var summaryHtml = mustache.render(summaryTemplate, response);\r\n filterSummary.html(summaryHtml);\r\n\r\n // PAGING\r\n var pagingTemplate =\r\n \"{{#HasPaging}}\" +\r\n '
    Visa alla
    ' +\r\n \"{{#Politicians.HasPreviousPage}}\" +\r\n '' +\r\n \"Föregående\" +\r\n '{{Politicians.PreviusPageNumber}} av {{Politicians.PageCount}}' +\r\n \"\" +\r\n \"{{/Politicians.HasPreviousPage}}\" +\r\n \"{{#Politicians.HasNextPage}}\" +\r\n '' +\r\n \"Nästa\" +\r\n '{{Politicians.NextPageNumber}} av {{Politicians.PageCount}}' +\r\n \"\" +\r\n \"{{/Politicians.HasNextPage}}\" +\r\n \"{{/HasPaging}}\";\r\n var pagingHtml = mustache.render(pagingTemplate, response);\r\n paging.html(pagingHtml);\r\n }\r\n });\r\n }\r\n\r\n }\r\n return trusteesFilter;\r\n});"]}