{"version":3,"sources":["wrapper_head.js","QuestionModel.js","QuestionModelList.js","ResultModel.js","AppView.js","jurisdictionSelectView.js","QuestionListView.js","QuestionTabListView.js","QuestionTabView.js","QuestionView.js","ResultView.js","wrapper_foot.js"],"names":["Selector","Collection","Model","View","$","Question","Backbone","extend","idAttribute","defaults","ACTIVE","ANSWER","CURRENT","ERROR","resetModel","this","set","activate","collection","activateQuestion","QuestionList","model","key","groups","groupActive","resultModel","parse","results","_this","each","j","response","IDNUM","parseInt","ID","replace","GROUP","len","ANSWERS","length","i","VALUE","LABEL","silent","parseAnswers","answerText","answer","destination","evm","warning","end","count","activeQuestion","models","breakThis","groupCount","filter","get","ele","selector","data","GROUPS","split","pop","_","find","obj","DESTINATION","EVM","WARNING","WARNINGS","CONTENT","CONFIG","SELECTORBEHAVIOUR","calculateResult","e","console","log","saveState","resultPool","RESULTS","slice","resultList","methodArray","answerNumber","unAnswered","rLength","answerbehaviour","METHOD","arrayFind","undefined","el","push","SELECTORTYPE","toLowerCase","indexOf","shift","fetchProduct","saveResult","saveEVMs","resetAnswers","NoRelevantResultsBasedOnAnswers","trigger","myAnswers","localStorage","setItem","JSON","stringify","loadState","getItem","resetState","removeItem","friendlyAnswers","formData","save","config","usersession","id","SAVE","FormData","append","fetch","uri","buildUrl","body","credentials","method","then","json","catch","error","evms","SAVEEVMS","cookieWarning","setCookie","path","arr","Result","jurisdictionId","escapeRegExp","string","productnames","$jurisdictionSelector","productnamesParam","forEach","result","PRODUCTNAME","productNameArray","Array","isArray","map","name","encodeURIComponent","join","url","headers","Content-Type","ok","Error","let","modeljurisdictionId","productNamesArray","DATA","apiProduct","apiProductName","some","resultProductName","suggestionJurisdictionID","PRODUCTID","OBJECTID","TEMPORARYTITLE","productNamePattern","RegExp","trim","test","ENABLED","ProductEnabled","val","jQuery","post","directory","jurisdictionID","hide","newResults","productId","ajax","product","AppView","events","click #e_selector_reset","click .e_selector_button_start","click .e_selector_init","template","html","questionList","initialize","initSelector","supressIntroduction","setElement","$el","TEXT","INTRODUCTION","introTemplate","start","destroySelector","undelegateEvents","removeData","unbind","remove","prototype","call","questionTabListView","show","QUESTIONS","QuestionListView","QuestionTabListView","noResults","preSelectedJurisdiction","ResultView","jurisdictions","jurisdictionSelectView","JurisdictionSelectView","render","LandscapeView","resetQuestionaire","css","animate","scrollTop","offset","top","setTimeout","event","getParameterByName","window","location","href","CustomEvent","parent","document","dispatchEvent","tagName","change select","options","divId","bindAll","listenTo","empty","attr","prepend","select","currentResults","hasOptions","jurisdiction","JURISDICTIONDELETED","option","JURISDICTIONID","text","JURISDICTIONNAME","removeClass","addClass","onJurisdictionChange","selectedJurisdiction","on","click .e_selector_button_group_next","modelViews","groupButtonsTemplate","fragment","createDocumentFragment","modelView","QuestionView","appendChild","createRange","createContextualFragment","submitManyAnswer","v","getAnswerFromForm","groupTabsTemplate","QuestionTabView","tooltip","position","my","at","content","className","click a","attributes","goToGroup","templateWarning","click input[type=radio]","click .e_selector_button_back","click .e_selector_button_next","QUESTION","submitAnswer","currentModel","currentTarget","type","backOneGroup","closest","prev","click","$answerInputs","answerString","click .e_selector_print","fetchedData","resultsFinal","resultsStart","RESULTSSTART","resultsFinish","RESULTSFINISH","noResultsText","NORESULTS","resultText","RESULTTITLE","printResults","elems","print","printContent","apps","SelectorApp"],"mappings":"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","file":"selector.min.js","sourcesContent":["/* Copyright Epoq Legal Ltd 2009-2015 */\r\n\r\nvar Selector = (typeof Selector == \"undefined\") ? {} : Selector;\r\n\r\nSelector.Collection = {};\r\nSelector.Model = {};\r\nSelector.View = {};\r\n\r\n$(function(){","/**\r\n * The model representing the question\r\n * @class\r\n */\r\nSelector.Model.Question = Backbone.Model.extend(\r\n/** @lends Selector.Model.Question# */\r\n{\r\n\tidAttribute: \"ID\",\r\n\r\n defaults: {\r\n\t \"ACTIVE\": false,\r\n \"ANSWER\": null,\r\n \"CURRENT\": false,\r\n \"ERROR\": null,\r\n },\r\n\r\n resetModel: function(){\r\n this.set(\"ACTIVE\", false);\r\n this.set(\"ANSWER\", null);\r\n this.set(\"CURRENT\", false);\r\n this.set(\"WARNING\", null);\r\n this.set(\"EVM\", null);\r\n this.set(\"CURRENT\", false);\r\n },\r\n\r\n activate: function(){\r\n\t this.collection.activateQuestion(this);\r\n }\r\n\t\r\n});","/**\n * Collection representing questions \n * @class\n */\nSelector.Collection.QuestionList = Backbone.Collection.extend(\n/** @lends Selector.Collection.QuestionList# */\n{\n\t/** the model this collection will use */\n\tmodel: Selector.Model.Question,\n\n /* selector type */\n key: null,\n\n groups: false,\n groupActive: 1,\n\n resultModel: null, //holds our results\n\n\tparse: function(results) {\n\n var _this = this;\n\n\t\t$.each(results, function(j, response) {\n\n response.IDNUM = parseInt(response.ID.replace(\"question_\", \"\"));\n\n if (response.GROUP != \"\") {\n _this.groups = true;\n }\n\t\t\t\n\t\t\t//fucking Coldfusion JSON turns Yes/No into true/false\n\t\t\tvar len = response.ANSWERS.length;\n\t\t\tfor (var i = 0; i < len; i++) {\n if (response.ANSWERS[i].VALUE === true) { response.ANSWERS[i].VALUE = \"Yes\"; }\n if (response.ANSWERS[i].VALUE === false) { response.ANSWERS[i].VALUE = \"No\"; }\n if (response.ANSWERS[i].LABEL === true) { response.ANSWERS[i].LABEL = \"Yes\"; }\n if (response.ANSWERS[i].LABEL === false) { response.ANSWERS[i].LABEL = \"No\"; }\n\t\t\t}\n\t\t\t\n\t\t});\n\t\t\n\t\treturn results;\n\t},\n\n activateQuestion: function(model) {\n this.each(function(model){\n model.set({\"ACTIVE\": false}, {silent: true});\n }, this);\n model.set({\"ACTIVE\": true});\n },\n\n\tparseAnswers: function() {\n\n\t\tvar _this = this,\n end = false,\n\t\t\tcount = 0, //if the while loop goes over the number of questions then something has gone wrong, so break \n\t\t\tactiveQuestion = this.models[0];\n\n //is this group driven? Work out which group we should be on.\n if (this.groups) {\n\n var breakThis = false,\n groupCount = 1;\n\n while (!breakThis) {\n var unanswered = this.filter(function(model){\n return model.get(\"GROUP\") == groupCount && (model.get(\"ANSWER\") === null || model.get(\"ANSWER\") === \"\");\n });\n\n if (unanswered.length > 0 || groupCount > ele.selector.data.GROUPS.length) {\n _this.groupActive = groupCount;\n breakThis = true;\n }\n\n groupCount++;\n\n }\n }\n\n\t\twhile (!end && count < this.length) {\n\t\t\ttry {\n\t\t\t\tif (activeQuestion.get(\"ANSWER\")){\n\t\t\t\t\t//question is answered, get next question\n var answerText = activeQuestion.get(\"ANSWER\").split(\"|\").pop();\n\n\t\t\t\t\tvar answer = _.find(activeQuestion.get(\"ANSWERS\"), function (obj) { return obj.VALUE === answerText; }),\n destination = answer.DESTINATION,\n evm = answer.EVM,\n warning = answer.WARNING;\n\n activeQuestion.set(\"EVM\", \"\");\n if (evm !== \"\") {\n activeQuestion.set({\"EVM\": answer.EVM}, {silent: true});\n }\n activeQuestion.set(\"WARNING\", \"\");\n if (warning !== \"\") {\n activeQuestion.set(\"WARNING\", _.find(ele.selector.data.WARNINGS, function(obj) { return obj.ID === warning; }).CONTENT);\n }\n\t\t\t\t\tif (destination === \"result\" || (this.groups && this.groupActive > ele.selector.data.GROUPS.length)) {\n\t\t\t\t\t\tif (ele.selector.data.CONFIG.SELECTORBEHAVIOUR !== \"FLAT\"){ activeQuestion.set({\"ACTIVE\": false, \"CURRENT\": false}); }\n\t\t\t\t\t\tthis.calculateResult();\n\t\t\t\t\t\tend = true;\n\t\t\t\t\t} else if (destination) {\n\t\t\t\t\t\tif (ele.selector.data.CONFIG.SELECTORBEHAVIOUR !== \"FLAT\") { activeQuestion.set({\"ACTIVE\": false, \"CURRENT\": false}); }\n\t\t\t\t\t\tactiveQuestion = _.find(this.models, function(obj) { return obj.get(\"ID\") === destination; });\n\t\t\t\t\t\tactiveQuestion.set({\"ACTIVE\": true, \"CURRENT\": true});\n\t\t\t\t\t\tthis.resultModel.set(\"results\", []);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tend = true;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.log( \"couldn't find something for reasons\");\n\t\t\t\tconsole.log(e);\n\t\t\t\tend = true;\n\t\t\t}\n\t\t\t\n\t\t\tcount++;\n\t\t}\n\t\tthis.saveState();\n\t\t\n\t},\n\n\tcalculateResult: function(){\n\n //clone result pool\n var resultPool = ele.selector.data.RESULTS.slice(0);\n\n //parse each answer, throwing out results that don't match our user's choices\n this.each(function(model){\n\n var answer = model.get(\"IDNUM\") + \":\" + model.get(\"ANSWER\"),\n unAnswered = false;\n\n if (model.get(\"ANSWER\") === null || ele.selector.answerbehaviour === \"allowChange\" && !model.get(\"ACTIVE\")) {\n answer = model.get(\"IDNUM\") + \":\"; unAnswered = true;\n }\n\n var rLength = resultPool.length;\n for (var j = 0; j < rLength; j++) {\n\n //if there is a question and this question is visible\n if (resultPool[j]) {\n //if the method DOESN'T contain our answer but DOES contain another answer for this question - remove it from the potential results\n\n //method as a string does not work. Split to array\n var methodArray = resultPool[j].METHOD.split(\",\"),\n answerNumber = answer.split(\":\")[0],\n answerText = answer.split(\":\")[1];\n\n if ((this.arrayFind(answer, methodArray) === -1 && this.arrayFind((answerNumber+\":\"), methodArray) > -1)) {\n //the answer required for this result isn't in the list of customer answers, AND there's another answer for this question\n //console.log(\"1removing \"+resultPool[j].METHOD);\n resultPool[j] = undefined;\n } else if (this.arrayFind(answerNumber + \":\", methodArray) > -1 && unAnswered) {\n //else if the method requires an answer but we haven't given one, remove\n //console.log(\"2removing \"+resultPool[j].METHOD);\n resultPool[j] = undefined;\n } else {\n //console.log(\"leaving \"+resultPool[j].METHOD);\n }\n }\n }\n\n }, this);\n\n //all this bit does is remove holes in the array\n var resultList = [],\n rLength = resultPool.length;\n for (var j = 0; j < rLength; j++) {\n //is there an item in this array slot\n if (resultPool[j] !== undefined) {\n //has this item already been put into the array?\n if (resultList.filter(function(el){return el.CONTENT === resultPool[j].CONTENT;}).length === 0) {\n resultList.push(resultPool[j]);\n }\n }\n }\n\n //if a healthcheck, show multiple results. Otherwise show first.\n if (ele.selector.data.CONFIG.SELECTORTYPE.toLowerCase().indexOf(\"healthcheck\") > -1) {\n this.resultModel.set(\"results\", resultList);\n } else {\n this.resultModel.set(\"results\", [resultList.shift()]);\n }\n\n if(this.resultModel.get('results').length){\n this.resultModel.set(\"NoRelevantResultsBasedOnAnswers\", false);\n this.resultModel.fetchProduct();\n } else {\n this.resultModel.set(\"NoRelevantResultsBasedOnAnswers\", true);\n }\n\n this.saveResult();\n this.saveEVMs();\n },\n\n resetAnswers: function(){\n this.groupActive = 1;\n this.each(function(model){\n model.resetModel();\n }, this);\n this.models[0].set(\"ACTIVE\", true);\n this.resultModel.set({results: null, NoRelevantResultsBasedOnAnswers: false});\n this.resultModel.trigger('change'); // Because in some contexts the set does not trigger a change (correctly)\n },\n\n /**\n * use local storage to load and save the state of this question list\n */\n saveState: function() {\n var myAnswers = [];\n this.each(function(model) {\n if (model.get(\"ANSWER\") !== null ){\n myAnswers.push(model.get(\"IDNUM\") + \":\" + model.get(\"ANSWER\"));\n }\n });\n\n if(typeof(Storage)!==\"undefined\") {\n localStorage.setItem(this.key, JSON.stringify(myAnswers));\n }\n },\n\n loadState: function(){\n if (typeof(Storage)!==\"undefined\") {\n var myAnswers = JSON.parse(localStorage.getItem(this.key));\n if (myAnswers) {\n for (var i = 0; i < myAnswers.length; i++) {\n if (myAnswers[i] !== null) {\n var splitAnswer = myAnswers[i].split(\":\");\n if (splitAnswer.length > 1) {\n var key = parseInt(myAnswers[i].split(\":\")[0]);\n var answer = myAnswers[i].split(\":\")[1];\n this.find(function (model) {\n return model.get(\"IDNUM\") === key;\n }).set({\"ANSWER\": answer}, {silent:true});\n }\n }\n }\n }\n this.parseAnswers();\n }\n },\n\n resetState: function(){\n //remove items from local storage\n localStorage.removeItem(this.key);\n },\n\n\n /**\n * save the result set in database (for reporting)\n * and save EVMs to personData\n */\n\n saveResult: function() {\n if (this.save === true && ele.config.usersession.id !== 0 && ele.selector.data.CONFIG.SAVE) {\n\n var _this = this,\n friendlyAnswers = {},\n formData = new FormData();\n\n this.each(function(model) {\n if (model.get(\"ANSWER\") !== null ){\n friendlyAnswers[model.get(\"TITLE\")] = model.get(\"ANSWER\");\n }\n });\n\n formData.append(\"ajax\", \"1\");\n formData.append(\"persondatatype\", \"selector\");\n formData.append(\"persondatakeyname\", _this.key);\n formData.append(\"persondatageneric\", _this.key);\n formData.append(\"persondatastring\", JSON.stringify(friendlyAnswers));\n\n fetch(ele.uri.buildUrl(\"personData\"), {\n body: formData,\n credentials: \"same-origin\",\n method: 'POST'\n })\n .then(function(response) {\n return response.json();\n })\n .catch(function(error){\n console.error(error);\n });\n\n this.save = false;\n }\n },\n\n /**\n * we can't save this server side because of GDPR. Save in session data. Pray we can reach\n * this on the server\n */\n\n saveEVMs: function() {\n\n if (ele.selector.data.CONFIG.SAVEEVMS) {\n\n var _this = this,\n evms = {};\n\n this.each(function(model) {\n if (model.get(\"EVM\") !== undefined && model.get(\"EVM\") !== null){\n var evm = model.get(\"EVM\").split(\":\");\n if (evm.length === 2 && evm[0] != \"\" && evm[1] != \"\") {\n evms[evm[0]] = evm[1];\n }\n }\n });\n\n ele.cookieWarning.setCookie(\"evms\", JSON.stringify(evms), {path: '' });\n\n this.save = false;\n }\n },\n\n //utilities\n\n //my special arrayFind() that matches substring but ensures 3: is not found in 13:\n arrayFind: function(obj, arr) {\n\n for (var i = 0, j = arr.length; i < j; i++) {\n\n //multi-answer questions(healthcheck)\n if (obj.indexOf(\"|\") > -1 && //this is a multi question answer\n obj.indexOf(arr[i].split(\":\")[1]) > -1 && //the required answer is in this answer\n arr[i].indexOf(obj.split(\":\")[0]) === 0 //the question number is in this answer\n ) return i;\n\n //normal questions\n if (arr[i].indexOf(obj) === 0) return i;\n\n }\n\n return -1;\n }\n\n});","/**\n * The model representing the result\n * @class\n */\nSelector.Model.Result = Backbone.Model.extend(\n/** @lends Selector.Model.Result# */\n{\n defaults: {\n \"results\": [],\n \"NoRelevantResultsBasedOnAnswers\": false,\n \"jurisdictionId\": null\n },\n escapeRegExp: function(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // Escapes special characters for regex\n },\n fetchProduct: function() {\n var _this = this;\n if (this.get(\"results\") !== null) {\n if (ele.selector.data.CONFIG.SELECTORTYPE === 'HumanResourcesCheckuphealthcheck'\n || ele.selector.data.CONFIG.SELECTORTYPE === 'ResidentialLandlordCheckuphealthcheck'\n || ele.selector.data.CONFIG.SELECTORTYPE === 'GeneralBusinessCheckuphealthcheck') {\n\n const jurisdictionId = this.get('jurisdictionId'); // Use the jurisdictionId stored in the model\n if (jurisdictionId != 0) {\n // Initialize an empty array to store product names\n const productnames = [];\n var $jurisdictionSelector = $('.form-select');\n\n // Loop through the results array\n ele.selector.data.RESULTS.forEach(result => {\n // Check if the result object has 'PRODUCTNAME' property\n if (result.PRODUCTNAME) {\n try {\n // Try to parse PRODUCTNAME as JSON array\n const productNameArray = JSON.parse(result.PRODUCTNAME);\n\n // Check if it's an array and push all names\n if (Array.isArray(productNameArray)) {\n productnames.push(...productNameArray);\n } else {\n // If it's not an array, just push it as a single string\n productnames.push(result.PRODUCTNAME);\n }\n } catch (e) {\n // If parsing fails, assume it's a single string and push it\n productnames.push(result.PRODUCTNAME);\n }\n }\n });\n\n // Convert the productnames array into a URL-encoded query parameter\n const productnamesParam = productnames.map(name => encodeURIComponent(name)).join('&productnames=');\n\n // Construct the full URL with query parameters\n const url = `${ele.uri.buildUrl('selectorresultproducts')}&jurisdictionid=${jurisdictionId}&productnames=${productnamesParam}`;\n\n // Send GET request using fetch\n fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n .then(response => {\n // Check if the response is OK, then extract the JSON body\n if (!response.ok) {\n throw new Error('Network response was not ok');\n }\n return response.json(); // Parse the response as JSON\n })\n .then(data => {\n // Now you can access the data from the server response\n // Iterate over the results and the API response\n const results = _this.get(\"results\");\n let modeljurisdictionId = _this.get('jurisdictionId');\n results.forEach(result => {\n if(result?.PRODUCTNAME){\n let productNamesArray = [];\n try {\n // Parse PRODUCTNAME as a JSON array\n productNamesArray = JSON.parse(result.PRODUCTNAME);\n if (!Array.isArray(productNamesArray)) {\n productNamesArray = [productNamesArray];\n }\n } catch (e) {\n // If parsing fails, handle it as a single string\n productNamesArray = [result.PRODUCTNAME];\n }\n\n if(data?.DATA && Array.isArray(data.DATA)){\n // Iterate over the API response data\n data.DATA.forEach(apiProduct => {\n const apiProductName = apiProduct.PRODUCTNAME;\n\n // Check if any of the product names in the array match the API product name\n productNamesArray.some(resultProductName => { \n \n // Clear any old suggestions if the jurisdictions no longer align\n if (result?.suggestionJurisdictionID && result.suggestionJurisdictionID !== modeljurisdictionId) {\n delete result.PRODUCTID;\n delete result.OBJECTID;\n delete result.suggestionJurisdictionID;\n delete result.TEMPORARYTITLE;\n }\n\n // Create a regular expression to match product names\n const productNamePattern = new RegExp(\n _this.escapeRegExp(apiProductName.replace(/\\s*\\([A-Z]{2}\\)\\s*$/, \"\").trim()), 'i'\n ); \n \n // Test if the API product name matches any of the result product names\n if (productNamePattern.test(resultProductName)) {\n // If a match is found, add the OBJECTID and PRODUCTID\n result.OBJECTID = apiProduct.OBJECTID;\n result.PRODUCTID = apiProduct.PRODUCTID;\n result.ENABLED = results.ProductEnabled; \n result.TEMPORARYTITLE = apiProductName;\n result.suggestionJurisdictionID = modeljurisdictionId;\n \n return true; // Exit the 'some' loop early if a match is found\n }\n\n return false; // Continue if no match is found\n });\n });\n }\n }\n });\n\n if ($jurisdictionSelector.val() != '-' && $jurisdictionSelector.val() !== null) {\n jQuery.post('..' + ele.config.directory + '/index.cfm?event=storeJurisdictionInSession', {jurisdictionID: $('.form-select').val()});\n }\n $('.e_selector_tabs').hide();\n \n const newResults = [...results];\n _this.set({results: newResults}); \n this.trigger('change:results');\n })\n .catch((error) => {\n console.error('Error:', error);\n });\n } else {\n // Clear any old suggestions \n ele.selector.data.RESULTS.forEach(result => {\n delete result.PRODUCTID;\n delete result.OBJECTID;\n delete result.suggestionJurisdictionID;\n })\n }\n } else {\n //only do this for first result\n if (this.get(\"results\") !== null && this.get(\"results\").length === 1) {\n\n var result = this.get(\"results\")[0];\n\n if (result.PRODUCTID != 0 && typeof result.PRODUCTID != \"undefined\") {\n return fetch(ele.uri.buildUrl(\"productdata\", {productId: result.PRODUCTID, ajax: 1}))\n .then(function(response) {\n return response.json(); \n })\n .then(function(product) {\n $.extend(result, product);\n var results = _this.get(\"results\");\n results[0] = result;\n _this.set({results: results});\n return product;\n })\n .catch(function(error){\n console.error(error);\n });\n }\n }\n }\n }\n return null;\n}\n\n\t\n});","/**\n * The base view for this application. Initialises all objects and global events\n * @class\n */\n\nSelector.View.AppView = Backbone.View.extend(\n/** @lends UserDocs.View.AppView# */\n{\n\t/** The events we're listening to*/\n events: {\n \t\"click #e_selector_reset\": \"resetQuestionaire\",\n \"click .e_selector_button_start\" : \"start\",\n \t\"click .e_selector_init\" : \"initSelector\"\n\t},\n\n /** template to use for Underscore.js rendering */\n template: _.template($('#selector_base').html()),\n\t\n\tquestionList: null,\n\n\t/** \n\t * Initialisation function called when this object is created. \n\t * Create all the 'global' objects to this app and trigger some rendering \n\t */\n initialize: function() {\n \t\n \tthis.initSelector();\n },\n \n initSelector: function(supressIntroduction){\n\n //allows app to be loaded on page without the DOM element being present\n this.setElement($(\"#e_document_selector\"));\n\n this.$el.html(this.template());//add the base DOM\n this.$el.find(\"#e_selector_reset\").hide();\n\n if (ele.selector.data) {\n /*--------------------*/\n /* object setup stuff */\n /*--------------------*/\n if (supressIntroduction || ele.selector.data.TEXT.INTRODUCTION === \"\") {\n this.start();\n } else {\n /* introduction */\n var introTemplate = _.template($('#selector_introduction').html());\n this.$el.find(\".e_selector_introduction\").html(introTemplate(ele.selector.data.TEXT));\n\n if (ele.selector.data.CONFIG.SELECTORBEHAVIOUR === \"FLAT\") {\n this.start();\n }\n }\n /*------------------------*/\n /* end object setup stuff */\n /*------------------------*/\n }\n },\n\n destroySelector: function() {\n // COMPLETELY UNBIND THE VIEW\n this.undelegateEvents();\n\n this.$el.removeData().unbind();\n\n // Remove view from DOM\n this.remove();\n Backbone.View.prototype.remove.call(this);\n },\n\n start: function(){\n\n let questionTabListView;\n\n this.$el.find(\"#e_selector_reset\").show();\n //this.$el.find('.e_selector_tabs').show();\n\n this.questionList = new Selector.Collection.QuestionList;\n this.questionList.key = ele.selector.data.CONFIG.SELECTORTYPE + \"_selector\";\n this.questionList.set(this.questionList.parse(ele.selector.data.QUESTIONS));\n\n var questionListView = new Selector.View.QuestionListView({collection: this.questionList});\n //questionListView.render();\n\n if (ele.selector.data.CONFIG.SELECTORBEHAVIOUR === \"TABS\") {\n questionTabListView = new Selector.View.QuestionTabListView({collection: this.questionList});\n this.$el.find(\".e_selector_introduction\").hide();\n }\n\n //set up the result\n this.questionList.resultModel = new Selector.Model.Result({results: null, noResults: false, jurisdictionId: ele.selector.preSelectedJurisdiction});\n var resultView = new Selector.View.ResultView({model: this.questionList.resultModel, el: $(\".e_selector_results\")});\n\n if (ele.selector.data.CONFIG.SELECTORTYPE === \"HumanResourcesCheckuphealthcheck\"\n || ele.selector.data.CONFIG.SELECTORTYPE === 'ResidentialLandlordCheckuphealthcheck'\n || ele.selector.data.CONFIG.SELECTORTYPE === 'GeneralBusinessCheckuphealthcheck'\n ) {\n // Set up a jurisdiction selector view\n const jurisdictions = ele.selector.jurisdictions;\n\n // If this is a Jurisidction view\n const jurisdictionSelectView = new Selector.View.JurisdictionSelectView({\n jurisdictions: jurisdictions,\n resultModel: this.questionList.resultModel\n });\n\n // Render the view and append it to a DOM element\n $('#jurisdiction-container').append(jurisdictionSelectView.render().el);\n }\n\n //set up the landscape if it exists\n if (ele.selector.data.CONFIG.SELECTORTYPE === \"landscape\") {\n var landscapeView = new Selector.View.LandscapeView({collection: this.questionList});\n }\n\n this.questionList.resetAnswers();\n this.questionList.loadState();\n if (ele.selector.data.CONFIG.SELECTORBEHAVIOUR === \"TABS\") {\n questionTabListView.render();\n }\n },\n \n resetQuestionaire: function(){\n\n this.questionList.resetAnswers();\n this.questionList.resetState();\n $(\".e_selector_tabs\").show();\n \t\n \tthis.$el.css(\"min-height\", 0)\n $(\".e_selector_warnings\").html(\"\");\n \t\n\t\t$('html,body').animate({\n\t\t\tscrollTop: $(\".e_selector\").offset().top\n\t }, 300);\n \t\n \tsetTimeout(function(){\n \t if (ele.uri.getParameterByName(window.location.href, \"sendEvents\")) {\n var event = new CustomEvent('resizeIframe');\n window.parent.document.dispatchEvent(event);\n var event = new CustomEvent('scrollToIframe');\n window.parent.document.dispatchEvent(event);\n }\n }, 500);\n }\n \n});\n\n","Selector.View.JurisdictionSelectView = Backbone.View.extend({\n // Change the tagName to 'div' so that the view generates a
\n tagName: 'div',\n\n events: {\n 'change select': 'onJurisdictionChange' // Listen to the change event on the element\n const select = $('');\n\n // Get current results from the model\n let currentResults = this.resultModel.get('results');\n\n // Only render jurisdictions if there are results\n let hasOptions = false;\n if (Array.isArray(currentResults) && currentResults.length > 0) {\n this.jurisdictions.forEach(jurisdiction => {\n if (jurisdiction.JURISDICTIONDELETED === 0) {\n const option = $('')\n .val(jurisdiction.JURISDICTIONID)\n .text(jurisdiction.JURISDICTIONNAME);\n\n // Preselect the jurisdiction if needed\n if (jurisdiction.JURISDICTIONID == this.resultModel.get('jurisdictionId')) {\n option.attr('selected', 'selected');\n }\n\n // Append the option to the select element\n select.append(option);\n hasOptions = true; // At least one option exists\n }\n });\n if(this.resultModel.get('jurisdictionId') === 0){\n select.prepend('')\n }\n }\n\n // Append the element\n const selectedJurisdiction = this.$('select').val();\n\n // Update the result model with the new jurisdiction\n this.resultModel.set('jurisdictionId', parseInt(selectedJurisdiction));\n\n // Trigger the 'fetchProduct' event to update the results view\n this.resultModel.fetchProduct();\n }\n});\n","Selector.View.QuestionListView = Backbone.View.extend(\r\n/** @lends Selector.View.QuestionListView# */\r\n{\r\n\tinitialize: function() {\r\n\r\n \t_.bindAll(this, \"render\");\r\n this.collection.on('reset',this.render);\r\n this.collection.on('change',this.render);\r\n \r\n\t},\r\n\r\n events: {\r\n \"click .e_selector_button_group_next\": \t\"submitManyAnswer\"\r\n },\r\n\r\n modelViews: [],\r\n\r\n /** Render function */\r\n\trender: function() {\r\n\r\n\t var _this = this;\r\n\r\n this.modelViews = [];\r\n\r\n //allows app to be loaded on page without the DOM element being present\r\n this.setElement($(\".e_selector_questions\"));\r\n\r\n var fragment = document.createDocumentFragment(),\r\n count = 0;\r\n\r\n if (this.collection.groups) {\r\n this.$el.show();\r\n\r\n this.collection.each(function (model) {\r\n if (model.get(\"GROUP\") == _this.collection.groupActive) {\r\n model.set(\"COUNT\", ++count);\r\n var modelView = new Selector.View.QuestionView({model: model});\r\n fragment.appendChild(modelView.render().el);\r\n _this.modelViews.push(modelView);\r\n }\r\n }, this);\r\n //buttons\r\n if (count > 0) {\r\n var groupButtonsTemplate = _.template($('#selector_group_buttons').html());\r\n fragment.appendChild(document.createRange().createContextualFragment(groupButtonsTemplate({groups: ele.selector.data.GROUPS, groupActive: this.collection.groupActive})));\r\n } else {\r\n this.$el.hide();\r\n }\r\n\r\n } else {\r\n this.collection.each(function (model) {\r\n if (model.get(\"ACTIVE\")) {\r\n model.set(\"COUNT\", ++count);\r\n var modelView = new Selector.View.QuestionView({model: model});\r\n fragment.appendChild(modelView.render().el);\r\n _this.modelViews.push(modelView);\r\n }\r\n }, this);\r\n }\r\n\r\n\t\tthis.$el.html(fragment);\r\n\r\n if (ele.uri.getParameterByName(window.location.href, \"sendEvents\")) {\r\n window.parent.document.dispatchEvent(new CustomEvent('resizeIframe'));\r\n }\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n submitManyAnswer: function(e) {\r\n\r\n\t _.each(this.modelViews, function(v) {\r\n\t v.getAnswerFromForm();\r\n });\r\n\r\n this.collection.save = true;\r\n this.collection.parseAnswers();\r\n this.render();\r\n\r\n }\r\n\r\n});","Selector.View.QuestionTabListView = Backbone.View.extend(\r\n/** @lends Selector.View.QuestionListView# */\r\n{\r\n\tinitialize: function() {\r\n\r\n \t_.bindAll(this, \"render\");\r\n this.collection.on('reset',this.render);\r\n this.collection.on('change',this.render);\r\n \r\n\t},\r\n\t\r\n\t/** Render function */\r\n\trender: function() {\r\n\r\n //allows app to be loaded on page without the DOM element being present\r\n this.setElement($(\".e_selector_tabs\"));\r\n\r\n if (this.collection.groups) {\r\n //group up the questions into categories\r\n var groupTabsTemplate = _.template($('#selector_group_tabs').html());\r\n this.$el.html(groupTabsTemplate({groups: ele.selector.data.GROUPS, groupActive: this.collection.groupActive}));\r\n } else {\r\n var fragment = document.createDocumentFragment();\r\n //just show 1 question per tab\r\n this.collection.each(function (model) {\r\n if (\r\n ele.selector.data.CONFIG.SELECTORTYPE === \"landscape\" || //only landscape as no conditional questions\r\n model.get(\"ANSWER\") !== null ||\r\n model.get(\"CURRENT\") !== false ||\r\n model.get(\"ACTIVE\") !== false\r\n ) {\r\n var modelView = new Selector.View.QuestionTabView({model: model});\r\n fragment.appendChild(modelView.render().el);\r\n }\r\n }, this);\r\n this.$el.html(fragment);\r\n }\r\n\r\n $('.tooltip').tooltip({\r\n hide: 50,\r\n show: 50,\r\n position: { my: \"center top\", at: \"center bottom\"},\r\n content: function(){return $(this).data(\"tooltip\");}\r\n });\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n});","Selector.View.QuestionTabView = Backbone.View.extend(\r\n/** @lends Selector.View.QuestionView# */\r\n{\t\r\n\t/** classname to give the generated element */\r\n\tclassName: \"e_selector_tab\",\r\n\t\r\n\t/** tagname to give this generated element */\r\n\ttagName: \"div\",\r\n\t\r\n\t/** template to use for Underscore.js rendering */\r\n\ttemplate: _.template($('#selector_tab').html()),\r\n\r\n events: {\r\n \"click a\": \t\"goToGroup\"\r\n },\r\n\r\n\t/** Render function */\r\n\trender: function() {\r\n\t\tthis.$el.html(this.template(this.model.attributes));//render the HTML\r\n\t\treturn this; //needed in order to chain rendering\r\n\t},\r\n\r\n goToGroup: function(){\r\n\t this.model.activate();\r\n }\r\n\r\n});","Selector.View.QuestionView = Backbone.View.extend(\r\n/** @lends Selector.View.QuestionView# */\r\n{\t\r\n\t/** classname to give the generated element */\r\n\tclassName: \"e_selector_item e_selector_question\",\r\n\t\r\n\t/** tagname to give this generated element */\r\n\ttagName: \"div\",\r\n\t\r\n\t/** template to use for Underscore.js rendering */\r\n template: _.template($('#selector_question').html()),\r\n\r\n templateWarning: _.template($('#selector_warning').html()),\r\n\r\n\tevents: {\r\n \"click input[type=radio]\": \t \"submitAnswer\",\r\n \"click .e_selector_button_back\": \t\"backOneGroup\",\r\n \"click .e_selector_button_next\": \t\"submitAnswer\"\r\n\t},\t\r\n\t\r\n\t/** Render function */\r\n\trender: function() {\r\n\t\t\r\n\t\tthis.$el.html(this.template(this.model.attributes));//render the HTML\r\n\r\n $(\".e_selector_warnings\").find(\"[data-question=\"+this.model.get(\"ID\")+\"]\").remove()\r\n if (this.model.get(\"WARNING\")) {\r\n if (ele.selector.data.CONFIG.SELECTORBEHAVIOUR === \"FLAT\") {\r\n this.$el.append(this.templateWarning({\r\n WARNING: this.model.get(\"WARNING\"),\r\n QUESTION: this.model.get(\"ID\")\r\n }));\r\n } else {\r\n if ($(\".e_selector_warnings\").find(\"[data-question=\"+this.model.get(\"ID\")+\"]\").length === 0) {\r\n $(\".e_selector_warnings\").prepend(this.templateWarning({\r\n WARNING: this.model.get(\"WARNING\"),\r\n QUESTION: this.model.get(\"ID\")\r\n }));\r\n }\r\n }\r\n }\r\n\r\n\t\treturn this; //needed in order to chain rendering\r\n\t},\r\n\r\n\tsubmitAnswer: function(e) {\r\n\r\n var currentModel = this.model;\r\n\r\n\t if (e.currentTarget.type === \"radio\" && ele.selector.data.CONFIG.SELECTORBEHAVIOUR !== \"FLAT\") {\r\n\t return true; //only allow radio button answering on FLAT version\r\n }\r\n\t\t\r\n\t\tthis.getAnswerFromForm();\r\n\r\n\t\t//set any answers after this to blank.\r\n this.model.collection.each(function(model){\r\n if (currentModel.get(\"IDNUM\") < model.get(\"IDNUM\")) {\r\n model.resetModel();\r\n }\r\n });\r\n\r\n\t\tthis.model.collection.save = true;\r\n\t\tthis.model.collection.parseAnswers();\r\n\t},\r\n\r\n backOneGroup: function() {\r\n $(\".e_selector_tab .active\").closest(\".e_selector_tab\").prev().find(\"a\").click();\r\n },\r\n\r\n getAnswerFromForm: function(){\r\n\r\n this.model.set(\"ERROR\", false);\r\n\r\n var $answerInputs = this.$el.find(\"input:checked\"),\r\n answer = [],\r\n answerString;\r\n\r\n $answerInputs.each(function(i) {\r\n answer.push($(this).val());\r\n });\r\n\r\n answerString = answer.join(\"|\");\r\n\r\n if (answerString === \"\") {\r\n this.model.set(\"ERROR\", true);\r\n }\r\n this.model.set(\"ANSWER\", answerString);\r\n\r\n }\r\n\r\n\r\n});","Selector.View.ResultView = Backbone.View.extend(\n/** @lends Selector.View.ResultView# */\n{\t\n\t/** classname to give the generated element */\n\tclassName: \"e_selector_item e_selector_result\",\n\t\n\t/** tagname to give this generated element */\n\ttagName: \"div\",\n\n\t/** template to use for Underscore.js rendering */\n\ttemplate: _.template($('#selector_result').html()),\n\n events: {\n \"click .e_selector_print\": \t\"printResults\"\n },\n\n initialize: function(options) {\n var _this = this;\n\n _.bindAll(this, \"render\");\n _.bindAll(this, \"fetchProduct\");\n // Listen only for changes to the 'results' attribute in the model\n this.model.on('change:results', this.render); \n // Listen to when fetchProduct is triggered separately\n this.model.on('fetchProduct', this.fetchProduct);\n this.setElement(options.el);\n },\n\n fetchProduct: function(){\n\t var _this = this;\n\t var result = this.model.fetchProduct();\n\n\t if (result) {\n result.then(function(){\n ele.selector.data.fetchedData = _this.model.attributes;\n });\n }\n },\n\n\t/** Render function */\n\trender: function() {\n let resultsFinal = this.model.get(\"results\");\n\t\tthis.$el.html(this.template({\n resultsStart: ele.selector.data.TEXT.RESULTSSTART,\n resultsFinish: ele.selector.data.TEXT.RESULTSFINISH,\n noResultsText: ele.selector.data.TEXT.NORESULTS,\n resultText: ele.selector.data.TEXT.RESULTTITLE,\n results: resultsFinal,\n NoRelevantResultsBasedOnAnswers: this.model.get(\"NoRelevantResultsBasedOnAnswers\")\n }));//render the HTML\n\n if (ele.uri.getParameterByName(window.location.href, \"sendEvents\")) {\n window.parent.document.dispatchEvent(new CustomEvent('resizeIframe'));\n }\n\n\t\treturn this; //needed in order to chain rendering\n\t},\n\n printResults: function(){\n\t let elems = $(\".pageContainer, .e_healthcheck_result_header, .button\");\n elems.hide();\n ele.print.printContent(\".e_selector_results\");\n elems.show();\n }\n\n});"," ele.apps = ele.apps || {};\r\n ele.apps.SelectorApp = new Selector.View.AppView;\r\n});"]}