{"version":3,"sources":["../js/Checklist.js"],"names":["Checklist","showChecklistOnLaunch","this","oApprovalUser","oChecklist","szChecklistDivId","dApprovalChecklists","g_eChecklistItemState","None","Pass","Fail","NotApplicable","g_eChecklistItemType","Dropdown","Checkbox","g_eChecklistIconSource","Pending","prototype","initialiseChecklist","approvalUser","g_oChecklist","hasChecklist","getChecklist","removeChecklist","oJSON","SessionId","g_szSessionId","ApprovalUserId","approvalUserId","$","post","url","data","JSON","stringify","contentType","dataType","cache","success","oResponse","Success","Errors","length","initialiseChecklist_CH","parse","Contents","renderChecklistIconList","approval","ApprovalId","approvalId","DocumentId","documentId","renderChecklistIconList_CH","checklistDict","approvers","forEach","approver","checklistState","ChecklistState","updateChecklistInfoState","g_oUserDetails","UserId","userId","g_oApproval","UserIsSheriffInApproval","setChecklistIconClickHandlers","document","getElementById","onclick","e","click","renderApproverChecklist","css","state","source","stateString","Object","keys","attr","hasClass","tooltipster","result","renderChecklist","g_oViewer","g_bReadOnly","changeChecklistTab","g_oSeparations","AreSeparationsEnabled","showChecklistTabs","hideChecklistTabs","updateChecklistState","checklist","html","renderChecklistHeader","RenderApproverDisplayName","g_oSettings","g_oUserSettings","RightMenuCollapse","slideDiv","closeApproverChecklist","renderAsReadOnly","destinationDivId","ChecklistItems","szHTML","item","createChecklistItemTemplate","idPrefix","indexOf","ItemType","handleCheckboxToggle","target","checked","onchange","handleDropdownSelectionChanged","value","approverDisplayName","c_iSkinType","prepend","i","State","ItemIsMandatory","ReadOnly","UpdateApprovalButtonStates","saveChecklist","ThirdPartyMemberId","thirdPartyApproverId","g_oGreenlightMessages","displayErrorBubble","checklistItem","szMandatoryAsterisk","checklistItemId","getChecklistItemClassFromState","getChecklistItemState","ItemName","createCheckboxTemplate","createDropdownTemplate","checklistItemState","isApprovedOrRejected","approverStatus","eApprovalStatus","Approved","Rejected","Value","isDisabled","szOptions","ItemOptions","x","hidden","OptionValue","selected","replace","checkedValue","passValue","OptionState","valueState","showChecklistTab","removeClass","addClass","hide","show","makeChecklistTabVisible","window"],"mappings":"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","file":"Checklist-728c314d6b.js","sourcesContent":["/*\r\n* Copyright (c) 2022 SGS Europe. All rights reserved.\r\n*\r\n* This program is the CONFIDENTIAL and PROPRIETARY property of SGS Europe.\r\n* Any unauthorised use, reproduction, or transfer of this program is strictly\r\n* prohibited.\r\n*\r\n* File Name: Checklist.js\r\n*\r\n* Description:\tEncapsulates the code for the checklist logic.\r\n*\r\n*/\r\n\r\n(function () {\r\n\r\n \"use strict\";\r\n\r\n /**\r\n * Creates a new Checklist object.\r\n */\r\n function Checklist(showChecklistOnLaunch) {\r\n \r\n // Checklist globals.\r\n this.showChecklistOnLaunch = showChecklistOnLaunch;\r\n this.oApprovalUser = null;\r\n this.oChecklist = null;\r\n this.szChecklistDivId = \"divChecklist\";\r\n this.dApprovalChecklists = null;\r\n\r\n // The Checklist Item State enum.\r\n this.g_eChecklistItemState = {\r\n None: 0,\r\n Pass: 1,\r\n Fail: 2,\r\n NotApplicable: 3\r\n }\r\n\r\n // The Checklist Item Type enum.\r\n this.g_eChecklistItemType = {\r\n Dropdown: 0,\r\n Checkbox: 1\r\n }\r\n\r\n // The checklist icon source for the states.\r\n this.g_eChecklistIconSource = {\r\n Pending: \"img/checklist_icon_orange.svg\",\r\n Pass: \"img/checklist_icon_green.svg\",\r\n Fail: \"img/checklist_icon_red.svg\",\r\n }\r\n };\r\n\r\n /**\r\n * Initialises a checklist.\r\n * @param {object} approvalUser - The Approval user.\r\n */\r\n Checklist.prototype.initialiseChecklist = function (approvalUser) {\r\n\r\n // Update the current approval user.\r\n g_oChecklist.oApprovalUser = approvalUser;\r\n\r\n // Gets or hides a checklist on the approval user.\r\n g_oChecklist.oApprovalUser.hasChecklist ? g_oChecklist.getChecklist() : g_oChecklist.removeChecklist();\r\n };\r\n\r\n /**\r\n * Gets a checklist object and handles the rendering.\r\n */\r\n Checklist.prototype.getChecklist = function () {\r\n\r\n // Outline the json object.\r\n var oJSON = {\r\n SessionId: g_szSessionId,\r\n ApprovalUserId: g_oChecklist.oApprovalUser.approvalUserId,\r\n };\r\n\r\n // Get the checklist.\r\n $.post({\r\n url: \"GreenlightApproval/GetApprovalChecklist\",\r\n data: JSON.stringify(oJSON),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n cache: false,\r\n success: function (oResponse) {\r\n if (oResponse.Success && oResponse.Errors.length === 0) {\r\n // Renders the Checklist element\r\n g_oChecklist.initialiseChecklist_CH(JSON.parse(oResponse.Contents));\r\n }\r\n else {\r\n // Hides the checklist element.\r\n g_oChecklist.removeChecklist();\r\n }\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Fetches a dictionary of checklists to decide which icons to render.\r\n * @param {*} approval - the approval object. \r\n */\r\n Checklist.prototype.renderChecklistIconList = function (approval) {\r\n\r\n // Outline the JSON request object.\r\n var oJSON = {\r\n SessionId: g_szSessionId,\r\n ApprovalId: approval.approvalId,\r\n DocumentId: approval.documentId\r\n };\r\n\r\n // Get the details of the checklists for the approval.\r\n $.post({\r\n url: \"GreenlightApproval/GetApprovalChecklists\",\r\n data: JSON.stringify(oJSON),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n cache: false,\r\n success: function (oResponse) {\r\n // Render the checklist icons.\r\n if (oResponse.Success && oResponse.Errors.length === 0) {\r\n g_oChecklist.renderChecklistIconList_CH(JSON.parse(oResponse.Contents), approval);\r\n }\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Callback handler to handle the GetChecklists response.\r\n * @param {*} checklistDict - Checklist dictionary. Key: ApprovalUserId, Value: Checklist\r\n * @param {*} approval - the approval object.\r\n */\r\n Checklist.prototype.renderChecklistIconList_CH = function (checklistDict, approval) {\r\n\r\n // Set global var.\r\n g_oChecklist.dApprovalChecklists = checklistDict;\r\n\r\n // Fetch the approval users.\r\n var oApprovalUsers = approval.approvers;\r\n\r\n // For each approval member, render checklist icon if necessary.\r\n oApprovalUsers.forEach(function (approver) {\r\n\r\n // If the approver has a checklist and checklist is contained in the dictionary.\r\n if (approver.hasChecklist && checklistDict[approver.approvalUserId]) {\r\n\r\n // Extract the state.\r\n var checklistState = JSON.parse(checklistDict[approver.approvalUserId]).ChecklistState;\r\n\r\n // Render the checklist icon depending on the state.\r\n g_oChecklist.updateChecklistInfoState(approver.approvalUserId, checklistState);\r\n\r\n // Determine if the user is able to view this checklist.\r\n if (g_oUserDetails.UserId == approver.userId || g_oApproval.UserIsSheriffInApproval(g_oUserDetails.UserId, approval)) {\r\n g_oChecklist.setChecklistIconClickHandlers(approver);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Sets the click handlers for the checklist icons.\r\n * @param {*} approver - the approval user.\r\n */\r\n Checklist.prototype.setChecklistIconClickHandlers = function (approver) {\r\n\r\n // If icon doesnt exist.\r\n if (!approver) return;\r\n if (!$(\"#\" + approver.approvalUserId + \"-ChecklistIcon\")) return;\r\n\r\n // Set the click event.\r\n document.getElementById(approver.approvalUserId + \"-ChecklistIcon\").onclick = function (e) {\r\n $(\"#btnInfo\").click();\r\n g_oChecklist.renderApproverChecklist(approver);\r\n };\r\n $(\"#\" + approver.approvalUserId + \"-ChecklistIcon\").css(\"cursor\", \"pointer\");\r\n }\r\n\r\n /**\r\n * Renders the checklist icon for an approval user depending on the state.\r\n * @param {number} approvalUserId - the approval user id.\r\n * @param {number} state - the eChecklistItemState state.\r\n */\r\n Checklist.prototype.updateChecklistInfoState = function (approvalUserId, state) {\r\n\r\n // Assign the icon image source depending on the checklist state.\r\n var source = \"\";\r\n switch (state) {\r\n case g_oChecklist.g_eChecklistItemState.None: source = g_oChecklist.g_eChecklistIconSource.Pending; break;\r\n case g_oChecklist.g_eChecklistItemState.Pass: source = g_oChecklist.g_eChecklistIconSource.Pass; break;\r\n case g_oChecklist.g_eChecklistItemState.Fail: source = g_oChecklist.g_eChecklistIconSource.Fail; break;\r\n case g_oChecklist.g_eChecklistItemState.NotApplicable: source = g_oChecklist.g_eChecklistIconSource.Pending; break;\r\n default: break;\r\n }\r\n\r\n // Extract the state enum to a string. \"Pass\", \"Fail\", or \"None\".\r\n var stateString = Object.keys(g_oChecklist.g_eChecklistIconSource)[state];\r\n\r\n // Update the target image source.\r\n $(\"#\" + approvalUserId + \"-ChecklistIcon\").attr(\"src\", source);\r\n\r\n // Update the target hover text.\r\n $(\"#\" + approvalUserId + \"-ChecklistIcon\").attr(\"title\", \"Checklist \" + stateString);\r\n\r\n // Destory any existing tooltip as the state many have changed.\r\n if ($(\"#\" + approvalUserId + \"-ChecklistIcon\").hasClass(\"tooltipstered\")) {\r\n $(\"#\" + approvalUserId + \"-ChecklistIcon\").tooltipster('destroy');\r\n }\r\n }\r\n\r\n /**\r\n * After setting the approvers status we need to refresh the page.\r\n * After Getting the checklist object we need to update the display.\r\n * @param {object} result - The checklist object as a string.\r\n */\r\n Checklist.prototype.initialiseChecklist_CH = function (result) {\r\n \r\n // Parses the checklist.\r\n g_oChecklist.oChecklist = JSON.parse(result);\r\n\r\n // Render the UI element.\r\n g_oChecklist.renderChecklist(g_oChecklist.oChecklist, g_oViewer.g_bReadOnly, g_oChecklist.szChecklistDivId);\r\n\r\n // Change the user to their checklist.\r\n g_oChecklist.changeChecklistTab(true);\r\n\r\n // Show or hide the tabs based on if both multiple are available.\r\n g_oSeparations.AreSeparationsEnabled() ? g_oChecklist.showChecklistTabs() : g_oChecklist.hideChecklistTabs();\r\n\r\n // Set the initial state of the checklist.\r\n g_oChecklist.updateChecklistState();\r\n }\r\n\r\n /**\r\n * Wrapper method used to render a read-only checklist from the Approver Info List.\r\n * @param {object} approver - the approver's checklist to view.\r\n */\r\n Checklist.prototype.renderApproverChecklist = function (approver) {\r\n\r\n // Extract the users checklist.\r\n var checklist = JSON.parse(g_oChecklist.dApprovalChecklists[approver.approvalUserId]);\r\n\r\n // Ensure we have a checklist.\r\n if (!checklist) {\r\n return;\r\n }\r\n\r\n // Remove the current content from the checklist tab.\r\n $('#' + g_oChecklist.szChecklistDivId).html(\"\");\r\n\r\n // Render the readonly checklist.\r\n g_oChecklist.renderChecklist(checklist, true, g_oChecklist.szChecklistDivId);\r\n\r\n // Render the checklist header.\r\n g_oChecklist.renderChecklistHeader(g_oApproval.RenderApproverDisplayName(approver), g_oChecklist.szChecklistDivId);\r\n\r\n // Move the user to the checklist tab.\r\n g_oChecklist.changeChecklistTab(true);\r\n\r\n // If the right slide out is not shown, open the slideout.\r\n if (g_oSettings.g_oUserSettings.RightMenuCollapse == true) {\r\n slideDiv($(\"#divSepContainer\"), false, true);\r\n }\r\n }\r\n\r\n /**\r\n * Click handler for the read-only checklist close button.\r\n */\r\n Checklist.prototype.closeApproverChecklist = function () {\r\n\r\n // If we have a checklist for this user, render their checklist.\r\n if (g_oChecklist.oChecklist != null) {\r\n g_oChecklist.renderChecklist(g_oChecklist.oChecklist, g_oViewer.g_bReadOnly, g_oChecklist.szChecklistDivId);\r\n return;\r\n }\r\n\r\n // Move the user back to the separations tab.\r\n g_oChecklist.changeChecklistTab(false);\r\n }\r\n\r\n /**\r\n * Renders a checklist object to the target div.\r\n * @param {*} checklist - the checklist object.\r\n * @param {*} renderAsReadOnly - flag determining whether the checklist is readonly.\r\n * @param {*} destinationDivId - the element ID for the target checklist container div.\r\n * @returns \r\n */\r\n Checklist.prototype.renderChecklist = function (checklist, renderAsReadOnly, destinationDivId) {\r\n\r\n // Early return if checklist is invalid.\r\n if (!checklist || !checklist.ChecklistItems) {\r\n return;\r\n }\r\n\r\n // Do nothing if destination div doesn't exist.\r\n if (!$(\"#\" + destinationDivId).length) {\r\n return;\r\n }\r\n\r\n // outline the HTML template.\r\n var szHTML = \"\";\r\n\r\n // Creates the template for each item and appends to the string.\r\n checklist.ChecklistItems.forEach(function (item) {\r\n szHTML += g_oChecklist.createChecklistItemTemplate(item, renderAsReadOnly);\r\n });\r\n\r\n // Set the content.\r\n $(\"#\" + destinationDivId).html(szHTML);\r\n\r\n // Only attach the click handlers if not in readonly mode.\r\n if (!renderAsReadOnly) {\r\n\r\n // Setup event handlers.\r\n checklist.ChecklistItems.forEach(function (item) {\r\n\r\n // The list index value.\r\n var index = checklist.ChecklistItems.indexOf(item);\r\n\r\n // Setting the Id Prefix for subsequent elements.\r\n var idPrefix = \"checklistItem-\" + index;\r\n\r\n // Set the item event handler.\r\n switch (item.ItemType) {\r\n case g_oChecklist.g_eChecklistItemType.Checkbox: document.getElementById(idPrefix + \"checkbox\").onclick = function (e) { g_oChecklist.handleCheckboxToggle(e.target.checked, item) }; break;\r\n case g_oChecklist.g_eChecklistItemType.Dropdown: document.getElementById(idPrefix + \"dropdown\").onchange = function (e) { g_oChecklist.handleDropdownSelectionChanged(e.target.value, item) }; break;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Renders the Header component for a read-only checklist.\r\n * @param {*} approverDisplayName - the user's display name whose checklist we are viewing.\r\n * @param {*} destinationDivId - the parent div location. \r\n */\r\n Checklist.prototype.renderChecklistHeader = function (approverDisplayName, destinationDivId) {\r\n\r\n // Determine the close icon to be used.\r\n var szCloseIconSrc = g_oSettings.c_iSkinType == 0 ? \"img/Cancel-Close_wht_24.png\" : \"img/Cancel-Close_24.png\";\r\n\r\n // Build the content.\r\n var szHTML = \"\";\r\n szHTML += '
';\r\n szHTML += '
Viewing Checklist:
';\r\n szHTML += '
' + approverDisplayName + '
';\r\n szHTML += '';\r\n szHTML += '
';\r\n\r\n // Add the tooltip hover.\r\n $(\".checklistItem__HeaderClose\").tooltipster('content', \"Close Checklist\");\r\n\r\n // Add the header.\r\n $(\"#\" + destinationDivId).prepend(szHTML);\r\n }\r\n\r\n /**\r\n * Updates the overall checklist state.\r\n */\r\n Checklist.prototype.updateChecklistState = function () {\r\n\r\n // Outline an initial state of pass.\r\n var state = g_oChecklist.g_eChecklistItemState.Pass;\r\n\r\n // Check if any of the checklist items fail.\r\n for (var i = 0; i < g_oChecklist.oChecklist.ChecklistItems.length; i++) {\r\n\r\n // The checklist item is set to fail.\r\n if (g_oChecklist.oChecklist.ChecklistItems[i].State === g_oChecklist.g_eChecklistItemState.Fail) {\r\n state = g_oChecklist.g_eChecklistItemState.Fail;\r\n break;\r\n }\r\n\r\n // If the checklist item is set to mandatory and none, the checklist item is a fail.\r\n if (g_oChecklist.oChecklist.ChecklistItems[i].State === g_oChecklist.g_eChecklistItemState.None && g_oChecklist.oChecklist.ChecklistItems[i].ItemIsMandatory) {\r\n state = g_oChecklist.g_eChecklistItemState.Fail;\r\n break;\r\n\t\t\t}\r\n }\r\n\r\n // Update the checklist state.\r\n g_oChecklist.oChecklist.ChecklistState = state;\r\n\r\n // Update the checklist info state for the user.\r\n g_oChecklist.updateChecklistInfoState(g_oChecklist.oApprovalUser.approvalUserId, state);\r\n\r\n // Update the approval button states if required.\r\n if (!g_oApproval.ReadOnly()) {\r\n g_oApproval.UpdateApprovalButtonStates();\r\n }\r\n }\r\n\r\n /**\r\n * Overwrites a checklist in the DB.\r\n */\r\n Checklist.prototype.saveChecklist = function () {\r\n\r\n // Update the checklist state.\r\n g_oChecklist.updateChecklistState();\r\n\r\n // The base JSON object.\r\n var oJSON = {\r\n SessionId: g_szSessionId,\r\n ApprovalUserId: g_oChecklist.oApprovalUser.approvalUserId,\r\n ThirdPartyMemberId: g_oChecklist.oApprovalUser.thirdPartyApproverId,\r\n Checklist: JSON.stringify(g_oChecklist.oChecklist)\r\n };\r\n\r\n // Send the request.\r\n $.post({\r\n url: \"GreenlightApproval/UpdateApprovalChecklist\",\r\n data: JSON.stringify(oJSON),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n cache: false,\r\n success: function (oResponse) {\r\n if (!oResponse.Success) {\r\n g_oGreenlightMessages.displayErrorBubble(\"Failed to update user checklist.\");\r\n }\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * removes a Checklist in the UI.\r\n */\r\n Checklist.prototype.removeChecklist = function () {\r\n\r\n // Reset the checklist object.\r\n g_oChecklist.oChecklist = null;\r\n\r\n // Remove the content from the checklist tab.\r\n $('#' + g_oChecklist.szChecklistDivId).html(\"\");\r\n\r\n // Change back to the separations tab if required.\r\n g_oChecklist.changeChecklistTab(false);\r\n\r\n // Remove the tabs.\r\n g_oChecklist.hideChecklistTabs();\r\n }\r\n\r\n /**\r\n * Creates a template html string for a checklist item.\r\n * @param {object} checklistItem - the checklist items to render.\r\n * @returns {string} - the checklist item template string.\r\n */\r\n Checklist.prototype.createChecklistItemTemplate = function (checklistItem, renderAsReadOnly) {\r\n\r\n // Outline the html to be populated.\r\n var szHTML = '';\r\n\r\n // Outlining the mandatory asterisk.\r\n var szMandatoryAsterisk = checklistItem.ItemIsMandatory ? ' *' : \"\";\r\n\r\n // Only provide the div ID if we are not creating a read only checklist.\r\n var checklistItemId = renderAsReadOnly ? \"\" : \"checklistItem-\" + g_oChecklist.oChecklist.ChecklistItems.indexOf(checklistItem);\r\n\r\n // Open the checklist item div.\r\n szHTML += '
';\r\n\r\n // Add the checklist prompt.\r\n szHTML += '
' + checklistItem.ItemName + szMandatoryAsterisk + '
';\r\n\r\n // Add the checklist item.\r\n szHTML += '
';\r\n switch (checklistItem.ItemType) {\r\n case g_oChecklist.g_eChecklistItemType.Checkbox: szHTML += g_oChecklist.createCheckboxTemplate(checklistItem, checklistItemId, renderAsReadOnly); break;\r\n case g_oChecklist.g_eChecklistItemType.Dropdown: szHTML += g_oChecklist.createDropdownTemplate(checklistItem, checklistItemId, renderAsReadOnly); break;\r\n }\r\n szHTML += '
';\r\n\r\n // Close the checklist item div.\r\n szHTML += '
';\r\n\r\n // Return the checklist item.\r\n return szHTML;\r\n }\r\n\r\n /**\r\n * Determines the pass/fail state for a given checklist item.\r\n * @param {checklistItem} - The checklist item\r\n * @returns {g_eChecklistItemState} - the checklist item state\r\n */\r\n Checklist.prototype.getChecklistItemState = function (checklistItem) {\r\n\r\n // If State is mandatory and not available.\r\n if (checklistItem.State === g_oChecklist.g_eChecklistItemState.None && checklistItem.ItemIsMandatory) {\r\n return g_oChecklist.g_eChecklistItemState.Fail;\r\n }\r\n\r\n return checklistItem.State;\r\n }\r\n\r\n /**\r\n * Returns a CSS class string for conditional checklist style rendering.\r\n * @param {g_eChecklistItemState} checklistItemState - the checklist item pass/fail state.\r\n * @returns {string} - the css class as a string.\r\n */\r\n Checklist.prototype.getChecklistItemClassFromState = function (checklistItemState) {\r\n\r\n // Return the matching class.\r\n switch (checklistItemState) {\r\n case g_oChecklist.g_eChecklistItemState.Pass: return \"checkListItem--Pass\";\r\n case g_oChecklist.g_eChecklistItemState.Fail: return \"checkListItem--Fail\";\r\n case g_oChecklist.g_eChecklistItemState.NotApplicable: return \"checkListItem--NotApplicable\";\r\n default: return \"\";\r\n }\r\n }\r\n\r\n /**\r\n * Returns a checklist checkbox item string template.\r\n * @param {object} checklistItem - the checklist item to render.\r\n * @param {string} idPrefix - the unique ID prefix to render.\r\n * @param {boolean} renderAsReadOnly - Flag to decide whether to render in readonly or not.\r\n * @returns {string} - the checklist checkbox template string.\r\n */\r\n Checklist.prototype.createCheckboxTemplate = function (checklistItem, idPrefix, renderAsReadOnly) {\r\n\r\n // The Approval Status.\r\n var isApprovedOrRejected = g_oChecklist.oApprovalUser.approverStatus === eApprovalStatus.Approved\r\n || g_oChecklist.oApprovalUser.approverStatus === eApprovalStatus.Rejected;\r\n\r\n var isDisabled = renderAsReadOnly || isApprovedOrRejected ? \"disabled\" : \"\";\r\n var id = renderAsReadOnly ? \"\" : idPrefix + \"checkbox\";\r\n var state = checklistItem.State === g_oChecklist.g_eChecklistItemState.Pass ? \"checked\" : \"\";\r\n\r\n var szHTML = \"\";\r\n\r\n return szHTML;\r\n }\r\n\r\n /**\r\n * Returns a checklist dropdown item string template.\r\n * @param {object} checklistItem - the checklist item to render.\r\n * @param {string} idPrefix - the unique ID prefix to render.\r\n * @param {boolean} renderAsReadOnly - Flag to decide whether to render in readonly or not.\r\n * @returns {string} - the checklist dropdown template string.\r\n */\r\n Checklist.prototype.createDropdownTemplate = function (checklistItem, idPrefix, renderAsReadOnly) {\r\n\r\n var szHTML = \"\";\r\n\r\n // The Approval Status.\r\n var isApprovedOrRejected = g_oChecklist.oApprovalUser.approverStatus === eApprovalStatus.Approved\r\n || g_oChecklist.oApprovalUser.approverStatus === eApprovalStatus.Rejected;\r\n\r\n // Disable the dropdown if document has been approved/rejected, or manually set to readonly mode.\r\n var isDisabled = renderAsReadOnly || isApprovedOrRejected ? \"disabled\" : \"\";\r\n var id = renderAsReadOnly ? \"\" : idPrefix + \"dropdown\";\r\n\r\n szHTML += \"\";\r\n\r\n return szHTML;\r\n }\r\n\r\n /**\r\n * Toggles Value property depending on the checkbox state.\r\n * @param {HTMLElement} input - the checkbox input element.\r\n * @param {number} index - the item index.\r\n */\r\n Checklist.prototype.handleCheckboxToggle = function (checked, checklistItem) {\r\n\r\n // Converts true/false to \"0\" or \"1\" for object comparisons.\r\n var checkedValue = checked ? \"1\" : \"0\";\r\n\r\n // Whether the user wants to pass on a checked item or an unchecked item.\r\n // var passValue = checklistItem.ItemOptions.find(function(x){x.OptionState === \"pass\"} ).OptionValue;\r\n var passValue = \"\";\r\n\r\n for (var i = 0; i < checklistItem.ItemOptions.length; i++) {\r\n if (checklistItem.ItemOptions[i].OptionState === g_oChecklist.g_eChecklistItemState.Pass) {\r\n passValue = checklistItem.ItemOptions[i].OptionValue;\r\n }\r\n }\r\n\r\n // Updating the property values.\r\n checklistItem.State = passValue === checkedValue\r\n ? g_oChecklist.g_eChecklistItemState.Pass\r\n : g_oChecklist.g_eChecklistItemState.Fail;\r\n\r\n checklistItem.Value = checkedValue;\r\n\r\n // Re-render component.\r\n g_oChecklist.renderChecklist(g_oChecklist.oChecklist, false, g_oChecklist.szChecklistDivId);\r\n g_oChecklist.saveChecklist();\r\n }\r\n\r\n /**\r\n * Event handler for the checklist dropdown selection changed.\r\n * @param {string} value - the new selected value\r\n * @param {checklistItem} checklistItem - the checklistItem object.\r\n */\r\n Checklist.prototype.handleDropdownSelectionChanged = function (value, checklistItem) {\r\n\r\n // Get the state of the option matching the checklist item.\r\n var valueState = g_oChecklist.g_eChecklistItemState.Fail;\r\n for (var i = 0; i < checklistItem.ItemOptions.length; i++) {\r\n if (checklistItem.ItemOptions[i].OptionValue == value) {\r\n valueState = checklistItem.ItemOptions[i].OptionState;\r\n break;\r\n\t\t\t}\r\n }\r\n\r\n // Update the checklist item value and state.\r\n checklistItem.Value = value;\r\n checklistItem.State = valueState;\r\n\r\n // Re-render component.\r\n g_oChecklist.renderChecklist(g_oChecklist.oChecklist, false, g_oChecklist.szChecklistDivId);\r\n\r\n // Save the checklist.\r\n g_oChecklist.saveChecklist();\r\n }\r\n\r\n /**\r\n * Checklist tab control change handler.\r\n * @param {boolean} showChecklistTab - If the tab should be shown or hidden.\r\n */\r\n Checklist.prototype.changeChecklistTab = function (showChecklistTab) {\r\n\r\n // Determine if we are showing the checklist tab.\r\n if (showChecklistTab) {\r\n\r\n // Set the active tab.\r\n $(\"#divChecklistTab_Separations\").removeClass(\"divChecklistTab--active\").addClass(\"divChecklistTab--inactive\");\r\n $(\"#divChecklistTab_Checklist\").removeClass(\"divChecklistTab--inactive\").addClass(\"divChecklistTab--active\");\r\n\r\n // Hide the separations header and content.\r\n $(\"#divSeparationItems_Header\").hide();\r\n $(\"#divSeparationItems\").hide();\r\n\r\n // Show the checklist content.\r\n $(\"#divChecklist\").show();\r\n }\r\n // If we are showing the separations tab.\r\n else {\r\n\r\n // Set the active tab.\r\n $(\"#divChecklistTab_Checklist\").removeClass(\"divChecklistTab--active\").addClass(\"divChecklistTab--inactive\");\r\n $(\"#divChecklistTab_Separations\").removeClass(\"divChecklistTab--inactive\").addClass(\"divChecklistTab--active\");\r\n\r\n // Hide the checklist content.\r\n $(\"#divChecklist\").hide();\r\n\r\n // Show the separations header and content.\r\n $(\"#divSeparationItems_Header\").show();\r\n $(\"#divSeparationItems\").show();\r\n }\r\n }\r\n\r\n /**\r\n * Hides the TabControl element.\r\n */\r\n Checklist.prototype.hideChecklistTabs = function () {\r\n\r\n // Hides the tab control element.\r\n $('#divChecklistTabs').hide();\r\n }\r\n\r\n /**\r\n * Shows the TabControl element.\r\n */\r\n Checklist.prototype.showChecklistTabs = function () {\r\n\r\n // Shows the tab control element.\r\n $('#divChecklistTabs').show();\r\n }\r\n\r\n /**\r\n * Makes the checklist tab visible to the user.\r\n */\r\n Checklist.prototype.makeChecklistTabVisible = function () {\r\n\r\n // Change the user to their checklist.\r\n g_oChecklist.changeChecklistTab(true);\r\n\r\n // If the right slide out is not shown, open the slideout.\r\n if (g_oSettings.g_oUserSettings.RightMenuCollapse == true) {\r\n slideDiv($(\"#divSepContainer\"), false, true);\r\n }\r\n\t}\r\n\r\n window.Checklist = Checklist;\r\n}());"]}