{"version":3,"file":"../Truckcom.min.js","sources":["Truckcom.js"],"sourcesContent":["var RequestingGrid;\r\nvar RequestingGridLegacyName;\r\nvar RequestingGridIndex;\r\nvar ShiftKeyDown = false;\r\nvar CtrlKeyDown = false;\r\n\r\n$(function () {\r\n var themeSelected;\r\n\r\n if (localStorage) {\r\n if (localStorage.getItem(\"Theme\") !== null) {\r\n\r\n themeSelected = localStorage.getItem(\"Theme\");\r\n\r\n // Handle old local store variable saved as boolean\r\n if (themeSelected === \"false\") {\r\n themeSelected = \"Light\";\r\n }\r\n else if (themeSelected === \"true\") {\r\n themeSelected = \"Dark\";\r\n }\r\n\r\n if (themeSelected !== 'Light') {\r\n ToggleTheme(themeSelected);\r\n }\r\n\r\n }\r\n\r\n var highContrast = localStorage.getItem(\"HighContrast\") === \"true\";\r\n\r\n ToggleHighContrastTheme(highContrast);\r\n $(\"#ContrastCheckbox\").dxCheckBox({ value: highContrast });\r\n\r\n var compactMode = localStorage.getItem(\"CompactMode\") === \"true\";\r\n\r\n ToggleCompactTheme(compactMode);\r\n $(\"#CompactCheckbox\").dxCheckBox({ value: compactMode });\r\n\r\n var autoRefresh = localStorage.getItem(\"AutoRefreshOff\") === \"true\";\r\n\r\n ToggleAutoRefresh(autoRefresh);\r\n $(\"#AutoRefreshCheckbox\").dxCheckBox({ value: !autoRefresh });\r\n }\r\n\r\n $(\".Truckcom_Navbar_Dropdown, .Truckcom_Navbar_Notifications li\").on(\"mouseenter\", function () {\r\n $(this).addClass(\"Truckcom_Navbar_Dropdown_Active\");\r\n });\r\n\r\n $(\".Truckcom_Navbar_Dropdown, .Truckcom_Navbar_Notifications li\").on(\"mouseleave\", function () {\r\n var item = $(this);\r\n setTimeout(function () {\r\n item.removeClass(\"Truckcom_Navbar_Dropdown_Active\");\r\n }, 500);\r\n });\r\n});\r\n\r\nfunction ToggleTheme(theme) {\r\n var darkThemePath = '/Content/CSS/dx-Truckcom-Theme-Dark.css';\r\n var lightThemePath = '/Content/CSS/dx-Truckcom-Theme-Light.css';\r\n\r\n var darkThemeClass = 'Truckcom-Dark';\r\n var lightThemeClass = 'Truckcom-Light';\r\n\r\n if (theme === 'Dark') {\r\n $('#theme_css').attr('href', darkThemePath);\r\n $('body').removeClass(lightThemeClass);\r\n $('body').addClass(darkThemeClass);\r\n }\r\n else if (theme === 'Light') {\r\n $('#theme_css').attr('href', lightThemePath);\r\n $('body').removeClass(darkThemeClass);\r\n $('body').addClass(lightThemeClass);\r\n }\r\n\r\n localStorage.setItem(\"Theme\", theme);\r\n}\r\n\r\nfunction ToggleHighContrastTheme(highContrastOn) {\r\n var highContrastThemeClass = 'Truckcom-HiContrast';\r\n\r\n if (highContrastOn) {\r\n $('body').addClass(highContrastThemeClass);\r\n } else {\r\n $('body').removeClass(highContrastThemeClass);\r\n }\r\n\r\n localStorage.setItem(\"HighContrast\", highContrastOn);\r\n}\r\n\r\nfunction ToggleCompactTheme(compactModeOn) {\r\n var compactThemeClass = 'Truckcom-Compact';\r\n\r\n if (compactModeOn) {\r\n $('body').addClass(compactThemeClass);\r\n } else {\r\n $('body').removeClass(compactThemeClass);\r\n }\r\n\r\n localStorage.setItem(\"CompactMode\", compactModeOn);\r\n}\r\n\r\nfunction ToggleAutoRefresh(autoRefresh) {\r\n localStorage.setItem(\"AutoRefreshOff\", autoRefresh);\r\n}\r\n\r\n/* Popup Functions */\r\nfunction CloseEditFormPopup() {\r\n ClosePopup(\"EditFormPopup\");\r\n}\r\n\r\nfunction CloseViewPopup() {\r\n ClosePopup(\"ViewPopup\");\r\n}\r\n\r\nfunction CloseBasePopup() {\r\n ClosePopup(\"BasePopup\");\r\n}\r\n\r\nfunction CloseAdvancedSearchPopup() {\r\n FormTitle = \"\";\r\n RequestingGrid = \"JobsGrid\";\r\n ActiveDataGrid = \"JobsGrid\";\r\n ClosePopup(\"AdvancedSearchPopup\");\r\n}\r\n\r\nfunction CloseEmailPopup() {\r\n ClosePopup(\"EmailPopup\");\r\n}\r\n\r\nfunction CloseAddNewPopup() {\r\n ClosePopup(\"AddNewPopup\");\r\n}\r\n\r\nfunction CloseJobDetailsPopup() {\r\n ClosePopup(\"JobDetailsPopup\");\r\n}\r\n\r\nfunction CloseDrillDownPopup() {\r\n ClosePopup(\"DrilldownPopup\");\r\n}\r\n\r\nfunction CloseManageViewsPopup() {\r\n ClosePopup(\"ManageViewsPopup\");\r\n $(\"#\" + ManageViews_PreviousGridId).dxDataGrid(\"instance\").refresh();\r\n}\r\n\r\nfunction ClosePopup(popupId) {\r\n if ($(\"#\" + popupId).children().length > 0) {\r\n $(\"#\" + popupId).dxPopup(\"dispose\");\r\n }\r\n}\r\n\r\nfunction CloseAndRemovePopup(popupId) {\r\n if ($(\"#\" + popupId).children().length > 0) {\r\n $(\"#\" + popupId).dxPopup(\"dispose\");\r\n $(\"#\" + popupId).remove();\r\n }\r\n}\r\n\r\nfunction PasswordChangeCallback(values, userId, isNewUser) {\r\n var newPassword = values[0];\r\n\r\n $(\"#SaveIndicator\").dxLoadPanel(\"instance\").option(\"visible\", true);\r\n \r\n var PasswordData = {\r\n Password: newPassword,\r\n UserId: userId\r\n };\r\n\r\n $.ajax({\r\n type: \"POST\",\r\n data: JSON.stringify(PasswordData),\r\n dataType: 'json',\r\n contentType: 'application/json; charset=utf-8',\r\n url: \"/api/AFUtils/ChangePassword\",\r\n success: function (data) {\r\n },\r\n error: function (data) {\r\n if (data.status !== 300) {\r\n if (!isNewUser) {\r\n ShowSuccessToast(\"Password successfully changed\");\r\n }\r\n $(\"#PopupContainer\").dxPopup(\"hide\");\r\n $(\"#SaveIndicator\").dxLoadPanel(\"instance\").option(\"visible\", false);\r\n } else {\r\n ShowWarningPopup(\"New password must be different from the current password\", \"Password not set\", true, true); \r\n $(\"#SaveIndicator\").dxLoadPanel(\"instance\").option(\"visible\", false);\r\n }\r\n }\r\n }); \r\n}\r\n\r\nfunction OpenChangePasswordPopup(passwordComplexityRequired, userId, isNewUser) {\r\n var passwordComplexityValidationRules = [];\r\n\r\n if (passwordComplexityRequired) {\r\n passwordComplexityValidationRules = [{\r\n type: \"pattern\",\r\n pattern: \"^(?=.*[A-Z])\",\r\n message: \"Password must contain at least 1 uppercase character\"\r\n }, {\r\n type: \"pattern\",\r\n pattern: \"^(?=.*[a-z])\",\r\n message: \"Password must contain at least 1 lowercase character\"\r\n }, {\r\n type: \"pattern\",\r\n pattern: \"[^A-Za-z0-9]\",\r\n message: \"Password must contain at least 1 special character\"\r\n }, {\r\n type: \"pattern\",\r\n pattern: \"^(?=.*[0-9])\",\r\n message: \"Password must contain at least 1 number\"\r\n }, {\r\n type: \"pattern\",\r\n pattern: \"^(?=.{8,})\",\r\n message: \"Password must be at least 8 characters long\"\r\n }];\r\n }\r\n\r\n GenericPrompt(\"Please enter new password\", [\"Enter Password*~\", \"Confirm Password#EnterPassword\"], PasswordChangeCallback, passwordComplexityValidationRules, userId, isNewUser);\r\n}\r\n\r\nfunction OpenViewPopup(popupUrl, popupTitle) {\r\n OpenTcvPopup(popupUrl, popupTitle);\r\n}\r\n\r\nfunction OpenBasePopup(popupUrl, popupTitle) {\r\n OpenTcvPopup(popupUrl, popupTitle);\r\n}\r\n\r\nfunction OpenEditPopup(popupUrl, popupTitle) {\r\n OpenTcvPopup(popupUrl, popupTitle);\r\n}\r\n\r\nfunction OpenTcvPopup(popupUrl, popupTitle) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: popupUrl,\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response) {\r\n },\r\n failure: function (response) {\r\n alert(response.responseText);\r\n },\r\n error: function (response) {\r\n SetupPopup(\"\", \"\", \"\", response.responseText, popupTitle);\r\n }\r\n });\r\n}\r\n\r\nfunction GenericPrompt(header, fields, callback, additionalValidationRules, extraCallbackParam, extraCallbackParam2) {\r\n $(\"#PopupContainer\").dxPopup({\r\n title: header,\r\n visible: true,\r\n width: 400,\r\n height: 165,\r\n contentTemplate: function (contentElement) {\r\n var cleanedFieldNames = [];\r\n $.each(fields, function (index, field) {\r\n var textBoxMode = \"text\";\r\n\r\n if (field.toLowerCase().indexOf(\"password\") > -1) {\r\n textBoxMode = \"password\";\r\n }\r\n \r\n var validationRules = [];\r\n\r\n if (field.indexOf(\"*\") > -1) {\r\n // Fields that end with * have a required validator added\r\n field = field.replace(\"*\", \"\");\r\n var requiredFieldText = field.substring(0, field.indexOf(\"*\"));\r\n validationRules.push({\r\n type: \"required\",\r\n message: requiredFieldText + \" is required\"\r\n })\r\n }\r\n\r\n if (field.indexOf(\"#\") > -1) {\r\n // Fields that include # have a comparison validator added - value must match that in the field that is after the # \r\n var matchField = field.substring(field.indexOf(\"#\") + 1);\r\n field = field.substring(0, field.indexOf(\"#\"));\r\n\r\n validationRules.push({\r\n type: \"compare\",\r\n comparisonTarget: function () {\r\n var compareToTextBox = $(\"#\" + matchField).dxTextBox(\"instance\");\r\n if (compareToTextBox) {\r\n return compareToTextBox.option(\"value\");\r\n }\r\n },\r\n message: \"Values do not match\"\r\n });\r\n }\r\n\r\n if (field.indexOf(\"~\") > -1 && additionalValidationRules != undefined) {\r\n // Field includes the ~ indicating to include the additional validation rules for this field (i.e password complexity) \r\n field = field.substring(0, field.indexOf(\"~\"));\r\n\r\n $.each(additionalValidationRules, function (i, additionalValidationRule) {\r\n validationRules.push(additionalValidationRule);\r\n });\r\n }\r\n\r\n cleanedFieldNames.push(field);\r\n\r\n contentElement.append($(\"
\")\r\n .append($(\"