{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./App/tobaccopwa/constants.ts","webpack:///./App/tobaccopwa/navigation-bar-manager.ts","webpack:///./App/tobaccopwa/screens/generic-screen-controller.ts","webpack:///./App/tobaccopwa/screens/radiobutton-screen-controller.ts","webpack:///./App/tobaccopwa/screens/screen-3-controller.ts","webpack:///./App/tobaccopwa/screens/screen-6-controller.ts","webpack:///./App/tobaccopwa/screens/screen-7-controller.ts","webpack:///./App/tobaccopwa/screens/screen-9-controller.ts","webpack:///./App/tobaccopwa/tobacco-app.ts","webpack:///./App/tobaccopwa/tobacco-workflow-manager.ts","webpack:///./Static/javascript/modules/svg-injection.ts"],"names":[],"mappings":"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","file":"tobacco-app-bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 38);\n","declare var tobaccoConstants: any;\r\n\r\nexport class Constants {\r\n static readonly YES: string = 'Yes';\r\n static readonly YES_1: string = 'Yes_1';\r\n static readonly YES_2: string = 'Yes_2';\r\n static readonly NO: string = 'No';\r\n static readonly NO_1: string = 'No_1';\r\n static readonly NO_2: string = 'No_2';\r\n static readonly SCREEN_3: number = 0;\r\n static readonly SCREEN_6: number = 1;\r\n static readonly SCREEN_7: number = 2;\r\n static readonly SCREEN_9: number = 3;\r\n static readonly SCREEN_11: number = 4;\r\n static readonly SCREEN_12: number = 5;\r\n static readonly SCREEN_10: number = 6;\r\n static readonly SCREEN_14: number = 7;\r\n static readonly SCREEN_15: number = 8;\r\n static readonly SCREEN_16: number = 9;\r\n static readonly NEXT_TITLE: string = tobaccoConstants.NextTitle;\r\n static readonly CHALLENGE_TITLE: string = tobaccoConstants.ChallengeTitle;\r\n static readonly FOLLOW_UP_TITLE: string = tobaccoConstants.FollowUpTitle;\r\n static readonly NO_INTERNET: string = tobaccoConstants.NoInternetMessage;\r\n static readonly GROUP_INDEX_1: number = 0;\r\n static readonly GROUP_INDEX_2: number = 1;\r\n static readonly GROUP_INDEX_3: number = 2;\r\n}","import { INavigationStatus } from \"./navigation-status\";\r\nimport { IScreenStatusCommand } from \"./screen-status-command\";\r\nimport { IScreenController } from \"./screens/screen-controller\";\r\n\r\n/**\r\n * Class in charge of controlling the behaviour of the wizard buttons and the\r\n * progress bar \r\n */\r\nexport class NavigationBarManager {\r\n\r\n totalNumberOfStepsInBar: number = 3;\r\n\r\n ButtonNext = $(\"#btn-next-screen\");\r\n\r\n ButtonPrev = $(\"#btn-previous-screen\");\r\n\r\n ButtonCloseApp = $(\"#btn-close-app\");\r\n\r\n ButtonExit = $(\"#btn-exit\");\r\n\r\n ButtonStartOver = $(\"#btn-start-over\");\r\n\r\n ProgressBar = $(\".Form__NavigationBar .Form__NavigationBar__ProgressBar--Progress\");\r\n\r\n UpNextLabel = $(\"#lbl-up-next\");\r\n\r\n screens: Array;\r\n\r\n constructor(screens: Array) {\r\n this.screens = screens;\r\n }\r\n /**\r\n * Shows or hides the navigation bar based on the status sent as\r\n * parameter\r\n */\r\n public updateNavigationBarStatus(activeScreenIndex:number, status: INavigationStatus) {\r\n\r\n this.setPrevActiveStatus(activeScreenIndex);\r\n this.updateProgressBar(status.progressBarGroupIndex);\r\n\r\n if (status.showCloseApp) {\r\n this.ButtonCloseApp.show();\r\n } else {\r\n this.ButtonCloseApp.hide();\r\n }\r\n\r\n if (status.showExit) {\r\n this.ButtonExit.show();\r\n } else {\r\n this.ButtonExit.hide();\r\n }\r\n\r\n if (status.showNext) {\r\n this.ButtonNext.show();\r\n } else {\r\n this.ButtonNext.hide();\r\n }\r\n\r\n if (status.showPrevious) {\r\n this.ButtonPrev.show();\r\n } else {\r\n this.ButtonPrev.hide();\r\n }\r\n\r\n if (status.showStartOver) {\r\n this.ButtonStartOver.show();\r\n } else {\r\n this.ButtonStartOver.hide();\r\n }\r\n }\r\n\r\n /**\r\n * Enables and disables Next and Prev button if the \r\n * start or the end of the flow is reached\r\n */\r\n private setPrevActiveStatus(activeScreenIndex: number): void {\r\n if (activeScreenIndex - 1 < 0) {\r\n this.ButtonPrev.prop('disabled', true);\r\n } else {\r\n this.ButtonPrev.prop('disabled', false);\r\n }\r\n }\r\n\r\n /**\r\n * Updates the progress bar according to the current screen\r\n */\r\n private updateProgressBar(activeScreenIndex: number): void {\r\n\r\n // We substract one to the total number of steps because \r\n // the activeScreenIndex is a zero-based number\r\n let progressPercentage = (activeScreenIndex / (this.totalNumberOfStepsInBar - 1)) * 100.0;\r\n this.activateStepNumber(activeScreenIndex);\r\n this.ProgressBar.attr(\"style\", `width: ${progressPercentage}%;`)\r\n }\r\n\r\n public updateNextButtonTitle(title: string) {\r\n this.ButtonNext.html(title);\r\n }\r\n\r\n public enableNextButton() {\r\n this.ButtonNext.prop('disabled', false);\r\n }\r\n\r\n public disableNextButton() {\r\n this.ButtonNext.prop('disabled', true);\r\n this.clearUpNextLable();\r\n }\r\n\r\n public updateUpNextLable(screenStatusCommand: IScreenStatusCommand) {\r\n let nextScreen = this.screens[screenStatusCommand.targetScreenIndex];\r\n this.UpNextLabel.html(\"Up Next: \" + nextScreen.getScreenTitle() + \"\");\r\n }\r\n\r\n public clearUpNextLable() {\r\n this.UpNextLabel.html(\"\");\r\n }\r\n\r\n public showProgressBar() {\r\n this.ProgressBar.show();\r\n }\r\n\r\n public hideProgressBar() {\r\n this.ProgressBar.hide();\r\n }\r\n\r\n public enablePrevButton() {\r\n this.ButtonPrev.prop('disabled', false);\r\n }\r\n\r\n public activateStepNumber(index: number) {\r\n const steps = document.querySelectorAll('.progress-bar-step');\r\n steps.forEach((step: HTMLElement) => {\r\n step.classList.remove('visited-step'); // reset styles when prev button clicked\r\n let stepIndex: number = parseInt(step.dataset.stepIndex);\r\n if (stepIndex <= index) {\r\n step.classList.add('visited-step');\r\n }\r\n });\r\n }\r\n}","import { IScreenController } from \"./screen-controller\";\r\nimport { IScreenStatusCommand } from \"./../screen-status-command\";\r\nimport { INavigationStatus } from \"../navigation-status\";\r\nimport { NavigationBarManager } from \"../navigation-bar-manager\";\r\nimport { Constants } from \"../constants\";\r\n\r\n/**\r\n * Generic controller for screens that doesn't have custom logic \r\n * based on answers by the user\r\n **/\r\nexport class GenericScreenController implements IScreenController {\r\n\r\n public SCREEN_INDEX: number;\r\n\r\n public isActiveInTheFlow: boolean;\r\n\r\n /**\r\n * Defines the Jquery selector of the screen\r\n **/\r\n protected screenSelector: string;\r\n\r\n /**\r\n * Contains the current screen DOM element\r\n */\r\n protected screenDomElement: any;\r\n\r\n /**\r\n * List with the screens that should be displayed after this screen\r\n */\r\n protected nextSteps: Array;\r\n\r\n protected navigationStatus: INavigationStatus;\r\n\r\n protected navigationBarManager: NavigationBarManager;\r\n\r\n /**\r\n * Constructor\r\n * @param index Based 0 position of the screen in the flow and the array of screens.\r\n * @param nextSteps List of the next screens when the user click \"Next\" on the current screen.\r\n * @param isActiveInTheFlow Indicates if the screen is active or not in the flow by default.\r\n */\r\n constructor(index: number,\r\n navigationBarManager: NavigationBarManager,\r\n nextSteps: Array = [],\r\n isActiveInTheFlow: boolean = false,\r\n navigationStatus: INavigationStatus = {\r\n showCloseApp: false,\r\n showExit: false,\r\n showNext: true,\r\n showPrevious: true,\r\n showStartOver: false,\r\n progressBarGroupIndex: 0\r\n }) {\r\n this.SCREEN_INDEX = index;\r\n this.isActiveInTheFlow = isActiveInTheFlow;\r\n this.screenSelector = `.tobacco-cessation-form-screen[data-screen-index=\"${this.SCREEN_INDEX}\"]`;\r\n this.screenDomElement = $(this.screenSelector);\r\n this.nextSteps = nextSteps;\r\n this.navigationStatus = navigationStatus;\r\n this.navigationBarManager = navigationBarManager;\r\n }\r\n\r\n public validateScreen(): boolean {\r\n return true;\r\n }\r\n\r\n public initEvents(): void {\r\n\r\n }\r\n\r\n public calculateNextScreensInFlow(): Array {\r\n return this.nextSteps;\r\n }\r\n\r\n public showScreen(): void {\r\n this.screenDomElement.show();\r\n this.enableNextButton();\r\n this.recordAnalyticsPageViewEvent();\r\n }\r\n\r\n public hideScreen(): void {\r\n this.screenDomElement.hide();\r\n }\r\n\r\n /**\r\n * Validates the given radiobutton question has an option selected\r\n * @param questionIndex Based 0 index position of the question in the form\r\n * @returns True if an option is selected, False if no option was selected\r\n */\r\n public validateRequiredRadiobuttonQuestion(questionIndex: number = 0): boolean {\r\n\r\n let questionContainer = $(this.screenDomElement.find(\".FormChoice\")[questionIndex]);\r\n let selectedOption = questionContainer.find(\".FormChoice__Input.FormChoice__Input--Radio:checked\").val();\r\n\r\n if (!selectedOption) {\r\n questionContainer.addClass(\"ValidationFail\");\r\n let errorMessageContainer = questionContainer.find(\".Form__Element__ValidationError\");\r\n errorMessageContainer.html(\"This field is required\");\r\n errorMessageContainer.show();\r\n\r\n return false;\r\n } else {\r\n questionContainer.removeClass(\"ValidationFail\");\r\n let errorMessageContainer = questionContainer.find(\".Form__Element__ValidationError\");\r\n errorMessageContainer.html(\"\");\r\n errorMessageContainer.hide();\r\n return true;\r\n }\r\n }\r\n\r\n public getNavigationBarStatus(): INavigationStatus {\r\n return this.navigationStatus;\r\n }\r\n\r\n public loadScreenInitialStatus(): void { }\r\n\r\n protected enableNextButton(newTitle: string = Constants.NEXT_TITLE) {\r\n this.navigationBarManager.updateNextButtonTitle(newTitle);\r\n this.navigationBarManager.enableNextButton();\r\n let nextSteps = this.calculateNextScreensInFlow();\r\n if (nextSteps.length > 0) {\r\n this.navigationBarManager.updateUpNextLable(nextSteps[0]);\r\n }\r\n }\r\n\r\n protected disableNextButton(newTitle: string = Constants.NEXT_TITLE) {\r\n this.navigationBarManager.updateNextButtonTitle(newTitle);\r\n this.navigationBarManager.disableNextButton();\r\n }\r\n\r\n /**\r\n * Sends PageView event to Google Analytics\r\n */\r\n protected recordAnalyticsPageViewEvent() {\r\n\r\n let screenTitleH2: any = this.screenDomElement.find(\"h2.Form__Title\");\r\n\r\n let adminDiv = screenTitleH2.find(\"div\");\r\n\r\n if (adminDiv.length > 0) {\r\n screenTitleH2 = adminDiv;\r\n }\r\n\r\n let online = 'no'\r\n if (navigator.onLine) {\r\n online = 'yes';\r\n }\r\n\r\n (window).gtag('event', 'page_view', {\r\n 'page_name': screenTitleH2.html(),\r\n 'page_title': screenTitleH2.html(),\r\n 'user_online': online\r\n });\r\n }\r\n\r\n public getScreenTitle() {\r\n return this.screenDomElement.find(\".Form__Title\").html();\r\n }\r\n}","import { Constants } from \"./../constants\";\r\nimport { GenericScreenController } from \"./generic-screen-controller\";\r\nimport { IScreenStatusCommand } from \"./../screen-status-command\";\r\nimport { NavigationBarManager } from \"../navigation-bar-manager\";\r\n\r\n/**\r\n * Controller for screens with radiobutton questions. \r\n * This class contians all the generic logic related to this kind of screens\r\n */\r\nexport class RadiobuttonScreenController extends GenericScreenController {\r\n\r\n constructor(screenIndex: number, navigationBarManager: NavigationBarManager) {\r\n super(screenIndex, navigationBarManager);\r\n }\r\n\r\n public initEvents() {\r\n this.screenDomElement.find(`.FormChoice__Input.FormChoice__Input--Radio`).click(this.onRadioButtonClick.bind(this));\r\n }\r\n\r\n public loadScreenInitialStatus(): void {\r\n let selectedOption = this.screenDomElement.find(`.FormChoice__Input.FormChoice__Input--Radio:checked`).val();\r\n if (selectedOption) {\r\n this.enableNextButton();\r\n } else {\r\n this.disableNextButton();\r\n }\r\n }\r\n\r\n public validateScreen(): boolean {\r\n return this.validateRequiredRadiobuttonQuestion(0);\r\n }\r\n\r\n public showScreen(): void {\r\n let self = this;\r\n this.screenDomElement.show();\r\n this.recordAnalyticsPageViewEvent();\r\n }\r\n\r\n public onRadioButtonClick(e) {\r\n this.enableNextButton();\r\n }\r\n\r\n}","import { Constants } from \"./../constants\";\r\nimport { GenericScreenController } from \"./generic-screen-controller\";\r\nimport { IScreenStatusCommand } from \"./../screen-status-command\";\r\nimport { RadiobuttonScreenController } from \"./radiobutton-screen-controller\";\r\nimport { NavigationBarManager } from \"../navigation-bar-manager\";\r\n\r\n/**\r\n * Workflow Controller for screen 3 with custom logic\r\n */\r\nexport class Screen3Controller extends RadiobuttonScreenController {\r\n\r\n constructor(index: number, navigationBarManager: NavigationBarManager) {\r\n super(index, navigationBarManager);\r\n this.isActiveInTheFlow = true;\r\n this.navigationStatus = {\r\n showCloseApp: false,\r\n showExit: false,\r\n showNext: true,\r\n showPrevious: false,\r\n showStartOver: false,\r\n progressBarGroupIndex: Constants.GROUP_INDEX_1\r\n };\r\n }\r\n\r\n public calculateNextScreensInFlow(): Array {\r\n let visibilityChangeRequest: Array = new Array();\r\n let selectedOption = this.screenDomElement.find(`.FormChoice__Input.FormChoice__Input--Radio:checked`).val();\r\n\r\n switch (selectedOption) {\r\n case Constants.YES_1:\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_6,\r\n active: true\r\n });\r\n break;\r\n\r\n case Constants.YES_2:\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_15,\r\n active: true\r\n });\r\n break;\r\n\r\n case Constants.NO:\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_9,\r\n active: true\r\n });\r\n break;\r\n }\r\n\r\n return visibilityChangeRequest;\r\n }\r\n}","import { Constants } from \"../constants\";\r\nimport { NavigationBarManager } from \"../navigation-bar-manager\";\r\nimport { IScreenStatusCommand } from \"../screen-status-command\";\r\nimport { GenericScreenController } from \"./generic-screen-controller\";\r\nimport { RadiobuttonScreenController } from \"./radiobutton-screen-controller\";\r\n\r\n/**\r\n * Workflow Controller for screen 6 with custom logic\r\n */\r\nexport class Screen6Controller extends RadiobuttonScreenController {\r\n\r\n constructor(index: number, navigationBarManager: NavigationBarManager) {\r\n super(index, navigationBarManager);\r\n this.navigationStatus.progressBarGroupIndex = Constants.GROUP_INDEX_2;\r\n }\r\n\r\n public initEvents(): void {\r\n let self = this;\r\n // When the user selects the answer 'No' a modal window is displayed \r\n // with a custom message defined by the user\r\n this.screenDomElement.find(`.FormChoice__Input.FormChoice__Input--Radio`).click(function (e) {\r\n var selectedOption = $(e.target).val();\r\n if (selectedOption == \"No\") {\r\n // The message is stored in a hidden field. This hidden field is defined in\r\n // the form so the admin can change its value.\r\n let message: string = self.screenDomElement.find(`section.FormStep .Form__Element.FormHidden.FormHideInSummarized`).val() as string;\r\n $(\"#tobacco-modal div.dialog-text\").html(message)\r\n $(\"#tobacco-modal\").show();\r\n }\r\n });\r\n\r\n this.screenDomElement.find(`.FormChoice__Input.FormChoice__Input--Radio`).click(this.onRadioButtonClick.bind(this));\r\n }\r\n\r\n public calculateNextScreensInFlow(): Array {\r\n let visibilityChangeRequest: Array = new Array();\r\n let selectedOption = this.screenDomElement.find(`.FormChoice__Input.FormChoice__Input--Radio:checked`).val();\r\n\r\n switch (selectedOption) {\r\n case Constants.YES:\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_9,\r\n active: true\r\n });\r\n break;\r\n\r\n case Constants.NO:\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_7,\r\n active: true\r\n });\r\n break;\r\n }\r\n\r\n return visibilityChangeRequest;\r\n }\r\n\r\n public onRadioButtonClick(e) {\r\n this.enableNextBasedOnAnswer(e.target.value);\r\n } \r\n\r\n public loadScreenInitialStatus(): void {\r\n let selectedOption = this.screenDomElement.find(`.FormChoice__Input.FormChoice__Input--Radio:checked`).val();\r\n this.enableNextBasedOnAnswer(selectedOption);\r\n }\r\n\r\n public enableNextBasedOnAnswer(answer: string) {\r\n\r\n if (answer == \"Yes\") {\r\n this.enableNextButton(Constants.NEXT_TITLE);\r\n } else if (answer == \"No\") {\r\n this.enableNextButton(Constants.CHALLENGE_TITLE);\r\n }\r\n }\r\n}","import { NavigationBarManager } from \"../navigation-bar-manager\";\r\nimport { Constants } from \"./../constants\";\r\nimport { IScreenStatusCommand } from \"./../screen-status-command\";\r\nimport { RadiobuttonScreenController } from \"./radiobutton-screen-controller\";\r\n\r\n/**\r\n * Workflow Controller for screen 7 with custom logic\r\n */\r\nexport class Screen7Controller extends RadiobuttonScreenController {\r\n\r\n constructor(index: number, navigationBarManager: NavigationBarManager) {\r\n super(index, navigationBarManager);\r\n this.navigationStatus.progressBarGroupIndex = Constants.GROUP_INDEX_2;\r\n } \r\n\r\n public calculateNextScreensInFlow(): Array {\r\n let visibilityChangeRequest: Array = new Array();\r\n let selectedOption = $(`${this.screenSelector} .FormChoice__Input.FormChoice__Input--Radio:checked`).val();\r\n switch (selectedOption) {\r\n case Constants.YES:\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_9,\r\n active: true\r\n });\r\n break;\r\n\r\n case Constants.NO:\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_14,\r\n active: true\r\n });\r\n break;\r\n }\r\n\r\n return visibilityChangeRequest;\r\n }\r\n\r\n public showScreen(): void {\r\n this.screenDomElement.show();\r\n this.recordAnalyticsPageViewEvent();\r\n }\r\n}","import { Constants } from \"./../constants\";\r\nimport { GenericScreenController } from \"./generic-screen-controller\";\r\nimport { IScreenStatusCommand } from \"./../screen-status-command\";\r\nimport { NavigationBarManager } from \"../navigation-bar-manager\";\r\n\r\n/**\r\n * Workflow Controller for screen 9 with custom logic\r\n */\r\nexport class Screen9Controller extends GenericScreenController {\r\n\r\n LOW = 0;\r\n MODERATE = 2.5;\r\n SEVERE = 4;\r\n\r\n TOTAL_ASSESMENT_QUESTIONS = 4;\r\n\r\n selfSelectCheckbox = this.screenDomElement.find(\".FormChoice input[type='checkbox']\");\r\n selfSelectStatus: boolean = false;\r\n\r\n questionsSelects = this.screenDomElement.find(\".Form__Element.FormSelection select\");\r\n\r\n constructor(index: number, navigationBarManager: NavigationBarManager) {\r\n super(index, navigationBarManager);\r\n this.navigationStatus.progressBarGroupIndex = Constants.GROUP_INDEX_3;\r\n }\r\n\r\n public initEvents() {\r\n let self = this;\r\n\r\n // Event when the user check the option \"Self-Select Dependency Option\"\r\n $(this.selfSelectCheckbox).change(function (e) {\r\n self.selfSelectStatus = $(e.target).is(':checked');\r\n self.clearDropdowns();\r\n self.updateNextButtonStatus();\r\n });\r\n\r\n // Each time the user selects an option, proceed to show the message that\r\n // corresponds to the average\r\n $(this.screenDomElement.find(\".FormSelection select\")).change(function () {\r\n self.updateDependencyLevelMessage();\r\n });\r\n }\r\n\r\n public calculateNextScreensInFlow(): Array {\r\n let visibilityChangeRequest: Array = new Array();\r\n\r\n let average: number = this.calculateAnswerAverage();\r\n if (average <= 2) {\r\n\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_10,\r\n active: true\r\n });\r\n\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_14,\r\n active: true\r\n });\r\n\r\n } else if (average > 2 && average <= 3) {\r\n\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_11,\r\n active: true\r\n });\r\n\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_10,\r\n active: true\r\n });\r\n } else if (average > 3) {\r\n\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_12,\r\n active: true\r\n });\r\n\r\n visibilityChangeRequest.push({\r\n targetScreenIndex: Constants.SCREEN_10,\r\n active: true\r\n });\r\n }\r\n return visibilityChangeRequest;\r\n }\r\n\r\n /**\r\n * Calculates the average pointing for the answers given by the user\r\n * @returns Average points of dependency to tobacco\r\n * */\r\n private calculateAnswerAverage(): number {\r\n\r\n // If the user selects the \"selef-select\" checkbox\r\n // we define the calification based on the selected\r\n // option.\r\n if (this.selfSelectStatus) {\r\n\r\n let selfSelectOption = $(this.questionsSelects[0]).val();\r\n switch (selfSelectOption) {\r\n case \"0\":\r\n return this.LOW;\r\n case \"1\":\r\n return this.MODERATE;\r\n case \"2\":\r\n return this.SEVERE;\r\n default:\r\n return this.LOW;\r\n }\r\n } // If the is not self-select, we calculate based on the 4 questions of the form\r\n else {\r\n let total: number = 0;\r\n\r\n for (var i = 1; i < this.questionsSelects.length; i++) {\r\n if ($(this.questionsSelects[i]).val()) {\r\n let selectedOption = parseInt($(this.questionsSelects[i]).val() as string);\r\n total += selectedOption;\r\n }\r\n }\r\n\r\n return total / this.TOTAL_ASSESMENT_QUESTIONS;\r\n }\r\n }\r\n\r\n public validateScreen(): boolean {\r\n if (this.selfSelectStatus) {\r\n let validationResult0 = this.validateRequiredSelectQuestion(0);\r\n return validationResult0;\r\n }\r\n else {\r\n\r\n // All the questions are required\r\n let validationResult1 = this.validateRequiredSelectQuestion(1);\r\n let validationResult2 = this.validateRequiredSelectQuestion(2);\r\n let validationResult3 = this.validateRequiredSelectQuestion(3);\r\n let validationResult4 = this.validateRequiredSelectQuestion(4);\r\n\r\n return validationResult1 && validationResult2 && validationResult3 && validationResult4;\r\n }\r\n }\r\n\r\n /**\r\n * Validates the questions with select option were answered\r\n */\r\n private validateRequiredSelectQuestion(questionIndex: number = 0): boolean {\r\n let questionContainer = $(this.screenDomElement.find(\".FormSelection\")[questionIndex]);\r\n let selectedOption = questionContainer.find(\"select\").val();\r\n\r\n if (!selectedOption) {\r\n questionContainer.addClass(\"ValidationFail\");\r\n let errorMessageContainer = questionContainer.find(\".Form__Element__ValidationError\");\r\n errorMessageContainer.html(\"This field is required\");\r\n errorMessageContainer.show();\r\n\r\n return false;\r\n } else {\r\n questionContainer.removeClass(\"ValidationFail\");\r\n let errorMessageContainer = questionContainer.find(\".Form__Element__ValidationError\");\r\n errorMessageContainer.html(\"\");\r\n errorMessageContainer.hide();\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Shows the dependency message depending on the average obtained in the answers\r\n */\r\n private updateDependencyLevelMessage() {\r\n\r\n // Firsta validate if all the questions where answered\r\n let finishedAnswers: boolean = true;\r\n for (var i = 1; i < this.questionsSelects.length; i++) {\r\n if (!$(this.questionsSelects[i]).val()) {\r\n finishedAnswers = false;\r\n }\r\n }\r\n\r\n if (!finishedAnswers) {\r\n return;\r\n }\r\n\r\n // Add the message container in case doesn't exist yet\r\n if (this.screenDomElement.find(\".Form__Element.FormStep #dependency-level-message\").length == 0) {\r\n this.screenDomElement.find(\".Form__Element.FormStep\").append(`\r\n
\r\n

Patient has a

\r\n
\r\n `);\r\n }\r\n\r\n // Set the message that correspond to the average\r\n let message = \"\";\r\n let average: number = this.calculateAnswerAverage();\r\n\r\n if (average <= 2) {\r\n message = \"low dependency.\";\r\n } else if (average > 2 && average <= 3) {\r\n message = \"moderate dependency.\";\r\n } else if (average > 3) {\r\n message = \"severe dependency\";\r\n }\r\n\r\n this.screenDomElement.find(\".Form__Element.FormStep #dependency-level-message p strong\").html(message);\r\n\r\n this.enableNextButton();\r\n }\r\n\r\n public showScreen(): void {\r\n this.screenDomElement.show();\r\n this.recordAnalyticsPageViewEvent();\r\n }\r\n\r\n public loadScreenInitialStatus(): void {\r\n this.updateNextButtonStatus();\r\n }\r\n\r\n private updateNextButtonStatus() {\r\n let enableNextButton: boolean = true;\r\n this.screenDomElement.find(\".FormSelection select\").each(function (index, element) {\r\n if (!$(element).val()) {\r\n enableNextButton = false;\r\n }\r\n });\r\n\r\n if (enableNextButton) {\r\n this.enableNextButton();\r\n } else {\r\n this.disableNextButton();\r\n }\r\n }\r\n\r\n /**\r\n * Reset the Dropdowns depending if the user selected the option \"Self-Select Dependency Option\"\r\n * \r\n */\r\n private clearDropdowns() {\r\n\r\n if (this.selfSelectStatus) {\r\n $(this.questionsSelects[0]).val(\"\");\r\n for (var i = 1; i < this.questionsSelects.length; i++) {\r\n $(this.questionsSelects[i]).val(1);\r\n }\r\n }\r\n else {\r\n $(this.questionsSelects[0]).val(1);\r\n for (var i = 1; i < this.questionsSelects.length; i++) {\r\n $(this.questionsSelects[i]).val(\"\");\r\n }\r\n }\r\n\r\n //this.screenDomElement.find(\".Form__Element.FormStep #dependency-level-message\").html('Patient has a ')\r\n this.screenDomElement.find(\".Form__Element.FormStep #dependency-level-message\").remove();\r\n }\r\n}","import { svgInject } from \"../../Static/javascript/modules/svg-injection\";\r\nimport { TobaccoWorkflowManager } from \"./tobacco-workflow-manager\";\r\n\r\n$(document).ready(function () {\r\n\r\n // Request SVG sprite, this contains the logo image of the header\r\n var hash = (Math.floor(Math.random() * 1000)).toString();\r\n svgInject('/static/imgs/svg-sprite.svg?v=' + hash);\r\n // End Request SVG sprite\r\n\r\n (window).dataLayer = (window).dataLayer || [];\r\n\r\n // Creates a Tobacco Workflow Manager in charge of controlling \r\n // all the logic of the flow.\r\n var formManager: TobaccoWorkflowManager = new TobaccoWorkflowManager();\r\n\r\n // GOOGLE ANALYTICS:\r\n // ----------------\r\n\r\n // Detecte the internet conectivity status:\r\n let online = 'no'\r\n if (navigator.onLine) {\r\n online = 'yes';\r\n }\r\n\r\n // When the user copy any text we send the copy text event with\r\n // selected text\r\n addEventListener('copy', function (event: ClipboardEvent) {\r\n const selection = window.getSelection().toString();\r\n\r\n (window).gtag('event', 'copied_text', {\r\n 'copied_text_chars': selection\r\n });\r\n\r\n });\r\n\r\n document.querySelector('.tobacco-cessation-resources-button').addEventListener('click', (evt) => {\r\n\r\n let target = evt.target as HTMLElement;\r\n const isExpanded = target.getAttribute('aria-expanded') === 'true';\r\n const resources = document.querySelector('.tobacco-cessation-resources');\r\n const resourcesContainer = document.querySelector('.tobacco-cessation-resources-container');\r\n\r\n if (isExpanded) {\r\n target.setAttribute('aria-expanded', 'false');\r\n resourcesContainer.setAttribute('aria-hidden', 'true');\r\n resources.classList.remove('open');\r\n document.getElementsByTagName(\"body\")[0].classList.remove(\"modal-open\", \"resources-open\");\r\n }\r\n else {\r\n target.setAttribute('aria-expanded', 'true');\r\n resources.classList.add('open');\r\n resourcesContainer.setAttribute('aria-hidden', 'false');\r\n document.getElementsByTagName(\"body\")[0].classList.add(\"modal-open\", \"resources-open\");\r\n }\r\n });\r\n\r\n // accordions\r\n addEventListener('click', (evt) => {\r\n const { target } = evt;\r\n if (target instanceof HTMLElement) {\r\n const classList = target.classList;\r\n\r\n if (classList.value == 'adage-accordion-trigger') {\r\n const isExpanded = target.getAttribute('aria-expanded') === 'true';\r\n const accordionId = target.getAttribute('aria-controls');\r\n const accordionPanel = document.getElementById(accordionId);\r\n\r\n if (isExpanded) {\r\n target.setAttribute('aria-expanded', 'false');\r\n accordionPanel.setAttribute('hidden', '');\r\n }\r\n else {\r\n target.setAttribute('aria-expanded', 'true');\r\n accordionPanel.removeAttribute('hidden');\r\n }\r\n }\r\n }\r\n });\r\n});","import { Constants } from \"./constants\";\r\nimport { GenericScreenController } from \"./screens/generic-screen-controller\";\r\nimport { IScreenController } from \"./screens/screen-controller\";\r\nimport { IScreenStatusCommand } from \"./screen-status-command\";\r\nimport { Screen3Controller } from \"./screens/screen-3-controller\";\r\nimport { Screen6Controller } from \"./screens/screen-6-controller\";\r\nimport { Screen7Controller } from \"./screens/screen-7-controller\";\r\nimport { Screen9Controller } from \"./screens/screen-9-controller\";\r\nimport { NavigationBarManager } from \"./navigation-bar-manager\";\r\n\r\n/**\r\n * Class in charge of controlling the forms workflow behabior and the interaction\r\n * between the screens\r\n **/\r\nexport class TobaccoWorkflowManager {\r\n\r\n /** \r\n * Contains all the controllers for the workflow screens.\r\n **/\r\n screens: Array;\r\n\r\n /**\r\n * Contains the array index of the active screen. The one\r\n * being displayed to the user.\r\n **/\r\n activeScreenIndex: number;\r\n\r\n /**\r\n * Manages the behaviour of the navigation bar\r\n */\r\n navigationBarManager: NavigationBarManager;\r\n\r\n headerCloseButton: any = $(\".tobacco-cessation-header-wrapper button.tobacco-cessation-header-close\");\r\n\r\n constructor() {\r\n this.loadScreens();\r\n this.initFormFlow();\r\n\r\n // Event when the user clicks in the close button for the modal window\r\n $(\"#tobacco-modal .modal-close\").click(function (e) {\r\n e.preventDefault();\r\n $(\"#tobacco-modal\").hide();\r\n });\r\n\r\n // hide close buttons on browser\r\n const closeBtns = document.querySelectorAll('[data-close-tobacco-app]');\r\n\r\n let displayMode = 'browser tab';\r\n\r\n if (window.matchMedia('(display-mode: standalone)').matches) {\r\n displayMode = 'standalone';\r\n }\r\n\r\n if (displayMode === 'browser tab') {\r\n closeBtns.forEach((btn: HTMLButtonElement) => {\r\n btn.style.display = 'none';\r\n });\r\n }\r\n\r\n window.matchMedia('(display-mode: standalone)')\r\n .addListener(event => {\r\n\r\n if (event.matches) {\r\n closeBtns.forEach((btn: HTMLButtonElement) => {\r\n btn.style.display = '';\r\n });\r\n } else {\r\n closeBtns.forEach((btn: HTMLButtonElement) => {\r\n btn.style.display = 'none';\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Adds all the available screens of the flow to the\r\n * screens array.\r\n **/\r\n private loadScreens(): void {\r\n\r\n this.screens = new Array();\r\n this.navigationBarManager = new NavigationBarManager(this.screens);\r\n\r\n // Screens should be pushed in same order as their index.\r\n // By default all screens are inactive in the flow.\r\n // Each screen should define who is the next screen to show.\r\n\r\n //The first screen is number three because the introduction was removed\r\n this.screens.push(new Screen3Controller(Constants.SCREEN_3, this.navigationBarManager));\r\n\r\n this.screens.push(new Screen6Controller(Constants.SCREEN_6, this.navigationBarManager));\r\n this.screens.push(new Screen7Controller(Constants.SCREEN_7, this.navigationBarManager));\r\n\r\n this.screens.push(new Screen9Controller(Constants.SCREEN_9, this.navigationBarManager));\r\n\r\n this.screens.push(new GenericScreenController(Constants.SCREEN_11,\r\n this.navigationBarManager,\r\n [{\r\n active: true,\r\n targetScreenIndex: Constants.SCREEN_10\r\n }],\r\n false,\r\n {\r\n showCloseApp: false,\r\n showExit: false,\r\n showNext: true,\r\n showPrevious: true,\r\n showStartOver: false,\r\n progressBarGroupIndex: Constants.GROUP_INDEX_3\r\n }));\r\n\r\n this.screens.push(new GenericScreenController(Constants.SCREEN_12,\r\n this.navigationBarManager,\r\n [{\r\n active: true,\r\n targetScreenIndex: Constants.SCREEN_10\r\n }],\r\n false,\r\n {\r\n showCloseApp: false,\r\n showExit: false,\r\n showNext: true,\r\n showPrevious: true,\r\n showStartOver: false,\r\n progressBarGroupIndex: Constants.GROUP_INDEX_3\r\n }));\r\n\r\n this.screens.push(new GenericScreenController(Constants.SCREEN_10,\r\n this.navigationBarManager,\r\n [{\r\n active: true,\r\n targetScreenIndex: Constants.SCREEN_14\r\n }],\r\n false,\r\n {\r\n showCloseApp: false,\r\n showExit: false,\r\n showNext: true,\r\n showPrevious: true,\r\n showStartOver: false,\r\n progressBarGroupIndex: Constants.GROUP_INDEX_3\r\n }));\r\n\r\n this.screens.push(new GenericScreenController(Constants.SCREEN_14,\r\n this.navigationBarManager,\r\n [],\r\n false, {\r\n showCloseApp: true,\r\n showExit: true,\r\n showNext: false,\r\n showPrevious: true,\r\n showStartOver: false,\r\n progressBarGroupIndex: Constants.GROUP_INDEX_3\r\n }));\r\n\r\n this.screens.push(new GenericScreenController(Constants.SCREEN_15,\r\n this.navigationBarManager,\r\n [],\r\n false, {\r\n showCloseApp: true,\r\n showExit: true,\r\n showNext: false,\r\n showPrevious: true,\r\n showStartOver: false,\r\n progressBarGroupIndex: Constants.GROUP_INDEX_3\r\n }));\r\n\r\n // Initializes the custom events for all the screens\r\n this.screens.forEach(function (screen: IScreenController, index: number, array: IScreenController[]) {\r\n screen.initEvents();\r\n });\r\n }\r\n\r\n /**\r\n * Makes all the required initializations for the wizard\r\n **/\r\n private initFormFlow(): void {\r\n this.activeScreenIndex = 0;\r\n this.getActiveScreen().loadScreenInitialStatus();\r\n this.getActiveScreen().showScreen();\r\n this.navigationBarManager.ButtonNext.click(this.onNextClick.bind(this));\r\n this.navigationBarManager.ButtonPrev.click(this.onPrevClick.bind(this));\r\n this.navigationBarManager.ButtonExit.click(this.onExitClick.bind(this));\r\n this.navigationBarManager.ButtonStartOver.click(this.onExitClick.bind(this));\r\n this.navigationBarManager.ButtonCloseApp.click(this.onCloseAppClick.bind(this));\r\n this.headerCloseButton.click(this.onCloseAppClick.bind(this));\r\n\r\n this.navigationBarManager.updateNavigationBarStatus(this.activeScreenIndex, this.getActiveScreen().getNavigationBarStatus());\r\n }\r\n\r\n /**\r\n * Gets the current screen the user is seeing\r\n * \r\n * @returns Active screen controller\r\n **/\r\n private getActiveScreen(): IScreenController {\r\n if (this.screens && this.screens.length > this.activeScreenIndex) { \r\n return this.screens[this.activeScreenIndex];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Callback called when the user clicks on the button 'Next'\r\n **/\r\n private onNextClick(e): boolean { \r\n let activeScreen = this.getActiveScreen();\r\n\r\n // Before doing anything validates the screen if the\r\n // validation does not pass we don't move forward\r\n // Each screen has its own validations.\r\n // Ex.Required question.\r\n if (!activeScreen.validateScreen())\r\n return false;\r\n\r\n // Validate if this is the last screen, in that case\r\n // we don't move forward.\r\n if (this.activeScreenIndex + 1 >= this.screens.length)\r\n return false;\r\n\r\n // Request the current screen to calculate what is the\r\n // next screen that should be displayed to the user\r\n // this calculation is made by each screen based on its own\r\n // rules.\r\n let screenStatusCommands = activeScreen.calculateNextScreensInFlow();\r\n\r\n if (screenStatusCommands && screenStatusCommands.length > 0) {\r\n\r\n // Clear all the following screens starting form the current\r\n // screen, in case the user changes answer the flow is restarted.\r\n this.resetFollowingScreensStatus();\r\n\r\n // Updates the status of the next screens based on the\r\n // the current screen commands.\r\n this.updateScreensStatusInFlow(screenStatusCommands);\r\n }\r\n\r\n // Moves to the next screen\r\n this.goToNextActiveScreen();\r\n\r\n // Prevents to fire the default action of the button\r\n return false;\r\n\r\n }\r\n\r\n /**\r\n * Disables from the flow all the screens that follows the current active screen\r\n **/\r\n private resetFollowingScreensStatus(): void {\r\n for (var i = this.activeScreenIndex + 1; i < this.screens.length; i++) {\r\n this.screens[i].isActiveInTheFlow = false;\r\n }\r\n }\r\n\r\n /**\r\n * Updates the satus of the screens based on the provided list commands\r\n * \r\n * @param screenStatusCommands List of commands that indicates which screens should\r\n * be updated and the new status.\r\n **/\r\n private updateScreensStatusInFlow(screenStatusCommands: IScreenStatusCommand[]): void {\r\n\r\n // Abort in case there are no screens to update\r\n if (!screenStatusCommands || screenStatusCommands.length == 0) {\r\n return;\r\n }\r\n for (var i = 0; i < screenStatusCommands.length; i++) {\r\n let targetScreenIndex = screenStatusCommands[i].targetScreenIndex;\r\n let newVisibilityValue = screenStatusCommands[i].active;\r\n\r\n // Throw error in case the screen index to update is \r\n // bigger than the amount of screens\r\n if (this.screens.length < targetScreenIndex) {\r\n throw `The index ${targetScreenIndex} is out of bounds. Currently there are only ${this.screens.length} screens`;\r\n }\r\n\r\n this.screens[targetScreenIndex].isActiveInTheFlow = newVisibilityValue;\r\n }\r\n }\r\n\r\n /**\r\n * Callback called when the user clicks on the button 'Previous'\r\n **/\r\n private onPrevClick(e): boolean {\r\n // Validate if is the first screen, can't move further back\r\n if (this.activeScreenIndex - 1 < 0)\r\n return false;\r\n\r\n // Move to the previous screen\r\n this.goToPreviousActiveScreen();\r\n\r\n // Prevents to fire the default action of the button\r\n return false;\r\n }\r\n\r\n /**\r\n * Moves to the next active screen. This process hides the current\r\n * active screen and searches for the next active screen in the line \r\n * and shows it to the user\r\n **/\r\n private goToNextActiveScreen():void {\r\n this.getActiveScreen().hideScreen();\r\n\r\n for (var i = this.activeScreenIndex + 1; i < this.screens.length; i++) {\r\n if (this.screens[i].isActiveInTheFlow) {\r\n this.activeScreenIndex = i;\r\n break;\r\n }\r\n }\r\n \r\n this.navigationBarManager.updateNavigationBarStatus(this.activeScreenIndex, this.getActiveScreen().getNavigationBarStatus());\r\n\r\n this.navigationBarManager.disableNextButton();\r\n this.navigationBarManager.updateNextButtonTitle(Constants.NEXT_TITLE);\r\n\r\n this.getActiveScreen().loadScreenInitialStatus();\r\n this.getActiveScreen().showScreen();\r\n\r\n window.scroll(0, 0);\r\n }\r\n\r\n /**\r\n * Moves to the previous active screen. This process hides the current\r\n * active screen and searches for the previous active screen in the line \r\n * and shows it to the user\r\n **/\r\n private goToPreviousActiveScreen(): void {\r\n this.getActiveScreen().hideScreen();\r\n\r\n for (var i = this.activeScreenIndex - 1; i >= 0; i--) {\r\n if (this.screens[i].isActiveInTheFlow) {\r\n this.activeScreenIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n this.navigationBarManager.updateNavigationBarStatus(this.activeScreenIndex, this.getActiveScreen().getNavigationBarStatus());\r\n\r\n this.getActiveScreen().loadScreenInitialStatus();\r\n this.getActiveScreen().showScreen();\r\n\r\n window.scroll(0, 0);\r\n }\r\n\r\n /**\r\n * Callback called when the user clicks on the button 'Exit'\r\n **/\r\n private onExitClick(e): boolean {\r\n this.resetForm();\r\n // Prevents to fire the default action of the button\r\n return false;\r\n }\r\n\r\n /**\r\n * Callback called when the user clicks on the button 'Close app'\r\n **/\r\n private onCloseAppClick(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.resetForm();\r\n window.close();\r\n }\r\n\r\n /**\r\n * Restarts the form to clear all selections and start over.\r\n */\r\n private resetForm(): void {\r\n window.location.reload();\r\n }\r\n}","export function svgInject(svgURL: string) {\r\n let request = new XMLHttpRequest();\r\n request.open('GET', svgURL, true);\r\n request.onload = function () {\r\n if (request.status >= 200 && request.status < 400) {\r\n var data = request.responseText;\r\n // Create node with response data and insert into DOM\r\n var div = document.createElement('div');\r\n div.innerHTML = data;\r\n document.body.insertBefore(div, document.body.childNodes[0]);\r\n }\r\n };\r\n request.onerror = function () {\r\n console.log(\"Couldn't load SVG sprite - connection error\");\r\n };\r\n request.send();\r\n}"],"sourceRoot":""}