{"version":3,"sources":["components/Roles/PosRoleEdit.module.css","components/AdminGrid/AdminGrid.module.css","Common/PasswordBox.module.css","components/Menu/MenuLayouts/MenuLayoutEdit.module.css","config.js","Common/UserException.js","Common/NotFoundException.js","Common/api.js","Common/getJsonFromApi.js","Common/paginationHelper.js","redux/reportSlice.js","components/FilterButton.js","components/SelectFilter.js","components/FiltersPanel.js","components/SelectSortOrder.js","components/SortPanel.js","Common/reportTypes.js","components/Row.js","components/Grid.js","Common/getCurrentDate.js","components/ReportPage.js","components/GridReport.js","components/Report.js","components/ReportToolbar.js","Common/getMetadata.js","ReportContainer.js","components/FrameTopNav.js","components/LeftNavLink.js","components/LeftNavSubmenuItem.js","components/LeftNavSubmenuItemGroup.js","components/LeftNavMenuItem.js","components/LeftNavMenu.js","Common/LeftNavService.js","components/FrameLeftNav.js","components/FramePageContainer.js","components/FramePageContentWrapper.js","components/ErrorBoundary.js","redux/notificationSlice.js","components/Alert.js","components/Frame.js","components/PollingResults.js","components/AdminGrid/CustomBooleanFilterCells.js","components/AdminGrid/AdminGridKendo.js","components/AdminGrid/AdminGrid.js","components/Menu/MenuLayouts/DeleteMenuLayoutDialog.js","components/Menu/MenuLayouts/MenuLayoutList.js","Common/actions.js","components/Menu/MenuLayouts/CancelMenuLayoutDialog.js","components/Menu/MenuLayouts/AssignMenuLayout.js","components/Menu/MenuLayouts/TabTitle.js","components/Menu/MenuLayouts/ButtonGrid.js","components/Menu/MenuLayouts/AddMenuItemDialog.js","components/Menu/MenuLayouts/MenuLayoutEdit.js","components/Login/LoginFrame.js","redux/loginRedirectSlice.js","components/Login/LoginForm.js","components/Login/ClientSelect.js","components/Login/Callback.js","components/Login/Redirect.js","components/Login/Login.js","components/Roles/DeletePosRoleDialog.js","components/Roles/PosRolesList.js","components/Roles/CancelPosRoleDialog.js","components/Roles/PosRoleEdit.js","components/Confirm.js","components/Users/AdminUserList.js","components/Users/ArchivePosUserDialog.js","components/Users/PosUserList.js","components/Customers/CustomerSearchPopup.js","components/Users/AdminUserEdit.js","Common/PasswordBox.js","components/Users/PosUserEdit.js","components/Users/ArchivedPosUserList.js","components/Users/ArchivedAdminUserList.js","components/App.js","store.js","index.js","components/Users/PosUserEdit.module.css","components/Users/AdminUserEdit.module.css"],"names":["module","exports","config","_objectSpread","loginRoot","basename","adminApiOrigin","adminPortalWebsiteOrigin","UserException","message","this","type","defaultErrorMessage","NotFoundException","send","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","path","method","body","errorMessage","url","options","response","json","unauthorized","error","errorJson","title","_errorJson","_title","_errorJson2","_path","promise","wrap","_context","prev","next","concat","mode","credentials","headers","JSON","stringify","undefined","fetch","sent","status","t0","t1","data","ok","t2","encodeURIComponent","document","location","pathname","window","assign","Promise","resolve","reject","abrupt","stop","_x","_x2","_x3","_x4","apply","arguments","get","errMsg","post","put","patch","deleteUrl","getJsonFromApi","getPagination","pageSize","result","pageNumber","getPageNumber","i","page","slice","push","Math","ceil","length","reportSlice","createSlice","name","initialState","pages","metadata","filters","filterSettings","sortSettings","reducers","setData","state","payload","setMetadata","action","setFilterSettings","value","setSortSettings","_reportSlice$actions","actions","setSchools","selectData","report","selectPages","selectMetadata","FilterButton","props","dispatch","useDispatch","useSelector","sortOrderParameter","map","so","_jsx","className","onClick","queryString","Object","keys","k","values","forEach","v","join","filterUrl","then","children","label","SelectFilter","_useState","useState","_useState2","_slicedToArray","optionsDataSource","optionValueProperty","optionLabelProperty","isMulti","optionsToUse","useEffect","fetchData","optionsFromServer","_jsxs","htmlFor","Select","onChange","selectedOptions","o","inputId","closeMenuOnSelect","FilterPanel","filterMarkup","filter","index","React","Fragment","sortByIndex","list","Array","from","sort","a","b","moveByIndex","source","destination","sourceClone","destClone","_sourceClone$splice","splice","removed","target","moveByIndexPosition","index2","_sourceClone$splice3","changeIndex","temp","allowDrop","ev","preventDefault","drag","dataTransfer","id","SelectSortOrder","selectedList","items","setItems","_useState3","_useState4","selected","setSelected","drop","elementId","getData","element","getElementById","dataset","parentId","draggable","moveItemToBotton","drop2","tagetParentId","moveItemToItem","changePosition","orderedItems","selectedItems","unselected","onDrop","onDragOver","item","onDragStart","content","SortPanel","sortOrder","itm","e","sortOrderItems","reportTypes","GRID","CUSTOM","Row","columns","c","idx","field","dateformat","moment","isValid","format","boolArr","split","Grid","d","Date","ReportPage","totalPages","version","header","currentDate","getCurrentDate","currentDateFormatted","src","alt","GridReport","Report","printReportClick","print","ReportToolbar","exportData","href","role","CSVLink","filename","getMetadata","reportId","ReportContainer","useParams","scrollTo","meta","markup","rel","dataSource","FrameTopNav","sessionStorage","getItem","username","setUsername","manageProfileUrl","setManageProfileUrl","_useState5","_useState6","isIDSuser","setIsIDSUser","_useState7","_useState8","clientId","setClientId","_useState9","_useState10","clientName","setClientName","mounted","setItem","isIDSUser","style","marginTop","LeftNavLink","insideRouter","subitems","isServerSideLink","to","Link","LeftNavSubmenuItem","LeftNavSubmenuItemGroup","el","el2","LeftNavMenuItem","open","setOpen","isActive","isSubitem","idx2","childless","withChildren","onMouseEnter","onMouseLeave","LeftNavMenu","submenuName","reportGroup","adminPortalReportGroup","iconClass","pathMap","menu","submenu","getMenuNameByPath","adminPortalLeftNav","lowerPath","toLowerCase","replace","mappedItem","find","menuName","partialResult","subitem","lowerTo","FrameLeftNav","leftNav","setLeftNav","setError","initLayout","adminPortalMenu","adminPortalSubMenu","setMenu","setSubmenu","initLeftNav","leftNavObject","checkSelectedMenuAndSubmenu","Layout","handleFixedSidebar","init","setMenuByPath","setSubmenuByPath","sessionLeftNav","parse","toString","leftNavMarkup","key","dangerouslySetInnerHTML","__html","placeholder","onKeyDown","displayInfoMessage","display","height","defaultValue","FramePageContainer","FramePageContentWrapper","minHeight","ErrorBoundary","_React$Component","_inherits","_super","_createSuper","_this","_classCallCheck","call","hasError","_createClass","console","backgroundColor","Component","notificationSlice","setCurrentPageNotification","_action$payload","expiration","getTime","setNextPageNotification","_action$payload2","nextPageMessage","nextPageMessageType","_notificationSlice$ac","selectNotification","notification","success","warning","getNotificationForError","errorObject","friendlyErrorMessage","Alert","tick","setTick","history","useHistory","displayNextPageNotification","setTimeout","expirationTime","isExpired","showMessage","alertClass","nextMessage","nextType","Frame","setVersion","getFullYear","tabIndex","width","textAlign","xmlns","viewBox","marginLeft","marginRight","marginBottom","borderTop","PollingResults","Switch","Route","Results","makeBooleanFilterCellComponent","allText","trueText","falseText","booleanValues","operator","text","defaultItem","isDefaultSelected","DropDownList","textField","dataItemKey","event","syntheticEvent","popupSettings","Button","disabled","icon","IsActiveFilterCell","IsAdultFilterCell","AdminGridKendo","skip","take","setPage","sortable","sortChange","filterChange","filterOperators","isFilterable","filteredData","filterBy","pageData","headerColumnChecked","checkboxColumn","checkBoxColumns","columnTypes","checkbox","total","pageable","pageSizes","onPageChange","onSortChange","filterable","onFilterChange","column","Column","cell","dataItem","actionKey","styles","actionButton","headerCell","checked","ariaLabelForHeaderCheckbox","_props$dataItem$c$fie","ariaLabel","ariaLabelledByField","boolean","filterCell","radioButton","_props$dataItem$c$fie2","getColumn","direction","ASC","DESC","AdminGrid","DeleteMenuLayoutDialog","assignedPosTerminalsCount","menuLayout","onDelete","onCancel","Dialog","closeIcon","margin","DialogActionsBar","MenuLayoutList","menuLayouts","setMenuLayouts","availableActions","setavailableActions","isDeleteDialogDialogVisible","setIsDeleteDialogDialogVisible","setAssignedPosTerminalsCount","selectedLayoutToDelete","setSelectedLayoutToDelete","view","create","update","delete","void","allow","activate","_useState11","dir","_useState12","setSort","canEdit","canCreate","canDelete","getActionsForLayout","layout","myActions","editAction","assignAction","deleteAction","canManuLayoutDelete","listData","orderBy","all","catch","layouts","posTerminalsCount","_ref2","_callee2","_context2","_ref3","_callee3","menuLayoutsFiltered","_context3","m","successNotificationType","allowUnsort","CancelMenuLayoutDialog","onOk","AssignMenuLayout","parseInt","setTitle","isSaveEnabled","setIsSaveEnabled","posTerminals","setPosTerminals","isDirty","setIsDirty","filterAvailableGrid","setFilterAvailableGrid","filterAssignedGrid","setFilterAssignedGrid","_useState13","_useState14","isCancelDialogVisible","setIsCancelDialogVisible","_useState15","_useState16","_useState17","_useState18","assignedSort","setAssignedSort","gridType","searchChange","grid","newFilter","logic","unshift","pop","posIndex","findIndex","_","schoolNameIndex","districtIndex","layoutIndex","sortTerminals","smartTrim","obj","trim","terminals","mappedTerminals","t","schoolName","districtName","menuLayoutTitle","selectedAvailable","selectedAssigned","columnsAvailableGrid","currentPage","newPosTerminals","isOnCurrentPage","columnsAssignedGrid","getActionsForAvailableTerminal","terminal","newTerminals","originalMenuLayoutId","menuLayoutId","originalMenuLayoutTitle","addTerminal","onChangeSelectedAvailable","onChangeSelectedAssigned","availableTerminals","getActionsForAssignedTerminal","removeTerminal","assignedTerminals","handleSelectMenuItem","callback","saveAssignments","_ref4","assignments","navigateToMenuLayoutList","reloadData","posId","redirectToMenuLayoutList","Menu","openOnClick","onSelect","padding","MenuItem","render","some","nt","class","tabindex","errorNotificationType","buttonContainer","TabTitle","count","addTab","removeTab","setTabName","isFocus","inputEl","useRef","current","focus","stopPropagation","textBoxTabTitleSizer","ref","textBoxTabTitle","maxLength","ButtonGrid","buttons","onEdit","sortedButtons","valueA","rowIndex","columnIndex","valueB","row","rows","currentRowIndex","_loop","button","rowSpan","colSpan","columnSpan","overflow","minWidth","color","cursor","itemName","categoryName","buttonIndex","dropEffect","buttonItemName","buttonCaption","buttonCategoryName","AddMenuItemDialog","onAdd","menuItems","setMenuItems","searchTerm","setSearchTerm","selectedItem","setSelectedItem","getSortIcon","show","toggleSort","newDirection","dialogTitle","onClose","search","searchIcon","searchInput","searchResults","term","toLocaleLowerCase","category","isDeleted","includes","localeCompare","onClickItem","dot","MenuLayoutEdit","titleInputRef","isNewLayout","hasTitleValidationError","setHasTitleValidationError","_React$useState","_React$useState2","isMenuLayoutCancelDialogVisible","setIsMenuLayoutCancelDialogVisible","menuLayoutTypes","setMenuLayoutTypes","blankButtons","getMenuLayoutTypes","menuLayoutTypesData","mlt","description","template","savedLayout","menuLayoutTypesList","currentLayout","dto","nextTab","tabs","menuLayoutTypeId","menuItem","getLayoutFromDto","setInitialLayout","setLayout","_React$useState3","_React$useState4","initialLayout","_React$useState5","_React$useState6","isMenuItemDialogVisible","setIsMenuItemDialogVisible","buttonBeingEdited","setButtonBeingEdited","focusedTabIndex","setFocusedTabIndex","replaceButton","buttonValue","newLayout","oldTab","newButtons","oldButton","newButton","menuItemId","makeNewTab","deleteButton","_toConsumableArray","newSelected","doSaveValidation","saveLayout","getButtons","layoutDto","onDropDownListChange","selectedOption","mergedButtons","templateButtons","assignedButtons","tb","getMergedButtons","validationMessage","placehoder","textBoxTitle","validationError","truncatedTitle","substring","TabStrip","TabStripTab","tab","openDialog","targetButtonIndex","targetButton","currentTab","sourceButtonIndex","sourceButton","LoginFrame","xmlnsXlink","x","y","enableBackground","xmlSpace","xlinkHref","loginRedirectSlice","setLoginRedirect","selectLoginRedirect","loginRedirect","LoginForm","setErrorMessage","setValidationMessage","password","setPassword","email","setEmail","confirmEmail","setConfirmEmail","users","setUsers","adminUserCustomerId","setAdminUserCustomerId","_useState19","_useState20","usernameValidationMessage","setUsernameValidationMessage","_useState21","_useState22","passwordValidationMessage","setPasswordValidationMessage","_useState23","_useState24","emailValidationMessage","setEmailValidationMessage","_useState25","_useState26","confirmEmailValidationMessage","setConfirmEmailValidationMessage","_useState27","_useState28","formHistory","setFormHistory","_useState29","_useState30","loading","setLoading","_useState31","_useState32","step","setStep","useLocation","queryParams","URLSearchParams","returnUrl","cookie","lowLevelPost","clearAllMessages","handleError","errors","goToStep","nextStep","prevStep","newHistory","goBack","max","submitInitialForm","idsLoginUrl","login","onClickSubmit","_callee4","_context4","errorMessageClass","usernameClass","passwordClass","clientClass","clientOptions","u","clientSelectStyles","zIndex","paddingLeft","singleValue","selectClient","option","_option$value$split$m","Number","_option$value$split$m2","newClientId","newAdminUserCustomerId","emailClass","initialForm","onSubmit","backButton","loginForm","selectClientForm","confirmEmailClass","emailForm","form","validationSummaryClass","ClientSelect","setClientOptions","loginToClient","r","selectedClientId","removeItem","startsWith","Callback","_document$cookie$spli","code","error_description","decodeURIComponent","selectClientUrl","identity","authenticated","isAllowedRedirect","isAdminApiUrl","isAdminPortalWebsiteUrl","Redirect","_useSelector","Login","exact","DeletePosRoleDialog","assignedUsersCount","posRole","PosRolesList","posRoles","setPosRoles","assignedUserCount","setAssignedUserCount","selectedRoleToDelete","setSelectedRoleToDelete","getActionsForRole","canDeletePosRole","roles","userCount","posRolesFiltered","CancelPosRoleDialog","PosRoleEdit","_role$name","nameInputRef","isNewRole","hasNameValidationError","setHasNameValidationError","isPosRoleCancelDialogVisible","setIsPosRoleCancelDialogVisible","redirectToPosRoleList","savedRole","setInitialRole","setRole","initialRole","saveRole","getModulePermissions","roleDto","modulePermissions","dummyOnChange","pos","mp","orders","posModuleRow","moduleName","canView","toggleCanView","toggleCanEdit","toggleCanDelete","canInsert","toggleCanInsert","sortedModules","moduleList","modulePermission","updateModulePermission","oldModulePermissions","newModulePermissions","newRole","textBoxName","truncatedName","setName","tg","Confirm","okDisplay","cancelDisplay","isVisible","_Fragment","AdminUserList","adminUserList","setAdminUserList","setFilter","isConfirmVisible","setIsConfirmVisible","confirmDescription","setConfirmDescription","selectedUser","setSelectedUser","isActiveSort","setIsActiveSort","_fetchData","_actions","resendInvitation","user","successMessage","getActionsForUser","showConfirmDialog","resendAction","getArchiveDescription","confirmDialogOnOk","refreshAdminUserList","getArchiveConfirmationMessage","getUserDescription","userName","emailParentesis","userList","lastIndex","currentField","ArchivePosUserDialog","posUser","fontSize","PosUserList","posUserList","setPosUserList","setAvailableActions","selectedPosUserToArchive","setSelectedPosUserToArchive","isArchiveDialogVisible","setIsArchiveDialogVisible","getActionsForPOSUser","canPOSUserArchive","posUsersFiltered","CustomerSearchPopup","_props$selectedCustom","selectedCustomerIds","toggleDialog","customerSelectionCallback","_props$isMultiSelecti","isMultiSelectionEnabled","customers","setCustomers","selectionColumnType","isAdultSort","setIsAdultSort","onCustomerSelectionChange","selectedCustId","selectedCustomer","newCustomers","cust","isAdult","isStudent","indexOf","_c$grade","_c$homeroom","_c$school","grade","homeroom","school","anchorElement","position","selectedCustomers","AdminUserEdit","readOnlyEmail","setReadonlyEmail","customer","setCustomer","adminRoles","setAdminRoles","visible","setVisible","hasFormErrors","setHasFormErrors","customerValidationMessage","setCustomerValidationMessage","roleValidationMessage","setRoleValidationMessage","errorFlashClassName","setErrorFlashClassName","errorBorderFlashClassName","setErrorBorderFlashClassName","selectedAdminRole","setSelectedAdminRole","firstTimeValidation","isValidEmail","_options","savedUser","customerId","identityServiceUsername","adminRoleId","updateUser","Id","userRoleId","resetErrors","flashErrors","saveUser","validateForm","flash_error_msg","flash_error_border","lastName","firstName","middle","Input","readOnly","Error","newSelectedRole","PasswordBox","_props$dataTestId","dataTestId","passwordType","setPasswordType","localPassword","setLocalPassword","passwordBox","valid","newPassword","PosUserEdit","isEdit","isNaN","loginName","setLoginName","confirmPassword","setConfirmPassword","selectedRole","setSelectedRole","confirmPasswordValidationMessage","setConfirmPasswordValidationMessage","isChangePasswordChecked","setIsChangePasswordChecked","arePasswordFieldsDisabled","loadData","allTasks","results","_yield$loadData","_yield$loadData2","rolesData","userData","posRoleId","onSave","not_allowed","required","ArchivedPosUserList","unarchiveUser","originalList","ArchivedAdminUserList","restoreAction","App","Router","makeStore","configureStore","reducer","reportReducer","notificationReducer","loginRedirectReducer","VancoFoodAdmin","Api","ReactDOM","doNotRenderReactApp","StrictMode","Provider","store"],"mappings":"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","file":"static/js/main.512ca5e1.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"success\":\"PosRoleEdit_success__35dS2\",\"buttonContainer\":\"PosRoleEdit_buttonContainer__3xJ13\",\"textBoxName\":\"PosRoleEdit_textBoxName__2XGCr\",\"validationError\":\"PosRoleEdit_validationError__2-Opg\",\"validationMessage\":\"PosRoleEdit_validationMessage__3AQ5q\",\"tg\":\"PosRoleEdit_tg__2Xz59\",\"tg-c3ow\":\"PosRoleEdit_tg-c3ow__1eVyF\",\"tg-fymr\":\"PosRoleEdit_tg-fymr__2aXkk\",\"tg-7btt\":\"PosRoleEdit_tg-7btt__2YmAU\",\"tg-0pky\":\"PosRoleEdit_tg-0pky__2G2B7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"actionButton\":\"AdminGrid_actionButton__2wscA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"passwordBox\":\"PasswordBox_passwordBox__1Dxim\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"success\":\"MenuLayoutEdit_success__OOhgT\",\"buttonContainer\":\"MenuLayoutEdit_buttonContainer__3UN7I\",\"textBoxTitle\":\"MenuLayoutEdit_textBoxTitle__102B4\",\"textBoxTabTitleSizer\":\"MenuLayoutEdit_textBoxTabTitleSizer__3BeR2\",\"textBoxTabTitle\":\"MenuLayoutEdit_textBoxTabTitle__za3Vb\",\"searchIcon\":\"MenuLayoutEdit_searchIcon__1_sfP\",\"searchInput\":\"MenuLayoutEdit_searchInput__3KeN9\",\"searchResults\":\"MenuLayoutEdit_searchResults__2KMDk\",\"dialogTitle\":\"MenuLayoutEdit_dialogTitle__3yQw4\",\"selectedItem\":\"MenuLayoutEdit_selectedItem__3NEBE\",\"validationError\":\"MenuLayoutEdit_validationError__3uOzx\",\"validationMessage\":\"MenuLayoutEdit_validationMessage__21LAt\",\"dot\":\"MenuLayoutEdit_dot__1LFg9\",\"buttonItemName\":\"MenuLayoutEdit_buttonItemName__1CFHi\",\"buttonCategoryName\":\"MenuLayoutEdit_buttonCategoryName__3dx71\"};","const local = {\r\n adminApiOrigin: \"http://localhost:53490\",\r\n adminPortalWebsiteOrigin: \"http://localhost:19103\",\r\n};\r\n\r\nconst dev = {\r\n adminApiOrigin: \"https://adminapi-dev.myschoolaccount.com\",\r\n adminPortalWebsiteOrigin: \"https://adminhq-dev.myschoolaccount.com\",\r\n};\r\n\r\nconst devDocker = {\r\n adminApiOrigin: \"https://adminapidocker-dev.myschoolaccount.com\",\r\n adminPortalWebsiteOrigin: \"https://adminhqdocker-dev.myschoolaccount.com\",\r\n};\r\n\r\nconst test = {\r\n adminApiOrigin: \"https://adminapi-test.myschoolaccount.com\",\r\n adminPortalWebsiteOrigin: \"https://adminhq-test.myschoolaccount.com\",\r\n};\r\n\r\nconst stage = {\r\n adminApiOrigin: \"https://adminapi-stage.myschoolaccount.com\",\r\n adminPortalWebsiteOrigin: \"https://adminhq-stage.myschoolaccount.com\",\r\n};\r\n\r\nconst prod = {\r\n adminApiOrigin: \"https://adminapi.myschoolaccount.com\",\r\n adminPortalWebsiteOrigin: \"https://adminhq.myschoolaccount.com\",\r\n};\r\n\r\nconst env = process.env.REACT_APP_ENV;\r\n\r\nconst config = {\r\n // Add common config here\r\n loginRoot: \"/login\",\r\n basename: \"/app\",\r\n ...(env === \"local\"\r\n ? local\r\n : env === \"dev\"\r\n ? dev\r\n : env === \"devDocker\"\r\n ? devDocker\r\n : env === \"test\"\r\n ? test\r\n : env === \"stage\"\r\n ? stage\r\n : prod),\r\n};\r\n\r\nexport default config;\r\n","export default function UserException(message) {\r\n this.message = message;\r\n this.type = \"UserException\";\r\n}\r\n\r\nexport const defaultErrorMessage =\r\n \"Something went wrong. Please try again later.\";\r\n","export default function NotFoundException(message) {\r\n this.message = message;\r\n this.type = \"NotFoundException\";\r\n}\r\n\r\nexport const defaultErrorMessage =\r\n \"Something went wrong. Please try again later.\";\r\n","import config from \"../config\";\r\nimport UserException, { defaultErrorMessage } from \"./UserException\";\r\nimport NotFoundException, {\r\n defaultErrorMessage as notFoundDefaultErrorMessage,\r\n} from \"./NotFoundException\";\r\n\r\nconst send = async (path, method, body, errorMessage) => {\r\n const url = `${config.adminApiOrigin}${path}`;\r\n const options = {\r\n method,\r\n mode: \"cors\",\r\n credentials: \"include\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: body ? JSON.stringify(body) : undefined,\r\n };\r\n const response = await fetch(url, options);\r\n let json, unauthorized, error;\r\n if (response.status === 401) {\r\n unauthorized = true;\r\n } else if (response.status === 403) {\r\n let errorJson;\r\n try {\r\n errorJson = await response.json();\r\n } catch {\r\n errorJson = {};\r\n }\r\n let title =\r\n (errorJson && errorJson.title) ||\r\n \"You do not have permission to perform that action\";\r\n error = new UserException(title);\r\n } else if (response.status == 404) {\r\n let errorJson;\r\n try {\r\n errorJson = await response.json();\r\n } catch {\r\n errorJson = {};\r\n }\r\n let title =\r\n (errorJson && errorJson.title) ||\r\n notFoundDefaultErrorMessage ||\r\n \"The resource does not exists.\";\r\n error = new NotFoundException(title);\r\n error.data = errorJson;\r\n } else if (!response.ok) {\r\n let errorJson;\r\n try {\r\n errorJson = await response.json();\r\n errorMessage =\r\n (errorJson && errorJson.title) || errorMessage || defaultErrorMessage;\r\n } catch {\r\n errorMessage = errorMessage || defaultErrorMessage;\r\n }\r\n error = new UserException(errorMessage);\r\n error.data = errorJson;\r\n } else {\r\n if (response.status !== 204) {\r\n json = await response.json();\r\n if (json && json.status === 401) {\r\n unauthorized = true;\r\n }\r\n }\r\n }\r\n\r\n if (unauthorized) {\r\n const path = `/Account/Login?returnUrl=${encodeURIComponent(\r\n document.location.pathname\r\n )}`;\r\n window.location.assign(path);\r\n }\r\n\r\n let promise;\r\n if (error) {\r\n promise = new Promise((resolve, reject) => reject(error));\r\n } else {\r\n promise = new Promise((resolve) => resolve(json));\r\n }\r\n\r\n return promise;\r\n};\r\n\r\nconst get = (url, errMsg) => send(url, \"GET\", undefined, errMsg);\r\nconst post = (url, body, errMsg) => send(url, \"POST\", body, errMsg);\r\nconst put = (url, body, errMsg) => send(url, \"PUT\", body, errMsg);\r\nconst patch = (url, body, errMsg) => send(url, \"PATCH\", body, errMsg);\r\nconst deleteUrl = (url, errMsg) => send(url, \"DELETE\", undefined, errMsg);\r\n\r\nexport { send, get, post, put, patch, deleteUrl };\r\n","import config from \"../config\";\r\nimport { send } from \"./api\";\r\n\r\nconst getJsonFromApi = (url) => {\r\n return send(url, \"GET\");\r\n};\r\n\r\nexport default getJsonFromApi;\r\n","export const getPagination = (data, pageSize) => {\r\n let result = [];\r\n let pageNumber = getPageNumber(data, pageSize);\r\n\r\n\r\n for (var i = 0; i < pageNumber; i++) {\r\n let page = data.slice(i * pageSize, i * pageSize + pageSize);\r\n result.push(page);\r\n }\r\n return result;\r\n}\r\n\r\nexport const getPageNumber = (data, pageSize) => {\r\n let pageNumber = Math.ceil(data.length / pageSize);\r\n return pageNumber;\r\n}\r\n\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { getPagination, getPageNumber } from \"../Common/paginationHelper\";\r\n\r\nconst pageSize = 12;\r\nexport const reportSlice = createSlice({\r\n name: \"report\",\r\n initialState: {\r\n data: [],\r\n pages: null,\r\n pageNumber: 0,\r\n metadata: { filters: [] },\r\n filterSettings: {},\r\n sortSettings: [],\r\n },\r\n reducers: {\r\n setData: (state = {}, action) => {\r\n const data = action.payload;\r\n state.data = data;\r\n state.pages = getPagination(data, pageSize);\r\n state.pageNumber = getPageNumber(data, pageSize);\r\n },\r\n setMetadata: (state = {}, action) => {\r\n state.metadata = action.payload;\r\n },\r\n setFilterSettings: (state = {}, action) => {\r\n state.filterSettings[action.payload.name] = action.payload.value;\r\n },\r\n setSortSettings: (state = {}, action) => {\r\n state.sortSettings = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const {\r\n setData,\r\n setMetadata,\r\n setSchools,\r\n setFilterSettings,\r\n setSortSettings,\r\n} = reportSlice.actions;\r\n\r\nexport const selectData = (state) => state.report.data;\r\nexport const selectPages = (state) => state.report.pages;\r\nexport const selectMetadata = (state) => state.report.metadata;\r\nexport const selectFilterSettings = (state) => state.report.filterSettings;\r\nexport const selectSortSettings = (state) => state.report.sortSettings;\r\n\r\nexport default reportSlice.reducer;\r\n","import { useDispatch, useSelector } from \"react-redux\";\r\nimport getJsonFromApi from \"../Common/getJsonFromApi\";\r\nimport { setData } from \"../redux/reportSlice\";\r\n\r\nfunction FilterButton(props) {\r\n const dispatch = useDispatch();\r\n const filterSettings = useSelector((state) => state.report.filterSettings);\r\n const sortSettings = useSelector((state) => state.report.sortSettings);\r\n const sortOrderParameter = sortSettings.map((so) => `sortOrder=${so}`);\r\n\r\n const onClick = () => {\r\n const queryString = Object.keys(filterSettings)\r\n .map((k) => {\r\n const values = [];\r\n filterSettings[k].forEach((v) => values.push(`${k}=${v}`));\r\n return values.join(\"&\");\r\n })\r\n .concat(sortOrderParameter)\r\n .join(\"&\");\r\n\r\n let url = props.filterUrl;\r\n if (queryString) {\r\n url += `?${queryString}`;\r\n }\r\n getJsonFromApi(url).then((data) => {\r\n dispatch(setData(data));\r\n });\r\n };\r\n return (\r\n \r\n {props.label}\r\n \r\n );\r\n}\r\n\r\nexport default FilterButton;\r\n","import Select from \"react-select\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { selectFilterData, setFilterSettings } from \"../redux/reportSlice\";\r\nimport getJsonFromApi from \"../Common/getJsonFromApi\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nexport default function SelectFilter(props) {\r\n const [data, setData] = useState();\r\n const {\r\n options,\r\n optionsDataSource,\r\n optionValueProperty,\r\n optionLabelProperty,\r\n name,\r\n label,\r\n isMulti,\r\n } = props;\r\n const dispatch = useDispatch();\r\n const onChange = (selectedOptions) => {\r\n dispatch(\r\n setFilterSettings({ name, value: selectedOptions.map((o) => o.value) })\r\n );\r\n };\r\n //const options = filterData && filterData[name] ? filterData[name] : [];\r\n const optionsToUse = optionsDataSource ? data : options;\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n const result = await getJsonFromApi(optionsDataSource);\r\n const optionsFromServer = result.map((i) => {\r\n return {\r\n value: i[optionValueProperty],\r\n label: i[optionLabelProperty],\r\n };\r\n });\r\n setData(optionsFromServer);\r\n };\r\n if (optionsDataSource) {\r\n fetchData();\r\n }\r\n }, [optionsDataSource, optionValueProperty, optionLabelProperty]);\r\n\r\n return !optionsToUse ? null : (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport {\r\n selectPages,\r\n selectMetadata,\r\n setMetadata,\r\n setSchools,\r\n} from \"../redux/reportSlice\";\r\nimport SelectFilter from \"./SelectFilter\";\r\n\r\nexport default function FilterPanel() {\r\n const metadata = useSelector(selectMetadata);\r\n const filters = metadata && metadata.filters ? metadata.filters : [];\r\n const filterMarkup = filters.map((filter, index) => {\r\n const {\r\n options,\r\n optionsDataSource,\r\n optionValueProperty,\r\n optionLabelProperty,\r\n isMulti,\r\n name,\r\n label,\r\n } = filter;\r\n return (\r\n \r\n );\r\n });\r\n return {filterMarkup};\r\n}\r\n","import React, { useState } from 'react';\r\nconst sortByIndex = (list) => {\r\n const result = Array.from(list);\r\n return result.sort((a, b) => {\r\n return a.index - b.index;\r\n });\r\n};\r\n\r\n\r\nconst moveByIndex = (source, destination, index) => {\r\n const sourceClone = Array.from(source);\r\n const destClone = Array.from(destination);\r\n const [removed] = sourceClone.splice(index, 1);\r\n destClone.push(removed);\r\n const result = {\r\n source: sourceClone,\r\n target: destClone\r\n };\r\n return result;\r\n};\r\n\r\nconst moveByIndexPosition = (source, destination, index, index2) => {\r\n const sourceClone = Array.from(source);\r\n const destClone = Array.from(destination);\r\n const [removed] = sourceClone.splice(index, 1);\r\n destClone.splice(index2, 0, removed);\r\n const result = {\r\n source: sourceClone,\r\n target: destClone\r\n };\r\n return result;\r\n};\r\n\r\nconst changeIndex = (source, index, index2) => {\r\n const result = Array.from(source);\r\n const temp = result[index];\r\n result[index] = result[index2];\r\n result[index2] = temp;\r\n return result;\r\n};\r\n\r\nfunction allowDrop(ev) {\r\n ev.preventDefault();\r\n}\r\n\r\nfunction drag(ev) {\r\n ev.dataTransfer.setData(\"elementId\", ev.target.id);\r\n}\r\n\r\nfunction SelectSortOrder({name, label, list, selectedList, onChange}) {\r\n\r\n const [items, setItems] = useState(list || []);\r\n const [selected, setSelected] = useState(selectedList || []);\r\n \r\n function drop(ev) {\r\n ev.preventDefault();\r\n var elementId = ev.dataTransfer.getData(\"elementId\");\r\n var element = document.getElementById(elementId);\r\n var index = element.dataset.index;\r\n var parentId = element.dataset.parentId;\r\n if((parentId === ev.target.id) || ev.target.draggable){\r\n return;\r\n }\r\n moveItemToBotton(index, parentId);\r\n }\r\n \r\n function drop2(ev) {\r\n ev.preventDefault();\r\n var elementId = ev.dataTransfer.getData(\"elementId\");\r\n var element = document.getElementById(elementId);\r\n var index = element.dataset.index;\r\n var parentId = element.dataset.parentId; \r\n var tagetParentId = ev.target.dataset.parentId;\r\n var index2 = ev.target.dataset.index;\r\n if(parentId === 'droppable2' && tagetParentId === 'droppable') {\r\n moveItemToBotton(index,parentId);\r\n } else if(parentId === 'droppable' && tagetParentId === 'droppable2' ) {\r\n moveItemToItem(items, selected, index, index2);\r\n } else if(parentId === 'droppable2' && tagetParentId === 'droppable2' ) {\r\n changePosition(selected, index, index2);\r\n }\r\n}\r\n\r\n const moveItemToBotton = (index, id) => {\r\n const source = id === 'droppable' ? items : selected;\r\n const target = id !== 'droppable' ? items : selected;\r\n const result = moveByIndex(source, target, index, id);\r\n const orderedItems = sortByIndex(id === 'droppable' ? result.source : result.target);\r\n const selectedItems = id !== 'droppable' ? result.source : result.target;\r\n setItems(orderedItems);\r\n setSelected(selectedItems);\r\n if(onChange){onChange({selected: selectedItems, unselected: orderedItems});}\r\n };\r\n\r\n const moveItemToItem = (source, target, index, index2) => {\r\n var result = moveByIndexPosition(source, target, index, index2);\r\n setItems(result.source);\r\n setSelected(result.target);\r\n if(onChange){onChange({selected: result.target , unselected: result.source});}\r\n };\r\n\r\n const changePosition = (list, index, index2) => {\r\n var result = changeIndex(list, index, index2);\r\n setSelected(result);\r\n if(onChange){onChange({selected: result, unselected: items});}\r\n };\r\n \r\n const onClick = (index, id) => {\r\n moveItemToBotton(index, id);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
    \r\n {items.map((item, index) => (\r\n onClick(index,'droppable')}>\r\n {item.content}\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
    \r\n {selected.map((item, index) => (\r\n onClick(index, 'droppable2')}>\r\n {item.content}\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n \r\n}\r\n\r\nexport default SelectSortOrder;\r\n\r\n\r\n","import SelectSortOrder from './SelectSortOrder';\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport {selectMetadata, setSortSettings} from \"../redux/reportSlice\";\r\nimport { useEffect } from \"react\";\r\n\r\nexport default function SortPanel() {\r\n const dispatch = useDispatch();\r\n const metadata = useSelector(selectMetadata);\r\n const sortOrder = metadata && metadata.sortOrder ? metadata.sortOrder : null;\r\n const items = sortOrder ? sortOrder.options.map(itm => {return {id: itm.value, content: itm.label, index: itm.index};}) : [];\r\n const label = sortOrder ? sortOrder.label : '';\r\n const name = sortOrder ? sortOrder.name : '';\r\n \r\n useEffect(() => {\r\n onChange({selected: [], unselected: items});\r\n }, [items]);\r\n\r\n const onChange = (e) => {\r\n var sortOrderItems = (e.selected || []).concat(e.unselected).map((item) => item.id);\r\n dispatch(setSortSettings(sortOrderItems));\r\n };\r\n\r\n if(items.length > 0) {\r\n return ();\r\n }\r\n else{\r\n return null;\r\n }\r\n}\r\n","export const reportTypes = { GRID: 1, CUSTOM: 2 };\r\nexport const fieldTypes = { Number: 1, String: 2, Boolean: 3, DateTime: 4 };\r\n","import moment from 'moment';\r\n\r\nfunction Row(props) {\r\n\r\n return (\r\n \r\n {\r\n props.metadata.columns.map((c, idx) => {\r\n\r\n let value = props.data[c.field];\r\n if (c.type === 4) {\r\n if (value) {\r\n let dateformat = new moment(value);\r\n if (dateformat.isValid()) {\r\n value = dateformat.format(c.format);\r\n } else {\r\n value = 'Invalid date';\r\n }\r\n } else {\r\n value = '';\r\n }\r\n }\r\n else if (c.type === 3) {\r\n let boolArr = c.format.split('|');\r\n value = value ? boolArr[0] : boolArr[1];\r\n }\r\n return (\r\n {value}\r\n );\r\n })\r\n }\r\n );\r\n}\r\n\r\nexport default Row;","import Row from \"./Row\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { selectMetadata } from \"../redux/reportSlice\";\r\n\r\nfunction Grid(props) {\r\n const metadata = useSelector(selectMetadata);\r\n const data = props.data;\r\n return (\r\n \r\n \r\n \r\n {metadata.columns.map((c, idx) => {\r\n return (\r\n \r\n {c.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {data !== null &&\r\n data.map((d, idx) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default Grid;\r\n","export default function () {\r\n return new Date();\r\n}\r\n","import { useSelector } from 'react-redux';\r\nimport { selectMetadata } from '../redux/reportSlice';\r\nimport getCurrentDate from '../Common/getCurrentDate';\r\nimport moment from 'moment';\r\n\r\nfunction ReportPage(props) {\r\n const { pageNumber, totalPages } = props;\r\n const metadata = useSelector(selectMetadata);\r\n const { version, header } = metadata;\r\n const title = header ? header.title : undefined;\r\n // When we build reports with a date range filter, these\r\n // will need to get set based on the filter setting\r\n const includeDate = false;\r\n const startDate = '1/1/2020';\r\n const endDate = '1/1/2020';\r\n const currentDate = getCurrentDate();\r\n const currentDateFormatted = moment(currentDate).format('dddd, MMMM DD, YYYY - h:mm A')\r\n return (\r\n
\r\n

{title}

\r\n
\r\n {props.children}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"\"\r\n
\r\n

Version: {version}
\r\n
\r\n \r\n {includeDate && `${startDate} - ${endDate}`}\r\n
\r\n
\r\n \r\n Printed on {currentDateFormatted}\r\n \r\n
\r\n

Page {pageNumber} of {totalPages}
\r\n
\r\n
\r\n
\r\n );\r\n}\r\nexport default ReportPage;","import Grid from \"./Grid\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { selectMetadata, selectPages } from \"../redux/reportSlice\";\r\nimport ReportPage from \"./ReportPage\";\r\n\r\nfunction GridReport() {\r\n const metadata = useSelector(selectMetadata);\r\n const pages = useSelector(selectPages);\r\n\r\n return (\r\n
\r\n {pages === null ? null : pages.length ? (\r\n pages.map((d, idx) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })\r\n ) : (\r\n \r\n \r\n
\r\n No records found for the selected criteria\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n}\r\nexport default GridReport;\r\n","import { reportTypes } from '../Common/reportTypes';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectMetadata } from '../redux/reportSlice';\r\nimport GridReport from './GridReport';\r\n\r\nfunction Report() {\r\n const metadata = useSelector(selectMetadata);\r\n const { type } = metadata;\r\n if (type === reportTypes.GRID) {\r\n return ();\r\n }\r\n if (type !== undefined) {\r\n return (

Report was not found

);\r\n }\r\n else {\r\n return (

Loading...

);\r\n }\r\n}\r\nexport default Report","import { useSelector } from 'react-redux';\r\nimport { selectData } from '../redux/reportSlice';\r\nimport { CSVLink } from \"react-csv\";\r\n\r\nfunction ReportToolbar() {\r\n const exportData = useSelector(selectData);\r\n if (exportData.length) {\r\n return (
\r\n \r\n \r\n
);\r\n } else return null;\r\n}\r\n\r\nfunction printReportClick(e) {\r\n e.preventDefault();\r\n window.print();\r\n}\r\n\r\nexport default ReportToolbar;","import { get } from \"./api\";\r\n\r\nconst getMetadata = (reportId) => {\r\n const url = `/reports?id=${reportId}`;\r\n const promise = get(url);\r\n return promise;\r\n};\r\n\r\nexport default getMetadata;\r\n","import FilterButton from \"./components/FilterButton\";\r\nimport FilterPanel from \"./components/FiltersPanel\";\r\nimport SortPanel from \"./components/SortPanel\";\r\nimport Report from \"./components/Report\";\r\nimport ReportToolbar from \"./components/ReportToolbar\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport {\r\n selectPages,\r\n selectMetadata,\r\n setMetadata,\r\n setSchools,\r\n} from \"./redux/reportSlice\";\r\nimport React, { useEffect } from \"react\";\r\nimport getMetadata from \"./Common/getMetadata\";\r\nimport \"./ReportContainer.css\";\r\nimport config from \"./config\";\r\n\r\nexport default function ReportContainer() {\r\n const dispatch = useDispatch();\r\n const metadata = useSelector(selectMetadata);\r\n const { id } = useParams();\r\n\r\n useEffect(() => window.scrollTo(0, 0), []);\r\n\r\n useEffect(() => {\r\n if (id && dispatch) {\r\n getMetadata(id).then((meta) => {\r\n dispatch(setMetadata(meta));\r\n });\r\n }\r\n }, [id, dispatch]);\r\n\r\n let markup =

Loading...

;\r\n\r\n if (metadata) {\r\n markup = (\r\n \r\n \r\n \r\n \r\n \r\n

{((metadata || {}).header || {}).title}

\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n return markup;\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport getJsonFromApi from \"../Common/getJsonFromApi\";\r\n\r\nexport default function FrameTopNav() {\r\n const [username, setUsername] = useState(sessionStorage.getItem(\"username\"));\r\n const [manageProfileUrl, setManageProfileUrl] = useState('');\r\n const [isIDSuser, setIsIDSUser] = useState(false);\r\n const [clientId, setClientId] = useState('');\r\n const [clientName, setClientName] = useState('');\r\n\r\n useEffect(() => {\r\n let mounted = true;\r\n getJsonFromApi(\"/users/current\").then((result) => {\r\n if (mounted) {\r\n const username = (result && result.username) || null;\r\n sessionStorage.setItem(\"username\", username);\r\n setUsername(username);\r\n\r\n const clientId = (result && result.clientId) || null;\r\n setClientId(clientId);\r\n\r\n const clientName = (result && result.clientName) || null;\r\n setClientName(clientName);\r\n\r\n if(result)\r\n {\r\n setManageProfileUrl(result.manageProfileUrl);\r\n setIsIDSUser(result.isIDSUser);\r\n }\r\n }\r\n });\r\n\r\n return () => (mounted = false);\r\n }, []);\r\n return (\r\n \r\n
\r\n {/* BEGIN TOP NAVIGATION BAR */}\r\n {/* BEGIN LOGO */}\r\n \r\n \r\n |  {clientId} - {clientName} - Admin Portal\r\n \r\n {/* END LOGO */}\r\n {/* BEGIN RESPONSIVE MENU TOGGLER */}\r\n \r\n \"\"\r\n \r\n {/* END RESPONSIVE MENU TOGGLER */}\r\n {/* BEGIN TOP NAVIGATION MENU */}\r\n
    \r\n {/* BEGIN NOTIFICATION DROPDOWN */}\r\n {/* END NOTIFICATION DROPDOWN */}\r\n {/* BEGIN TODO DROPDOWN */}\r\n {/* END TODO DROPDOWN */}\r\n {/* BEGIN USER LOGIN DROPDOWN */}\r\n
  • \r\n \r\n \r\n \r\n About\r\n \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n {username}\r\n \r\n \r\n \r\n \r\n
  • \r\n {/* END USER LOGIN DROPDOWN */}\r\n
\r\n {/* END TOP NAVIGATION MENU */}\r\n {/* END TOP NAVIGATION BAR */}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { Link } from \"react-router-dom\";\r\nimport config from \"../config\";\r\n\r\nexport default function LeftNavLink(props) {\r\n const { insideRouter, item, children } = props;\r\n let markup;\r\n\r\n if (item.subitems && item.subitems.length) {\r\n markup = {children};\r\n } else if (item.isServerSideLink) {\r\n markup = {children};\r\n } else if (insideRouter) {\r\n markup = {children};\r\n } else {\r\n markup = {children};\r\n }\r\n return markup;\r\n}\r\n","import LeftNavLink from \"./LeftNavLink\";\r\n\r\nexport default function LeftNavSubmenuItem(props) {\r\n const { item, insideRouter } = props;\r\n return (\r\n \r\n {item.label}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport LeftNavSubmenuItem from \"./LeftNavSubmenuItem\";\r\n\r\nexport default function LeftNavSubmenuItemGroup(props) {\r\n const { item: el, insideRouter } = props;\r\n const children = (el.subitems || []).map((el2, idx) => (\r\n \r\n ));\r\n return (\r\n \r\n
  • \r\n {el.label}\r\n
  • \r\n
  • \r\n
  • {children}
  • \r\n
    \r\n );\r\n}\r\n","import { useState } from \"react\";\r\nimport LeftNavSubmenuItemGroup from \"./LeftNavSubmenuItemGroup\";\r\nimport LeftNavLink from \"./LeftNavLink\";\r\n\r\nexport default function LeftNavMenuItem(props) {\r\n const [open, setOpen] = useState(false);\r\n const { item: el, insideRouter, isActive, isSubitem} = props;\r\n\r\n const children =\r\n el.subitems && el.subitems.length\r\n ? el.subitems.map((el2, idx2) => (\r\n \r\n ))\r\n : null;\r\n\r\n let className = `${isActive ? \"active\" : \"\"} ${isSubitem ? \"is-submenu\": \"\" }`;\r\n const childless = (\r\n
  • \r\n \r\n {el.label}\r\n \r\n
  • \r\n );\r\n\r\n className = open ? \"dropdown open\" : \"dropdown\";\r\n if (isActive) {\r\n className += \" active\";\r\n }\r\n if (isSubitem) {\r\n className += \" is-submenu\";\r\n }\r\n const withChildren = (\r\n setOpen(true)}\r\n onMouseLeave={() => setOpen(false)}\r\n\r\n >\r\n \r\n {el.label}\r\n \r\n \r\n
      {children}
    \r\n \r\n );\r\n return children ? withChildren : childless;\r\n}\r\n","import React, { useState } from \"react\";\r\nimport LeftNavMenuItem from \"./LeftNavMenuItem\";\r\nimport LeftNavLink from \"./LeftNavLink\";\r\n\r\nexport default function LeftNavMenu(props) {\r\n const { item, insideRouter, isActive, submenuName } = props;\r\n const reportGroup = window.adminPortalReportGroup;\r\n\r\n let subitems = null;\r\n if (item.subitems && item.subitems.length) {\r\n subitems = item.subitems.map((el, idx) => (\r\n \r\n ));\r\n }\r\n const className = subitems ? \"arrow\" : \"selected\";\r\n return (\r\n
  • \r\n {subitems ? (\r\n \r\n \r\n \r\n {item.label}\r\n \r\n \r\n {!subitems ? null :
      {subitems}
    }\r\n
    \r\n ) : (\r\n \r\n \r\n {item.label}\r\n \r\n \r\n )}\r\n
  • \r\n );\r\n}\r\n","const pathMap = [\r\n { path:'/reports/72', menu:'Reports' , submenu:'FORMS' }\r\n];\r\n\r\nexport const getMenuNameByPath = (adminPortalLeftNav, path) =>{\r\n let submenu = ''; \r\n const lowerPath = (path || '').toLowerCase().replace('/app/','/');\r\n const mappedItem = pathMap.find((item) => item.path === lowerPath );\r\n if(mappedItem) {\r\n return {\r\n menuName: mappedItem.menu,\r\n submenuName: mappedItem.submenu\r\n };\r\n }\r\n else {\r\n let result = adminPortalLeftNav.find((item)=> {\r\n let partialResult = (item && item.subitems) ? item.subitems.find((subitem)=> {\r\n const lowerTo = (subitem.to || '').toLowerCase();\r\n return lowerPath === lowerTo;\r\n }) : null;\r\n \r\n if(partialResult) {\r\n submenu = partialResult.label;\r\n return true;\r\n }\r\n return false;\r\n });\r\n \r\n if(result) {\r\n return {\r\n menuName: result.label || '',\r\n submenuName: submenu\r\n };\r\n } \r\n }\r\n return {\r\n menuName: '',\r\n submenuName: ''\r\n };\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport LeftNavMenu from \"./LeftNavMenu\";\r\nimport getJsonFromApi from \"../Common/getJsonFromApi\";\r\nimport { getMenuNameByPath } from \"../Common/LeftNavService\";\r\n\r\nexport default function FrameLeftNav(props) {\r\n\r\n const [leftNav, setLeftNav] = useState([]);\r\n const [error, setError] = useState(null);\r\n const { insideRouter, initLayout } = props;\r\n \r\n const menuName = window.adminPortalMenu;\r\n const submenuName = window.adminPortalSubMenu;\r\n\r\n const [menu, setMenu] = useState(menuName);\r\n const [submenu, setSubmenu] = useState(submenuName);\r\n\r\n const setMenuByPath = (adminPortalLeftNav) => {\r\n const { menuName } = getMenuNameByPath(adminPortalLeftNav, window.location.pathname);\r\n if(menuName) {\r\n setMenu(menuName);\r\n }\r\n };\r\n\r\n const setSubmenuByPath = (adminPortalLeftNav) => {\r\n const { submenuName } = getMenuNameByPath(adminPortalLeftNav, window.location.pathname);\r\n if(submenuName){\r\n setSubmenu(submenuName);\r\n }\r\n }; \r\n\r\n const initAnimation = () =>{\r\n // This must be called after div.page-sidebar is rendered for the\r\n // jQuery-based Metronic expanding/collapsing menus to work\r\n if (window.Layout) {\r\n window.Layout.handleFixedSidebar();\r\n }\r\n if (initLayout && window.Layout) {\r\n window.Layout.init();\r\n } \r\n }\r\n\r\n const initLeftNav = (leftNavObject) => {\r\n checkSelectedMenuAndSubmenu(leftNavObject);\r\n setLeftNav(leftNavObject);\r\n initAnimation();\r\n }\r\n\r\n const checkSelectedMenuAndSubmenu = (leftNavObject) =>{\r\n const menuName = window.adminPortalMenu;\r\n const submenuName = window.adminPortalSubMenu;\r\n if(!menuName) {\r\n setMenuByPath(leftNavObject);\r\n }\r\n if(!submenuName) {\r\n setSubmenuByPath(leftNavObject);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n\r\n if(leftNav.length === 0){\r\n // Now load left nav items from server. Use version cached in\r\n // sessionState while we wait to avoid \"disappearing left nav syndrome.\"\r\n let sessionLeftNav = sessionStorage.getItem(\"AdminPortalLeftNav\");\r\n if (sessionLeftNav && sessionLeftNav.length > 0) {\r\n const adminPortalLeftNav = JSON.parse(sessionLeftNav);\r\n initLeftNav(adminPortalLeftNav);\r\n }\r\n else {\r\n getJsonFromApi(`/adminportalleftnavitems`).then(\r\n (result) => {\r\n sessionStorage.setItem(\"AdminPortalLeftNav\", JSON.stringify(result));\r\n initLeftNav(result);\r\n },\r\n (error) => {\r\n setError(error);\r\n }\r\n );\r\n }\r\n }\r\n }, [leftNav, submenu]);\r\n\r\n if (error) {\r\n return
    {error.toString()}
    ;\r\n }\r\n\r\n const leftNavMarkup = leftNav.map((item, key) => (\r\n \r\n ));\r\n return (\r\n \r\n {/* BEGIN SIDEBAR */}\r\n span {\\n padding-left: 15px;\\n display: inline-block;\\n padding-top: 8px;\\n color: #989898;\\n }\\n\\n .CustomDropdownCss li > a {\\n padding-top: 0px;\\n padding-bottom: 0px;\\n color: #1676ba;\\n font-size: 11px;\\n }\\n\\n .CustomDropdownCss li > a:hover {\\n color: #13629a;\\n }\\n\\n .CustomDropdownCss li > a span {\\n display: list-item;\\n list-style-type: disc;\\n list-style-position: inside;\\n padding-left: 16px;\\n }\\n\\n .dropdown.open .dropdown-toggle .selectedArrow {\\n background-image: url(\"/images/sidebar-menu-arrow.png\");\\n display: block;\\n float: right;\\n height: 25px;\\n position: absolute;\\n right: 0;\\n top: 4px;\\n width: 8px;\\n }\\n\\n #toast-container > div {\\n }\\n\\n .build-css {\\n color: white;\\n margin-bottom: 20px;\\n font-size: 12px;\\n }\\n\\n .build-cssli {\\n text-align: center;\\n }\\n\\n\\n\\n .build-cssli span {\\n color: white;\\n margin-bottom: 20px;\\n font-size: 13px;\\n }\\n',\r\n }}\r\n />\r\n
    \r\n
    \r\n {/* BEGIN SIDEBAR MENU */}\r\n \r\n
  • \r\n {/* BEGIN SIDEBAR TOGGLER BUTTON */}\r\n
  • \r\n {/* BEGIN SIDEBAR TOGGLER BUTTON */}\r\n \r\n
  • \r\n {/* BEGIN RESPONSIVE QUICK SEARCH FORM */}\r\n
    \r\n \r\n \r\n \r\n
    \r\n {\r\n if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n window.displayInfoMessage(\r\n \"This feature is currently under development. Please check back again soon!\"\r\n );\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n {/* END RESPONSIVE QUICK SEARCH FORM */}\r\n
  • \r\n {leftNavMarkup}\r\n
  • \r\n \r\n
  • \r\n \r\n {/* END SIDEBAR MENU */}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* END SIDEBAR */}\r\n \r\n
    \r\n );\r\n}\r\n","export default function FramePageContainer(props) {\r\n const { children } = props;\r\n return
    {children}
    ;\r\n}\r\n","export default function FramePageContentWrapper(props) {\r\n const { children } = props;\r\n return (\r\n
    \r\n \r\n {children}\r\n
    \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport default class ErrorBoundary extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n static getDerivedStateFromError(error) {\r\n return { hasError: true };\r\n }\r\n\r\n componentDidCatch(error) {\r\n console.error(error);\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n // You can render any custom fallback UI\r\n return (\r\n
    \r\n

    Something went wrong.

    \r\n

    \r\n Click here to return to Vanco Food Admin\r\n

    \r\n
    \r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport const notificationSlice = createSlice({\r\n name: \"notification\",\r\n initialState: {\r\n message: null,\r\n type: null,\r\n },\r\n reducers: {\r\n setCurrentPageNotification: (state = {}, action) => {\r\n const { message, type } = action.payload;\r\n state.message = message;\r\n state.type = type;\r\n state.expiration = new Date(new Date().getTime() + 15000).getTime();\r\n },\r\n setNextPageNotification: (state = {}, action) => {\r\n const { message, type } = action.payload;\r\n state.nextPageMessage = message;\r\n state.nextPageMessageType = type;\r\n },\r\n },\r\n});\r\n\r\nexport const { setCurrentPageNotification, setNextPageNotification } = notificationSlice.actions;\r\n\r\nexport const selectNotification = (state) => state.notification;\r\n\r\nexport default notificationSlice.reducer;\r\n","import { useSelector, useDispatch } from \"react-redux\";\r\nimport {\r\n selectNotification,\r\n setCurrentPageNotification,\r\n setNextPageNotification,\r\n} from \"../redux/notificationSlice\";\r\nimport { defaultErrorMessage } from \"../Common/UserException\";\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { cleanup } from \"@testing-library/react\";\r\n\r\nconst [success, info, warning, error] = [\"success\", \"info\", \"warning\", \"error\"];\r\n\r\nexport { success, info, warning, error };\r\n\r\nexport function getNotificationForError(errorObject) {\r\n let friendlyErrorMessage = defaultErrorMessage;\r\n if (\r\n typeof errorObject === \"object\" &&\r\n typeof errorObject.message === \"string\"\r\n ) {\r\n friendlyErrorMessage = errorObject.message;\r\n } else if (typeof errorObject === \"string\") {\r\n friendlyErrorMessage = errorObject;\r\n }\r\n return { type: error, message: friendlyErrorMessage };\r\n}\r\n\r\nexport default function Alert() {\r\n const [tick, setTick] = useState(0);\r\n const history = useHistory();\r\n const pathname =\r\n (history && history.location && history.location.pathname) || \"\";\r\n useEffect(() => {\r\n displayNextPageNotification();\r\n }, [pathname]);\r\n useEffect(() => {\r\n let mounted = true;\r\n setTimeout(() => mounted && setTick(tick + 1), 1000);\r\n return () => (mounted = false);\r\n }, [tick]);\r\n\r\n const dispatch = useDispatch();\r\n const notification = useSelector(selectNotification);\r\n const expirationTime = notification && notification.expiration;\r\n const isExpired = !expirationTime\r\n ? false\r\n : expirationTime < new Date().getTime();\r\n const message = notification.message || null;\r\n const showMessage = message && !isExpired;\r\n const type = notification.type;\r\n let alertClass = \"\";\r\n switch (type) {\r\n case success:\r\n alertClass = \"alert-success\";\r\n break;\r\n case warning:\r\n alertClass = \"alert-warning\";\r\n break;\r\n case error:\r\n alertClass = \"alert-danger\";\r\n break;\r\n case info:\r\n default:\r\n alertClass = \"alert-info\";\r\n break;\r\n }\r\n const dismissAlert = () => {\r\n dispatch(setCurrentPageNotification({ message: null, type: null }));\r\n };\r\n const displayNextPageNotification = () => {\r\n const { nextPageMessage: nextMessage, nextPageMessageType: nextType } =\r\n notification;\r\n dispatch(setNextPageNotification({ message: null, type: null }));\r\n dispatch(\r\n setCurrentPageNotification({ message: nextMessage, type: nextType })\r\n );\r\n };\r\n return (\r\n showMessage && (\r\n
    \r\n {message}\r\n dismissAlert()}\r\n >\r\n ×\r\n \r\n
    \r\n )\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport FrameTopNav from \"./FrameTopNav\";\r\nimport FrameLeftNav from \"./FrameLeftNav\";\r\nimport FramePageContainer from \"./FramePageContainer\";\r\nimport FramePageContentWrapper from \"./FramePageContentWrapper\";\r\nimport ErrorBoundary from \"./ErrorBoundary\";\r\nimport getCurrentDate from \"../Common/getCurrentDate\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { setCurrentPageNotification } from \"../redux/notificationSlice\";\r\nimport { getNotificationForError } from \"../components/Alert\";\r\nimport { get } from \"../Common/api\";\r\n\r\nexport default function Frame(props) {\r\n let { insideRouter } = props;\r\n const dispatch = useDispatch();\r\n const[version, setVersion] = useState(\"1.0.0.0\");\r\n\r\n useEffect(async ()=> {\r\n try{\r\n //loads the version from admin API.\r\n const response = await get(`/`);\r\n setVersion(response.version);\r\n }\r\n catch(error){\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n }, [version]);\r\n\r\n return (\r\n \r\n {/* BEGIN HEAD */}\r\n \r\n \r\n \r\n \r\n {/* BEGIN CONTENT */}\r\n {props.children}\r\n {/* END CONTENT */}\r\n \r\n \r\n
    \r\n
    Build {version}
    \r\n
    \r\n {getCurrentDate().getFullYear()} © Food Service Solutions, Inc. All\r\n rights reserved.\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n

    About MySchoolAccount

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
     
    \r\n \r\n
    \r\n Product Version 17.00.11.23321\r\n
    \r\n
     
    \r\n
    \r\n Visit{\" \"}\r\n \r\n https://www.myschoolaccount.com\r\n {\" \"}\r\n for more information.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Close\r\n \r\n
    \r\n \r\n {/* /.modal-content */}\r\n \r\n {/* /.modal-dialog */}\r\n \r\n {/*[if lt IE 9]>\r\n \r\n );\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport {\r\n BrowserRouter as Router,\r\n Switch,\r\n Route,\r\n Link,\r\n useParams,\r\n} from \"react-router-dom\";\r\n\r\nexport default function PollingResults() {\r\n useEffect(() => window.scrollTo(0, 0), []);\r\n return (\r\n
    \r\n
    \r\n

    Polling Results

    \r\n \r\n
    \r\n \r\n Poll Households\r\n \r\n
    \r\n
    \r\n\r\n \r\n } />\r\n \r\n
    \r\n );\r\n}\r\n\r\nfunction Results() {\r\n let { action } = useParams();\r\n\r\n return (\r\n
    \r\n

    {action == \"new\" ? \"Poll Students\" : \"\"}

    \r\n
    \r\n );\r\n}\r\n","import { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\n\r\n\r\nconst makeBooleanFilterCellComponent = (allText, trueText, falseText) => {\r\n\r\n return props => {\r\n const data = props.booleanValues.map(v => v.operator === true\r\n ? { text: trueText, operator: true }\r\n : v.operator === false\r\n ? { text: falseText, operator: false }\r\n : { text: allText, operator: '' });\r\n const value = data.find(v => v.operator === props.value);\r\n const defaultItem = data.find(v => v.operator === '');\r\n const isDefaultSelected = value === defaultItem;\r\n const onChange = (event) => {\r\n if (event.target.value == defaultItem) {\r\n props.onChange({\r\n value: '',\r\n operator: '',\r\n syntheticEvent: event.syntheticEvent\r\n });\r\n } else {\r\n props.onChange({\r\n value: event.target.value.operator,\r\n operator: 'eq',\r\n syntheticEvent: event.syntheticEvent\r\n });\r\n }\r\n };\r\n const onClearButtonClick = (event) => {\r\n event.preventDefault();\r\n props.onChange({\r\n value: \"\",\r\n operator: \"\",\r\n syntheticEvent: event,\r\n });\r\n };\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const IsActiveFilterCell = makeBooleanFilterCellComponent(\"(All)\", \"Active\", \"Inactive\");\r\n\r\nexport const IsAdultFilterCell = makeBooleanFilterCellComponent(\"(All)\", \"True\", \"False\");\r\n\r\n","import { useState } from \"react\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport { columnTypes } from \"./AdminGrid\";\r\nimport styles from \"./AdminGrid.module.css\";\r\nimport { IsActiveFilterCell } from \"./CustomBooleanFilterCells\";\r\n\r\nexport default function AdminGridKendo(props) {\r\n const [page, setPage] = useState({ skip: 0, take: 10 });\r\n const pageChange = (event) => {\r\n setPage(event.page);\r\n };\r\n const {\r\n columns,\r\n data,\r\n sortable,\r\n sort,\r\n sortChange,\r\n filter,\r\n filterChange,\r\n filterOperators,\r\n isFilterable,\r\n } = props;\r\n\r\n const onFilterChange = (e) => {\r\n filterChange(e.filter);\r\n setPage({ skip: 0, take: page.take });\r\n };\r\n\r\n const getColumn = (c, key, headerColumnChecked) => {\r\n let column;\r\n if (c.type === columnTypes.actions) {\r\n column = (\r\n (\r\n \r\n {props.dataItem[c.field].map((action, actionKey) => (\r\n action.onClick(props)}\r\n >\r\n {action.title}\r\n \r\n ))}\r\n \r\n )}\r\n />\r\n );\r\n } else if (c.type === columnTypes.checkbox) {\r\n column = (\r\n (\r\n \r\n )}\r\n cell={(props) => {\r\n const { value, onChange } = props.dataItem[c.field];\r\n const ariaLabel = c.ariaLabelledByField\r\n ? `${c.title} checkbox for ${\r\n props.dataItem[c.ariaLabelledByField]\r\n }`\r\n : undefined;\r\n return (\r\n \r\n onChange(props)}\r\n aria-label={ariaLabel}\r\n />\r\n \r\n );\r\n }}\r\n />\r\n );\r\n } else if (c.type === columnTypes.boolean) {\r\n column = (\r\n {\r\n const value = props.dataItem[c.field];\r\n const ariaLabel = c.ariaLabelledByField\r\n ? `${c.title} check for ${props.dataItem[c.ariaLabelledByField]}`\r\n : undefined;\r\n return value ? (\r\n \r\n
    \r\n \r\n Checked\r\n
    \r\n \r\n ) : (\r\n \r\n
    \r\n \r\n );\r\n }}\r\n />\r\n );\r\n } else if (c.type === columnTypes.radioButton) {\r\n column = (\r\n {\r\n const { value, onChange } = props.dataItem[c.field];\r\n const ariaLabel = c.ariaLabelledByField\r\n ? `${c.title} radio for ${props.dataItem[c.ariaLabelledByField]}`\r\n : undefined;\r\n return (\r\n \r\n onChange(props)}\r\n onClick={() => onChange(props)}\r\n aria-label={ariaLabel}\r\n />\r\n \r\n );\r\n }}\r\n />\r\n );\r\n } else {\r\n column = (\r\n \r\n );\r\n }\r\n return column;\r\n };\r\n\r\n const filteredData = filterBy(data, filter);\r\n const pageData = filteredData.slice(page.skip, page.skip + page.take);\r\n\r\n let headerColumnChecked = true;\r\n let checkboxColumn = null;\r\n const checkBoxColumns = columns.filter(\r\n (c) => c.type === columnTypes.checkbox\r\n );\r\n if (checkBoxColumns.length > 0) {\r\n checkboxColumn = checkBoxColumns[0];\r\n }\r\n\r\n if (checkboxColumn) {\r\n for (let i = 0; i < pageData.length; i++) {\r\n if (!pageData[i][checkboxColumn.field].value) {\r\n headerColumnChecked = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (pageData.length === 0) headerColumnChecked = false;\r\n\r\n return (\r\n \r\n {columns.map((c, key) => getColumn(c, key, headerColumnChecked))}\r\n \r\n );\r\n}\r\n","import AdminGridKendo from \"./AdminGridKendo\";\r\n\r\nexport const columnTypes = {\r\n actions: \"Actions\",\r\n checkbox: \"Checkbox\",\r\n boolean: \"Boolean\",\r\n radioButton: \"RadioButton\",\r\n};\r\n\r\nexport const direction = {\r\n ASC: \"asc\",\r\n DESC: \"desc\",\r\n};\r\n\r\nexport default function AdminGrid(props) {\r\n return ;\r\n}\r\n","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\n\r\nexport default function DeleteMenuLayoutDialog(props) {\r\n const { assignedPosTerminalsCount, menuLayout, onDelete, onCancel } = props;\r\n\r\n return (\r\n 0 ? \"Cannot Delete\" : \"Delete\"}>\r\n {assignedPosTerminalsCount > 0 ?

    \r\n The menu layout {menuLayout.title} cannot be deleted.
    \r\n It is assigned to {assignedPosTerminalsCount} POS terminal(s)
    \r\n Please remove the assignments before deleting the menu layout\r\n

    :\r\n

    \r\n Are you sure you want to delete the menu layout {menuLayout.title}?\r\n

    }\r\n {assignedPosTerminalsCount > 0 && (\r\n \r\n \r\n \r\n )}\r\n {assignedPosTerminalsCount == 0 && (\r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n );\r\n}","import React, { useEffect, useState, useCallback } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport Alert, {\r\n getFriendlyErrorMessage,\r\n getNotificationForError,\r\n success as successNotificationType,\r\n error as errorNotificationType,\r\n} from \"../../Alert\";\r\nimport AdminGrid, { direction } from \"../../AdminGrid/AdminGrid\";\r\nimport { columnTypes } from \"../../AdminGrid/AdminGrid\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { deleteUrl, get } from \"../../../Common/api\";\r\nimport { setCurrentPageNotification } from \"../../../redux/notificationSlice\";\r\nimport getActions from \"../../../Common/actions\";\r\nimport DeleteMenuLayoutDialog from \"./DeleteMenuLayoutDialog\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport \"./CustomMenuLayoutList.css\";\r\n\r\nexport default function MenuLayoutList() {\r\n // history represents the browser history and allows us to navigate to other pages\r\n const history = useHistory();\r\n // Used to dispatch Redux messages which we mainly use for alert messages\r\n const dispatch = useDispatch();\r\n // A place to store the menu layouts loaded from the server\r\n const [menuLayouts, setMenuLayouts] = useState([]);\r\n // A place to store available actions loaded from the server\r\n const [availableActions, setavailableActions] = useState([]);\r\n // A variable to control whether the delete dialog is visible\r\n const [isDeleteDialogDialogVisible, setIsDeleteDialogDialogVisible] =\r\n useState(false);\r\n // A place to store how many terminals are assigned to a given layout when\r\n // we try to delete it\r\n const [assignedPosTerminalsCount, setAssignedPosTerminalsCount] = useState(0);\r\n // The layout we are trying to delete\r\n const [selectedLayoutToDelete, setSelectedLayoutToDelete] = useState({});\r\n\r\n // Get available actions from server based on permissions\r\n const actions = getActions();\r\n\r\n // A place to store current sorting state\r\n const [sort, setSort] = useState([{ field: \"title\", dir: direction.ASC }]);\r\n\r\n // Determine which actions are available\r\n const canEdit =\r\n availableActions.filter((a) => a.name === actions.update.name).length > 0;\r\n const canCreate =\r\n availableActions.filter((a) => a.name === actions.create.name).length > 0;\r\n const canDelete =\r\n availableActions.filter((a) => a.name === actions.delete.name).length > 0;\r\n \r\n // Get actions for each data item in the grid\r\n // In this case, the data item is a menu layout\r\n const getActionsForLayout = (layout) => {\r\n // The array of actions available for this item\r\n const myActions = [];\r\n \r\n // The edit action for this item (if available)\r\n const editAction = {\r\n title: \"Edit\",\r\n label: `Edit layout ${layout.title}`,\r\n // When this action is clicked, we will navigate to /menulayouts/:id\r\n onClick: (props) => history.push(`/menulayouts/${props.dataItem.id}`),\r\n };\r\n \r\n // The assign action for this item (if available)\r\n const assignAction = {\r\n title: \"Assign\",\r\n label: `Assign layout ${layout.title}`,\r\n // When this action is clicked, we will navigate to /menulayouts/:id/assignments\r\n onClick: (props) =>\r\n history.push(`/menulayouts/${props.dataItem.id}/assignments`),\r\n };\r\n \r\n // The delete action for this item (if available)\r\n const deleteAction = {\r\n title: \"Delete\",\r\n label: `Delete layout ${layout.title}`,\r\n // When this action is clicked, we call the canManuLayoutDelete [sic] function\r\n onClick: (props) => canManuLayoutDelete(props.dataItem),\r\n };\r\n \r\n // Add availabe actions for this item based on permissions\r\n if (canEdit) {\r\n myActions.push(assignAction);\r\n myActions.push(editAction);\r\n }\r\n if (canDelete) {\r\n myActions.push(deleteAction);\r\n }\r\n \r\n // Return available actions for this item\r\n return myActions;\r\n };\r\n \r\n // Construct the list of data items\r\n // Order by current sort order stored in \"sort\"\r\n const listData = orderBy(\r\n menuLayouts.map((layout) => ({\r\n ...layout,\r\n // Add an \"actions\" property for each item containing\r\n // an array of available actions\r\n actions: getActionsForLayout(layout),\r\n })),\r\n sort\r\n );\r\n\r\n // Event handler for when sorting changes in the grid\r\n const sortChange = (event) => {\r\n // Do not sort by actions column\r\n if(event.sort.length > 0 && event.sort[event.sort.length - 1].field === 'actions') {\r\n return;\r\n }\r\n setSort(event.sort);\r\n };\r\n\r\n // Load data when component mounts\r\n useEffect(() => {\r\n // Scroll to the top of the page when component mounts so\r\n // we can see the alert banner for example after saving\r\n // a new menu layout\r\n window.scrollTo(0, 0);\r\n \r\n // Promise.all is used to wait for multiple server calls to return\r\n Promise.all([\r\n // Get the list of menu layouts\r\n get(\"/MenuLayouts\").catch((error) => {\r\n // If there is an error, dispatch the error message for it\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }),\r\n // Get the list of actions based on user permissions\r\n get(\"/MenuLayouts/Actions\").catch((error) => {\r\n // If there is an error, dispatch the error message for it\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }),\r\n ]).then((values) => {\r\n // At this point, both server calls have returned successfully\r\n // Assign the result of the first server call (list of menu layouts)\r\n // to a constant\r\n const layouts = values[0];\r\n if (layouts) {\r\n // Set layouts in state\r\n setMenuLayouts(layouts);\r\n }\r\n // The actions returned from the server\r\n const actions = values[1];\r\n if (actions) {\r\n // Set actions in state\r\n setavailableActions(actions);\r\n }\r\n });\r\n },\r\n // We're supposed to pass in an array of values that the useEffect depends on\r\n // The useEffect callback gets called whenever these values change.\r\n // Technically, we only want it to get called once when the component mounts\r\n // so we could just pass in an empty array, but React will give us a warning\r\n // because it sees that we are referencing the dispatch function which was\r\n // declared outside this module. The dispatch function will never change\r\n // so adding it here has the same effect as passing in an empty array.\r\n // We are only doing it to get rid of the warning.\r\n [dispatch]);\r\n\r\n // This is the function that gets called when you click the \"delete\"\r\n // action. It just checks whether there are terminals assigned to the\r\n // layout and displays the appropriate dialog based on that.\r\n const canManuLayoutDelete = async (menuLayout) => {\r\n try {\r\n const posTerminalsCount = await get(\r\n `/MenuLayouts/${menuLayout.id}/CanDelete`,\r\n \"Failed to check for pos assignment\"\r\n );\r\n setAssignedPosTerminalsCount(posTerminalsCount);\r\n setSelectedLayoutToDelete(menuLayout);\r\n setIsDeleteDialogDialogVisible(true);\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n };\r\n\r\n // Click handler for cancel button of delete dialog\r\n const onCancel = async () => {\r\n setIsDeleteDialogDialogVisible(false);\r\n };\r\n\r\n // Click handler of delete button on delete dialog\r\n const onDelete = async (menuLayout) => {\r\n try {\r\n await deleteUrl(\r\n `/MenuLayouts/${menuLayout.id}`,\r\n \"Failed to delete the menu layout\"\r\n );\r\n const menuLayoutsFiltered = menuLayouts.filter(\r\n (m) => m.id != menuLayout.id\r\n );\r\n setMenuLayouts(menuLayoutsFiltered);\r\n dispatch(\r\n setCurrentPageNotification({\r\n type: successNotificationType,\r\n message: `Menu Layout ${menuLayout.title} has been deleted.`,\r\n })\r\n );\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n setIsDeleteDialogDialogVisible(false);\r\n };\r\n\r\n // Column definition for the grid\r\n const columns = [\r\n {\r\n field: \"title\",\r\n title: \"Name\",\r\n },\r\n // Actions column definition\r\n {\r\n field: \"actions\",\r\n title: \"Actions\",\r\n type: columnTypes.actions,\r\n },\r\n ];\r\n \r\n // Return the JSX (i.e. the markup) for the component.\r\n return (\r\n \r\n { /* The alert dialog. The alert message gets dispatched to Redux */ }\r\n \r\n { /* The delete dialog which only displays if isDeleteDialogDialogVisible [sic] is true */ }\r\n {isDeleteDialogDialogVisible && (\r\n \r\n )}\r\n { /* Bread crumb */ }\r\n
    \r\n
    \r\n

    Menu Layouts

    \r\n
      \r\n
    • \r\n \r\n Menu\r\n \r\n
    • \r\n
    • \r\n Menu Layouts\r\n
    • \r\n
    \r\n
    \r\n
    \r\n { /* The create button which only displays if you have permission to create */ }\r\n {canCreate && (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Add New Menu Layout\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n { /* The Admin Grid */ }\r\n \r\n
    \r\n );\r\n}\r\n","export default function getActions() {\r\n return {\r\n view: {\r\n id: 1,\r\n name: \"View\",\r\n },\r\n create: {\r\n id: 2,\r\n name: \"Create\",\r\n },\r\n update: {\r\n id: 3,\r\n name: \"Update\",\r\n },\r\n delete: {\r\n id: 4,\r\n name: \"Delete\",\r\n },\r\n void: {\r\n id: 5,\r\n name: \"Void\",\r\n },\r\n allow: {\r\n id: 6,\r\n name: \"Allow\",\r\n },\r\n activate: {\r\n id: 7,\r\n name: \"Activate\",\r\n },\r\n };\r\n}\r\n","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\n\r\nexport default function CancelMenuLayoutDialog(props) {\r\n const { onCancel, onOk } = props;\r\n\r\n return (\r\n \r\n

    \r\n Changes have been made\r\n
    \r\n Exit without saving?\r\n

    \r\n \r\n \r\n Ok\r\n \r\n \r\n Cancel\r\n \r\n \r\n
    \r\n );\r\n}\r\n","import styles from \"./MenuLayoutEdit.module.css\";\r\nimport \"./CustomAssignMenuLayoutKendo.css\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { get, post, patch } from \"../../../Common/api\";\r\nimport { useParams, useHistory } from \"react-router\";\r\nimport { setCurrentPageNotification, setNextPageNotification } from \"../../../redux/notificationSlice\";\r\nimport Alert, {\r\n getNotificationForError,\r\n success as successNotificationType,\r\n error as errorNotificationType,\r\n} from \"../../Alert\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { columnTypes, direction } from \"../../AdminGrid/AdminGrid\";\r\nimport AdminGrid from \"../../AdminGrid/AdminGrid\";\r\nimport { Menu, MenuItem } from \"@progress/kendo-react-layout\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport CancelMenuLayoutDialog from \"./CancelMenuLayoutDialog\";\r\n\r\nconst AssignMenuLayout = () => {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const id = parseInt(useParams().id);\r\n const [title, setTitle] = useState(\"\");\r\n const [isSaveEnabled, setIsSaveEnabled] = useState(true);\r\n const emptyArray = [];\r\n const [posTerminals, setPosTerminals] = useState(emptyArray);\r\n const [isDirty, setIsDirty] = useState(false);\r\n const [filterAvailableGrid, setFilterAvailableGrid] = useState([]);\r\n const [filterAssignedGrid, setFilterAssignedGrid] = useState([]);\r\n const [isCancelDialogVisible, setIsCancelDialogVisible] = useState(false);\r\n\r\n const [sort, setSort] = useState([\r\n { field: \"districtName\", dir: direction.ASC },\r\n { field: \"schoolName\", dir: direction.ASC },\r\n { field: \"name\", dir: direction.ASC },\r\n ]);\r\n\r\n const [assignedSort, setAssignedSort] = useState([\r\n { field: \"name\", dir: direction.ASC },\r\n ]);\r\n\r\n const gridType = {\r\n availableGrid: 1,\r\n assignedGrid: 2,\r\n };\r\n\r\n const searchChange = (event, grid) => {\r\n let newFilter = {\r\n logic: \"or\",\r\n filters: [\r\n {\r\n field: \"name\",\r\n operator: \"startswith\",\r\n value: event.target.value,\r\n },\r\n {\r\n field: \"schoolName\",\r\n operator: \"startswith\",\r\n value: event.target.value,\r\n },\r\n {\r\n field: \"districtName\",\r\n operator: \"startswith\",\r\n value: event.target.value,\r\n },\r\n {\r\n field: \"menuLayoutTitle\",\r\n operator: \"startswith\",\r\n value: event.target.value,\r\n },\r\n ],\r\n };\r\n if (grid === gridType.availableGrid) {\r\n setFilterAvailableGrid(newFilter);\r\n }\r\n if (grid === gridType.assignedGrid) {\r\n setFilterAssignedGrid(newFilter);\r\n }\r\n };\r\n\r\n const sortChange = (event) => {\r\n let sort = event.sort;\r\n\r\n // Do not sort by actions column\r\n if(sort[sort.length - 1].field === 'actions') {\r\n return;\r\n }\r\n\r\n sort.unshift(sort.pop());\r\n\r\n let posIndex = sort.findIndex((_) => _.field === \"name\");\r\n\r\n if (posIndex === 0 && sort.length > 1) {\r\n sort = sort.splice(posIndex, 1);\r\n sort[posIndex].dir = direction.ASC;\r\n }\r\n\r\n let schoolNameIndex = sort.findIndex((_) => _.field === \"schoolName\");\r\n let districtIndex = sort.findIndex((_) => _.field === \"districtName\");\r\n let layoutIndex = sort.findIndex((_) => _.field === \"menuLayoutTitle\");\r\n\r\n if (schoolNameIndex === 0) {\r\n if (districtIndex !== -1 || layoutIndex !== -1) {\r\n sort[schoolNameIndex].dir = direction.ASC;\r\n }\r\n sort = sort.splice(schoolNameIndex, 1);\r\n sort.push({ field: \"name\", dir: direction.ASC });\r\n }\r\n\r\n if (districtIndex === 0) {\r\n sort = sort.splice(districtIndex, 1);\r\n sort.push({ field: \"schoolName\", dir: direction.ASC });\r\n sort.push({ field: \"name\", dir: direction.ASC });\r\n }\r\n\r\n if (layoutIndex === 0) {\r\n sort = sort.splice(layoutIndex, 1);\r\n sort.push({ field: \"name\", dir: direction.ASC });\r\n }\r\n\r\n const layoutColumn = event.target.columns.find(\r\n (_) => _.field === \"menuLayoutTitle\"\r\n );\r\n if (layoutColumn) {\r\n setPosTerminals(sortTerminals(sort));\r\n setSort(sort);\r\n } else {\r\n setAssignedSort(sort);\r\n }\r\n };\r\n const sortTerminals = (sort) => {\r\n return orderBy(posTerminals, sort);\r\n };\r\n\r\n const filterOperators = {\r\n text: [\r\n {\r\n text: \"grid.filterStartsWithOperator\",\r\n operator: \"startswith\",\r\n },\r\n ],\r\n };\r\n\r\n const smartTrim = (obj) => {\r\n return typeof obj === \"string\" ? obj.trim() : obj;\r\n };\r\n\r\n useEffect(() => {\r\n get(`/menulayouts/${id}/title`)\r\n .then(({ title }) => {\r\n setTitle(title);\r\n })\r\n .catch((error) => {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n });\r\n get(`/posterminals`)\r\n .then((terminals) => {\r\n const mappedTerminals = orderBy(\r\n terminals.map((t) => ({\r\n ...t,\r\n name: smartTrim(t.name),\r\n schoolName: smartTrim(t.schoolName),\r\n districtName: smartTrim(t.districtName),\r\n menuLayoutTitle: smartTrim(t.menuLayoutTitle),\r\n selectedAvailable: false,\r\n selectedAssigned: false,\r\n })),\r\n sort\r\n );\r\n\r\n setPosTerminals(mappedTerminals);\r\n setIsDirty(false);\r\n })\r\n .catch((error) => {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n });\r\n }, [id, dispatch]);\r\n\r\n const columnsAvailableGrid = [\r\n {\r\n field: \"selectedAvailable\",\r\n title: \"\",\r\n type: columnTypes.checkbox,\r\n ariaLabelForHeaderCheckbox: \"select all available pos terminals on page\",\r\n ariaLabelledByField: \"name\",\r\n isFilterable: false,\r\n onChange: ({ column, page, data, headerColumnChecked }) => {\r\n const checked = !headerColumnChecked;\r\n const { skip, take } = page;\r\n const currentPage = data.slice(skip, skip + take);\r\n const isOnCurrentPage = (t) => {\r\n for (let i = 0; i < currentPage.length; i++) {\r\n if (currentPage[i].id === t.id) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n const newPosTerminals = posTerminals.map((t) =>\r\n isOnCurrentPage(t) ? { ...t, selectedAvailable: checked } : t\r\n );\r\n setPosTerminals(newPosTerminals);\r\n },\r\n },\r\n {\r\n field: \"name\",\r\n title: \"POS\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"schoolName\",\r\n title: \"School\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"districtName\",\r\n title: \"District\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"menuLayoutTitle\",\r\n title: \"Layout\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"actions\",\r\n title: \"Actions\",\r\n type: columnTypes.actions,\r\n isFilterable: false,\r\n },\r\n ];\r\n\r\n const columnsAssignedGrid = [\r\n {\r\n field: \"selectedAssigned\",\r\n title: \"\",\r\n type: columnTypes.checkbox,\r\n ariaLabelForHeaderCheckbox: \"select all assigned pos terminals on page\",\r\n ariaLabelledByField: \"name\",\r\n isFilterable: false,\r\n onChange: ({ column, page, data, headerColumnChecked }) => {\r\n const checked = !headerColumnChecked;\r\n const { skip, take } = page;\r\n const currentPage = data.slice(skip, skip + take);\r\n const isOnCurrentPage = (t) => {\r\n for (let i = 0; i < currentPage.length; i++) {\r\n if (currentPage[i].id === t.id) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n const newPosTerminals = posTerminals.map((t) =>\r\n isOnCurrentPage(t) ? { ...t, selectedAssigned: checked } : t\r\n );\r\n setPosTerminals(newPosTerminals);\r\n },\r\n },\r\n {\r\n field: \"name\",\r\n title: \"POS\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"schoolName\",\r\n title: \"School\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"districtName\",\r\n title: \"District\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"actions\",\r\n title: \"Actions\",\r\n type: columnTypes.actions,\r\n isFilterable: false,\r\n },\r\n ];\r\n const removeTerminal = (terminal) => {\r\n const newTerminals = posTerminals.map((t) =>\r\n t.id === terminal.id\r\n ? {\r\n ...t,\r\n menuLayoutId: t.originalMenuLayoutId,\r\n menuLayoutTitle: t.originalMenuLayoutTitle,\r\n selectedAssigned: false,\r\n selectedAvailable: false,\r\n }\r\n : t\r\n );\r\n setPosTerminals(newTerminals);\r\n setIsDirty(true);\r\n };\r\n const addTerminal = (terminal) => {\r\n const newTerminals = posTerminals.map((t) =>\r\n t.id === terminal.id\r\n ? {\r\n ...t,\r\n originalMenuLayoutId: t.menuLayoutId,\r\n originalMenuLayoutTitle: t.menuLayoutTitle,\r\n menuLayoutId: id,\r\n menuLayoutTitle: title,\r\n selectedAvailable: false,\r\n selectedAssigned: false,\r\n }\r\n : t\r\n );\r\n setPosTerminals(newTerminals);\r\n setIsDirty(true);\r\n };\r\n const getActionsForAvailableTerminal = (terminal) => [\r\n {\r\n title: \"Assign\",\r\n label: `Add terminal ${terminal.name}`,\r\n onClick: (props) => {\r\n addTerminal(props.dataItem);\r\n },\r\n },\r\n ];\r\n const onChangeSelectedAvailable = (props) => {\r\n const id = props.dataItem.id;\r\n const value = !props.dataItem.selectedAvailable.value;\r\n const newTerminals = posTerminals.map((t) =>\r\n t.id === id\r\n ? {\r\n ...t,\r\n selectedAvailable: value,\r\n }\r\n : t\r\n );\r\n setPosTerminals(newTerminals);\r\n };\r\n const onChangeSelectedAssigned = (props) => {\r\n const id = props.dataItem.id;\r\n const value = !props.dataItem.selectedAssigned.value;\r\n const newTerminals = posTerminals.map((t) =>\r\n t.id === id\r\n ? {\r\n ...t,\r\n selectedAssigned: value,\r\n }\r\n : t\r\n );\r\n setPosTerminals(newTerminals);\r\n };\r\n\r\n const availableTerminals = posTerminals\r\n .filter((t) => t.menuLayoutId !== id)\r\n .map((t) => ({\r\n ...t,\r\n actions: getActionsForAvailableTerminal(t),\r\n selectedAvailable: {\r\n value: t.selectedAvailable,\r\n onChange: onChangeSelectedAvailable,\r\n },\r\n }));\r\n\r\n const getActionsForAssignedTerminal = (terminal) => [\r\n {\r\n title: \"Remove\",\r\n label: `Remove terminal ${terminal.name}`,\r\n onClick: (props) => {\r\n removeTerminal(props.dataItem);\r\n },\r\n },\r\n ];\r\n let assignedTerminals = posTerminals\r\n .filter((t) => t.menuLayoutId === id)\r\n .map((t) => ({\r\n ...t,\r\n actions: getActionsForAssignedTerminal(t),\r\n selectedAssigned: {\r\n value: t.selectedAssigned,\r\n onChange: onChangeSelectedAssigned,\r\n },\r\n }));\r\n assignedTerminals = orderBy(assignedTerminals, assignedSort);\r\n\r\n const addSelectedToLayout = () => {\r\n const selectedTerminals = posTerminals.filter(\r\n (t) => t.selectedAvailable && t.menuLayoutId !== id\r\n );\r\n const isThereSomeTerminalSelected = selectedTerminals.some(\r\n (nt) => nt.selectedAvailable\r\n );\r\n\r\n if (!isThereSomeTerminalSelected) {\r\n dispatch(\r\n setCurrentPageNotification({\r\n type: \"error\",\r\n message: \"Please select a POS to Assign this Layout\",\r\n })\r\n );\r\n window.scrollTo(0, 0);\r\n } else {\r\n const newTerminals = posTerminals.map((t) =>\r\n t.selectedAvailable && t.menuLayoutId !== id\r\n ? {\r\n ...t,\r\n originalMenuLayoutId: t.menuLayoutId,\r\n originalMenuLayoutTitle: t.menuLayoutTitle,\r\n menuLayoutId: id,\r\n menuLayoutTitle: title,\r\n selectedAvailable: false,\r\n selectedAssigned: false,\r\n }\r\n : t\r\n );\r\n setPosTerminals(newTerminals);\r\n setIsDirty(true);\r\n }\r\n };\r\n\r\n const selectAllAvailablePosTerminals = () => {\r\n const newPosTerminals = posTerminals.map((t) =>\r\n t.menuLayoutId !== id\r\n ? {\r\n ...t,\r\n selectedAvailable: true,\r\n }\r\n : t\r\n );\r\n setPosTerminals(newPosTerminals);\r\n };\r\n\r\n const unselectAllAvailablePosTerminals = () => {\r\n const newPosTerminals = posTerminals.map((t) =>\r\n t.menuLayoutId !== id\r\n ? {\r\n ...t,\r\n selectedAvailable: false,\r\n }\r\n : t\r\n );\r\n setPosTerminals(newPosTerminals);\r\n };\r\n\r\n const removeSelectedFromLayout = () => {\r\n const selectedLayouts = posTerminals.filter(\r\n (t) => t.selectedAssigned && t.menuLayoutId === id\r\n );\r\n if (selectedLayouts.length === 0) {\r\n dispatch(\r\n setCurrentPageNotification({\r\n type: errorNotificationType,\r\n message: \"Please select a POS to remove this Layout\",\r\n })\r\n );\r\n window.scrollTo(0, 0);\r\n } else {\r\n const newTerminals = posTerminals.map((t) =>\r\n t.selectedAssigned && t.menuLayoutId === id\r\n ? {\r\n ...t,\r\n menuLayoutId: t.originalMenuLayoutId,\r\n menuLayoutTitle: t.originalMenuLayoutTitle,\r\n selectedAvailable: false,\r\n selectedAssigned: false,\r\n }\r\n : t\r\n );\r\n setPosTerminals(newTerminals);\r\n setIsDirty(true);\r\n }\r\n };\r\n const handleSelectMenuItem = (e) => {\r\n if (e.item && e.item.data && e.item.data.callback) {\r\n e.item.data.callback();\r\n }\r\n };\r\n const saveAssignments = async () => {\r\n const assignments = posTerminals.map((t) => ({\r\n posId: t.id,\r\n menuLayoutId: t.menuLayoutId,\r\n }));\r\n setIsSaveEnabled(false);\r\n let success = false;\r\n try {\r\n await patch(\r\n `/PosTerminals`,\r\n assignments,\r\n \"Failed to save the Menu Layout assignments\"\r\n );\r\n dispatch(\r\n setNextPageNotification({\r\n type: successNotificationType,\r\n message: `Menu Layout ${title}'s Assignments have been updated`,\r\n })\r\n );\r\n success = true;\r\n setIsDirty(false);\r\n setIsSaveEnabled(true);\r\n window.scrollTo(0, 0);\r\n history.push(\"/menulayouts\");\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n setIsSaveEnabled(true);\r\n window.scrollTo(0, 0);\r\n const data = error && error.data;\r\n const { navigateToMenuLayoutList, reloadData } = data;\r\n if (navigateToMenuLayoutList) {\r\n dispatch(setNextPageNotification(getNotificationForError(error)));\r\n history.push(\"/menulayouts\");\r\n } else if (reloadData) {\r\n get(`/posterminals`)\r\n .then((terminals) => {\r\n const mappedTerminals = orderBy(\r\n terminals.map((t) => ({\r\n ...t,\r\n name: smartTrim(t.name),\r\n schoolName: smartTrim(t.schoolName),\r\n districtName: smartTrim(t.districtName),\r\n menuLayoutTitle: smartTrim(t.menuLayoutTitle),\r\n selectedAvailable: false,\r\n selectedAssigned: false,\r\n })),\r\n sort\r\n );\r\n setPosTerminals(mappedTerminals);\r\n setIsDirty(false);\r\n })\r\n .catch((error) => {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n });\r\n }\r\n }\r\n setIsSaveEnabled(true);\r\n return success;\r\n };\r\n\r\n const redirectToMenuLayoutList = () => {\r\n setIsCancelDialogVisible(false);\r\n history.push(\"/menulayouts\");\r\n };\r\n\r\n const cancelAssignmentChanges = () => {\r\n if (isDirty) {\r\n setIsCancelDialogVisible(true);\r\n } else {\r\n redirectToMenuLayoutList();\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {isCancelDialogVisible && (\r\n redirectToMenuLayoutList()}\r\n onCancel={() => setIsCancelDialogVisible(false)}\r\n />\r\n )}\r\n
    \r\n
    \r\n

    {title} Assignments

    \r\n

    Available

    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n }\r\n style={ {padding: 0} }\r\n >\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n {\" \"}\r\n Select All\r\n \r\n \r\n \r\n \r\n \r\n |\r\n \r\n \r\n \r\n \r\n \r\n Unselect All{\" \"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n searchChange(event, gridType.availableGrid)\r\n }\r\n />\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n

    Assigned

    \r\n
    \r\n
    \r\n
    \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n searchChange(event, gridType.assignedGrid)\r\n }\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n saveAssignments()}\r\n disabled={!isSaveEnabled || !isDirty}\r\n >\r\n Save Assignments\r\n \r\n cancelAssignmentChanges()}\r\n >\r\n Cancel\r\n \r\n
    \r\n \r\n \r\n
    \r\n );\r\n};\r\nexport default AssignMenuLayout;\r\n","import styles from \"./MenuLayoutEdit.module.css\";\r\nimport React, { useState, useRef, useEffect } from \"react\";\r\n\r\nexport default function TabTitle(props) {\r\n const { name, index, count, addTab, removeTab, setTabName, isFocus } = props;\r\n const inputEl = useRef(null);\r\n useEffect(() => {\r\n isFocus &&\r\n inputEl &&\r\n inputEl.current &&\r\n inputEl.current.focus &&\r\n inputEl.current.focus();\r\n }, [isFocus, inputEl]);\r\n return (\r\n

    \r\n
    e.stopPropagation()}>\r\n \r\n {name}\r\n \r\n setTabName(event.target.value)}\r\n maxLength=\"20\"\r\n />\r\n removeTab()}\r\n >\r\n {index === count - 1 ? (\r\n \r\n ) : undefined}\r\n
    \r\n

    \r\n );\r\n}\r\n","import { useState } from \"react\";\r\nimport styles from \"./MenuLayoutEdit.module.css\";\r\n\r\nexport default function ButtonGrid(props) {\r\n const { buttons, onEdit, onDelete, onDrop } = props;\r\n\r\n const onDragStart = (ev, buttonIndex) => {\r\n ev.dataTransfer.setData(\"buttonIndex\", buttonIndex);\r\n ev.dataTransfer.dropEffect = \"move\";\r\n };\r\n\r\n const onDragOver = (ev) => {\r\n ev.preventDefault();\r\n };\r\n\r\n const sortedButtons = (buttons || []).sort(function (a, b) {\r\n const valueA = `${a.rowIndex}-${a.columnIndex}`;\r\n const valueB = `${b.rowIndex}-${b.columnIndex}`;\r\n if(valueA > valueB) {\r\n return 1;\r\n }\r\n if(valueA < valueB) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n \r\n let row = [];\r\n const rows = [];\r\n let currentRowIndex = 0;\r\n for(let i = 0; i < sortedButtons.length; i++) {\r\n const rowIndex = sortedButtons[i].rowIndex || 0;\r\n const button = sortedButtons[i];\r\n if(rowIndex > currentRowIndex) {\r\n rows.push({row});\r\n row = [];\r\n currentRowIndex = rowIndex;\r\n }\r\n row.push(\r\n \r\n {\r\n e.preventDefault();\r\n onEdit(i);\r\n }}\r\n draggable={button && button.itemName ? true : false}\r\n className={button && button.itemName ? \"draggable droppable\" : \"\"}\r\n onDragStart={(e) => onDragStart(e, i)}\r\n onDragOver={(e) => onDragOver(e)}\r\n onDrop={(e) => onDrop(e, i, button)}\r\n >\r\n {button && button.itemName && (\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n onDelete(i);\r\n }}\r\n />\r\n )}\r\n

    \r\n {button && (button.buttonCaption || button.itemName)}\r\n

    \r\n

    \r\n {button && button.categoryName}\r\n

    \r\n \r\n \r\n );\r\n }\r\n rows.push({row});\r\n \r\n return (\r\n \r\n {rows}\r\n
    \r\n );\r\n}","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport styles from \"./MenuLayoutEdit.module.css\";\r\nimport { useEffect, useState } from \"react\";\r\nimport getJsonFromApi from \"../../../Common/getJsonFromApi\";\r\n\r\nexport default function AddMenuItemDialog(props) {\r\n const { onCancel, onAdd } = props;\r\n const [menuItems, setMenuItems] = useState([]);\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const [selectedItem, setSelectedItem] = useState({});\r\n const sortAscending = 1;\r\n const [sort, setSort] = useState({ column: 0, direction: sortAscending });\r\n const sortCompare = (a, b) => {\r\n const { direction, column } = sort;\r\n const itemName = a.itemName.localeCompare(b.itemName) * direction;\r\n const category = a.categoryName.localeCompare(b.categoryName) * direction;\r\n if (column === 0) {\r\n return itemName;\r\n } else {\r\n return category === 0 ? itemName : category;\r\n }\r\n };\r\n const getSortIcon = (show, direction) => {\r\n return show ? (\r\n direction === sortAscending ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : undefined;\r\n };\r\n const toggleSort = (column) => {\r\n const newDirection =\r\n column === sort.column ? -sort.direction : sortAscending;\r\n setSort({ column, direction: newDirection });\r\n };\r\n const filter = (item) => {\r\n const term = (searchTerm || \"\").toLocaleLowerCase();\r\n const category = (item.categoryName || \"\").toLocaleLowerCase();\r\n const itemName = (item.itemName || \"\").toLocaleLowerCase();\r\n return (\r\n item.isActive &&\r\n !item.isDeleted &&\r\n (itemName.includes(term) || category.includes(term))\r\n );\r\n };\r\n const onClickItem = (e, item) => {\r\n e.preventDefault();\r\n setSelectedItem(item);\r\n };\r\n useEffect(() => {\r\n getJsonFromApi(\"/MenuItems\").then((items) => {\r\n setMenuItems(items);\r\n });\r\n }, []);\r\n return (\r\n Add Menu Items}\r\n onClose={onCancel}\r\n >\r\n
    \r\n \r\n setSearchTerm(e.target.value)}\r\n >\r\n
    \r\n \r\n \r\n \r\n {\r\n e.preventDefault();\r\n toggleSort(0);\r\n }}\r\n >\r\n Name\r\n {getSortIcon(sort.column === 0, sort.direction)}\r\n \r\n {\r\n e.preventDefault();\r\n toggleSort(1);\r\n }}\r\n >\r\n Category\r\n {getSortIcon(sort.column === 1, sort.direction)}\r\n \r\n \r\n \r\n \r\n {menuItems\r\n .filter(filter)\r\n .sort(sortCompare)\r\n .map((item, index) => (\r\n onClickItem(e, item)}\r\n >\r\n \r\n \r\n \r\n ))}\r\n \r\n
    {item.itemName}\r\n \r\n {item.categoryName}\r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n e.preventDefault();\r\n onAdd(selectedItem);\r\n }}\r\n >\r\n Add\r\n \r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useRef, useState, useEffect } from \"react\";\r\nimport { useHistory, useParams } from \"react-router-dom\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { TabStrip, TabStripTab } from \"@progress/kendo-react-layout\";\r\nimport TabTitle from \"./TabTitle\";\r\nimport ButtonGrid from \"./ButtonGrid\";\r\nimport styles from \"./MenuLayoutEdit.module.css\";\r\nimport AddMenuItemDialog from \"./AddMenuItemDialog\";\r\nimport { post, get, put } from \"../../../Common/api\";\r\nimport Alert, {\r\n success as successNotificationType,\r\n error as errorNotificationType,\r\n getNotificationForError,\r\n} from \"../../Alert\";\r\nimport { defaultErrorMessage } from \"../../../Common/UserException\";\r\nimport {\r\n setCurrentPageNotification,\r\n setNextPageNotification,\r\n selectNotification,\r\n} from \"../../../redux/notificationSlice\";\r\nimport CancelMenuLayoutDialog from \"./CancelMenuLayoutDialog\";\r\nimport {DropDownList} from \"@progress/kendo-react-dropdowns\";\r\nimport Select from \"react-select\";\r\nimport { select } from \"react-select-event\";\r\n\r\nexport default function MenuLayoutEdit() {\r\n const { id } = useParams();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const layoutType30Button = 1;\r\n const titleInputRef = useRef(null);\r\n const pageInputRef = useRef(null);\r\n const isNewLayout = !id;\r\n const [selected, setSelected] = useState(0);\r\n const [isSaveEnabled, setIsSaveEnabled] = useState(true);\r\n const [hasTitleValidationError, setHasTitleValidationError] = useState(false);\r\n const [isMenuLayoutCancelDialogVisible, setIsMenuLayoutCancelDialogVisible] =\r\n React.useState(false);\r\n const [menuLayoutTypes, setMenuLayoutTypes] = useState([]);\r\n const blankButtons = [{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":0,\"rowIndex\":0},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":1,\"rowIndex\":0},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":2,\"rowIndex\":0},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":3,\"rowIndex\":0},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":4,\"rowIndex\":0},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":0,\"rowIndex\":1},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":1,\"rowIndex\":1},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":2,\"rowIndex\":1},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":3,\"rowIndex\":1},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":4,\"rowIndex\":1},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":0,\"rowIndex\":2},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":1,\"rowIndex\":2},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":2,\"rowIndex\":2},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":3,\"rowIndex\":2},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":4,\"rowIndex\":2},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":0,\"rowIndex\":3},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":1,\"rowIndex\":3},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":2,\"rowIndex\":3},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":3,\"rowIndex\":3},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":4,\"rowIndex\":3},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":0,\"rowIndex\":4},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":1,\"rowIndex\":4},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":2,\"rowIndex\":4},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":3,\"rowIndex\":4},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":4,\"rowIndex\":4},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":0,\"rowIndex\":5},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":1,\"rowIndex\":5},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":2,\"rowIndex\":5},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":3,\"rowIndex\":5},{\"columnSpan\":1,\"rowSpan\":1,\"columnIndex\":4,\"rowIndex\":5}];\r\n\r\n const getLayoutFromDto = (dto, menuLayoutTypesList) => {\r\n const getButtons = (buttons) => {\r\n const result = buttons.map((b) => {\r\n return {\r\n ...b.menuItem,\r\n ...b\r\n };\r\n });\r\n return result;\r\n };\r\n const layoutResult = {\r\n title: dto.title,\r\n nextTab: dto.pages.length + 1,\r\n tabs: dto.pages.map((t) => {\r\n return {\r\n name: t.name,\r\n menuLayoutTypeId: t.menuLayoutTypeId,\r\n type: menuLayoutTypesList.filter((mlt) => mlt.value === t.menuLayoutTypeId)[0] || {},\r\n buttons: getButtons(t.buttons),\r\n }\r\n }),\r\n };\r\n return layoutResult;\r\n };\r\n\r\n const getMenuLayoutTypes = (menuLayoutTypesData) => {\r\n const menuLayoutTypesList = menuLayoutTypesData.map((mlt) => {\r\n return {\r\n value: mlt.id,\r\n label: mlt.description,\r\n template: JSON.parse(mlt.template || '{}')\r\n };\r\n });\r\n return menuLayoutTypesList;\r\n };\r\n\r\n useEffect(() => {\r\n if (id) {\r\n Promise.all([\r\n get(`/MenuLayouts/${id}`).catch((error) => {\r\n dispatch(setNextPageNotification(getNotificationForError(error)));\r\n redirectToMenuLayoutList();\r\n }),\r\n get('/MenuLayoutTypes').catch((error) => {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n })\r\n ]).then(values => {\r\n const savedLayout = values[0];\r\n if(savedLayout) {\r\n const menuLayoutTypesData = values[1];\r\n const menuLayoutTypesList = getMenuLayoutTypes(menuLayoutTypesData);\r\n setMenuLayoutTypes(menuLayoutTypesList);\r\n const currentLayout = getLayoutFromDto(savedLayout, menuLayoutTypesList); \r\n setInitialLayout(currentLayout);\r\n setLayout(currentLayout);\r\n }\r\n });\r\n }\r\n else {\r\n get('/MenuLayoutTypes').then(menuLayoutTypesData => {\r\n const menuLayoutTypesList = getMenuLayoutTypes(menuLayoutTypesData);\r\n setMenuLayoutTypes(menuLayoutTypesList);\r\n setInitialLayout(layout);\r\n setLayout(layout);\r\n }).catch((error) => {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n });\r\n }\r\n }, [id, dispatch]);\r\n\r\n const [initialLayout, setInitialLayout] = React.useState({\r\n title: \"Untitled\",\r\n nextTab: 2,\r\n tabs: [{ name: \"Page1\", menuLayoutTypeId: 1, type: {value: 1, label: '30 items', template: blankButtons}, buttons: [...blankButtons] }],\r\n });\r\n const [layout, setLayout] = React.useState(initialLayout);\r\n const [isMenuItemDialogVisible, setIsMenuItemDialogVisible] = useState(false);\r\n const [buttonBeingEdited, setButtonBeingEdited] = useState({});\r\n const [focusedTabIndex, setFocusedTabIndex] = useState(-1);\r\n const openDialog = (tabIndex, buttonIndex) => {\r\n setIsMenuItemDialogVisible(true);\r\n setButtonBeingEdited({ tabIndex, buttonIndex });\r\n };\r\n const cancelDialog = () => {\r\n setIsMenuItemDialogVisible(false);\r\n };\r\n const replaceButton = (tabIndex, buttonIndex, buttonValue) => {\r\n const makeNewTab = (oldTab) => {\r\n let newButtons = oldTab.buttons;\r\n const oldButton = oldTab.buttons[buttonIndex];\r\n const newButton = {\r\n ...buttonValue,\r\n menuItemId: buttonValue.menuItemId || buttonValue.id,\r\n rowSpan: oldButton.rowSpan,\r\n columnSpan: oldButton.columnSpan,\r\n rowIndex: oldButton.rowIndex,\r\n columnIndex: oldButton.columnIndex,\r\n };\r\n\r\n newButtons[buttonIndex] = newButton;\r\n return {\r\n name: oldTab.name,\r\n buttons: newButtons,\r\n menuLayoutTypeId: oldTab.menuLayoutTypeId\r\n };\r\n };\r\n\r\n const newLayout = {\r\n ...layout,\r\n tabs: layout.tabs.map((t, i) => (tabIndex === i ? makeNewTab(t) : t)),\r\n };\r\n setLayout(newLayout);\r\n };\r\n const deleteButton = (tabIndex, buttonIndex) => {\r\n replaceButton(tabIndex, buttonIndex, {});\r\n };\r\n const addItem = (item) => {\r\n setIsMenuItemDialogVisible(false);\r\n const { tabIndex, buttonIndex } = buttonBeingEdited;\r\n replaceButton(tabIndex, buttonIndex, item);\r\n };\r\n\r\n const setTitle = (title) => {\r\n const truncatedTitle = title.length > 100 ? title.substring(0, 100) : title;\r\n const newLayout = { ...layout, title: truncatedTitle };\r\n setLayout(newLayout);\r\n };\r\n\r\n const setTabName = (name, tabIndex) => {\r\n const newLayout = {\r\n ...layout,\r\n tabs: layout.tabs.map((tab, i) =>\r\n i === tabIndex ? { ...tab, name } : tab\r\n ),\r\n };\r\n setLayout(newLayout);\r\n };\r\n const addTab = (e) => {\r\n e.stopPropagation();\r\n const newLayout = {\r\n ...layout,\r\n nextTab: layout.nextTab + 1,\r\n tabs: [\r\n ...layout.tabs,\r\n { name: `Page${layout.nextTab}`, menuLayoutTypeId: 1, buttons: [...blankButtons] },\r\n ],\r\n };\r\n setLayout(newLayout);\r\n const newSelected = newLayout.tabs.length - 1;\r\n setSelected(newSelected);\r\n setFocusedTabIndex(newSelected);\r\n };\r\n const removeTab = (index) => {\r\n const newLayout = {\r\n ...layout,\r\n tabs: layout.tabs.filter((t, i) => i !== index),\r\n };\r\n setLayout(newLayout);\r\n };\r\n\r\n const handleSelect = (e) => {\r\n setSelected(e.selected);\r\n };\r\n\r\n const doSaveValidation = () => {\r\n let isValid = true;\r\n if (layout.title.length === 0) {\r\n window.scrollTo(0, 0);\r\n titleInputRef.current.focus();\r\n dispatch(\r\n setCurrentPageNotification({\r\n message: \"You must specify a menu layout name.\",\r\n type: errorNotificationType,\r\n })\r\n );\r\n setHasTitleValidationError(true);\r\n isValid = false;\r\n }\r\n return isValid;\r\n };\r\n\r\n const saveLayout = async () => {\r\n let valid = doSaveValidation();\r\n if (!valid) {\r\n return;\r\n }\r\n const getButtons = (buttons) => {\r\n const result = buttons.map((b)=> {\r\n return {\r\n columnSpan: b.columnSpan,\r\n rowSpan: b.rowSpan,\r\n columnIndex: b.columnIndex,\r\n rowIndex: b.rowIndex,\r\n menuItemId: b.menuItemId,\r\n };\r\n });\r\n return result;\r\n };\r\n\r\n const layoutDto = {\r\n title: layout.title,\r\n pages: layout.tabs.map((t) => ({\r\n name: t.name,\r\n menuLayoutTypeId: t.menuLayoutTypeId,\r\n buttons: getButtons(t.buttons),\r\n })),\r\n };\r\n try {\r\n setIsSaveEnabled(false);\r\n if (isNewLayout) {\r\n await post(\"/MenuLayouts\", layoutDto);\r\n } else {\r\n await put(`/MenuLayouts/${id}`, layoutDto);\r\n }\r\n dispatch(\r\n setNextPageNotification({\r\n type: successNotificationType,\r\n message: `Menu layout \"${layout.title}\" saved.`,\r\n })\r\n );\r\n\r\n history.push(\"/menulayouts\");\r\n } catch (error) {\r\n let message = defaultErrorMessage;\r\n if (error.type === \"UserException\") {\r\n message = error.message;\r\n setHasTitleValidationError(true);\r\n }\r\n if (error.type == \"NotFoundException\") {\r\n message = error.message;\r\n }\r\n dispatch(\r\n setCurrentPageNotification({\r\n type: errorNotificationType,\r\n message: message,\r\n })\r\n );\r\n window.scrollTo(0, 0);\r\n titleInputRef.current.focus();\r\n }\r\n setIsSaveEnabled(true);\r\n };\r\n\r\n const cancelLayoutChanges = () => {\r\n if (initialLayout !== layout) {\r\n setIsMenuLayoutCancelDialogVisible(true);\r\n return;\r\n }\r\n redirectToMenuLayoutList();\r\n };\r\n\r\n const redirectToMenuLayoutList = () => {\r\n setIsMenuLayoutCancelDialogVisible(false);\r\n history.push(\"/menulayouts\");\r\n };\r\n\r\n const onDrop = (ev, tabIndex, targetButtonIndex, targetButton) => {\r\n ev.preventDefault();\r\n const currentTab = layout.tabs[tabIndex];\r\n const sourceButtonIndex = ev.dataTransfer.getData(\"buttonIndex\");\r\n let sourceButton = currentTab.buttons[sourceButtonIndex];\r\n\r\n if(sourceButton.menuItemId) {\r\n replaceButton(tabIndex, targetButtonIndex, sourceButton);\r\n if(targetButton.menuItemId) {\r\n replaceButton(tabIndex, sourceButtonIndex, targetButton);\r\n }\r\n else {\r\n deleteButton(tabIndex,sourceButtonIndex);\r\n }\r\n }\r\n };\r\n\r\n const getMergedButtons = (buttons, templateButtons) => {\r\n const assignedButtons = buttons.filter((b) => b.menuItemId);\r\n var result = templateButtons.map((tb, i) => {\r\n let button = assignedButtons[i] || {};\r\n return {\r\n ...button,\r\n rowIndex: tb.rowIndex,\r\n columnIndex: tb.columnIndex,\r\n rowSpan: tb.rowSpan,\r\n columnSpan: tb.columnSpan,\r\n };\r\n });\r\n return result;\r\n };\r\n\r\n const onDropDownListChange = (selectedOption) => {\r\n var mergedButtons = getMergedButtons(layout.tabs[selected].buttons || [], selectedOption.template.buttons);\r\n layout.tabs[selected].buttons = mergedButtons;\r\n layout.tabs[selected].menuLayoutTypeId = selectedOption.value;\r\n layout.tabs[selected].type = selectedOption;\r\n const newLayout = {\r\n ...layout\r\n };\r\n setLayout(newLayout);\r\n }; \r\n return (\r\n \r\n {isMenuItemDialogVisible && (\r\n \r\n )}\r\n \r\n {isMenuLayoutCancelDialogVisible && (\r\n setIsMenuLayoutCancelDialogVisible(false)}\r\n onOk={redirectToMenuLayoutList}\r\n />\r\n )}\r\n\r\n {hasTitleValidationError && (\r\n >\r\n )}\r\n setTitle(event.target.value)}\r\n />\r\n\r\n {layout.tabs.length === 0 ? (\r\n \r\n \r\n

    \r\n \r\n

    \r\n
    \r\n }\r\n >\r\n \r\n ) : undefined}\r\n layout.tabs.length - 1 ? layout.tabs.length - 1 : selected\r\n }\r\n onSelect={handleSelect}\r\n >\r\n {layout.tabs.map((tab, tabIndex) => (\r\n removeTab(tabIndex)}\r\n setTabName={(value) => setTabName(value, tabIndex)}\r\n isFocus={tabIndex === focusedTabIndex}\r\n />\r\n }\r\n >\r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n\r\n openDialog(tabIndex, buttonIndex)}\r\n onDelete={(buttonIndex) => deleteButton(tabIndex, buttonIndex)}\r\n onDrop={(ev, targetButtonIndex, targetButton) =>\r\n onDrop(ev, tabIndex, targetButtonIndex, targetButton)\r\n }\r\n />\r\n
    \r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n {\r\n saveLayout();\r\n }}\r\n disabled={!isSaveEnabled}\r\n >\r\n Save\r\n \r\n cancelLayoutChanges()}\r\n >\r\n Cancel\r\n \r\n
    \r\n
    \r\n \r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\n\r\nconst LoginFrame = (props) => {\r\n const { children } = props;\r\n return (\r\n
    \r\n {/* BEGIN LOGO */}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {/* END LOGO */}\r\n
    \r\n
    \r\n Point of Sale Admin\r\n
    \r\n
    \r\n {/* BEGIN LOGIN */}\r\n
    \r\n {/* BEGIN LOGIN FORM */}\r\n {children}\r\n {/* END LOGIN FORM */}\r\n
    \r\n {/* END LOGIN */}\r\n {/* BEGIN COPYRIGHT */}\r\n
    \r\n {new Date().getFullYear()} © Food Service Solutions, Inc.\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default LoginFrame;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport const loginRedirectSlice = createSlice({\r\n name: \"loginRedirect\",\r\n initialState: {\r\n url: null,\r\n message: \"Please wait...\"\r\n },\r\n reducers: {\r\n setLoginRedirect: (state, action) => {\r\n const { url, message } = action.payload;\r\n state.url = url;\r\n state.message = message;\r\n },\r\n },\r\n});\r\n\r\nexport const { setLoginRedirect: setLoginRedirect } = loginRedirectSlice.actions;\r\n\r\nexport const selectLoginRedirect = (state) => state.loginRedirect;\r\n\r\nexport default loginRedirectSlice.reducer;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\nimport Select from \"react-select\";\r\nimport { get, post as lowLevelPost } from \"../../Common/api\";\r\nimport { defaultErrorMessage } from \"../../Common/UserException\";\r\nimport config from \"../../config\";\r\nimport { setLoginRedirect } from \"../../redux/loginRedirectSlice\";\r\n\r\nconst LoginForm = () => {\r\n const [errorMessage, setErrorMessage] = useState();\r\n const [validationMessage, setValidationMessage] = useState();\r\n const [username, setUsername] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [email, setEmail] = useState('');\r\n const [confirmEmail, setConfirmEmail] = useState('');\r\n const [users, setUsers] = useState([]);\r\n const [clientId, setClientId] = useState();\r\n const [adminUserCustomerId, setAdminUserCustomerId] = useState();\r\n const [usernameValidationMessage, setUsernameValidationMessage] = useState();\r\n const [passwordValidationMessage, setPasswordValidationMessage] = useState();\r\n const [emailValidationMessage, setEmailValidationMessage] = useState();\r\n const [confirmEmailValidationMessage, setConfirmEmailValidationMessage] =\r\n useState();\r\n const [formHistory, setFormHistory] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const [step, setStep] = useState(\"start\");\r\n const { search } = useLocation();\r\n const history = useHistory();\r\n const queryParams = new URLSearchParams(search);\r\n const error = queryParams.get(\"error\");\r\n const returnUrl = queryParams.get(\"returnUrl\");\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n // Logout Admin API\r\n get(`/Account/Logout`).then(() => {}).catch(e => console.error(e));\r\n // Logout Admin website\r\n fetch(`${config.adminPortalWebsiteOrigin}/Account/Logout`).then(() => {}).catch(e => console.error(e));\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (error === \"access-denied\") {\r\n setErrorMessage(\"You do not have permission to log in. Please see your system administrator.\");\r\n } else if (error) {\r\n setErrorMessage(\"An error occurred and your request could not be processed\");\r\n }\r\n }, [error])\r\n \r\n useEffect(() => {\r\n if (returnUrl) {\r\n document.cookie = `returnUrl=${encodeURIComponent(returnUrl)}; SameSite=Strict; Secure`;\r\n }\r\n }, [returnUrl]);\r\n\r\n const title =\r\n step === \"login\" ? null : step === \"email\" ? (\r\n \"Your organization is using a new way to sign in. \" +\r\n \"Please enter your email address so we can get started.\"\r\n ) : step === \"vanco\" ? (\r\n \r\n

    \r\n We've sent you an email inviting you to sign up.\r\n Once complete, you may sign in with your new\r\n email and password.\r\n

    \r\n
    \r\n ) : step === \"existing-vanco\" ? (\r\n \r\n

    \r\n Looks like you already have an account associated with that email address.\r\n Please enter the email address and click Next to continue.\r\n

    \r\n
    \r\n ) : step === \"reset-email-sent\" ? (\r\n \"A reset password link has been sent to any accounts registered with your email. \" +\r\n \"Please check your email to complete the process.\"\r\n ) : step === \"select-client\" ? (\r\n \"There is more than one organization associated with this user account. Please select an organization to continue.\"\r\n ) :null;\r\n\r\n const post = async (url, body) => {\r\n try {\r\n return await lowLevelPost(url, body);\r\n } catch (e) {\r\n const message = e.message || defaultErrorMessage;\r\n return { status: \"error\", message: message, data: e.data };\r\n }\r\n };\r\n\r\n const clearAllMessages = () => {\r\n setErrorMessage();\r\n setValidationMessage();\r\n setConfirmEmailValidationMessage();\r\n setEmailValidationMessage();\r\n setPasswordValidationMessage();\r\n setUsernameValidationMessage();\r\n };\r\n\r\n const handleSubmitInitialForm = event => {\r\n event.preventDefault();\r\n submitInitialForm();\r\n };\r\n\r\n const handleError = (result) => {\r\n const message = (result && result.message) || defaultErrorMessage;\r\n setErrorMessage(message);\r\n\r\n if (result && result.data && result.data.type === \"validation\") {\r\n // Do not need an overall error message for field validation\r\n setErrorMessage();\r\n const errors = result.data.errors;\r\n for (let source in errors) {\r\n if (source === \"email\") {\r\n setEmailValidationMessage(errors[source]);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const goToStep = (nextStep) => {\r\n clearAllMessages();\r\n const prevStep = step;\r\n setStep(nextStep);\r\n const newHistory = [...formHistory, prevStep];\r\n setFormHistory(newHistory);\r\n };\r\n\r\n const goBack = () => {\r\n const index = Math.max(0, formHistory.length - 1);\r\n clearAllMessages();\r\n const prevStep = formHistory[index];\r\n const newHistory = formHistory.slice(0, index);\r\n setStep(prevStep);\r\n setFormHistory(newHistory);\r\n };\r\n\r\n const submitInitialForm = async () => {\r\n clearAllMessages();\r\n if (!username) {\r\n setEmailValidationMessage(\"Username is required\");\r\n } else {\r\n setLoading(true);\r\n const result = await post(`/Account/CheckSsoProvider`, {\r\n username,\r\n });\r\n setLoading(false);\r\n if (!result || result.status === \"error\") {\r\n handleError(result);\r\n } else if (result.status === \"sso\") {\r\n // Login through IDS page since this user is managed by an external SSO provider\r\n const idsLoginUrl = `${config.adminApiOrigin}/Account/IdentityServiceLogin?username=${encodeURIComponent(username)}`;\r\n dispatch(setLoginRedirect({\r\n url: idsLoginUrl,\r\n message: \"Redirecting you to your Single Sign-on Provider\"\r\n }));\r\n history.push(`${config.loginRoot}/redirect`);\r\n } else {\r\n setEmail(\"\");\r\n setConfirmEmail(\"\");\r\n goToStep(\"login\");\r\n }\r\n }\r\n };\r\n\r\n const login = async () => {\r\n clearAllMessages();\r\n if (!password) {\r\n setPasswordValidationMessage(\"Password is required\");\r\n } else {\r\n setLoading(true);\r\n const result = await post(`/Account/Login`, {\r\n username,\r\n password,\r\n clientId,\r\n adminUserCustomerId,\r\n });\r\n setLoading(false);\r\n if (result && result.status === \"collect-email\") {\r\n setEmail(\"\");\r\n setConfirmEmail(\"\");\r\n goToStep(\"email\");\r\n } else if (result && result.status === \"authenticated\") {\r\n dispatch(setLoginRedirect({\r\n \r\n url: `${config.adminPortalWebsiteOrigin}/Account/BeginSession`,\r\n message: \"Please wait while we log you in\"\r\n }));\r\n history.push(`${config.loginRoot}/redirect`);\r\n } else if (result && result.status === \"multiple-users\") {\r\n setErrorMessage(\r\n \"There is more than one organization associated with that user. Please select an organization to continue.\"\r\n );\r\n setUsers(result.users);\r\n goToStep(\"select-client\")\r\n } else {\r\n handleError(result);\r\n }\r\n }\r\n };\r\n\r\n const onClickSubmit = async () => {\r\n clearAllMessages();\r\n if (!email) {\r\n setEmailValidationMessage(\"Email is required\");\r\n }\r\n if (!confirmEmail) {\r\n setConfirmEmailValidationMessage(\"Confirm email is required\");\r\n }\r\n if (email !== confirmEmail) {\r\n setValidationMessage(\"Email addresses must match\");\r\n }\r\n if (email && !email.includes(\"@\")) {\r\n setEmailValidationMessage(`Email '${email}' is invalid.`);\r\n }\r\n if (email && email.includes(\"@\") && confirmEmail && email === confirmEmail) {\r\n setLoading(true);\r\n const result = await post(`/Account/Invite`, {\r\n username,\r\n password,\r\n email,\r\n });\r\n setLoading(false);\r\n if (result.status === \"invitation-sent\") {\r\n goToStep(\"vanco\");\r\n setUsername(email);\r\n } else if (result.status === \"collect-password\") {\r\n goToStep(\"existing-vanco\");\r\n setUsername(email);\r\n } else {\r\n handleError(result);\r\n }\r\n }\r\n };\r\n\r\n const errorMessageClass =\r\n \"alert alert-danger \" +\r\n (errorMessage ? \"display-show\" : \"display-hide\");\r\n\r\n let usernameClass = \"form-group\";\r\n if (usernameValidationMessage) {\r\n usernameClass += \" has-error\";\r\n }\r\n\r\n let passwordClass = \"form-group\";\r\n if (passwordValidationMessage) {\r\n passwordClass += \" has-error\";\r\n }\r\n\r\n const clientClass = \"form-group\";\r\n\r\n let clientOptions = users.map((u) => ({\r\n label: `${u.clientName} (${u.clientId})`,\r\n value: `${u.clientId}:${u.adminUserCustomerId}`,\r\n }));\r\n\r\n const clientSelectStyles = {\r\n menu: (styles, state) => ({\r\n ...styles,\r\n zIndex: 10,\r\n }),\r\n placeholder: (styles, state) => ({\r\n ...styles,\r\n paddingLeft: \"25px\",\r\n }),\r\n singleValue: (styles, state) => ({\r\n ...styles,\r\n paddingLeft: \"25px\",\r\n }),\r\n };\r\n\r\n const backFromSelectClientForm = () => {\r\n setUsers([]);\r\n setClientId();\r\n setAdminUserCustomerId();\r\n goBack();\r\n }\r\n\r\n const selectClient = (option) => {\r\n const [newClientId, newAdminUserCustomerId] = option.value\r\n .split(\":\")\r\n .map((v) => Number(v));\r\n setClientId(newClientId);\r\n setAdminUserCustomerId(newAdminUserCustomerId);\r\n };\r\n\r\n let emailClass = \"form-group\";\r\n if (emailValidationMessage) {\r\n emailClass += \" has-error\";\r\n }\r\n\r\n const initialForm = (\r\n \r\n
    \r\n
    \r\n {/*ie8, ie9 does not support html5 placeholder, so we just show field title for that*/}\r\n \r\n
    \r\n \r\n setUsername(e.target.value)}\r\n name=\"username\"\r\n />\r\n
    \r\n {emailValidationMessage ? (\r\n \r\n {emailValidationMessage}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n submitInitialForm()}\r\n >\r\n Next\r\n { loading\r\n ? \r\n : \r\n }\r\n \r\n
    {\" \"}\r\n \r\n
    \r\n ) \r\n\r\n const backButton = ( goBack()}\r\n aria-label=\"back\"\r\n >\r\n Back \r\n );\r\n\r\n const loginForm = (\r\n \r\n
    \r\n {clientOptions.length > 1 ? (\r\n
    \r\n {/*ie8, ie9 does not support html5 placeholder, so we just show field title for that*/}\r\n \r\n Organization\r\n \r\n
    \r\n \r\n \r\n
    {\" \"}\r\n
    \r\n ) : null}\r\n
    \r\n {/*ie8, ie9 does not support html5 placeholder, so we just show field title for that*/}\r\n \r\n
    \r\n \r\n \r\n
    \r\n {usernameValidationMessage ? (\r\n \r\n {usernameValidationMessage}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n setPassword(e.target.value)}\r\n name=\"password\"\r\n />\r\n
    \r\n {passwordValidationMessage ? (\r\n \r\n {passwordValidationMessage}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n { backButton }\r\n login()}\r\n >\r\n Log in\r\n { loading\r\n ? \r\n : \r\n }\r\n \r\n
    {\" \"}\r\n \r\n
    \r\n );\r\n\r\n const selectClientForm = (\r\n \r\n
    \r\n {clientOptions.length > 1 ? (\r\n
    \r\n {/*ie8, ie9 does not support html5 placeholder, so we just show field title for that*/}\r\n \r\n Organization\r\n \r\n
    \r\n \r\n \r\n
    {\" \"}\r\n
    \r\n ) : null}\r\n
    \r\n backFromSelectClientForm()}\r\n aria-label=\"back\"\r\n >\r\n Back \r\n \r\n login()}\r\n >\r\n Continue\r\n { loading\r\n ? \r\n : \r\n }\r\n \r\n
    {\" \"}\r\n \r\n
    \r\n );\r\n\r\n let confirmEmailClass = \"form-group\";\r\n if (confirmEmailValidationMessage) {\r\n confirmEmailClass += \" has-error\";\r\n }\r\n const emailForm = (\r\n \r\n
    \r\n
    \r\n {/*ie8, ie9 does not support html5 placeholder, so we just show field title for that*/}\r\n \r\n
    \r\n \r\n setEmail(e.target.value)}\r\n />\r\n
    \r\n {emailValidationMessage ? (\r\n \r\n {emailValidationMessage}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n setConfirmEmail(e.target.value)}\r\n />\r\n
    \r\n {confirmEmailValidationMessage ? (\r\n \r\n {confirmEmailValidationMessage}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n { backButton }\r\n \r\n Submit\r\n { loading\r\n ? \r\n : \r\n }\r\n \r\n
    {\" \"}\r\n \r\n
    \r\n );\r\n\r\n const form =\r\n step === \"start\" || step == \"reset-email-sent\" || step === \"vanco\" || step === \"existing-vanco\"\r\n ? initialForm\r\n : step === \"login\"\r\n ? loginForm\r\n : step === \"email\"\r\n ? emailForm\r\n : step === \"select-client\"\r\n ? selectClientForm\r\n : null;\r\n const validationSummaryClass = validationMessage\r\n ? \"validation-summary-errors\"\r\n : \"validation-summary-valid\";\r\n\r\n return (\r\n \r\n

    {title}

    \r\n
    \r\n
    \r\n
    \r\n
      {validationMessage ?
    • {validationMessage}
    • : null}
    \r\n
    {\" \"}\r\n {form}\r\n
    \r\n );\r\n};\r\n\r\nexport default LoginForm;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport Select from \"react-select\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\nimport { get, post } from \"../../Common/api\";\r\nimport config from \"../../config\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { setLoginRedirect } from \"../../redux/loginRedirectSlice\";\r\n\r\nexport function ClientSelect() {\r\n const [validationMessage, setValidationMessage] = useState();\r\n const [errorMessage, setErrorMessage] = useState();\r\n const [clientOptions, setClientOptions] = useState([]);\r\n const [clientId, setClientId] = useState();\r\n const [loading, setLoading] = useState(true);\r\n const history = useHistory();\r\n const { search } = useLocation();\r\n const queryParams = new URLSearchParams(search);\r\n const dispatch = useDispatch();\r\n let returnUrl = queryParams.get(\"returnUrl\");\r\n\r\n useEffect(async () => {\r\n let mounted = true;\r\n try {\r\n setLoading(true);\r\n const result = await get('/Account/Clients');\r\n setLoading(false);\r\n if (result && mounted) {\r\n if (result.length == 0) {\r\n history.replace(`${config.loginRoot}?error=access-denied`);\r\n } else if (result.length == 1) {\r\n loginToClient(result[0].id);\r\n } else {\r\n setClientOptions(result.map(r => ({ label: r.name, value: r.id })));\r\n }\r\n } else {\r\n setErrorMessage(result);\r\n }\r\n } catch (error) {\r\n setLoading(false);\r\n setErrorMessage(error.message);\r\n }\r\n return () => mounted = false;\r\n }, [])\r\n const errorMessageClass =\r\n \"alert alert-danger \" +\r\n (errorMessage ? \"display-show\" : \"display-hide\");\r\n const validationSummaryClass = validationMessage\r\n ? \"validation-summary-errors\"\r\n : \"validation-summary-valid\";\r\n const goBack = () => history.push(config.loginRoot);\r\n const title = loading\r\n ? \"Please wait while we log you in\"\r\n : clientOptions && clientOptions.length > 0\r\n ? \"Please select a client\"\r\n : \"Please click the back button to try again\"\r\n const clientSelectStyles = {\r\n menu: (styles, state) => ({\r\n ...styles,\r\n zIndex: 10,\r\n }),\r\n placeholder: (styles, state) => ({\r\n ...styles,\r\n paddingLeft: \"25px\",\r\n }),\r\n singleValue: (styles, state) => ({\r\n ...styles,\r\n paddingLeft: \"25px\",\r\n }),\r\n };\r\n const selectClient = (option) => {\r\n const newClientId = option.value\r\n setClientId(newClientId);\r\n };\r\n const loginToClient = async (selectedClientId) => {\r\n try\r\n {\r\n setLoading(true);\r\n const result = await post(`/Account/OidcLogin?clientId=${selectedClientId}`);\r\n setLoading(false);\r\n if (result.status === 'authenticated') {\r\n // Clear cached left nav so user sees correct menu items\r\n sessionStorage.removeItem(\"AdminPortalLeftNav\");\r\n // Begin the user's session (this will log the user in and redirect to home page)\r\n let url = \"/Account/BeginSession\";\r\n // Return to root path if returnUrl is on the login page because\r\n // it will be very confusing for the user if after they login\r\n // they end up back on the login page\r\n returnUrl = (returnUrl && returnUrl.startsWith(\"/app/login\")) ? \"/\" : returnUrl;\r\n url += (returnUrl ? `?returnUrl=${encodeURIComponent(returnUrl)}` : '');\r\n dispatch(setLoginRedirect({\r\n url: `${config.adminPortalWebsiteOrigin}${url}`,\r\n message: \"Please wait while we log you in\"\r\n }));\r\n history.push(`${config.loginRoot}/redirect`);\r\n } else {\r\n setErrorMessage(result.message);\r\n }\r\n } catch (error) {\r\n setLoading(false);\r\n setErrorMessage(error.message);\r\n }\r\n }\r\n const login = async () => {\r\n if (!clientId) {\r\n setValidationMessage(\"Please select a client\");\r\n }\r\n else {\r\n loginToClient(clientId);\r\n }\r\n }\r\n return (\r\n \r\n

    {title}

    \r\n
    \r\n
    \r\n
    \r\n
      {validationMessage ?
    • {validationMessage}
    • : null}
    \r\n
    {\" \"}\r\n
    \r\n {loading ? null : clientOptions.length > 0 ? (\r\n \r\n
    \r\n {/*ie8, ie9 does not support html5 placeholder, so we just show field title for that*/}\r\n \r\n Organization\r\n \r\n
    \r\n \r\n \r\n
    {\" \"}\r\n
    \r\n
    \r\n goBack()}\r\n aria-label=\"back\"\r\n >\r\n Back \r\n \r\n login()}\r\n >\r\n Log in\r\n { loading\r\n ? \r\n : \r\n }\r\n \r\n
    {\" \"}\r\n
    \r\n ) : (\r\n
    \r\n goBack()}\r\n aria-label=\"back\"\r\n >\r\n Back \r\n \r\n
    \r\n )}\r\n \r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useHistory, useParams, useLocation } from \"react-router-dom\";\r\nimport { get } from \"../../Common/api\";\r\nimport config from \"../../config\";\r\n\r\nexport function Callback() {\r\n const history = useHistory();\r\n const { search } = useLocation();\r\n const queryParams = new URLSearchParams(search);\r\n const code = queryParams.get(\"code\");\r\n const state = queryParams.get(\"state\");\r\n const error = queryParams.get(\"error\");\r\n const error_description = queryParams.get(\"error_description\");\r\n const returnUrl = decodeURIComponent(document.cookie\r\n .split(\"; \")\r\n .find((row) => row.startsWith(\"returnUrl=\"))\r\n ?.split(\"=\")[1]);\r\n\r\n useEffect(async () => {\r\n let mounted = true;\r\n try {\r\n let url = `/Account/Identity?code=${code}&state=${state}`;\r\n if (error) {\r\n url += `error=${error}&error_description=${error_description}`\r\n }\r\n const result = await get(url);\r\n if (mounted && result && result.identity && result.identity.authenticated) {\r\n let selectClientUrl = `${config.loginRoot}/select-client`;\r\n selectClientUrl += (returnUrl ? `?returnUrl=${encodeURIComponent(returnUrl)}` : '');\r\n history.replace(selectClientUrl);\r\n }\r\n } catch (error) {\r\n history.replace(`${config.loginRoot}?error=unknown`);\r\n }\r\n return () => mounted = false;\r\n }, [])\r\n return (\r\n \r\n

    Please wait while we log you in

    \r\n
    \r\n );\r\n}","import React, { useEffect } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport config from \"../../config\";\r\nimport { selectLoginRedirect } from \"../../redux/loginRedirectSlice\";\r\n\r\nconst isAllowedRedirect = (url) => {\r\n if (typeof url !== 'string') {\r\n return false;\r\n }\r\n const isAdminApiUrl = url.startsWith(`${config.adminApiOrigin}/`);\r\n const isAdminPortalWebsiteUrl = url.startsWith(`${config.adminPortalWebsiteOrigin}/`);\r\n const isAllowed = isAdminApiUrl || isAdminPortalWebsiteUrl;\r\n return isAllowed;\r\n}\r\n\r\nexport function Redirect() {\r\n const { url, message } = useSelector(selectLoginRedirect);\r\n const history = useHistory();\r\n\r\n useEffect(async () => {\r\n if (isAllowedRedirect(url)) {\r\n window.location.replace(url);\r\n } else {\r\n console.error(`${url} is not an allowed redirect url`);\r\n history.replace(config.loginRoot);\r\n }\r\n }, [url])\r\n\r\n return (\r\n \r\n

    {message || \"Please wait\"}

    \r\n
    \r\n );\r\n}","import React from \"react\";\r\nimport LoginFrame from \"./LoginFrame\";\r\nimport LoginForm from \"./LoginForm\";\r\nimport { Switch, Route, Link } from \"react-router-dom\";\r\n\r\nimport config from \"../../config\";\r\nimport { ClientSelect } from \"./ClientSelect\";\r\nimport { Callback } from \"./Callback\";\r\nimport { Redirect } from \"./Redirect\";\r\nconst { loginRoot } = config;\r\n\r\nconst Login = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

    \r\n \r\n Page not found. Click here to start over.\r\n \r\n

    \r\n
    \r\n \r\n

    \r\n \r\n Page not found. Click here to return to Vanco Food.\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Login;\r\n","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\n\r\nexport default function DeletePosRoleDialog(props) {\r\n const { assignedUsersCount, posRole, onDelete, onCancel } = props;\r\n\r\n return (\r\n 0 ? \"Cannot Delete\" : \"Delete\"}>\r\n {assignedUsersCount > 0 ?

    \r\n The POS role {posRole.name} cannot be deleted.
    \r\n It is assigned to {assignedUsersCount} user(s)
    \r\n Please remove the assignments before deleting the POS role\r\n

    :\r\n

    \r\n Are you sure you want to delete the POS role {posRole.name}?\r\n

    }\r\n {assignedUsersCount > 0 && (\r\n \r\n \r\n \r\n )}\r\n {assignedUsersCount == 0 && (\r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n );\r\n}","import React, { useEffect, useState, useCallback } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport Alert, {\r\n getFriendlyErrorMessage,\r\n getNotificationForError,\r\n success as successNotificationType,\r\n error as errorNotificationType,\r\n} from \"../Alert\";\r\nimport AdminGrid, { direction } from \"../AdminGrid/AdminGrid\";\r\nimport { columnTypes } from \"../AdminGrid/AdminGrid\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { deleteUrl, get } from \"../../Common/api\";\r\nimport { setCurrentPageNotification } from \"../../redux/notificationSlice\";\r\nimport getActions from \"../../Common/actions\";\r\nimport DeletePosRoleDialog from \"./DeletePosRoleDialog\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport \"./CustomPosRoleList.css\";\r\n\r\nexport default function PosRolesList() {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const [posRoles, setPosRoles] = useState([]);\r\n const [availableActions, setavailableActions] = useState([]);\r\n const [isDeleteDialogDialogVisible, setIsDeleteDialogDialogVisible] =\r\n useState(false);\r\n const [assignedUserCount, setAssignedUserCount] = useState(0);\r\n const [selectedRoleToDelete, setSelectedRoleToDelete] = useState({});\r\n const actions = getActions();\r\n const [sort, setSort] = useState([{ field: \"name\", dir: direction.ASC }]);\r\n const canEdit =\r\n availableActions.filter((a) => a.name === actions.update.name).length > 0;\r\n const canCreate =\r\n availableActions.filter((a) => a.name === actions.create.name).length > 0;\r\n const canDelete =\r\n availableActions.filter((a) => a.name === actions.delete.name).length > 0;\r\n const getActionsForRole = (role) => {\r\n const myActions = [];\r\n const editAction = {\r\n title: \"Edit\",\r\n label: `Edit POS role ${role.name}`,\r\n onClick: (props) => history.push(`/posroles/${props.dataItem.id}`),\r\n };\r\n const deleteAction = {\r\n title: \"Delete\",\r\n label: `Delete pos role ${role.name}`,\r\n onClick: (props) => canDeletePosRole(props.dataItem),\r\n };\r\n if (canEdit) {\r\n myActions.push(editAction);\r\n }\r\n if (canDelete) {\r\n myActions.push(deleteAction);\r\n }\r\n return myActions;\r\n };\r\n const listData = orderBy(\r\n posRoles.map((role) => ({\r\n ...role,\r\n actions: getActionsForRole(role),\r\n })),\r\n sort\r\n );\r\n\r\n const sortChange = (event) => {\r\n // Do not sort by actions column\r\n if(event.sort.length > 0 && event.sort[event.sort.length - 1].field === 'actions') {\r\n return;\r\n }\r\n setSort(event.sort);\r\n };\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n Promise.all([\r\n get(\"/posroles\").catch((error) => {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }),\r\n get(\"/posroles/actions\").catch((error) => {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }),\r\n ]).then((values) => {\r\n const roles = values[0];\r\n if (roles) {\r\n setPosRoles(roles);\r\n }\r\n const actions = values[1];\r\n if (actions) {\r\n setavailableActions(actions);\r\n }\r\n });\r\n }, [dispatch]);\r\n\r\n const canDeletePosRole = async (posRole) => {\r\n try {\r\n const userCount = await get(\r\n `/posroles/${posRole.id}/CanDelete`,\r\n \"Failed to check for pos assignment\"\r\n );\r\n setAssignedUserCount(userCount);\r\n setSelectedRoleToDelete(posRole);\r\n setIsDeleteDialogDialogVisible(true);\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n };\r\n\r\n const onCancel = async () => {\r\n setIsDeleteDialogDialogVisible(false);\r\n };\r\n\r\n const onDelete = async (posRole) => {\r\n try {\r\n await deleteUrl(\r\n `/posroles/${posRole.id}`,\r\n \"Failed to delete the POS role\"\r\n );\r\n const posRolesFiltered = posRoles.filter(\r\n (m) => m.id != posRole.id\r\n );\r\n setPosRoles(posRolesFiltered);\r\n dispatch(\r\n setCurrentPageNotification({\r\n type: successNotificationType,\r\n message: `POS role ${posRole.name} has been deleted.`,\r\n })\r\n );\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n setIsDeleteDialogDialogVisible(false);\r\n };\r\n\r\n const columns = [\r\n {\r\n field: \"name\",\r\n title: \"Name\",\r\n },\r\n {\r\n field: \"actions\",\r\n title: \"Actions\",\r\n type: columnTypes.actions,\r\n },\r\n ];\r\n\r\n return (\r\n \r\n \r\n {isDeleteDialogDialogVisible && (\r\n \r\n )}\r\n
    \r\n
    \r\n

    POS Roles

    \r\n
      \r\n
    • \r\n \r\n Security\r\n \r\n
    • \r\n
    • \r\n POS Roles\r\n
    • \r\n
    \r\n
    \r\n
    \r\n {canCreate && (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Add New POS Role\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\n\r\nexport default function CancelPosRoleDialog(props) {\r\n const { onCancel, onOk } = props;\r\n\r\n return (\r\n \r\n

    \r\n Changes have been made\r\n
    \r\n Exit without saving?\r\n

    \r\n \r\n \r\n Ok\r\n \r\n \r\n Cancel\r\n \r\n \r\n
    \r\n );\r\n}\r\n","import React, { useRef, useState, useEffect } from \"react\";\r\nimport { useHistory, useParams } from \"react-router-dom\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport styles from \"./PosRoleEdit.module.css\";\r\nimport { post, get, put } from \"../../Common/api\";\r\nimport Alert, {\r\n success as successNotificationType,\r\n error as errorNotificationType,\r\n getNotificationForError,\r\n} from \"../Alert\";\r\nimport { defaultErrorMessage } from \"../../Common/UserException\";\r\nimport {\r\n setCurrentPageNotification,\r\n setNextPageNotification,\r\n selectNotification,\r\n} from \"../../redux/notificationSlice\";\r\nimport CancelPosRoleDialog from \"./CancelPosRoleDialog\";\r\n\r\nexport default function PosRoleEdit() {\r\n const { id } = useParams();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const nameInputRef = useRef(null);\r\n const isNewRole = !id;\r\n const [isSaveEnabled, setIsSaveEnabled] = useState(true);\r\n const [hasNameValidationError, setHasNameValidationError] = useState(false);\r\n const [isPosRoleCancelDialogVisible, setIsPosRoleCancelDialogVisible] =\r\n React.useState(false);\r\n\r\n useEffect(() => {\r\n let mounted = true;\r\n if (id) {\r\n get(`/posroles/${id}`)\r\n .catch((error) => {\r\n dispatch(setNextPageNotification(getNotificationForError(error)));\r\n redirectToPosRoleList();\r\n })\r\n .then((savedRole) => {\r\n if (savedRole) {\r\n if (mounted) {\r\n setInitialRole(savedRole);\r\n setRole(savedRole);\r\n }\r\n }\r\n });\r\n } else {\r\n get(`/posroles/template`)\r\n .catch((error) => {\r\n console.error(error);\r\n dispatch(setNextPageNotification(getNotificationForError(error)));\r\n redirectToPosRoleList();\r\n })\r\n .then((template) => {\r\n if (mounted && template) {\r\n template = { ...template, name: \"Untitled\" };\r\n setInitialRole(template);\r\n setRole(template);\r\n }\r\n });\r\n }\r\n return () => mounted = false;\r\n }, [id, dispatch]);\r\n\r\n const [initialRole, setInitialRole] = React.useState({});\r\n const [role, setRole] = React.useState(initialRole);\r\n\r\n const setName = (name) => {\r\n const truncatedName = name.length > 15 ? name.substring(0, 15) : name;\r\n const newRole = { ...role, name: truncatedName };\r\n setRole(newRole);\r\n };\r\n\r\n const doSaveValidation = () => {\r\n let isValid = true;\r\n if ((role.name || \"\").length === 0) {\r\n window.scrollTo(0, 0);\r\n nameInputRef.current.focus();\r\n dispatch(\r\n setCurrentPageNotification({\r\n message: \"You must specify a POS role name.\",\r\n type: errorNotificationType,\r\n })\r\n );\r\n setHasNameValidationError(true);\r\n isValid = false;\r\n }\r\n return isValid;\r\n };\r\n\r\n const saveRole = async () => {\r\n let valid = doSaveValidation();\r\n if (!valid) {\r\n return;\r\n }\r\n const getModulePermissions = (modulePermissions) => {\r\n const result = modulePermissions.map((b) => {\r\n return b;\r\n });\r\n return result;\r\n };\r\n\r\n // TODO: get role dto\r\n const roleDto = {\r\n name: role.name,\r\n modulePermissions: getModulePermissions(role.modulePermissions),\r\n };\r\n try {\r\n setIsSaveEnabled(false);\r\n if (isNewRole) {\r\n await post(\"/posroles\", roleDto);\r\n } else {\r\n await put(`/posroles/${id}`, roleDto);\r\n }\r\n dispatch(\r\n setNextPageNotification({\r\n type: successNotificationType,\r\n message: `POS role \"${role.name}\" saved.`,\r\n })\r\n );\r\n\r\n history.push(\"/posroles\");\r\n } catch (error) {\r\n let message = defaultErrorMessage;\r\n if (error.type === \"UserException\") {\r\n message = error.message;\r\n setHasNameValidationError(true);\r\n }\r\n if (error.type == \"NotFoundException\") {\r\n message = error.message;\r\n }\r\n dispatch(\r\n setCurrentPageNotification({\r\n type: errorNotificationType,\r\n message: message,\r\n })\r\n );\r\n window.scrollTo(0, 0);\r\n nameInputRef.current.focus();\r\n }\r\n setIsSaveEnabled(true);\r\n };\r\n\r\n const cancelRoleChanges = () => {\r\n if (initialRole !== role) {\r\n setIsPosRoleCancelDialogVisible(true);\r\n return;\r\n }\r\n redirectToPosRoleList();\r\n };\r\n\r\n const redirectToPosRoleList = () => {\r\n setIsPosRoleCancelDialogVisible(false);\r\n history.push(\"/posroles\");\r\n };\r\n\r\n const dummyOnChange = (e) => {\r\n /* Dummy on change to prevent warning about\r\n read-only check box. Event will bubble up to containing\r\n element */\r\n }\r\n\r\n const modulePermissions = (role || {}).modulePermissions || [];\r\n const pos = modulePermissions.filter((mp) => mp.module == 25)[0];\r\n const orders = modulePermissions.filter((mp) => mp.module == 2)[0];\r\n // Use -1 as key for so it doesn't conflict with the\r\n // zero-index keys of the main list of modules\r\n const posModuleRow = !pos ? null : (\r\n \r\n {pos.moduleName}\r\n toggleCanView(pos)}\r\n >\r\n { /* We use !! operator to prevent warning about changing an uncontrolled input to be controlled */ }\r\n \r\n \r\n \r\n toggleCanEdit(pos)}\r\n >\r\n { /* We use !! operator to prevent warning about changing an uncontrolled input to be controlled */ }\r\n \r\n \r\n toggleCanDelete(pos)}\r\n >\r\n { /* We use !! operator to prevent warning about changing an uncontrolled input to be controlled */ }\r\n \r\n \r\n toggleCanView(orders)}\r\n >\r\n { /* We use !! operator to prevent warning about changing an uncontrolled input to be controlled */ }\r\n \r\n \r\n toggleCanInsert(orders)}\r\n >\r\n { /* We use !! operator to prevent warning about changing an uncontrolled input to be controlled */ }\r\n \r\n \r\n toggleCanEdit(orders)}\r\n >\r\n { /* We use !! operator to prevent warning about changing an uncontrolled input to be controlled */ }\r\n \r\n \r\n \r\n );\r\n const sortedModules = modulePermissions.filter(\r\n (mp) => mp.moduleName !== \"Unknown\"\r\n );\r\n sortedModules.sort((a, b) => a.sortOrder - b.sortOrder);\r\n const moduleList = sortedModules.map((mp, idx) =>\r\n mp.module == 2 ? null : mp.module == 25 ? (\r\n posModuleRow\r\n ) : (\r\n \r\n {mp.moduleName}\r\n toggleCanView(mp)}\r\n >\r\n { /* We use !! operator to prevent warning about changing an uncontrolled input to be controlled */ }\r\n \r\n \r\n toggleCanInsert(mp)}\r\n >\r\n { /* We use !! operator to prevent warning about changing an uncontrolled input to be controlled */ }\r\n \r\n \r\n toggleCanEdit(mp)}\r\n >\r\n { /* We use !! operator to prevent warning about changing an uncontrolled input to be controlled */ }\r\n \r\n \r\n toggleCanDelete(mp)}\r\n >\r\n { /* We use !! operator to prevent warning about changing an uncontrolled input to be controlled */ }\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n );\r\n\r\n const toggleCanView = (modulePermission) => {\r\n modulePermission.canView = !modulePermission.canView;\r\n updateModulePermission(modulePermission);\r\n };\r\n\r\n const toggleCanInsert = (modulePermission) => {\r\n modulePermission.canInsert = !modulePermission.canInsert;\r\n updateModulePermission(modulePermission);\r\n };\r\n\r\n const toggleCanEdit = (modulePermission) => {\r\n modulePermission.canEdit = !modulePermission.canEdit;\r\n updateModulePermission(modulePermission);\r\n };\r\n\r\n const toggleCanDelete = (modulePermission) => {\r\n modulePermission.canDelete = !modulePermission.canDelete;\r\n updateModulePermission(modulePermission);\r\n };\r\n\r\n const updateModulePermission = (modulePermission) => {\r\n const oldModulePermissions = (role || {}).modulePermissions || [];\r\n const newModulePermissions = [\r\n ...oldModulePermissions.filter(\r\n (mp) => mp.module != modulePermission.module\r\n ),\r\n modulePermission,\r\n ];\r\n const newRole = { ...role, modulePermissions: newModulePermissions };\r\n setRole(newRole);\r\n };\r\n\r\n return (\r\n \r\n \r\n {isPosRoleCancelDialogVisible && (\r\n setIsPosRoleCancelDialogVisible(false)}\r\n onOk={redirectToPosRoleList}\r\n />\r\n )}\r\n\r\n {hasNameValidationError && (\r\n >\r\n )}\r\n setName(event.target.value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {moduleList}\r\n \r\n
    ModuleViewCreateEditDeleteSearchOverrideVoid
    \r\n\r\n
    \r\n
    \r\n {!role ? null : (\r\n {\r\n saveRole();\r\n }}\r\n disabled={!isSaveEnabled}\r\n >\r\n Save\r\n \r\n )}\r\n cancelRoleChanges()}\r\n >\r\n Cancel\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\n\r\nexport default function Confirm(props) {\r\n const { title, description, okDisplay, cancelDisplay, onOk, onCancel, isVisible } = props;\r\n return (\r\n <>\r\n {\r\n isVisible &&\r\n \r\n

    {description}

    \r\n \r\n \r\n \r\n \r\n
    \r\n }\r\n \r\n );\r\n\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { get, deleteUrl, post } from \"../../Common/api\";\r\nimport AdminGrid, { direction } from \"../AdminGrid/AdminGrid\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { columnTypes } from \"../AdminGrid/AdminGrid\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport Alert, { getNotificationForError } from \"../Alert\";\r\nimport { setCurrentPageNotification } from \"../../redux/notificationSlice\";\r\nimport getActions from \"../../Common/actions\";\r\nimport Confirm from \"../Confirm\";\r\nimport { IsActiveFilterCell } from \"../AdminGrid/CustomBooleanFilterCells\";\r\n\r\nexport default function AdminUserList() {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const [adminUserList, setAdminUserList] = useState([]);\r\n const [availableActions, setavailableActions] = useState([]);\r\n const [sort, setSort] = useState([{ field: \"name\", dir: direction.ASC }]);\r\n const [filter, setFilter] = useState([]);\r\n const [isConfirmVisible, setIsConfirmVisible] = useState(false);\r\n const [confirmDescription, setConfirmDescription] = useState('');\r\n const [selectedUser, setSelectedUser] = useState();\r\n \r\n const [isActiveSort, setIsActiveSort] = useState(direction.ASC);\r\n\r\n const actions = getActions();\r\n const canCreate =\r\n availableActions.filter((a) => a.name === actions.create.name).length > 0;\r\n const canEdit = \r\n availableActions.filter((a) => a.name === actions.update.name).length > 0;\r\n const canDelete =\r\n availableActions.filter((a) => a.name === actions.delete.name).length > 0;\r\n const filterOperators = {\r\n text: [\r\n {\r\n text: \"grid.filterStartsWithOperator\",\r\n operator: \"startswith\",\r\n },\r\n ],\r\n };\r\n\r\n const columns = [\r\n {\r\n field: \"name\",\r\n title: \"Name\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"email\",\r\n title: \"Email\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"adminRoleName\",\r\n title: \"Admin Role\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"isActive\",\r\n title: \"Active\",\r\n type: columnTypes.boolean,\r\n filterCell: IsActiveFilterCell,\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"actions\",\r\n title: \"Actions\",\r\n type: columnTypes.actions,\r\n sortable : false,\r\n },\r\n ];\r\n\r\n useEffect(() => {\r\n async function fetchData() {\r\n window.scrollTo(0, 0);\r\n try {\r\n const result = await Promise.all([\r\n get(\"/adminusers\"),\r\n get(\"/adminusers/actions\"),\r\n ]);\r\n\r\n const users = result[0];\r\n const actions = result[1];\r\n if (users) {\r\n setAdminUserList(result[0]);\r\n }\r\n if (actions) {\r\n setavailableActions(actions);\r\n }\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n }\r\n fetchData();\r\n }, [dispatch]);\r\n\r\n const sortChange = (event) => {\r\n let sort = event.sort;\r\n let lastIndex = sort.length - 1;\r\n let currentField = sort[lastIndex].field;\r\n\r\n //We need to invert sort order to show first active users when ASC.\r\n if (currentField === \"isActive\"){\r\n sort[lastIndex].dir = isActiveSort === direction.ASC ? direction.DESC : direction.ASC;\r\n setIsActiveSort(sort[lastIndex].dir);\r\n }\r\n\r\n //If the column clicked is other than name, then we have to order by name asc after the first sorted column\r\n if (currentField !== \"name\"){\r\n sort.push({ field: \"name\", dir: direction.ASC });\r\n }\r\n\r\n setSort(sort);\r\n };\r\n\r\n const resendInvitation = async (user) => {\r\n post(\"/adminusers/resendInvitation\", user)\r\n .then((value) => {\r\n const successMessage = {\r\n message: `Invitation has sent to ${user.email}`,\r\n type: \"success\"\r\n }\r\n dispatch(setCurrentPageNotification(successMessage));\r\n })\r\n .catch((error) => {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n });\r\n };\r\n\r\n const getActionsForUser = (user) => {\r\n const myActions = [];\r\n const editAction = {\r\n title: \"Edit\",\r\n label: `Edit user`,\r\n onClick: (props) => history.push(`/adminusers/${props.dataItem.id}`),\r\n };\r\n const deleteAction = {\r\n title: \"Archive\",\r\n label: `Archive POS User ${user.title}`,\r\n onClick: (props) => showConfirmDialog(props.dataItem),\r\n };\r\n\r\n const resendAction = {\r\n title: \"Resend invitation\",\r\n label: `Resend invitation`,\r\n onClick: (props) => {\r\n const email = props.dataItem ? props.dataItem.email : null;\r\n if(email) {\r\n resendInvitation(props.dataItem);\r\n }\r\n else {\r\n const warningMessage = {\r\n message: \"This user does not have email\",\r\n type: \"warning\"\r\n }\r\n dispatch(setCurrentPageNotification(warningMessage));\r\n }\r\n },\r\n };\r\n\r\n if (canEdit) {\r\n myActions.push(editAction);\r\n }\r\n if (canDelete) {\r\n myActions.push(deleteAction);\r\n }\r\n \r\n myActions.push(resendAction);\r\n\r\n return myActions;\r\n };\r\n\r\n const listData = orderBy(\r\n adminUserList.map((user) => ({\r\n ...user,\r\n actions: getActionsForUser(user),\r\n })),\r\n sort\r\n );\r\n \r\n const showConfirmDialog = (dataItem) =>{\r\n setSelectedUser(dataItem);\r\n setConfirmDescription(getArchiveDescription(dataItem.name, dataItem.email));\r\n setIsConfirmVisible(true);\r\n };\r\n\r\n const confirmDialogOnOk = async () => {\r\n try {\r\n const result = await deleteUrl(`/adminusers/${selectedUser.id}`, \"Failed to delete the admin user\"); \r\n await refreshAdminUserList();\r\n const successMessage = {\r\n message: getArchiveConfirmationMessage(selectedUser.name, selectedUser.email),\r\n type: \"success\"\r\n }\r\n dispatch(setCurrentPageNotification(successMessage));\r\n setIsConfirmVisible(false);\r\n }\r\n catch(error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n }\r\n\r\n const confirmDialogOncancel = () => {\r\n setIsConfirmVisible(false);\r\n }\r\n\r\n const getUserDescription = (userName, email)=>{\r\n const emailParentesis = email ? `(${email})` : '';\r\n return `${userName || ''} ${emailParentesis}`;\r\n }\r\n const getArchiveDescription = (userName, email)=>{\r\n return `Are you sure you want to archive the admin user for ${getUserDescription(userName, email)}?`;\r\n }\r\n const getArchiveConfirmationMessage = (userName, email)=>{\r\n return `Admin user ${getUserDescription(userName, email)} has been archived.`;\r\n }\r\n const refreshAdminUserList = async ()=>{\r\n const userList = await get(\"/adminusers\");\r\n setAdminUserList(userList);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n
    \r\n

    Admin Users

    \r\n
      \r\n
    • \r\n \r\n Security\r\n \r\n
    • \r\n
    • \r\n Admin Users\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {canCreate && (\r\n \r\n \r\n Add New Admin User\r\n \r\n \r\n )}\r\n \r\n \r\n Show Archived Users\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\n\r\nexport default function ArchivePosUserDialog(props) {\r\n const { posUser, onDelete, onCancel } = props;\r\n \r\n return (\r\n \r\n {\r\n

    \r\n Are you sure you want to archive the POS user {posUser.name} with username \"{posUser.username}\"?\r\n

    \r\n }\r\n \r\n {(\r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n );\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { get } from \"../../Common/api\";\r\nimport AdminGrid, { direction } from \"../AdminGrid/AdminGrid\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { columnTypes } from \"../AdminGrid/AdminGrid\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport Alert, {\r\n getFriendlyErrorMessage,\r\n getNotificationForError,\r\n success as successNotificationType,\r\n error as errorNotificationType,\r\n} from \"../Alert\";\r\nimport { setCurrentPageNotification } from \"../../redux/notificationSlice\";\r\nimport getActions from \"../../Common/actions\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { deleteUrl } from \"../../Common/api\";\r\nimport ArchivePosUserDialog from \"./ArchivePosUserDialog\";\r\n\r\nexport default function PosUserList() {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const [posUserList, setPosUserList] = useState([]);\r\n const [availableActions, setAvailableActions] = useState([]);\r\n const [selectedPosUserToArchive, setSelectedPosUserToArchive] = useState({});\r\n const [isArchiveDialogVisible, setIsArchiveDialogVisible] =\r\n useState(false);\r\n\r\n const direction = {\r\n ASC: \"asc\",\r\n DESC: \"desc\",\r\n };\r\n const filterOperators = {\r\n text: [\r\n {\r\n text: \"grid.filterStartsWithOperator\",\r\n operator: \"startswith\",\r\n },\r\n ],\r\n };\r\n\r\n const [filter, setFilter] = useState();\r\n const [sort, setSort] = useState([{ field: \"name\", dir: direction.ASC }]);\r\n const getActionsForPOSUser = (user) => {\r\n const myActions = [];\r\n const editAction = {\r\n title: \"Edit\",\r\n label: `Edit POS User ${user.title}`,\r\n onClick: (props) => history.push(`/posusers/${props.dataItem.id}`),\r\n };\r\n \r\n const deleteAction = {\r\n title: \"Archive\",\r\n label: `Archive POS User ${user.title}`,\r\n onClick: (props) => canPOSUserArchive(props.dataItem),\r\n };\r\n \r\n if (canEdit) {\r\n myActions.push(editAction);\r\n }\r\n \r\n if (canDelete) {\r\n myActions.push(deleteAction);\r\n }\r\n \r\n return myActions;\r\n };\r\n \r\n const actions = getActions();\r\n const canCreate =\r\n availableActions.filter((a) => a.name === actions.create.name).length > 0;\r\n\r\n const canDelete =\r\n availableActions.filter((a) => a.name === actions.delete.name).length > 0;\r\n\r\n const canEdit =\r\n availableActions.filter((a) => a.name === actions.update.name).length > 0;\r\n\r\n useEffect(() => {\r\n async function fetchData() {\r\n window.scrollTo(0, 0);\r\n try {\r\n const result = await Promise.all([\r\n get(\"/posusers?archived=false\"),\r\n get(\"/posusers/actions\"),\r\n ]);\r\n\r\n const users = result[0];\r\n const actions = result[1];\r\n if (users) {\r\n setPosUserList(result[0]);\r\n }\r\n if (actions) {\r\n setAvailableActions(actions);\r\n }\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n }\r\n fetchData();\r\n }, [dispatch]);\r\n\r\n const sortChange = (event) => {\r\n let sort = event.sort;\r\n let lastIndex = sort.length - 1;\r\n let currentField = sort[lastIndex].field;\r\n\r\n // Do not sort by actions field\r\n if (currentField === 'actions') {\r\n return;\r\n }\r\n\r\n //If the column clicked is other than name, then we have to order by name asc after the first sorted column\r\n if (currentField !== \"name\"){\r\n sort.push({ field: \"name\", dir: direction.ASC });\r\n }\r\n\r\n setSort(sort);\r\n }\r\n\r\n const listData = orderBy(\r\n posUserList.map((user) => ({\r\n ...user,\r\n actions: getActionsForPOSUser(user),\r\n })),\r\n sort\r\n );\r\n\r\n const canPOSUserArchive = async (posUser) => {\r\n setSelectedPosUserToArchive(posUser);\r\n setIsArchiveDialogVisible(true);\r\n };\r\n \r\n const onCancel = async () => {\r\n setIsArchiveDialogVisible(false);\r\n };\r\n\r\n const onDelete = async (posUser) => {\r\n try {\r\n await deleteUrl(\r\n `/posusers/${posUser.id}`,\r\n \"Failed to archive the POS user\"\r\n );\r\n const posUsersFiltered = posUserList.filter(\r\n (m) => m.id != posUser.id\r\n ); \r\n setPosUserList(posUsersFiltered);\r\n dispatch(\r\n setCurrentPageNotification({\r\n type: successNotificationType,\r\n message: `POS user ${posUser.name} has been archived.`,\r\n })\r\n );\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n setIsArchiveDialogVisible(false);\r\n };\r\n\r\n const columns = [\r\n {\r\n field: \"name\",\r\n title: \"Name\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"username\",\r\n title: \"Username\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"posRoleName\",\r\n title: \"POS Role\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"actions\",\r\n title: \"Actions\",\r\n type: columnTypes.actions,\r\n },\r\n ];\r\n return (\r\n \r\n \r\n {isArchiveDialogVisible && (\r\n \r\n )}\r\n
    \r\n
    \r\n

    POS Users

    \r\n
      \r\n
    • \r\n \r\n Security\r\n \r\n
    • \r\n
    • \r\n POS Users\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {canCreate && (\r\n \r\n \r\n Add New POS User\r\n \r\n \r\n )}\r\n \r\n \r\n Show Archived Users \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport AdminGrid, { direction } from \"../AdminGrid/AdminGrid\";\r\nimport { columnTypes } from \"../AdminGrid/AdminGrid\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport { get } from \"../../Common/api\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport Alert, { getNotificationForError } from \"../Alert\";\r\nimport { setCurrentPageNotification } from \"../../redux/notificationSlice\";\r\nimport { IsAdultFilterCell } from \"../AdminGrid/CustomBooleanFilterCells\";\r\n\r\nexport default function CustomerSearchPopup(props) {\r\n const {\r\n selectedCustomerIds = [-1],\r\n toggleDialog,\r\n customerSelectionCallback,\r\n isMultiSelectionEnabled = false,\r\n } = props;\r\n const [customers, setCustomers] = useState([]);\r\n const dispatch = useDispatch();\r\n const selectionColumnType = isMultiSelectionEnabled\r\n ? columnTypes.checkbox\r\n : columnTypes.radioButton;\r\n const [sort, setSort] = useState([\r\n { field: \"lastName\", dir: direction.ASC },\r\n ]);\r\n const [filter, setFilter] = useState([]);\r\n const [isAdultSort, setIsAdultSort] = useState(direction.ASC);\r\n\r\n const filterOperators = {\r\n text: [\r\n {\r\n text: \"grid.filterStartsWithOperator\",\r\n operator: \"startswith\",\r\n },\r\n ],\r\n };\r\n\r\n\r\n const onCustomerSelectionChange = (props) => {\r\n const selectedCustId = props.dataItem.id;\r\n const value = !props.dataItem.selectedCustomer.value;\r\n\r\n if (!isMultiSelectionEnabled) {\r\n const newCustomers = customers.map((cust) => ({\r\n ...cust,\r\n selectedCustomer: cust.id === selectedCustId ? true : false,\r\n }));\r\n\r\n setCustomers(newCustomers);\r\n } else {\r\n const newCustomers = customers.map((cust) =>\r\n cust.id === selectedCustId\r\n ? {\r\n ...cust,\r\n selectedCustomer: value,\r\n }\r\n : cust\r\n );\r\n setCustomers(newCustomers);\r\n }\r\n };\r\n\r\n const onOk = () => {\r\n const selectedCustomers = customers.filter((c) => c.selectedCustomer);\r\n customerSelectionCallback(selectedCustomers);\r\n toggleDialog();\r\n };\r\n\r\n const sortChange = (event) => {\r\n let sort = event.sort;\r\n let lastIndex = sort.length - 1;\r\n let currentField = sort[lastIndex].field;\r\n\r\n //We need to invert sort order to show first active users when ASC.\r\n if (currentField === \"isAdult\"){\r\n sort[lastIndex].dir = isAdultSort === direction.ASC ? direction.DESC : direction.ASC;\r\n setIsAdultSort(sort[lastIndex].dir);\r\n }\r\n\r\n setSort(sort);\r\n };\r\n\r\n const searchChange = (event) => {\r\n let newFilter = {\r\n logic: \"or\",\r\n filters: [\r\n {\r\n field: \"userID\",\r\n operator: \"startswith\",\r\n value: event.target.value,\r\n },\r\n {\r\n field: \"lastName\",\r\n operator: \"startswith\",\r\n value: event.target.value,\r\n },\r\n {\r\n field: \"firstName\",\r\n operator: \"startswith\",\r\n value: event.target.value,\r\n },\r\n {\r\n field: \"middle\",\r\n operator: \"startswith\",\r\n value: event.target.value,\r\n },\r\n {\r\n field: \"grade\",\r\n operator: \"startswith\",\r\n value: event.target.value,\r\n },\r\n {\r\n field: \"homeroom\",\r\n operator: \"startswith\",\r\n value: event.target.value,\r\n },\r\n {\r\n field: \"school\",\r\n operator: \"startswith\",\r\n value: event.target.value,\r\n }\r\n ],\r\n };\r\n \r\n setFilter(event.target.value == \"\"? [] : newFilter);\r\n };\r\n\r\n const columns = [\r\n {\r\n field: \"selectedCustomer\",\r\n title: \" \",\r\n type: selectionColumnType,\r\n ariaLabelledByField: \"userID\",\r\n isFilterable: false,\r\n sortable : false,\r\n onChange: (event) => {},\r\n },\r\n {\r\n field: \"userID\",\r\n title: \"User ID\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"lastName\",\r\n title: \"Last Name\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"firstName\",\r\n title: \"First Name\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"middle\",\r\n title: \"Mid. Initial\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"isAdult\",\r\n title: \"Adult\",\r\n type: columnTypes.boolean,\r\n filterCell: IsAdultFilterCell,\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"grade\",\r\n title: \"Grade\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"homeroom\",\r\n title: \"Homeroom\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"school\",\r\n title: \"School\",\r\n isFilterable: true,\r\n },\r\n ];\r\n\r\n useEffect(() => {\r\n let mounted = true;\r\n async function fetchData() {\r\n try {\r\n const result = await get(\"/customers\");\r\n if (result) {\r\n if (!mounted) return;\r\n setCustomers(\r\n result.map((cust) => ({\r\n ...cust,\r\n isAdult: !cust.isStudent,\r\n selectedCustomer:\r\n selectedCustomerIds.indexOf(cust.id) >= 0 ? true : false,\r\n }))\r\n );\r\n }\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n }\r\n fetchData();\r\n return () => (mounted = false);\r\n }, [selectedCustomerIds, dispatch]);\r\n\r\n const listData = orderBy(\r\n customers.map((c) => ({\r\n ...c,\r\n grade: c.grade?.name,\r\n homeroom: c.homeroom?.name,\r\n school: c.school?.schoolName,\r\n actions: [],\r\n selectedCustomer: {\r\n value: c.selectedCustomer,\r\n onChange: onCustomerSelectionChange,\r\n },\r\n })),\r\n sort\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n searchChange(event)\r\n }\r\n />\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport styles from \"./AdminUserEdit.module.css\";\r\nimport Select from \"react-select\";\r\nimport { Link, useHistory, useParams } from \"react-router-dom\";\r\nimport CustomerSearchPopup from \"../Customers/CustomerSearchPopup\";\r\nimport { get, post, put } from \"../../Common/api\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport Alert, {\r\n success as successNotificationType,\r\n error as errorNotificationType,\r\n getNotificationForError,\r\n} from \"../Alert\";\r\nimport {\r\n setCurrentPageNotification,\r\n setNextPageNotification,\r\n} from \"../../redux/notificationSlice\";\r\nimport { Error } from \"@progress/kendo-react-labels\";\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\n\r\nexport default function AdminUserEdit() {\r\n const { id } = useParams();\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const [isMultiSelectionEnabled] = useState(false);\r\n const [readOnlyEmail, setReadonlyEmail] = useState(false);\r\n const [customer, setCustomer] = useState({ id: -1, name: \"\", email: \"\" });\r\n const [adminRoles, setAdminRoles] = useState([]);\r\n const [visible, setVisible] = useState(false);\r\n const [hasFormErrors, setHasFormErrors] = useState(false);\r\n const [customerValidationMessage, setCustomerValidationMessage] =\r\n useState(\"\");\r\n const [emailValidationMessage, setEmailValidationMessage] = useState(\"\");\r\n const [roleValidationMessage, setRoleValidationMessage] = useState(\"\");\r\n const [errorFlashClassName, setErrorFlashClassName] = useState(\"\");\r\n const [errorBorderFlashClassName, setErrorBorderFlashClassName] =\r\n useState(\"\");\r\n const [email, setEmail] = useState(\"\");\r\n const [selectedAdminRole, setSelectedAdminRole] = useState(null);\r\n\r\n const firstTimeValidation = useRef(true);\r\n\r\n const toggleDialog = () => {\r\n if(id) return;\r\n setVisible(!visible);\r\n };\r\n\r\n const redirectToAdminUserList = () => {\r\n history.push(\"/adminusers\");\r\n };\r\n\r\n const onRoleSelectionChange = (newSelectedRole) => {\r\n setSelectedAdminRole(newSelectedRole);\r\n };\r\n\r\n const customerSelectionCallback = (selectedCustomers) => {\r\n if (selectedCustomers && selectedCustomers.length > 0) {\r\n setCustomer({\r\n ...customer,\r\n id: selectedCustomers[0].id,\r\n name: `${selectedCustomers[0].lastName}, ${\r\n selectedCustomers[0].firstName\r\n } ${selectedCustomers[0].middle || \"\"}`,\r\n });\r\n }\r\n };\r\n\r\n const isValidEmail = (email)=>{\r\n let result = !!email && email.trim() !== '';\r\n return result;\r\n };\r\n\r\n useEffect(async () => {\r\n\r\n window.scrollTo(0, 0);\r\n\r\n async function fetchData() {\r\n try {\r\n const result = await get(\"/adminroles\");\r\n const options = result.map((i) => {\r\n return {\r\n value: i.id,\r\n label: i.name,\r\n };\r\n });\r\n return options;\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n }\r\n\r\n if (id) {\r\n setReadonlyEmail(true);\r\n Promise.all([\r\n get(`/adminusers/${id}`).catch((error) => {\r\n dispatch(setNextPageNotification(getNotificationForError(error)));\r\n redirectToAdminUserList();\r\n }),\r\n fetchData()\r\n ]).then(values => {\r\n const options = values[1];\r\n setAdminRoles(options);\r\n const savedUser = values[0];\r\n if(savedUser) {\r\n setCustomer({\r\n ...customer,\r\n id: savedUser.customerId,\r\n name: savedUser.name\r\n });\r\n setEmail(savedUser.identityServiceUsername);\r\n setReadonlyEmail(isValidEmail(savedUser.identityServiceUsername));\r\n setSelectedAdminRole(options.find((option)=> option.value === savedUser.adminRoleId));\r\n }\r\n });\r\n }\r\n else{\r\n var options = await fetchData();\r\n setAdminRoles(options);\r\n }\r\n }, [id, dispatch]);\r\n\r\n const updateUser = async() => {\r\n // User without email\r\n let user = {\r\n Id: id,\r\n userRoleId: selectedAdminRole.value,\r\n customerId: customer.id\r\n };\r\n\r\n // Only submit email if it is being updated\r\n if (!readOnlyEmail && email) {\r\n user = { email, ...user };\r\n }\r\n\r\n try {\r\n await put(`/adminusers`, user);\r\n dispatch(\r\n setNextPageNotification({\r\n type: successNotificationType,\r\n message: `Admin user updated.`,\r\n })\r\n );\r\n history.push(\"/adminusers\");\r\n } catch (errorObj) {\r\n if (errorObj && errorObj.data && errorObj.data.type === \"validation\") {\r\n const errors = errorObj.data.errors;\r\n if (errors) {\r\n resetErrors();\r\n \r\n if (errors[\"role\"]) {\r\n setRoleValidationMessage(errors[\"role\"]);\r\n }\r\n if (errors[\"email\"]) {\r\n setEmailValidationMessage(errors[\"email\"]);\r\n } \r\n flashErrors();\r\n setHasFormErrors(true);\r\n }\r\n } else {\r\n dispatch(setCurrentPageNotification(getNotificationForError(errorObj)));\r\n }\r\n }\r\n\r\n };\r\n\r\n const saveUser = async (e) => {\r\n const isValid = validateForm();\r\n if (!isValid) {\r\n return;\r\n }\r\n\r\n if(id)\r\n {\r\n updateUser();\r\n }\r\n else{\r\n const user = {\r\n customerId: customer.id,\r\n username: email,\r\n identityServiceUsername: email,\r\n userRoleId: selectedAdminRole.value,\r\n };\r\n try {\r\n await post(\"/adminusers\", user);\r\n dispatch(\r\n setNextPageNotification({\r\n type: successNotificationType,\r\n message: `Admin user saved.`,\r\n })\r\n );\r\n history.push(\"/adminusers\");\r\n } catch (errorObj) {\r\n if (errorObj && errorObj.data && errorObj.data.type === \"validation\") {\r\n const errors = errorObj.data.errors;\r\n if (errors) {\r\n resetErrors();\r\n if (errors[\"customer\"]) {\r\n setCustomerValidationMessage(errors[\"customer\"]);\r\n }\r\n if (errors[\"email\"]) {\r\n setEmailValidationMessage(errors[\"email\"]);\r\n }\r\n if (errors[\"role\"]) {\r\n setRoleValidationMessage(errors[\"role\"]);\r\n }\r\n flashErrors();\r\n setHasFormErrors(true);\r\n }\r\n } else {\r\n dispatch(setCurrentPageNotification(getNotificationForError(errorObj)));\r\n }\r\n }\r\n }\r\n };\r\n\r\n const validateForm = () => {\r\n let isValid = true;\r\n resetErrors();\r\n if (customer.name == null || customer.name === \"\") {\r\n setCustomerValidationMessage(\"Customer is required\");\r\n isValid = false;\r\n }\r\n if(id === undefined)\r\n {\r\n if (email == null || email === \"\") {\r\n setEmailValidationMessage(\"Login Email is required\");\r\n isValid = false;\r\n } else if (!(email.includes(\"@\") && email.includes(\".\"))) {\r\n setEmailValidationMessage(`Email '${email}' is invalid.`);\r\n isValid = false;\r\n }\r\n }\r\n if (!selectedAdminRole) {\r\n setRoleValidationMessage(\"Admin Role is required\");\r\n isValid = false;\r\n }\r\n setHasFormErrors(!isValid);\r\n flashErrors();\r\n return isValid;\r\n };\r\n\r\n const resetErrors = () => {\r\n setCustomerValidationMessage(\"\");\r\n setEmailValidationMessage(\"\");\r\n setRoleValidationMessage(\"\");\r\n };\r\n\r\n const flashErrors = () => {\r\n if (hasFormErrors && !firstTimeValidation.current) {\r\n setErrorFlashClassName(`${styles.flash_error_msg}`);\r\n setErrorBorderFlashClassName(`${styles.flash_error_border}`);\r\n setTimeout(() => {\r\n setErrorFlashClassName(\"\");\r\n setErrorBorderFlashClassName(\"\");\r\n }, 1000);\r\n }\r\n firstTimeValidation.current = false;\r\n };\r\n\r\n return (\r\n \r\n \r\n {visible && (\r\n \r\n )}\r\n
    \r\n
    \r\n {hasFormErrors && (\r\n
    \r\n {\"One or more fields are invalid\"}\r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {customerValidationMessage && (\r\n \r\n {customerValidationMessage}\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n setEmail(event.target.value)}\r\n >\r\n {emailValidationMessage && (\r\n \r\n {emailValidationMessage}\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n *\r\n
    \r\n
    \r\n \r\n {roleValidationMessage && (\r\n \r\n {roleValidationMessage}\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport styles from \"./PasswordBox.module.css\";\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nexport default function PasswordBox(props) {\r\n let {\r\n id,\r\n password,\r\n setPassword,\r\n isValid,\r\n placeholder,\r\n dataTestId = \"test-password\",\r\n className,\r\n disabled,\r\n maxLength\r\n } = props;\r\n const [passwordType, setPasswordType] = useState(\"password\");\r\n const [localPassword, setLocalPassword] = useState(password);\r\n\r\n const onChange = (newPassword) => {\r\n setLocalPassword(newPassword);\r\n setPassword(newPassword);\r\n };\r\n\r\n const togglePassword = () => {\r\n if (passwordType === \"password\") {\r\n setPasswordType(\"text\");\r\n return;\r\n }\r\n setPasswordType(\"password\");\r\n };\r\n\r\n return (\r\n
    \r\n onChange(event.target.value)}\r\n data-testid={dataTestId}\r\n disabled={disabled}\r\n maxLength={maxLength}\r\n >\r\n \r\n {passwordType === \"password\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport styles from \"./PosUserEdit.module.css\";\r\nimport Select from \"react-select\";\r\nimport { useHistory, Link, useParams } from \"react-router-dom\";\r\nimport CustomerSearchPopup from \"../Customers/CustomerSearchPopup\";\r\nimport { get, post, put } from \"../../Common/api\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport Alert, {\r\n success as successNotificationType,\r\n getNotificationForError,\r\n} from \"../Alert\";\r\nimport {\r\n setNextPageNotification,\r\n setCurrentPageNotification,\r\n} from \"../../redux/notificationSlice\";\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nimport { Error } from \"@progress/kendo-react-labels\";\r\nimport PasswordBox from \"../../Common/PasswordBox\";\r\n\r\nexport default function PosUserEdit() {\r\n const { id } = useParams();\r\n const isEdit = !isNaN(id);\r\n const dispatch = useDispatch();\r\n const [isMultiSelectionEnabled] = useState(false);\r\n const [customer, setCustomer] = useState({\r\n id: -1,\r\n name: \"\",\r\n });\r\n const [loginName, setLoginName] = React.useState(\"\");\r\n const [password, setPassword] = React.useState(\"\");\r\n const [confirmPassword, setConfirmPassword] = React.useState(\"\");\r\n const [posRoles, setPosRoles] = useState([]);\r\n const [visible, setVisible] = useState(false);\r\n const [selectedRole, setSelectedRole] = useState();\r\n const history = useHistory();\r\n const [hasFormErrors, setHasFormErrors] = useState(false);\r\n const [customerValidationMessage, setCustomerValidationMessage] =\r\n useState(\"\");\r\n const [roleValidationMessage, setRoleValidationMessage] = useState(\"\");\r\n const [usernameValidationMessage, setUsernameValidationMessage] =\r\n useState(\"\");\r\n const [passwordValidationMessage, setPasswordValidationMessage] =\r\n useState(\"\");\r\n const [\r\n confirmPasswordValidationMessage,\r\n setConfirmPasswordValidationMessage,\r\n ] = useState(\"\");\r\n const [errorFlashClassName, setErrorFlashClassName] = useState(\"\");\r\n const [errorBorderFlashClassName, setErrorBorderFlashClassName] =\r\n useState(\"\");\r\n const [isChangePasswordChecked, setIsChangePasswordChecked] = useState(false);\r\n const arePasswordFieldsDisabled = isEdit && !isChangePasswordChecked;\r\n\r\n const firstTimeValidation = useRef(true);\r\n\r\n const toggleDialog = () => {\r\n setVisible(!visible);\r\n };\r\n\r\n const onRoleSelectionChange = (selectedOption) => {\r\n setSelectedRole(selectedOption);\r\n };\r\n\r\n const customerSelectionCallback = (selectedCustomers) => {\r\n if (selectedCustomers && selectedCustomers.length > 0) {\r\n setCustomer({\r\n ...customer,\r\n id: selectedCustomers[0].id,\r\n name: `${selectedCustomers[0].lastName}, ${\r\n selectedCustomers[0].firstName\r\n } ${selectedCustomers[0].middle || \"\"}`,\r\n });\r\n }\r\n };\r\n\r\n const loadData = async () => {\r\n const allTasks = [ get(\"/posroles\") ];\r\n if (isEdit) {\r\n allTasks.push(get(`/posusers/${id}`));\r\n }\r\n const results = await Promise.all(allTasks);\r\n return results;\r\n }\r\n\r\n useEffect(() => {\r\n async function fetchData() {\r\n try {\r\n const [rolesData, userData] = await loadData();\r\n const options = rolesData.map((i) => {\r\n return {\r\n value: i.id,\r\n label: i.name,\r\n };\r\n });\r\n setPosRoles(options);\r\n if (userData) {\r\n const role = options.find(o => o.value === userData.posRoleId);\r\n setSelectedRole(role);\r\n setCustomer({\r\n id: userData.customerId,\r\n name: userData.name\r\n });\r\n setLoginName(userData.username);\r\n }\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n }\r\n fetchData();\r\n }, [dispatch]);\r\n\r\n const onSave = async () => {\r\n const isValid = validateForm();\r\n if (!isValid) {\r\n return;\r\n }\r\n try {\r\n const posUser = {\r\n customerId: customer.id,\r\n username: loginName,\r\n password: arePasswordFieldsDisabled ? undefined : password,\r\n posRoleId: selectedRole.value,\r\n };\r\n if (isEdit) {\r\n await put(`/posusers/${id}`, posUser);\r\n } else {\r\n await post(\"/posusers\", posUser);\r\n }\r\n dispatch(\r\n setNextPageNotification({\r\n type: successNotificationType,\r\n message: `POS user saved`,\r\n })\r\n );\r\n\r\n history.push(\"/posusers\");\r\n } catch (errorObj) {\r\n if (errorObj && errorObj.data && errorObj.data.type === \"validation\") {\r\n const errors = errorObj.data.errors;\r\n if (errors) {\r\n resetErrors();\r\n if (errors[\"customer\"]) {\r\n setCustomerValidationMessage(errors[\"customer\"]);\r\n }\r\n if (errors[\"role\"]) {\r\n setRoleValidationMessage(errors[\"role\"]);\r\n }\r\n if (errors[\"username\"]) {\r\n setUsernameValidationMessage(errors[\"username\"]);\r\n }\r\n if (errors[\"password\"]) {\r\n setPasswordValidationMessage(errors[\"password\"]);\r\n }\r\n\r\n flashErrors();\r\n setHasFormErrors(true);\r\n }\r\n } else {\r\n dispatch(setCurrentPageNotification(getNotificationForError(errorObj)));\r\n }\r\n }\r\n };\r\n\r\n const validateForm = () => {\r\n let isValid = true;\r\n resetErrors();\r\n if (customer.name == null || customer.name === \"\") {\r\n setCustomerValidationMessage(\"Customer is required\");\r\n isValid = false;\r\n }\r\n if (!selectedRole) {\r\n setRoleValidationMessage(\"POS Role is required\");\r\n isValid = false;\r\n }\r\n if (!loginName) {\r\n setUsernameValidationMessage(\"User Name is required\");\r\n isValid = false;\r\n }\r\n if (!arePasswordFieldsDisabled) {\r\n if (!password) {\r\n setPasswordValidationMessage(\"Password is required\");\r\n isValid = false;\r\n }\r\n if (!confirmPassword) {\r\n setConfirmPasswordValidationMessage(\"Confirm Password is required\");\r\n isValid = false;\r\n }\r\n if (password !== confirmPassword) {\r\n setConfirmPasswordValidationMessage(\"Password fields must match\");\r\n isValid = false;\r\n }\r\n }\r\n\r\n setHasFormErrors(!isValid);\r\n flashErrors();\r\n return isValid;\r\n };\r\n\r\n const resetErrors = () => {\r\n setCustomerValidationMessage(\"\");\r\n setRoleValidationMessage(\"\");\r\n setUsernameValidationMessage(\"\");\r\n setPasswordValidationMessage(\"\");\r\n setConfirmPasswordValidationMessage(\"\");\r\n };\r\n\r\n const flashErrors = () => {\r\n if (hasFormErrors && !firstTimeValidation.current) {\r\n setErrorFlashClassName(`${styles.flash_error_msg}`);\r\n setErrorBorderFlashClassName(`${styles.flash_error_border}`);\r\n setTimeout(() => {\r\n setErrorFlashClassName(\"\");\r\n setErrorBorderFlashClassName(\"\");\r\n }, 1000);\r\n }\r\n firstTimeValidation.current = false;\r\n };\r\n\r\n const clickCustomer = () => {\r\n if (!isEdit) {\r\n toggleDialog();\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {visible && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n {hasFormErrors && (\r\n
    \r\n {\"One or more fields are invalid\"}\r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {customerValidationMessage && (\r\n \r\n {customerValidationMessage}\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {roleValidationMessage && (\r\n \r\n {roleValidationMessage}\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n setLoginName(event.target.value)}\r\n maxLength={15}\r\n >\r\n {usernameValidationMessage && (\r\n \r\n {usernameValidationMessage}\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n { isEdit \r\n ?
    \r\n
    \r\n
    \r\n \r\n
    \r\n setIsChangePasswordChecked(!isChangePasswordChecked) }\r\n >\r\n
    \r\n
    \r\n : null }\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {passwordValidationMessage && (\r\n \r\n {passwordValidationMessage}\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {confirmPasswordValidationMessage && (\r\n \r\n {confirmPasswordValidationMessage}\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { get, post } from \"../../Common/api\";\r\nimport AdminGrid, { direction } from \"../AdminGrid/AdminGrid\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { columnTypes } from \"../AdminGrid/AdminGrid\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport Alert, {\r\n getNotificationForError,\r\n success as successNotificationType\r\n} from \"../Alert\";\r\nimport { setCurrentPageNotification } from \"../../redux/notificationSlice\";\r\nimport getActions from \"../../Common/actions\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nexport default function ArchivedPosUserList() {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const [posUserList, setPosUserList] = useState([]);\r\n const [availableActions, setAvailableActions] = useState([]);\r\n \r\n const [sort, setSort] = useState([{ field: \"name\", dir: direction.ASC }]);\r\n const [filter, setFilter] = useState();\r\n const filterOperators = {\r\n text: [\r\n {\r\n text: \"grid.filterStartsWithOperator\",\r\n operator: \"startswith\",\r\n },\r\n ],\r\n };\r\n const actions = getActions();\r\n const canDelete =\r\n availableActions.filter((a) => a.name === actions.delete.name).length > 0;\r\n const unarchiveUser = async (user) => {\r\n // Back up list\r\n const originalList = [...posUserList];\r\n try {\r\n // remove user from list\r\n setPosUserList(posUserList.filter(u => u.id !== user.id));\r\n // restore user\r\n await post(`/posusers/${user.id}/restore`);\r\n // Display success message after response from server\r\n dispatch(\r\n setCurrentPageNotification({\r\n type: successNotificationType,\r\n message: `POS user restored`,\r\n })\r\n );\r\n } catch (error) {\r\n // If there was an error, restore the original list\r\n setPosUserList(originalList);\r\n // Display error message\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n };\r\n\r\n const getActionsForPOSUser = (user) => {\r\n const myActions = [];\r\n const deleteAction = {\r\n title: \"Unarchive\",\r\n label: `Unarchive POS User ${user.title}`,\r\n onClick: (props) => unarchiveUser(props.dataItem),\r\n };\r\n if (canDelete) {\r\n myActions.push(deleteAction);\r\n }\r\n return myActions;\r\n };\r\n useEffect(() => {\r\n async function fetchData() {\r\n window.scrollTo(0, 0);\r\n try {\r\n const result = await Promise.all([\r\n get(\"/posusers?archived=true\"),\r\n get(\"/posusers/actions\"),\r\n ]);\r\n\r\n const users = result[0];\r\n const actions = result[1];\r\n if (users) {\r\n setPosUserList(result[0]);\r\n }\r\n if (actions) {\r\n setAvailableActions(actions);\r\n }\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n }\r\n fetchData();\r\n }, [dispatch]);\r\n\r\n const sortChange = (event) => {\r\n let sort = event.sort;\r\n let lastIndex = sort.length - 1;\r\n let currentField = sort[lastIndex].field;\r\n\r\n // Do not sort by actions field\r\n if (currentField === 'actions') {\r\n return;\r\n }\r\n\r\n //If the column clicked is other than name, then we have to order by name asc after the first sorted column\r\n if (currentField !== \"name\"){\r\n sort.push({ field: \"name\", dir: direction.ASC });\r\n }\r\n\r\n setSort(sort);\r\n }\r\n\r\n const listData = orderBy(\r\n posUserList.map((user) => ({\r\n ...user,\r\n actions: getActionsForPOSUser(user),\r\n })),\r\n sort\r\n );\r\n const columns = [\r\n {\r\n field: \"name\",\r\n title: \"Name\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"username\",\r\n title: \"Username\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"posRoleName\",\r\n title: \"POS Role\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"actions\",\r\n title: \"Actions\",\r\n type: columnTypes.actions,\r\n },\r\n ];\r\n return (\r\n \r\n \r\n\r\n
    \r\n
    \r\n

    POS Users

    \r\n
      \r\n
    • \r\n \r\n Security\r\n \r\n
    • \r\n
    • \r\n POS Users\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Exit Archive View\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { get, deleteUrl, post } from \"../../Common/api\";\r\nimport AdminGrid, { direction } from \"../AdminGrid/AdminGrid\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { columnTypes } from \"../AdminGrid/AdminGrid\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport Alert, { getNotificationForError, success as successNotificationType } from \"../Alert\";\r\nimport { setCurrentPageNotification } from \"../../redux/notificationSlice\";\r\nimport getActions from \"../../Common/actions\";\r\nimport { IsActiveFilterCell } from \"../AdminGrid/CustomBooleanFilterCells\";\r\n\r\nexport default function ArchivedAdminUserList() {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const [adminUserList, setAdminUserList] = useState([]);\r\n const [availableActions, setavailableActions] = useState([]);\r\n const [sort, setSort] = useState([{ field: \"name\", dir: direction.ASC }]);\r\n const [filter, setFilter] = useState([]);\r\n \r\n const [isActiveSort, setIsActiveSort] = useState(direction.ASC);\r\n\r\n const actions = getActions();\r\n const canDelete =\r\n availableActions.filter((a) => a.name === actions.delete.name).length > 0;\r\n const filterOperators = {\r\n text: [\r\n {\r\n text: \"grid.filterStartsWithOperator\",\r\n operator: \"startswith\",\r\n },\r\n ],\r\n };\r\n\r\n const columns = [\r\n {\r\n field: \"name\",\r\n title: \"Name\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"email\",\r\n title: \"Email\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"adminRoleName\",\r\n title: \"Admin Role\",\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"isActive\",\r\n title: \"Active\",\r\n type: columnTypes.boolean,\r\n filterCell: IsActiveFilterCell,\r\n isFilterable: true,\r\n },\r\n {\r\n field: \"actions\",\r\n title: \"Actions\",\r\n type: columnTypes.actions,\r\n sortable : false,\r\n },\r\n ];\r\n\r\n useEffect(() => {\r\n async function fetchData() {\r\n window.scrollTo(0, 0);\r\n try {\r\n const result = await Promise.all([\r\n get(\"/adminusers?archived=true\"),\r\n get(\"/adminusers/actions\"),\r\n ]);\r\n\r\n const users = result[0];\r\n const actions = result[1];\r\n if (users) {\r\n setAdminUserList(result[0]);\r\n }\r\n if (actions) {\r\n setavailableActions(actions);\r\n }\r\n } catch (error) {\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n }\r\n fetchData();\r\n }, [dispatch]);\r\n\r\n const sortChange = (event) => {\r\n let sort = event.sort;\r\n let lastIndex = sort.length - 1;\r\n let currentField = sort[lastIndex].field;\r\n\r\n //We need to invert sort order to show first active users when ASC.\r\n if (currentField === \"isActive\"){\r\n sort[lastIndex].dir = isActiveSort === direction.ASC ? direction.DESC : direction.ASC;\r\n setIsActiveSort(sort[lastIndex].dir);\r\n }\r\n\r\n //If the column clicked is other than name, then we have to order by name asc after the first sorted column\r\n if (currentField !== \"name\"){\r\n sort.push({ field: \"name\", dir: direction.ASC });\r\n }\r\n\r\n setSort(sort);\r\n };\r\n\r\n const unarchiveUser = async (user) => {\r\n // Back up list\r\n const originalList = [...adminUserList];\r\n try {\r\n // remove user from list\r\n \r\n setAdminUserList(adminUserList.filter(u => u.id !== user.id));\r\n // restore user\r\n await post(`/adminusers/${user.id}/restore`);\r\n // Display success message after response from server\r\n dispatch(\r\n setCurrentPageNotification({\r\n type: successNotificationType,\r\n message: `Admin user restored`,\r\n })\r\n );\r\n } catch (error) {\r\n // If there was an error, restore the original list\r\n setAdminUserList(originalList);\r\n // Display error message\r\n dispatch(setCurrentPageNotification(getNotificationForError(error)));\r\n }\r\n };\r\n const getActionsForUser = (user) => {\r\n const myActions = [];\r\n const restoreAction = {\r\n title: \"Unarchive\",\r\n label: `Unarchive Admin User ${user.title}`,\r\n onClick: (props) => unarchiveUser(props.dataItem),\r\n };\r\n \r\n if (canDelete) {\r\n myActions.push(restoreAction);\r\n } \r\n \r\n return myActions;\r\n };\r\n\r\n const listData = orderBy(\r\n adminUserList.map((user) => ({\r\n ...user,\r\n actions: getActionsForUser(user),\r\n })),\r\n sort\r\n );\r\n \r\n return (\r\n \r\n \r\n
    \r\n
    \r\n

    Admin Users

    \r\n
      \r\n
    • \r\n \r\n Security\r\n \r\n
    • \r\n
    • \r\n Admin Users\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Exit Archive View \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n","import { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\r\nimport ReportContainer from \"../ReportContainer\";\r\nimport Frame from \"./Frame\";\r\nimport FramePageContainer from \"./FramePageContainer\";\r\nimport FramePageContentWrapper from \"./FramePageContentWrapper\";\r\nimport PollingResults from \"./PollingResults\";\r\nimport MenuLayoutList from \"./Menu/MenuLayouts/MenuLayoutList\";\r\nimport AssignMenuLayout from \"./Menu/MenuLayouts/AssignMenuLayout\";\r\nimport config from \"../config\";\r\nimport MenuLayoutEdit from \"./Menu/MenuLayouts/MenuLayoutEdit\";\r\nimport \"@progress/kendo-theme-bootstrap\";\r\nimport Login from \"./Login/Login\";\r\nimport PosRolesList from \"./Roles/PosRolesList\";\r\nimport PosRoleEdit from \"./Roles/PosRoleEdit\";\r\nimport AdminUserList from \"./Users/AdminUserList\";\r\nimport PosUserList from \"./Users/PosUserList\";\r\nimport AdminUserEdit from \"./Users/AdminUserEdit\";\r\nimport PosUserEdit from \"./Users/PosUserEdit\";\r\nimport ArchivedPosUserList from \"./Users/ArchivedPosUserList\";\r\nimport ArchivedAdminUserList from \"./Users/ArchivedAdminUserList\";\r\n\r\nexport default function App() {\r\n let markup;\r\n if (window.location.pathname.toLowerCase().startsWith(\"/account/login\")) {\r\n markup = (\r\n \r\n \r\n

    You must log in before you can access the site.

    \r\n
    \r\n
    \r\n );\r\n } else {\r\n markup = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

    Not Found

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n return markup;\r\n}\r\n","import { configureStore } from \"@reduxjs/toolkit\";\r\nimport reportReducer from \"./redux/reportSlice\";\r\nimport notificationReducer from \"./redux/notificationSlice\";\r\nimport loginRedirectReducer from \"./redux/loginRedirectSlice\";\r\n\r\nexport function makeStore() {\r\n return configureStore({\r\n reducer: {\r\n report: reportReducer,\r\n notification: notificationReducer,\r\n loginRedirect: loginRedirectReducer\r\n },\r\n });\r\n}\r\n\r\nexport default makeStore();\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport App from \"./components/App\";\r\nimport store from \"./store\";\r\nimport { Provider } from \"react-redux\";\r\nimport FrameTopNav from \"./components/FrameTopNav\";\r\nimport FrameLeftNav from \"./components/FrameLeftNav\";\r\nimport \"./index.css\";\r\nimport { send, post, get, put, patch, deleteUrl } from './Common/api';\r\n\r\n// \"Export\" to ASP.NET MVC Project\r\nwindow.VancoFoodAdmin = window.VancoFoodAdmin || {};\r\nwindow.VancoFoodAdmin.FrameTopNav = FrameTopNav;\r\nwindow.VancoFoodAdmin.FrameLeftNav = FrameLeftNav;\r\nwindow.VancoFoodAdmin.Api = { send, get, post, put, patch, deleteUrl };\r\nwindow.ReactDOM = ReactDOM;\r\nwindow.React = React;\r\n\r\n// Allow ASP.NET MVC Project to suppress rendering\r\nif (!window.doNotRenderReactApp) {\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n );\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"error\":\"PosUserEdit_error__1ZBsN\",\"flash_error_border\":\"PosUserEdit_flash_error_border__u4vbL\",\"flash_error_msg\":\"PosUserEdit_flash_error_msg__oKKBo\",\"flash\":\"PosUserEdit_flash__2DxAZ\",\"not_allowed\":\"PosUserEdit_not_allowed__2vESF\",\"textBoxName\":\"PosUserEdit_textBoxName__MAe5W\",\"passwordBox\":\"PosUserEdit_passwordBox__auWdX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"error\":\"AdminUserEdit_error__4A3jG\",\"flash_error_border\":\"AdminUserEdit_flash_error_border__35YPd\",\"flash_error_msg\":\"AdminUserEdit_flash_error_msg__3L69Q\",\"flash\":\"AdminUserEdit_flash__1eZK7\",\"textBoxName\":\"AdminUserEdit_textBoxName__3XVza\"};"],"sourceRoot":""}