{"version":3,"sources":["app.js","model/QuestionModel.js","model/QuestionModelList.js","model/ResultModel.js","view/AppView.js","view/LandscapeView.js","view/QuestionListView.js","view/QuestionTabListView.js","view/QuestionTabView.js","view/QuestionView.js","view/ResultView.js"],"names":["Selector","Collection","Model","View","$","ele","apps","SelectorApp","AppView","Question","Backbone","extend","idAttribute","defaults","ACTIVE","ANSWER","CURRENT","ERROR","resetModel","this","set","activate","collection","activateQuestion","QuestionList","model","key","showResult","resultModel","parse","results","each","j","response","IDNUM","parseInt","ID","replace","len","ANSWERS","length","i","VALUE","LABEL","silent","activatePrevQuestion","questions","where","get","activateNextQuestion","activateFurthestQuestion","pop","parseAnswers","let","end","count","activeQuestion","models","answerText","answer","destination","evm","warning","_","find","obj","DESTINATION","EVM","WARNING","selector","data","WARNINGS","valueOf","CONTENT","calculateResult","e","console","log","saveState","resultPool","RESULTS","slice","icons","resultList","methodArray","answerNumber","unAnswered","rLength","answerbehaviour","METHOD","split","arrayFind","undefined","filter","el","push","jurisdictionId","preSelectedJurisdiction","trigger","saveResult","saveEVMs","resetAnswers","myAnswers","localStorage","setItem","JSON","stringify","loadState","getItem","resetState","cookieWarning","readCookie","functionalityCookies","friendlyAnswers","formData","save","config","usersession","id","CONFIG","SAVE","FormData","append","fetch","uri","buildUrl","body","credentials","method","then","json","catch","error","SAVEEVMS","evms","setCookie","path","arr","indexOf","Result","fetchProduct","_this","result","PRODUCTID","productId","ajax","product","events","click #e_selector_reset","click .e_selector_button_start","click .e_selector_init","click .landscape_tab_target > .icon","click .e_selector_tabs_left","click .e_selector_tabs_right","template","html","questionList","initialize","initSelector","supressIntroduction","setElement","$el","hide","TEXT","INTRODUCTION","start","introTemplate","destroySelector","undelegateEvents","removeData","unbind","remove","prototype","call","goToGroup","groupid","currentTarget","dataset","group","findWhere","animate","scrollTop","offset","top","goToPrevGroup","goToNextGroup","show","SELECTORTYPE","QUESTIONS","QuestionListView","questionTabListView","QuestionTabListView","ResultView","render","click","resetQuestionaire","css","setTimeout","event","getParameterByName","window","location","href","CustomEvent","parent","document","dispatchEvent","LandscapeView","d3circle","bindAll","on","fragment","createDocumentFragment","maxDistanceLeft","maxDistanceBottom","IMAGE","images","img","createElement","src","url","style","cssText","pos","width","Math","max","abs","appendChild","debounce","resizeCircle","radius","modelViews","modelView","QuestionView","QuestionTabView","tooltip","position","my","at","content","className","tagName","click a","removeClass","addClass","attributes","goToQuestion","templateWarning","click input[type=radio]","click .e_selector_button_back","click .e_selector_button_next","click .e_selector_button_result","submitAnswer","removeAttr","getAnswerFromForm","prevQuestion","nextQuestion","showResults","$answerInputs","answerString","val","join","click .e_selector_print","click #landscape_tabs a","changeResultTab","siblings","target","fetchedData","resultsStart","RESULTSSTART","resultsFinish","RESULTSFINISH","noResultsText","NORESULTS","resultText","RESULTTITLE","icon","ICON","ALT","printResults","print","printContent"],"mappings":"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","file":"legallifestyle.min.js","sourcesContent":["/* Copyright Epoq Legal Ltd 2009-2018 */\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 ele.apps = ele.apps || {};\r\n ele.apps.SelectorApp = new Selector.View.AppView;\r\n});","/**\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 },\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 showResult: false, // dont' show the result section until this has been set to true\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\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({\"CURRENT\": false}, {silent: true});\n }, this);\n model.set({\"CURRENT\": true});\n },\n\n activatePrevQuestion: function(model) {\n var questions = this.where({\"ACTIVE\": true});\n\n if (questions.length <= 0) {\n return;\n }\n for (var i = 0; i < questions.length; i++) {\n if (questions[i].get(\"CURRENT\")) {\n questions[i].set({\"CURRENT\": false}, {silent: true});\n if ((i-1) >= 0) {\n questions[i-1].set({\"CURRENT\": true});\n return;\n }\n }\n }\n },\n\n activateNextQuestion: function(model) {\n var questions = this.where({\"ACTIVE\": true});\n\n if (questions.length <= 0) {\n return;\n }\n for (var i = 0; i < questions.length; i++) {\n if (questions[i].get(\"CURRENT\")) {\n questions[i].set({\"CURRENT\": false}, {silent: true});\n if ((i+1) < questions.length) {\n questions[i+1].set({\"CURRENT\": true});\n return;\n }\n }\n }\n\n //I got here? shit.\n this.activateFurthestQuestion();\n },\n\n activateFurthestQuestion: function(){\n var questions = this.where({\"ACTIVE\": true});\n if (questions.length <= 0) {\n return;\n }\n for (var i = 0; i < questions.length; i++) {\n questions[i].set({\"CURRENT\": false}, {silent: true});\n }\n questions.pop().set({\"CURRENT\": true});\n },\n\n\tparseAnswers: function() {\n\t\t\n\t\tlet 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\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\"),\n 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.valueOf() === warning.valueOf(); }).CONTENT);\n }\n\t\t\t\t\tif (destination === \"result\") {\n\t\t\t\t\t\tif (this.showResult) this.calculateResult();\n\t\t\t\t\t\tend = true;\n\t\t\t\t\t} else if (destination) {\n activeQuestion = _.find(this.models, function (obj) {\n return obj.get(\"ID\") === destination;\n });\n activeQuestion.set({\"ACTIVE\": true});\n this.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 icons = [];\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 //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 //get the icon for this answer\n icons[model.get(\"IDNUM\")] = (_.find(model.get(\"ANSWERS\"), function (obj) { return obj.VALUE === model.get(\"ANSWER\"); }));\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 this.resultModel.set({results: resultList, icons: icons, jurisdictionId: ele.selector.preSelectedJurisdiction});\n this.resultModel.trigger(\"fetchProduct\");\n\n this.saveResult();\n this.saveEVMs();\n },\n\n resetAnswers: function(){\n\n this.each(function(model){\n model.resetModel();\n }, this);\n this.models[0].set({\"ACTIVE\": true, CURRENT: true});\n this.resultModel.set({results: null});\n this.showResult = false;\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 this.activateFurthestQuestion();\n }\n },\n\n resetState: function(){\n if (typeof(Storage)!==\"undefined\" && ele.cookieWarning.readCookie().functionalityCookies) {\n //remove items from local storage\n localStorage.setItem(this.key, \"[]\");\n }\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 let 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});","/**\r\n * The model representing the result\r\n * @class\r\n */\r\nSelector.Model.Result = Backbone.Model.extend(\r\n/** @lends Selector.Model.Result# */\r\n{\r\n\r\n fetchProduct: function(){\r\n var _this = this;\r\n //only do this for first result\r\n if (this.get(\"results\") !== null && this.get(\"results\").length === 1) {\r\n\r\n var result = this.get(\"results\")[0];\r\n\r\n if (result.PRODUCTID != 0 && typeof result.PRODUCTID != \"undefined\") { \r\n return fetch(ele.uri.buildUrl(\"productdata\", {productId: result.PRODUCTID, ajax: 1}))\r\n .then(function(response) {\r\n return response.json();\r\n })\r\n .then(function(product) {\r\n $.extend(result, product);\r\n var results = _this.get(\"results\");\r\n results[0] = result;\r\n _this.set({results: results});\r\n return product;\r\n })\r\n .catch(function(error){\r\n console.error(error);\r\n });\r\n }\r\n }\r\n return null;\r\n }\r\n\t\r\n});","/**\r\n * The base view for this application. Initialises all objects and global events\r\n * @class\r\n */\r\nSelector.View.AppView = Backbone.View.extend(\r\n/** @lends UserDocs.View.AppView# */\r\n{\r\n\t/** The events we're listening to*/\r\n events: {\r\n \t\"click #e_selector_reset\": \"resetQuestionaire\",\r\n \"click .e_selector_button_start\" : \"start\",\r\n \t\"click .e_selector_init\" : \"initSelector\",\r\n \"click .landscape_tab_target > .icon\": \"goToGroup\",\r\n \"click .e_selector_tabs_left\": \"goToPrevGroup\",\r\n \"click .e_selector_tabs_right\": \"goToNextGroup\",\r\n\t},\r\n\r\n /** template to use for Underscore.js rendering */\r\n template: _.template($('#selector_base').html()),\r\n\t\r\n\tquestionList: null,\r\n\r\n\t/**\r\n\t * Initialisation function called when this object is created. \r\n\t * Create all the 'global' objects to this app and trigger some rendering \r\n\t */\r\n initialize: function() {\r\n \tthis.initSelector();\r\n },\r\n\r\n initSelector: function(supressIntroduction){\r\n\r\n //allows app to be loaded on page without the DOM element being present\r\n this.setElement($(\"#e_document_selector\"));\r\n\r\n this.$el.html(this.template());//add the base DOM\r\n this.$el.find(\"#e_selector_reset\").hide();\r\n\r\n if (ele.selector.data) {\r\n /*--------------------*/\r\n /* object setup stuff */\r\n /*--------------------*/\r\n if (supressIntroduction || ele.selector.data.TEXT.INTRODUCTION === \"\") {\r\n this.start();\r\n } else {\r\n /* introduction */\r\n var introTemplate = _.template($('#selector_introduction').html());\r\n this.$el.find(\".e_selector_introduction\").html(introTemplate(ele.selector.data.TEXT));\r\n\r\n }\r\n /*------------------------*/\r\n /* end object setup stuff */\r\n /*------------------------*/\r\n }\r\n },\r\n\r\n destroySelector: function() {\r\n // COMPLETELY UNBIND THE VIEW\r\n this.undelegateEvents();\r\n\r\n this.$el.removeData().unbind();\r\n\r\n // Remove view from DOM\r\n this.remove();\r\n Backbone.View.prototype.remove.call(this);\r\n },\r\n\r\n goToGroup: function(e){\r\n let groupid = e.currentTarget.dataset.group;\r\n let model = this.questionList.findWhere({\"IDNUM\": parseInt(groupid)});\r\n\r\n this.questionList.activateQuestion(model);\r\n\r\n $('html, body').animate(\r\n {scrollTop: $(\"#e_document_selector\").offset().top},\r\n 500,\r\n 'linear'\r\n );\r\n },\r\n\r\n goToPrevGroup: function(e){\r\n this.questionList.activatePrevQuestion();\r\n },\r\n\r\n goToNextGroup: function(e){\r\n this.questionList.activateNextQuestion();\r\n },\r\n\r\n start: function(){\r\n\r\n this.$el.find(\"#e_selector_reset\").show();\r\n\r\n this.questionList = new Selector.Collection.QuestionList;\r\n this.questionList.key = ele.selector.data.CONFIG.SELECTORTYPE + \"_selector\";\r\n this.questionList.set(this.questionList.parse(ele.selector.data.QUESTIONS));\r\n\r\n let questionListView = new Selector.View.QuestionListView({collection: this.questionList});\r\n\r\n var questionTabListView = new Selector.View.QuestionTabListView({collection: this.questionList});\r\n this.$el.find(\".e_selector_introduction\").hide();\r\n\r\n //set up the result\r\n this.questionList.resultModel = new Selector.Model.Result({results: null});\r\n var resultView = new Selector.View.ResultView({model: this.questionList.resultModel});\r\n\r\n //set up the landscape\r\n // var landscapeView = new Selector.View.LandscapeView({collection: this.questionList});\r\n\r\n\r\n this.questionList.resetAnswers();\r\n this.questionList.loadState();\r\n questionTabListView.render();\r\n if ($('.e_selector_button_result').length > 0) { $('.e_selector_button_result').click(); }\r\n },\r\n\r\n resetQuestionaire: function(){\r\n\r\n this.questionList.resetAnswers();\r\n this.questionList.resetState();\r\n \t\r\n \tthis.$el.css(\"min-height\", 0)\r\n $(\".e_selector_warnings\").html(\"\");\r\n \t\r\n\t\t$('html,body').animate({\r\n\t\t\tscrollTop: $(\".e_selector\").offset().top\r\n\t }, 300);\r\n \t\r\n \tsetTimeout(function(){\r\n \t if (ele.uri.getParameterByName(window.location.href, \"sendEvents\")) {\r\n var event = new CustomEvent('resizeIframe');\r\n window.parent.document.dispatchEvent(event);\r\n var event = new CustomEvent('scrollToIframe');\r\n window.parent.document.dispatchEvent(event);\r\n }\r\n }, 500);\r\n }\r\n\r\n});","Selector.View.LandscapeView = Backbone.View.extend(\r\n/** @lends Selector.View.LandscapeView# */\r\n{\r\n el: $(\"#landscapeWindow div\"),\r\n\r\n d3circle : null,\r\n\r\n initialize: function() {\r\n\r\n _.bindAll(this, \"render\");\r\n this.collection.on('reset',this.render);\r\n this.collection.on('change',this.render);\r\n\r\n //\r\n // this.d3circle = d3.selectAll(\"circle\");\r\n\r\n },\r\n\r\n /** Render function */\r\n render: function() {\r\n\r\n this.$el.html(\"\");\r\n\r\n let fragment = document.createDocumentFragment(),\r\n initLeft = 50,\r\n initBottom = 11,//these are the initial starting pos\r\n maxDistanceLeft = 0,\r\n maxDistanceBottom = 0,\r\n answer;\r\n\r\n this.collection.each(function (model) {\r\n if (model.get(\"ANSWER\") !== null) {\r\n answer = _.find(model.get(\"ANSWERS\"), function (obj) { return obj.VALUE === model.get(\"ANSWER\"); });\r\n if (answer !== undefined && answer.IMAGE !== undefined && answer.IMAGE !== \"\") {\r\n var images = JSON.parse(answer.IMAGE);\r\n for (var i = 0; i < images.length; i++) {\r\n var data = images[i];\r\n\r\n //display on web page\r\n var img = document.createElement(\"img\");\r\n img.src = \"/common/images/landscape/items/\" + data.url;\r\n img.style.cssText = \"left: \" + data.pos[0] + \"%; bottom: \" + data.pos[1] + \"%; width: \" + data.width + \"px;\";\r\n\r\n //work out distance from start point to calculate reveal circle\r\n //left/bottom points\r\n maxDistanceLeft = Math.max(maxDistanceLeft, Math.abs(initLeft - data.pos[0]));\r\n maxDistanceBottom = Math.max(maxDistanceBottom, Math.abs(initBottom - data.pos[1]));\r\n\r\n //right point, which has to calculate width of item as a percentage\r\n maxDistanceLeft = Math.max(maxDistanceLeft, Math.abs(initLeft - (data.pos[0] + ((data.width/this.$el.width()) * 100))));\r\n fragment.appendChild(img);\r\n }\r\n }\r\n }\r\n }, this);\r\n\r\n _.debounce(this.resizeCircle(Math.max(maxDistanceLeft, maxDistanceBottom)), 100);\r\n\r\n this.$el.html(fragment);\r\n\r\n return this;\r\n },\r\n\r\n resizeCircle: function(radius) {\r\n if (radius > 0) radius += 3; //little bit bigger as a nice frame\r\n if (radius >= 45) radius = 100; //if it's big enough, just reveal the whole thing.\r\n\r\n //this.d3circle\r\n // .transition()\r\n // .duration(1000)\r\n // .attr(\"r\", radius);\r\n }\r\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 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 this.collection.each(function (model) {\r\n if (model.get(\"CURRENT\")) {\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\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});","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 var fragment = document.createDocumentFragment();\r\n //just show 1 question per tab\r\n this.collection.each(function (model) {\r\n var modelView = new Selector.View.QuestionTabView({model: model});\r\n fragment.appendChild(modelView.render().el);\r\n }, this);\r\n\r\n\t\tthis.$el.html(fragment);\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\"goToQuestion\"\r\n },\r\n\r\n\t/** Render function */\r\n\trender: function() {\r\n if (this.model.get(\"CURRENT\")) {\r\n $(\".e_selector_tabs_nav\").removeClass(\"disabled\");\r\n this.$el.addClass(\"active\");\r\n\r\n if (this.model.get(\"IDNUM\") == 1) {\r\n $(\".e_selector_tabs_left\").addClass(\"disabled\");\r\n }\r\n if (this.model.get(\"IDNUM\") == this.model.collection.length) {\r\n $(\".e_selector_tabs_right\").addClass(\"disabled\");\r\n }\r\n }\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 goToQuestion: 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\"prevQuestion\",\r\n \"click .e_selector_button_next\": \t\"nextQuestion\",\r\n \"click .e_selector_button_result\": \"showResults\"\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 \r\n\r\n\t\treturn this; //needed in order to chain rendering\r\n\t},\r\n\r\n submitAnswer: function(e) {\r\n $('.e_selector_button_next').removeAttr('disabled');\r\n\r\n var currentModel = this.model;\r\n\r\n this.getAnswerFromForm();\r\n\r\n this.model.collection.save = true;\r\n this.model.collection.parseAnswers();\r\n\r\n },\r\n\r\n prevQuestion: function(e) {\r\n this.model.collection.activatePrevQuestion();\r\n },\r\n\r\n nextQuestion: function(e) {\r\n this.model.collection.activateNextQuestion();\r\n },\r\n\r\n showResults: function(e){\r\n\t //hide show results button (looks stupid)\r\n //e.currentTarget.style.visibility = \"hidden\";\r\n\r\n\t this.model.collection.showResult = true;\r\n\t this.model.collection.parseAnswers();\r\n $('html,body').animate({\r\n scrollTop: $(\".e_selector_results\").offset().top\r\n }, 500);\r\n },\r\n\r\n getAnswerFromForm: function(){\r\n\r\n this.model.set(\"ERROR\", false);\r\n\r\n let $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(\r\n/** @lends Selector.View.ResultView# */\r\n{\t\r\n\t/** classname to give the generated element */\r\n\tclassName: \"e_selector_item e_selector_result\",\r\n\t\r\n\t/** tagname to give this generated element */\r\n\ttagName: \"div\",\r\n\r\n\t/** template to use for Underscore.js rendering */\r\n\ttemplate: _.template($('#selector_result').html()),\r\n\r\n events: {\r\n \"click .e_selector_print\": \t\"printResults\",\r\n \"click #landscape_tabs a\": \"changeResultTab\"\r\n },\r\n\r\n changeResultTab: function(e){\r\n\t $(e.currentTarget).addClass(\"active\").siblings().removeClass(\"active\");\r\n\t this.$el.find(\".landscape_tab_target\").hide();\r\n\t this.$el.find(\".\" + e.currentTarget.dataset.target).show();\r\n },\r\n\r\n initialize: function() {\r\n var _this = this;\r\n\r\n _.bindAll(this, \"render\");\r\n _.bindAll(this, \"fetchProduct\");\r\n this.model.on('change',this.render);\r\n this.model.on('fetchProduct',this.fetchProduct);\r\n this.setElement($(\".e_selector_results\"));\r\n },\r\n\r\n fetchProduct: function(){\r\n\t var _this = this;\r\n\t var result = this.model.fetchProduct();\r\n\r\n\t if (result) {\r\n result.then(function(){\r\n ele.selector.data.fetchedData = _this.model.attributes;\r\n _this.render();\r\n });\r\n }\r\n },\r\n\r\n\t/** Render function */\r\n\trender: function() {\r\n\r\n\t var _this = this;\r\n\r\n\t\tthis.$el.html(this.template({\r\n resultsStart: ele.selector.data.TEXT.RESULTSSTART,\r\n resultsFinish: ele.selector.data.TEXT.RESULTSFINISH,\r\n noResultsText: ele.selector.data.TEXT.NORESULTS,\r\n resultText: ele.selector.data.TEXT.RESULTTITLE,\r\n results: this.model.get(\"results\")\r\n }));//render the HTML\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 //go through landscape results and add in icons\r\n $(\".icon\").each(function(){\r\n var group = $(this).data('group'),\r\n icon = _this.model.get(\"icons\")[group];\r\n\r\n //lookup question for this group and get icon answer\r\n $(this).html('\"'');\r\n });\r\n\r\n\t\treturn this; //needed in order to chain rendering\r\n\t},\r\n\r\n printResults: function(){\r\n ele.print.printContent(\".e_selector_result\");\r\n }\r\n\r\n});"]}