{"version":3,"sources":["constants/messages.ts","constants/colors.ts","components/common/Box.tsx","utils/format.ts","constants/tables.ts","apis/useRoleApi.ts","utils/buildQueryString.ts","stores/permissionStore.ts","hooks/useRights.ts","constants/formating.ts","constants/attachment.ts","components/common/SearchBox.tsx","utils/excelExport.ts","apis/useAssetApi.ts","apis/useUserApi.ts","constants/oidc.ts","hooks/useAuth.ts","styles/Styles.ts","constants/api.ts","hooks/useProfile.ts","components/common/DatePicker.tsx","stores/userStores.ts","utils/files.ts","components/role/RolePermission.tsx","components/role/CreateRoleFormDrawer.tsx","apis/useResourceApi.ts","components/role/Role.tsx","routes/routeConfig.ts","components/Dashboard.tsx","components/user/User.tsx","components/asset/AssetDetail.tsx","constants/path.ts","routes/AppRoute.tsx","routes/RenderRoutes.tsx","routes/index.ts","apis/useMasterDataApi.ts","components/common/Grid.tsx","stores/roleStores.ts","components/asset/AssetForm.tsx","components/common/FileUploader.tsx","constants/regex.ts","components/user/CreateUserFormDrawer.tsx","utils/downloadFile.ts","utils/base64ToArrayBuffer.ts","utils/transform.ts","constants/activeStatus.ts","constants/responsive.ts","utils/storages.ts","fontawesome.ts","App.tsx","reportWebVitals.ts","index.tsx","components/common/AppIcon.tsx","stores/authStore.ts","hooks/useApi.ts","components/common/Cells.tsx"],"names":["MESSAGES","saveSuccessfully","saveFailure","deleteSuccessfully","deleteFailure","black","darkGrey","lightGrey","white","COLORS","backgroundColor","body","topNav","sideMenu","menu","yellow","red","green","blue","Box","height","width","bgColor","children","style","styles","box","dayjs","extend","relativeTime","utc","timezone","DateTime","toStandardDate","date","isValid","tz","format","FORMATING","DEFAULT_DATE","toStandardDateTime","DEFAULT_DATETIME","toDayjs","year","Date","timeFromNow","fromNow","toTimeFromNow","isUtc","PAGE_SIZE","PAGE_SIZE_OPTIONS","PAGE_SIZE_LARGE","PAGE_SIZE_OPTIONS_LARGE","endpoint","useRoleApi","useApi","get","instance","exportFile","post","put","remove","delete","getRoles","query","a","url","buildQueryString","getRole","id","create","payload","update","destroy","exportToExcel","page","params","undefined","urlPath","paramKeys","Object","keys","length","filter","v","map","key","encodeURIComponent","toString","join","permissionStore","createState","useRights","userRights","useState","user","useProfile","hasRights","right","value","profile","isAdmin","canRead","canCreate","canUpdate","canDelete","hasCreateRights","hasReadRights","hasUpdateRights","hasDeleteRights","LONG_MONTH","ATTACHMENT_TYPE","Photo","Pdf","Other","SearchBox","placeholder","size","onChange","onEnter","inputRef","React","ref","borderRadius","e","debounced","_","throttle","target","leading","trailing","onPressEnter","current","input","prefix","icon","faSearch","iconName","exportDataToExcel","fetch","status","headers","data","byteLength","console","log","matches","exec","filename","split","blob","Blob","type","saveAs","useAssetApi","find","postExportFile","getAssets","getAssetLogs","advSearch","getAsset","getAssetLog","getAssetInfo","assetId","checkAsset","resetAgingDay","exportAssets","exportAssetLogs","exportAdvSearch","deleteAttachment","deleteAttachmentSaga","bulkDelete","ids","useUserApi","getUsers","getUser","fetchRights","getMyProfile","process","BASE_URL","AUTHORITY","REACT_APP_AUTH_AUTHORITY","oidc","authority","client_id","client_secret","redirect_uri","silent_redirect_uri","post_logout_redirect_uri","response_type","scope","automaticSilentRenew","loadUserInfo","userStore","WebStorageStateStore","store","window","localStorage","metadata","issuer","jwks_uri","authorization_endpoint","token_endpoint","userinfo_endpoint","end_session_endpoint","check_session_iframe","revocation_endpoint","introspection_endpoint","grant_types_supported","manager","UserManager","OIDC","tokenKey","profileKey","removeToken","Storages","removeProfile","useAuth","userState","authStore","location","useLocation","history","useHistory","userManager","useRef","useEffect","onUserLoaded","token","set","access_token","saveValue","onUserUnloaded","onAccessTokenExpiring","onAccessTokenExpired","onUserSignedOut","events","addUserLoaded","addUserUnloaded","addAccessTokenExpiring","addAccessTokenExpired","addUserSignedOut","removeUserLoaded","removeUserUnloaded","removeAccessTokenExpiring","removeAccessTokenExpired","removeUserSignedOut","signinRedirect","returnUrl","pathname","search","redirectToUrl","state","signinRedirectCallback","result","isWhitelist","replace","push","signoutRedirect","clearStaleState","removeUser","signoutRedirectCallback","includes","isLoggedIn","getAccessToken","signinSilent","signinSilentCallback","logout","padding","minHeight","mainContent","flex","flexDirection","justifyContent","content","columns","justifyItems","subContent","grid","display","gridTemplateColumns","roundBox","alignContent","colors","defaultAxiosConfig","baseURL","getProfile","DatePicker","generatePicker","dayjsGenerateConfig","userPagedStore","totalPages","totalRecords","currentPage","pageSize","records","isExcel","file","test","name","isImage","isPdf","RolePermission","rights","setData","changedData","setChangedData","loading","setLoading","rolePermissions","ROLE_STATE_PERMISSIONS","handleOnChange","cellKey","checkedValue","changes","permissions","r","full","useMemo","title","dataIndex","render","record","setRightsData","dataSource","pagination","rowKey","TabPane","Tabs","CHANGED_PERMISSIONS","CreateRoleFormDrawer","visible","closeDrawer","onSuccess","Form","useForm","form","saving","roleRights","resources","RESOURCES","rolesPermissions","userColumns","onFinish","validateFields","values","rp","deny","notification","success","message","error","description","resetData","resetFields","_permissions","Map","rs","val","setRights","onClose","bodyStyle","paddingBottom","mask","footer","textAlign","onClick","htmlType","layout","labelCol","span","wrapperCol","initialValues","onFinishFailed","errorInfo","tabPosition","tab","Item","label","rules","required","forceRender","users","SELECTED_ROLE","routeConfig","path","isPublic","component","loadable","exact","routes","accessKey","exportUsers","usersPaged","selectedUser","drawerVisible","tables","searchWords","deleted","ActiveStatus","Active","text","canEdit","handleEdit","handleDelete","active","u","parseStateAsJson","setFormData","openDrawer","setUsers","statusText","pagedData","startSearch","Grid","shape","faFileExport","faPlus","Group","All","Deleted","total","showTotal","defaultPageSize","defaultCurrent","pageNumber","CreateUserFormDrawer","readonlyFields","exportRoles","fetchResources","useResourceApi","rolesPaged","rolePagedStore","selectedRole","role","setRoles","setResources","resourceModels","useParams","asset","prepareData","res","AssetForm","root","route","auth","main","dashboard","notFound","mapValues","compose","pickBy","identity","fpMapValues","AppRoute","Component","isPrivateRoute","props","matchPath","ROUTES","RenderRoutes","rest","useMasterDataApi","getAssetTypes","getAssetType","createAssetType","updateAssetType","deleteAssetType","exportAssetTypes","getAssetTypeDetails","getAssetTypeDetail","createAssetTypeDetail","updateAssetTypeDetail","deleteAssetTypeDetail","exportAssetTypeDetails","getAssetClasses","getAssetClass","createAssetClass","updateAssetClass","deleteAssetClass","exportAssetClasses","getCostCenters","getCostCenter","createCostCenter","updateCostCenter","deleteCostCenter","exportCostCenters","getAssetStatuses","getAssetStatus","createAssetStatus","updateAssetStatus","deleteAssetStatus","exportAssetStatuses","getLocations","getLocation","createLocation","updateLocation","deleteLocation","exportLocations","getShipTos","getShipTo","createShipTo","updateShipTo","deleteShipTo","exportShipTos","getSoldTos","getSoldTo","createSoldTo","updateSoldTo","deleteSoldTo","exportSoldTos","rows","alignItems","gridTemplateRows","onCancel","assetTypes","assetTypeDetails","assetTypeDetailsFiltered","assetStatuses","assetCostCenters","assetClasses","ownerRoles","locations","shipTos","soldTos","attachments","setAttachments","uploadFiles","setUploadFiles","guid","uuid","model","warrantyEndAt","toISOString","yearOfManufacture","detail","Promise","all","types","details","statuses","costCenters","classes","locs","ships","solds","roles","deleteFile","removeAttachment","atm","filterTypeDetail","assetTypeId","x","direction","agingEnabled","agingSince","comments","onValuesChange","changedValues","allValues","marginTop","gutter","ASSET_GRID_COLUMNS","disabled","showSearch","optionFilterProp","options","createOptions","filterOption","option","toLowerCase","indexOf","onSelect","allowClear","onClear","picker","maxLength","showCount","PreviewGroup","src","okText","cancelText","onConfirm","placement","faTrash","cursor","downloadFile","accept","action","Authorization","uploadHint","info","fileList","f","maxCount","multiple","listType","beforeUpload","danger","Dragger","Upload","FileUploader","className","faInbox","uploadText","defaultProps","textButton","regEx","email","password","datetime","yyyymmdd","editMode","activated","reset","isReadonly","field","min","valuePropName","checkedChildren","unCheckedChildren","defaultChecked","ghost","pattern","hasFeedback","Password","dependencies","getFieldValue","validator","reject","Error","resolve","buffer","base64","binary_string","atob","len","bytes","Uint8Array","i","charCodeAt","base64ToArrayBuffer","row","JSON","parse","stringify","xs","sm","md","lg","xl","xxl","ASSET_GRID_COLUMNS2","GRID_COLUMNS_12","GRID_COLUMNS_6","getJson","storedValues","getItem","getString","this","setItem","removeItem","library","add","faEdit","faEye","faCaretDown","faCaretUp","faBell","faSignOutAlt","faUser","faChevronLeft","faCaretLeft","faHistory","faFileImport","faFileUpload","faCheckCircle","faTimesCircle","faCog","faFile","faFileAlt","faChartBar","faChartLine","faHome","faUsersCog","faClipboardList","faDatabase","faTable","faMailBulk","faExclamationCircle","config","top","duration","bottom","App","fallback","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","document","getElementById","StyledFontAwesomeIcon","styled","bordered","position","css","AppIcon","color","axios","defaults","source","CancelToken","createNewInstance","setToken","getConfig","authState","common","setBearer","responseType","interceptors","response","use","cancel","authManager","ActionCell","index","handleRead","iconRead","readTitle","iconEdit","editTitle","iconDelete","deleteTitle","linkTo","editLink","ConfirmationDelete","href","CheckboxCell","checked","setChecked"],"mappings":"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","file":"static/js/main.4901c2d9.chunk.js","sourcesContent":["const MESSAGES = {\n saveSuccessfully: 'บันทึกข้อมูลสำเร็จ',\n saveFailure: 'เกิดความผิดพลาด ไม่สามารถบันทึกข้อมูลได้',\n deleteSuccessfully: 'ลบข้อมูลสำเร็จ',\n deleteFailure: 'เกิดความผิดพลาด ลบข้อมูลไม่สำเร็จ',\n};\n\nexport default MESSAGES;\n","const black = '#000000';\nconst darkGrey = '#3c464b';\nconst lightGrey = '#eaebeb';\nconst yellow = '#ffb900';\nconst white = '#ffffff';\nconst red = '#cc0000';\nconst green = '#009697';\nconst blue = 'rgb(24,144,255)';\nexport const COLORS = {\n backgroundColor: {\n body: white,\n topNav: black,\n sideMenu: lightGrey,\n menu: darkGrey,\n },\n black,\n darkGrey,\n lightGrey,\n yellow,\n white,\n red,\n green,\n blue,\n};\n","import * as React from 'react';\nimport { styles } from '~styles/Styles';\n\ninterface BoxProps {\n children: React.ReactNode;\n height?: string;\n bgColor?: string;\n width?: string;\n}\nconst Box = ({ height, width = '100%', bgColor, children }: BoxProps) => (\n
\n {children}\n
\n);\n\nexport default Box;\n","import dayjs, { Dayjs } from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport { FORMATING } from '~constants/formating';\n\ndayjs.extend(relativeTime);\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nconst DateTime = {\n toStandardDate(date: string | number | Date | Dayjs) {\n if (dayjs(date).isValid())\n return dayjs.utc(date).tz('Asia/Bangkok').format(FORMATING.DEFAULT_DATE);\n\n return date;\n },\n toStandardDateTime(date: string | number | Date | Dayjs) {\n if (dayjs(date).isValid())\n return dayjs\n .utc(date)\n .tz('Asia/Bangkok')\n .format(FORMATING.DEFAULT_DATETIME);\n\n return date;\n },\n toDayjs(year: number) {\n return dayjs.utc(new Date(year, 1, 1));\n },\n timeFromNow() {\n return dayjs.utc().tz('Asia/Bangkok').fromNow();\n },\n toTimeFromNow(date: string | number | Date | Dayjs, isUtc = true) {\n if (dayjs(date).isValid())\n return isUtc\n ? dayjs(date).utc().fromNow()\n : dayjs.utc(date).tz('Asia/Bangkok').fromNow();\n\n return date;\n },\n};\n\nexport { DateTime };\n","export default {\n PAGE_SIZE: 20,\n PAGE_SIZE_OPTIONS: ['10', '20', '50', '100'],\n PAGE_SIZE_LARGE: 100,\n PAGE_SIZE_OPTIONS_LARGE: ['100', '200', '300', '500', '1000'],\n};\n","import useApi from '~hooks/useApi';\nimport { RoleModel } from '~types/roleModels';\nimport { SearchQuery } from '~types/searchQuery';\nimport buildQueryString from '~utils/buildQueryString';\n\nconst endpoint = 'roles';\nexport default function useRoleApi() {\n const {\n instance: api,\n get,\n exportFile,\n post,\n put,\n delete: remove,\n } = useApi();\n const getRoles = async (query: SearchQuery) => {\n const url = `${endpoint}${buildQueryString(query)}`;\n return await get(url);\n };\n\n const getRole = async (id: string) => {\n const url = `${endpoint}/${id}`;\n return await get(url);\n };\n\n const create = async (payload: RoleModel) => {\n return await post(endpoint, payload);\n };\n\n const update = async (payload: RoleModel) => {\n return await put(`${endpoint}/${payload.id}`, payload);\n };\n\n const destroy = async (id: string) => {\n return await remove(`${endpoint}/${id}`);\n };\n\n const exportToExcel = async (query: SearchQuery) => {\n const url = `${endpoint}/export`;\n return await exportFile(url, { ...query, page: 0 });\n };\n\n return {\n getRoles,\n getRole,\n create,\n update,\n destroy,\n exportToExcel,\n };\n}\n","const buildQueryString = (params: any) => {\n if (params !== undefined) {\n let urlPath = '';\n const paramKeys = Object.keys(params);\n if (paramKeys.length !== 0) {\n urlPath += '?';\n }\n\n return (urlPath += paramKeys\n .filter((v) => params[v] !== null && params[v] !== undefined)\n .map((key) => {\n return `${encodeURIComponent(key)}=${encodeURIComponent(\n params[key].toString()\n )}`;\n })\n .join('&'));\n }\n // if we got this far, return empty string\n return '';\n};\n\nexport default buildQueryString;\n","import { createState } from '@hookstate/core';\nimport { PermissionMap } from '~types/permissionModels';\n\nconst permissionStore = createState({});\n\nexport default permissionStore;\n","import { useState } from '@hookstate/core';\nimport permissionStore from '~stores/permissionStore';\nimport { ResourcesRights } from '~types/resourceModels';\nimport useProfile from './useProfile';\n\nexport default function useRights() {\n const userRights = useState(permissionStore);\n const user = useProfile();\n\n const hasRights = (key: ResourcesRights) => {\n const right = userRights.value[key];\n\n return (\n (user && user.profile?.isAdmin) ||\n (right &&\n (right.canRead ||\n right.canCreate ||\n right.canUpdate ||\n right.canDelete))\n );\n };\n\n const hasCreateRights = (key: ResourcesRights) => {\n const right = userRights.value[key];\n\n return right && right.canCreate;\n };\n\n const hasReadRights = (key: ResourcesRights) => {\n const right = userRights.value[key];\n\n return right && right.canRead;\n };\n\n const hasUpdateRights = (key: ResourcesRights) => {\n const right = userRights.value[key];\n\n return right && right.canUpdate;\n };\n\n const hasDeleteRights = (key: ResourcesRights) => {\n const right = userRights.value[key];\n\n return right && right.canDelete;\n };\n\n return {\n userRights,\n hasRights,\n hasCreateRights,\n hasReadRights,\n hasUpdateRights,\n hasDeleteRights,\n };\n}\n","export const FORMATING = {\n DEFAULT_DATETIME: 'DD-MM-YYYY HH:mm',\n DEFAULT_DATE: 'DD-MM-YYYY',\n LONG_MONTH: 'MMM-YYYY',\n};\n","export const ATTACHMENT_TYPE = {\n Photo: 0,\n Pdf: 1,\n Other: 2,\n};\n","import { faSearch } from '@fortawesome/free-solid-svg-icons';\nimport { Button, Input, Space } from 'antd';\nimport _ from 'lodash';\nimport * as React from 'react';\nimport AppIcon from './AppIcon';\n\ninterface SearchBoxProps {\n placeholder?: string;\n size?: 'small' | 'middle' | 'large';\n width?: number | string;\n onChange?(search: string): void;\n onEnter?(search: string): void;\n}\n\nexport default function SearchBox({\n placeholder = 'Search...',\n size = 'middle',\n width = 200,\n onChange,\n onEnter,\n}: SearchBoxProps) {\n const inputRef = React.createRef();\n //const [search, setSearch] = React.useState(\"\");\n const handleOnChange = (e: React.ChangeEvent) => {\n const debounced = _.throttle(\n () => onChange && onChange(e.target.value),\n 1000,\n {\n //maxWait: 2000,\n leading: false,\n trailing: true,\n }\n );\n\n _.throttle(() => debounced(), 1000)();\n };\n\n return (\n <>\n \n inputRef.current?.input &&\n onEnter &&\n onEnter(inputRef.current?.input.value)\n }\n prefix={}\n />\n \n );\n}\n","import { AxiosResponse } from 'axios';\nimport { saveAs } from 'file-saver';\n\ninterface ExportDataToExcelProps {\n payload?: any;\n fetch(payload: any): Promise;\n}\nexport const exportDataToExcel = async ({\n payload,\n fetch,\n}: ExportDataToExcelProps) => {\n //props.store.uiStore.toggleLoading();\n //let hideLoadingMsg = message.loading('Exporting in progress...', 0);\n const { status, headers, data } = await fetch(payload);\n if (status === 200) {\n if (data.byteLength === 0) {\n console.log('no data from server');\n //return false;\n } else {\n var filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n var matches = filenameRegex.exec(headers['content-type']);\n if (matches != null && matches[1]) {\n var filename = matches[1].split(',')[0];\n var blob = new Blob([data], {\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8',\n });\n saveAs(blob, filename);\n }\n }\n }\n};\n","import useApi from '~hooks/useApi';\nimport {\n AssetModel,\n AssetQueryModel,\n UpdateAssetAgingModel,\n UpdateAssetModel,\n} from '~types/assetModels';\n\nexport interface AssetQueryProps {\n page: number;\n size: number;\n search: string;\n deleted: number;\n exportAsTemplate?: boolean;\n}\n\nexport interface AssetLogQueryProps {\n id: string;\n page: number;\n size: number;\n search: string;\n deleted: number;\n}\n\nconst endpoint = 'assets';\nexport default function useAssetApi() {\n const {\n instance: api,\n find,\n get,\n post,\n put,\n delete: remove,\n exportFile,\n postExportFile,\n } = useApi();\n\n const getAssets = async (query: AssetQueryProps) => {\n return await find(endpoint, query);\n };\n\n const getAssetLogs = async (query: AssetLogQueryProps) => {\n const url = `${endpoint}/${query.id}/logs`;\n return await find(url, query);\n };\n\n const advSearch = async (query: AssetQueryModel) => {\n return await post(`${endpoint}/search`, query);\n };\n\n const getAsset = async (id: string) => {\n const url = `${endpoint}/${id}`;\n return await get(url);\n };\n\n const getAssetLog = async (id: string) => {\n const url = `${endpoint}/logs/${id}/detail`;\n return await get(url);\n };\n\n const getAssetInfo = async (assetId: string) => {\n const url = `${endpoint}/assetinfo?code=${encodeURIComponent(assetId)}`;\n return await get(url);\n };\n\n const checkAsset = async (assetId: string) => {\n const url = `${endpoint}/checkasset/${assetId}`;\n return await get(url);\n };\n\n const create = async (payload: UpdateAssetModel) => {\n return await post(endpoint, payload);\n };\n\n const update = async (payload: UpdateAssetModel) => {\n return await put(`${endpoint}/${payload.id}`, payload);\n };\n\n const resetAgingDay = async (payload: UpdateAssetAgingModel) => {\n return await put(`${endpoint}/aging/reset`, payload);\n };\n\n const destroy = async (id: string) => {\n return await remove(`${endpoint}/${id}`);\n };\n\n const exportAssets = async (query: AssetQueryProps) => {\n const url = `${endpoint}/export`;\n return await exportFile(url, { ...query, page: 0 });\n };\n\n const exportAssetLogs = async (query: AssetLogQueryProps) => {\n const url = `${endpoint}/${query.id}/logs/export`;\n return await exportFile(url, query);\n };\n\n const exportAdvSearch = async (query: AssetQueryModel) => {\n return await postExportFile(`${endpoint}/search/export`, query);\n };\n\n const deleteAttachment = async (id: string) => {\n return await remove(`${endpoint}/${id}/attachment`);\n };\n\n const deleteAttachmentSaga = async (id: string) => {\n return await remove(`${endpoint}/${id}/attachment/saga`);\n };\n\n const bulkDelete = async (ids: string[]) => {\n return await post(`${endpoint}/bulkDelete`, ids);\n };\n\n return {\n getAssets,\n getAssetLogs,\n getAssetLog,\n getAsset,\n getAssetInfo,\n checkAsset,\n advSearch,\n exportAdvSearch,\n create,\n update,\n resetAgingDay,\n destroy,\n exportAssets,\n exportAssetLogs,\n deleteAttachment,\n deleteAttachmentSaga,\n bulkDelete,\n };\n}\n","import useApi from '~hooks/useApi';\nimport { DataTableResult } from '~types/dataTable';\nimport { SearchQuery } from '~types/searchQuery';\nimport { CreateUserModel, UserModel } from '~types/userModel';\nimport buildQueryString from '~utils/buildQueryString';\n\nexport interface UserQueryProps {\n page: number;\n size: number;\n search: string;\n deleted: number;\n}\n\nconst endpoint = 'users';\nexport default function useUserApi() {\n const {\n instance: api,\n get,\n post,\n put,\n delete: remove,\n exportFile,\n } = useApi();\n const getUsers = async (query: SearchQuery) => {\n const url = `${endpoint}${buildQueryString(query)}`;\n return await get(url);\n };\n\n const getUser = async (id: string) => {\n const url = `${endpoint}/${id}`;\n return await get(url);\n };\n\n const fetchRights = async () => {\n return await get(`${endpoint}/mine/rights`);\n };\n\n const getMyProfile = async () => {\n const url = `${endpoint}/me`;\n return await get(url);\n };\n\n const create = async (payload: CreateUserModel) => {\n return await post(endpoint, payload);\n };\n\n const update = async (payload: CreateUserModel) => {\n return await put(`${endpoint}/${payload.id}`, payload);\n };\n\n const destroy = async (id: string) => {\n return await remove(`${endpoint}/${id}`);\n };\n\n const exportToExcel = async (query: SearchQuery) => {\n const url = `${endpoint}/export`;\n return await exportFile(url, { ...query, page: 0 });\n };\n\n return {\n getUsers,\n getUser,\n fetchRights,\n getMyProfile,\n create,\n update,\n destroy,\n exportToExcel,\n };\n}\n","import { WebStorageStateStore, UserManagerSettings } from 'oidc-client';\n\nconst { BASE_URL = '', REACT_APP_AUTH_AUTHORITY: AUTHORITY } = process.env;\n\nconst oidc: UserManagerSettings = {\n authority: AUTHORITY,\n\n client_id: process.env.REACT_APP_AUTH_CLIENT_ID,\n client_secret: process.env.REACT_APP_AUTH_CLIENT_SECRET,\n redirect_uri: `${BASE_URL}${process.env.REACT_APP_AUTH_REDIRECT_URI}`,\n\n // (string): The URL for the page containing the code handling the silent renew.\n silent_redirect_uri: `${BASE_URL}${process.env.REACT_APP_AUTH_SILENT_REDIRECT_URI}`,\n\n // (string): The OIDC post-logout redirect URI.\n post_logout_redirect_uri: `${BASE_URL}${process.env.REACT_APP_AUTH_POST_LOGOUT_REDIRECT_URI}`,\n\n // (string, default: 'id_token'): The type of response desired from the OIDC provider.\n response_type: process.env.REACT_APP_AUTH_RESPONSE_TYPE,\n\n // (string, default: 'openid'): The scope being requested from the OIDC provider.\n scope: process.env.REACT_APP_AUTH_SCOPE,\n\n // (boolean, default: false): Flag to indicate if there should be an automatic attempt to renew the access token prior to its expiration.\n automaticSilentRenew: true,\n\n // (boolean, default: true): Flag to control if additional identity data is loaded from the user info endpoint in order to populate the user's profile.\n loadUserInfo: false,\n\n userStore: new WebStorageStateStore({\n store: window.localStorage,\n }),\n\n metadata: {\n issuer: AUTHORITY,\n jwks_uri: `${AUTHORITY}/.well-known/openid-configuration/jwks`,\n authorization_endpoint: `${AUTHORITY}/connect/authorize`,\n token_endpoint: `${AUTHORITY}/connect/token`,\n userinfo_endpoint: `${AUTHORITY}/connect/userinfo`,\n end_session_endpoint: `${AUTHORITY}/connect/endsession`,\n check_session_iframe: `${AUTHORITY}/connect/checksession`,\n revocation_endpoint: `${AUTHORITY}/connect/revocation`,\n introspection_endpoint: `${AUTHORITY}/connect/introspect`,\n grant_types_supported: ['authorization_code'],\n },\n};\n\nexport default oidc;\n","import authStore from '~stores/authStore';\nimport OIDC from '~constants/oidc';\nimport { useState } from '@hookstate/core';\nimport { User, UserManager } from 'oidc-client';\nimport { useEffect, useRef } from 'react';\nimport { Redirect, useHistory, useLocation } from 'react-router-dom';\nimport Storages from '~utils/storages';\n\nexport const manager = new UserManager(OIDC);\n\n// console.log('oidc', OIDC);\n\nconst tokenKey = 'accessToken';\nconst profileKey = 'profile';\n\nconst saveToken = (token: string) => Storages.saveValue(tokenKey, token);\nconst removeToken = () => Storages.remove(tokenKey);\nconst saveProfile = (profile: string) =>\n Storages.saveValue(profileKey, profile);\nconst removeProfile = () => Storages.remove(profileKey);\n\nfunction useAuth() {\n const userState = useState(authStore);\n const location = useLocation();\n const history = useHistory();\n const isLoggedIn = () =>\n Storages.getAccessToken() !== null ||\n (!!userState.value && userState.value?.access_token.length > 0);\n\n let userManager = useRef();\n\n useEffect(() => {\n userManager.current = manager;\n\n const onUserLoaded = (user: User) => {\n console.log(`user loaded: ${user}`);\n //store.dispatch(storeUser(user))\n userState.set(user);\n saveToken(user.access_token);\n saveProfile(user.profile?.profile || '');\n };\n\n const onUserUnloaded = () => {\n //setAuthHeader(null)\n console.log(`user unloaded`);\n userState.set(null);\n removeToken();\n removeProfile();\n };\n\n const onAccessTokenExpiring = () => {\n console.log(`user token expiring`);\n };\n\n const onAccessTokenExpired = () => {\n console.log(`user token expired`);\n removeToken();\n removeProfile();\n };\n\n const onUserSignedOut = () => {\n console.log(`user signed out`);\n removeToken();\n removeProfile();\n };\n\n // events for user\n userManager.current.events.addUserLoaded(onUserLoaded);\n userManager.current.events.addUserUnloaded(onUserUnloaded);\n userManager.current.events.addAccessTokenExpiring(onAccessTokenExpiring);\n userManager.current.events.addAccessTokenExpired(onAccessTokenExpired);\n userManager.current.events.addUserSignedOut(onUserSignedOut);\n\n // Specify how to clean up after this effect:\n return function cleanup() {\n userManager?.current?.events.removeUserLoaded(onUserLoaded);\n userManager?.current?.events.removeUserUnloaded(onUserUnloaded);\n userManager?.current?.events.removeAccessTokenExpiring(\n onAccessTokenExpiring\n );\n userManager?.current?.events.removeAccessTokenExpired(\n onAccessTokenExpired\n );\n userManager?.current?.events.removeUserSignedOut(onUserSignedOut);\n };\n }, [manager]);\n\n const signinRedirect = async (returnUrl?: string) => {\n const { pathname, search } = location;\n const redirectToUrl = returnUrl || `${pathname}${search}`;\n return await manager.signinRedirect({\n state: { returnUrl: redirectToUrl },\n });\n };\n\n const signinRedirectCallback = async () => {\n var result = await manager.signinRedirectCallback();\n if (result?.state) {\n const { returnUrl } = result.state;\n if (isWhitelist(returnUrl)) history.replace(returnUrl);\n } else {\n history.push('/');\n }\n };\n\n const signoutRedirect = async () => {\n await manager.clearStaleState();\n await manager.removeUser();\n return await manager.signoutRedirect();\n };\n\n const signoutRedirectCallback = async () => {\n await manager.clearStaleState();\n await manager.removeUser();\n return await manager.signoutRedirectCallback();\n };\n\n const signinSilent = async () => {\n //console.log(['signinSilent']);\n return await manager.signinSilent();\n };\n\n const signinSilentCallback = async () => {\n //console.log(['signinSilentCallback']);\n return await manager.signinSilentCallback();\n };\n\n const logout = async () => {\n await manager.signoutRedirect();\n await manager.clearStaleState();\n removeToken();\n };\n\n const isWhitelist = (url: string) => {\n return (\n url && !url.includes('auth') && !url.includes('signin-oidc') //&&\n //!url.includes('signout-oidc')\n );\n };\n\n return {\n // authRequest,\n //authStatus,\n isLoggedIn,\n\n signinRedirect,\n signinRedirectCallback,\n\n signinSilent,\n signinSilentCallback,\n\n signoutRedirect,\n signoutRedirectCallback,\n\n logout,\n };\n}\n\nexport default useAuth;\n","import { COLORS } from '~constants/colors';\n\nexport const styles = {\n body: {\n //display: 'grid',\n padding: 0,\n minHeight: '100vh',\n //gridTemplateRows: '30px 1fr',\n //padding: '5px'\n backgroundColor: COLORS.white,\n },\n mainContent: {\n flex: 1,\n flexDirection: 'row',\n justifyContent: 'start',\n backgroundColor: COLORS.white,\n },\n topNav: {\n padding: 0,\n backgroundColor: COLORS.white,\n width: '100vw',\n },\n sideMenu: {\n backgroundColor: COLORS.lightGrey,\n minHeight: '100vh',\n },\n content: {\n padding: '10px',\n minHeight: '100vh',\n backgroundColor: COLORS.white,\n // borderTop: '1px',\n // borderTopColor: COLORS.lightGrey,\n // borderTopStyle: 'solid',\n },\n menu: {\n //backgroundColor: '#363b00',\n columns: '1fr',\n justifyContent: 'start',\n justifyItems: 'start',\n padding: 10,\n },\n subContent: {\n padding: '10px',\n height: '95%',\n },\n grid: {\n display: 'grid',\n },\n box: {\n display: 'grid',\n gridTemplateColumns: '1fr',\n padding: '5px',\n },\n roundBox: {\n display: 'grid',\n gridTemplateColumns: '1fr',\n padding: '10px',\n borderRadius: '5px',\n alignContent: 'center',\n width: '100%',\n },\n colors: {\n black: '#363b42',\n yellow: '#ffb900',\n white: '#ffffff',\n },\n};\n","import { AxiosRequestConfig } from 'axios';\n\nexport const defaultAxiosConfig: AxiosRequestConfig = {\n baseURL: process.env.REACT_APP_API_ENDPOINT,\n // transformResponse: [\n // function (data) {\n // // Do whatever you want to transform the data\n // console.log('transformReponse', data);\n // return data;\n // },\n // ],\n};\n","import Storages from '~utils/storages';\n\nexport default function useProfile() {\n const profile = Storages.getProfile();\n\n return {\n profile,\n };\n}\n","import { Dayjs } from 'dayjs';\nimport dayjsGenerateConfig from 'rc-picker/lib/generate/dayjs';\nimport generatePicker from 'antd/es/date-picker/generatePicker';\nimport 'antd/es/date-picker/style/index';\n\nconst DatePicker = generatePicker(dayjsGenerateConfig);\n\nexport default DatePicker;\n","import React from 'react';\nimport { createState, useState } from '@hookstate/core';\nimport { UserModel } from '~types/userModel';\nimport { PagedResultModel } from '~types/pagedResultModels';\n\nconst usersStore = createState([]);\nconst userStore = createState(undefined);\nconst userPagedStore = createState>({\n totalPages: 0,\n totalRecords: 0,\n currentPage: 0,\n pageSize: 0,\n records: [],\n});\n\nexport { usersStore, userStore, userPagedStore };\n","import { UploadFile } from 'antd/lib/upload/interface';\n\nconst isExcel = (file: UploadFile) => {\n return (\n /\\.(xlsx|xls)$/i.test(file.name) ||\n file.type ===\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n );\n};\n\nconst isImage = (file: UploadFile) => {\n return /\\.(png|jpg|jpeg|gif)$/i.test(file.name);\n};\n\nconst isPdf = (file: UploadFile) => {\n return /\\.(pdf)$/i.test(file.name);\n};\n\nconst isMsWord = (file: UploadFile) => {\n return (\n /\\.(doc|docx)$/i.test(file.name) ||\n file.type === 'application/msword' ||\n file.type ===\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n );\n};\n\nexport { isExcel, isImage, isPdf, isMsWord };\n","import { useState } from '@hookstate/core';\nimport { Table } from 'antd';\nimport { CheckboxChangeEvent } from 'antd/lib/checkbox';\nimport _ from 'lodash';\nimport React from 'react';\nimport { CheckboxCell } from '~components/common/Cells';\nimport { PermissionModel } from '~types/permissionModels';\nimport { ROLE_STATE_PERMISSIONS } from './CreateRoleFormDrawer';\n\ninterface RolePermissionProps {\n rights: PermissionModel[];\n}\n\nexport interface CheckboxOnChangeData {\n id: string;\n cellKey: string;\n checkedValue: boolean;\n}\n\nexport default function RolePermission({ rights }: RolePermissionProps) {\n const [data, setData] = React.useState(rights);\n const [changedData, setChangedData] = React.useState<{ [key: string]: any }>(\n {}\n );\n const [loading, setLoading] = React.useState(false);\n const rolePermissions = useState(ROLE_STATE_PERMISSIONS);\n\n const handleOnChange = (\n e: CheckboxChangeEvent,\n data: CheckboxOnChangeData\n ) => {\n const { id, cellKey: key, checkedValue } = data;\n const changes = changedData;\n if (!changes[id]) changes[id] = {};\n\n changes[id][key] = checkedValue;\n\n if (key === 'full') {\n changes[id]['canRead'] = checkedValue;\n changes[id]['canCreate'] = checkedValue;\n changes[id]['canUpdate'] = checkedValue;\n changes[id]['canDelete'] = checkedValue;\n } else {\n if (!checkedValue) changes[id]['full'] = false;\n else if (\n changes[id]['canRead'] &&\n changes[id]['canCreate'] &&\n changes[id]['canUpdate'] &&\n changes[id]['canDelete']\n )\n changes[id]['full'] = true;\n }\n\n const permissions = rights.map((r) => {\n let right = { ...r };\n if (changes[r.id]) {\n right = {\n ...right,\n ...changes[r.id],\n };\n }\n return {\n ...right,\n full:\n right.canRead &&\n right.canCreate &&\n right.canUpdate &&\n right.canDelete,\n };\n });\n\n rolePermissions.set(permissions);\n };\n\n const columns = React.useMemo(\n () =>\n [\n {\n title: 'Name',\n dataIndex: 'name',\n key: 'name',\n },\n\n {\n title: 'Read',\n dataIndex: 'canRead',\n key: 'canRead',\n render: (_: any, record: any) => (\n \n ),\n },\n {\n title: 'Create',\n dataIndex: 'canCreate',\n key: 'canCreate',\n render: (_: any, record: any) => (\n \n ),\n },\n {\n title: 'Update',\n dataIndex: 'canUpdate',\n key: 'canUpdate',\n render: (_: any, record: any) => (\n \n ),\n },\n {\n title: 'Delete',\n dataIndex: 'canDelete',\n key: 'canDelete',\n render: (_: any, record: any) => (\n \n ),\n },\n {\n title: 'Full',\n dataIndex: 'full',\n key: 'full',\n render: (_: any, record: any) => (\n \n ),\n },\n ] as Array,\n [rights]\n );\n\n const setRightsData = async () => {\n setLoading(true);\n setData(rights);\n setLoading(false);\n };\n\n React.useEffect(() => {\n setRightsData();\n\n return () => {\n setChangedData({});\n };\n }, [rights]);\n\n return (\n <>\n 0\n ? rolePermissions.value\n : data\n }\n columns={columns}\n loading={loading}\n pagination={false}\n rowKey='id'\n />\n \n );\n}\n","import * as React from 'react';\nimport {\n Button,\n Drawer,\n Form,\n Input,\n notification,\n Space,\n Tabs,\n Table,\n} from 'antd';\nimport { RoleModel } from '~types/roleModels';\nimport { createState, useState } from '@hookstate/core';\nimport useRoleApi from '~root/src/apis/useRoleApi';\nimport _ from 'lodash';\nimport { PermissionModel } from '~types/permissionModels';\nimport { ResourceModel } from '~types/resourceModels';\nimport RolePermission from './RolePermission';\nimport { RESOURCES } from './Role';\nimport MESSAGES from '~constants/messages';\n\nexport interface CreateRoleProps {\n firstName: string;\n lastName: string;\n email: string;\n department: any;\n role: any;\n}\n\ninterface RoleFormProps {\n data?: RoleModel;\n visible: boolean;\n closeDrawer(): void;\n onSuccess?(): void;\n}\n\nconst { TabPane } = Tabs;\n\nexport const CHANGED_PERMISSIONS = createState<{ [key: string]: any }>({});\nexport const ROLE_STATE_PERMISSIONS = createState([]);\n\nexport default function CreateRoleFormDrawer({\n data,\n visible,\n closeDrawer,\n onSuccess,\n}: RoleFormProps) {\n const [form] = Form.useForm();\n const { create, update } = useRoleApi();\n const saving = useState(false);\n const roleRights = useState([]);\n const resources = useState(RESOURCES);\n const changedPermissions = useState(CHANGED_PERMISSIONS);\n const rolesPermissions = useState(ROLE_STATE_PERMISSIONS);\n\n const userColumns = React.useMemo(\n () => [\n {\n title: 'Username',\n dataIndex: 'userName',\n },\n ],\n []\n );\n\n const createRolePermissions = () => {\n const permissions = rolesPermissions.value.map((rp) => ({\n ...rp,\n deny: !(rp.canRead || rp.canCreate || rp.canUpdate || rp.canDelete),\n full:\n (rp.canRead && rp.canCreate && rp.canUpdate && rp.canDelete) || rp.full,\n }));\n\n return permissions;\n };\n\n const onFinish = async () => {\n const values: RoleModel = await form.validateFields();\n\n try {\n saving.set(true);\n const result = data?.id\n ? await update({\n ...values,\n id: data.id,\n permissions: createRolePermissions(),\n })\n : await create(values);\n if (\n result.status === 200 ||\n result.status === 201 ||\n result.status === 204\n ) {\n notification.success({\n key: 'role_create_success',\n message: MESSAGES.saveSuccessfully,\n //description: \"Click 'refresh' icon on data grid to see new data\",\n });\n if (typeof onSuccess === 'function') onSuccess();\n }\n } catch (error) {\n // const {\n // data: { status, detail, title },\n // } = error;\n notification.error({\n key: 'role_create_failed',\n message: MESSAGES.saveFailure,\n description: `Error: ${error}`,\n });\n } finally {\n resetData();\n // closeDrawer();\n // saving.set(false);\n }\n };\n\n const resetData = () => {\n form.resetFields();\n closeDrawer();\n rolesPermissions.set([]);\n saving.set(false);\n };\n\n const onFinishFailed = (errorInfo: any) => {\n console.log('Failed:', errorInfo);\n };\n\n const setRights = () => {\n const _permissions = new Map();\n data?.permissions.map((r) => _permissions.set(r.id, r));\n\n const rights: { [key: string]: ResourceModel } = {};\n resources.value.map((rs) => (rights[rs.id] = rs));\n\n const keys = _.keys(rights);\n keys.map((key) => {\n const val = _permissions.get(key);\n if (val)\n rights[key] = {\n ...rights[key],\n deny: !(\n val.canRead ||\n val.canCreate ||\n val.canUpdate ||\n val.canDelete\n ),\n canRead: val.canRead,\n canCreate: val.canCreate,\n canUpdate: val.canUpdate,\n canDelete: val.canDelete,\n full: val.canRead && val.canCreate && val.canUpdate && val.canDelete,\n };\n });\n\n roleRights.set(_.values(rights));\n };\n\n React.useEffect(() => {\n setRights();\n form.resetFields();\n }, [data]);\n\n return (\n \n \n \n \n Save\n \n \n \n }\n >\n \n \n \n \n \n \n \n {data && (\n \n \n \n )}\n {data && (\n \n \n \n )}\n \n \n \n );\n}\n","import useApi from '~hooks/useApi';\nimport { DataTableResult } from '~types/dataTable';\nimport { ResourceModel } from '~types/resourceModels';\n\nconst endpoint = 'resources';\nexport default function useResourceApi() {\n const { instance: api, get, post, put, delete: remove } = useApi();\n const fetch = async () => {\n return await get(endpoint);\n };\n\n const create = async (payload: ResourceModel) => {\n return await post(endpoint, payload);\n };\n\n const update = async (payload: ResourceModel) => {\n return await put(`${endpoint}/${payload.id}`, payload);\n };\n\n const destroy = async (id: string) => {\n return await remove(`${endpoint}/${id}`);\n };\n\n return {\n fetch,\n create,\n update,\n destroy,\n };\n}\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n Col,\n Row,\n Space,\n Tooltip,\n Table,\n notification,\n Pagination,\n Radio,\n} from 'antd';\nimport * as React from 'react';\nimport { createState, useState } from '@hookstate/core';\nimport Box from '~components/common/Box';\nimport { faPlus, faFileExport } from '@fortawesome/free-solid-svg-icons';\nimport { RoleModel } from '~types/roleModels';\nimport useRoleApi from '~root/src/apis/useRoleApi';\nimport { useEffect } from 'react';\nimport CreateRoleFormDrawer from './CreateRoleFormDrawer';\nimport { parseStateAsJson } from '~utils/transform';\nimport useResourceApi from '~root/src/apis/useResourceApi';\nimport { ResourceModel } from '~types/resourceModels';\nimport { ActionCell } from '~components/common/Cells';\nimport useRights from '~hooks/useRights';\nimport { rolePagedStore } from '~stores/roleStores';\nimport tables from '~constants/tables';\nimport { SearchQuery } from '~types/searchQuery';\nimport { PagedResultModel } from '~types/pagedResultModels';\nimport SearchBox from '~components/common/SearchBox';\nimport { exportDataToExcel } from '~utils/excelExport';\nimport { ActiveStatus } from '~constants/activeStatus';\nimport { DateTime } from '~utils/format';\n\ninterface UserProps {\n accessKey: string;\n}\n\nexport const RESOURCES = createState([]);\nexport const SELECTED_ROLE = createState(undefined);\n\nexport default function Role({ accessKey }: UserProps) {\n const {\n getRoles,\n create,\n update,\n destroy,\n exportToExcel: exportRoles,\n } = useRoleApi();\n const { fetch: fetchResources } = useResourceApi();\n const { hasCreateRights, hasUpdateRights, hasDeleteRights } = useRights();\n\n const rolesPaged = useState(rolePagedStore);\n const resources = useState(RESOURCES);\n const selectedRole = useState(SELECTED_ROLE);\n const loading = useState(false);\n const drawerVisible = useState(false);\n const page = useState(1);\n const pageSize = useState(tables.PAGE_SIZE);\n const searchWords = useState('');\n const deleted = useState(ActiveStatus.Active);\n\n const setFormData = (id: string) => {\n const role = rolesPaged.value.records.find((r) => r.id === id);\n if (role) selectedRole.set(parseStateAsJson(role));\n };\n\n const handleRead = () => console.log('handleRead');\n const handleEdit = (id: string) => {\n setFormData(id);\n openDrawer();\n };\n\n const handleDelete = async (id: string) => {\n const result = await destroy(id);\n if (result.status === 200 || result.status === 204) {\n notification.success({\n message: 'Data was successfully deleted',\n });\n\n setRoles();\n } else\n notification.error({\n message: result.statusText,\n });\n };\n\n const columns = React.useMemo(\n () => [\n {\n title: '',\n dataIndex: '#operation',\n width: 80,\n render: (text: any, record: any) => (\n \n ),\n },\n {\n title: 'Name',\n dataIndex: 'name',\n },\n {\n title: 'Deleted',\n dataIndex: 'deleted',\n render: (value: any) => ,\n },\n {\n title: 'Created By',\n dataIndex: 'createdUserName',\n },\n {\n title: 'Created At',\n dataIndex: 'createdAt',\n render: (text: string) => (\n \n ),\n },\n {\n title: 'Updated By',\n dataIndex: 'modifiedUserName',\n },\n {\n title: 'Updated At',\n dataIndex: 'updatedAt',\n render: (text: string) => (\n \n ),\n },\n ],\n []\n );\n\n const setRoles = async () => {\n loading.set(true);\n const query: SearchQuery = {\n page: page.value,\n size: pageSize.value,\n search: searchWords.value,\n deleted: deleted.value,\n };\n const result = await getRoles(query);\n const { status, data } = result;\n\n if (status !== 500) {\n const pagedData = data as PagedResultModel;\n rolesPaged.set(pagedData);\n }\n\n loading.set(false);\n };\n\n const setResources = async () => {\n const result = await fetchResources();\n const { data } = result;\n const resourceModels = data as ResourceModel[];\n resources.set(resourceModels);\n };\n\n const openDrawer = () => drawerVisible.set(true);\n const closeDrawer = () => drawerVisible.set(false);\n\n const startSearch = async (search: string) => {\n searchWords.set(search);\n setRoles();\n };\n\n const handlePageChanged = (pageNumber: number, size?: number) => {\n page.set(pageNumber);\n pageSize.set(size ?? tables.PAGE_SIZE);\n setRoles();\n };\n\n const exportToExcel = async () => {\n loading.set(true);\n const query: SearchQuery = {\n page: 0,\n size: 0,\n search: searchWords.value,\n deleted: deleted.value,\n };\n await exportDataToExcel({\n fetch: async () => exportRoles(query),\n });\n loading.set(false);\n };\n\n useEffect(() => {\n setRoles();\n setResources();\n }, []);\n\n useEffect(() => {\n setRoles();\n }, [deleted.value]);\n\n return (\n \n

Roles

\n\n \n {/* \n \n */}\n \n \n \n \n }\n />\n \n\n {hasCreateRights('role') && (\n \n }\n onClick={openDrawer}\n />\n \n )}\n\n \n deleted.set(e.target.value)}\n value={deleted.value}\n >\n All\n Active\n Deleted\n \n \n \n \n \n `Total ${total} items`}\n defaultPageSize={pageSize.value}\n pageSize={pageSize.value}\n defaultCurrent={1}\n current={rolesPaged.value.currentPage}\n onChange={handlePageChanged}\n />\n {drawerVisible.value && (\n \n )}\n
\n );\n}\n","import loadable from '@loadable/component';\n\nimport Dashboard from '~components/Dashboard';\nimport User from '~components/user/User';\nimport Role from '~components/role/Role';\nimport Asset from '~components/asset/Asset';\nimport AssetDetail from '~components/asset/AssetDetail';\n\n//import { routes as ROUTES, keys as KEYS, aggregateType as AGGREGATE_TYPE } from '~constants/path'\nimport { RouteConfig } from '~types/route';\nimport NotFound from '~components/NotFound';\nimport CreateAsset from '~components/asset/CreateAsset';\nimport AssetLog from '~components/asset/AssetLog';\nimport AssetLogDetail from '~components/asset/AssetLogDetail';\nimport ErrorPage from '~components/ErrorPage';\n\nconst routeConfig: RouteConfig[] = [\n // {\n // path: '/not-found',\n // key: 'not-found',\n // isPublic: true,\n // component: loadable(() => import('~components/NotFound')),\n // },\n {\n path: '/auth', //ROUTES.auth,\n key: 'auth', //KEYS.auth,\n isPublic: true,\n component: loadable(() => import('~components/Auth')),\n },\n {\n path: '/signin-oidc', //ROUTES.signInRedirect,\n key: 'signin-oidc', //KEYS.signInRedirect,\n isPublic: true,\n component: loadable(() => import('~components/SignInRedirect')),\n },\n {\n path: '/signout-oidc', //ROUTES.signOutRedirect,\n key: '/signout-oidc', //KEYS.signOutRedirect,\n component: loadable(() => import('~components/SignOutRedirect')),\n },\n {\n path: '/error',\n key: 'error',\n isPublic: true,\n exact: true,\n component: loadable(() => import('~components/ErrorPage')),\n },\n {\n path: '/privacy',\n key: 'privacy',\n exact: true,\n isPublic: true,\n component: loadable(() => import('~components/Privacy')),\n },\n {\n path: '/not-found',\n key: 'not-found',\n isPublic: true,\n component: loadable(() => import('~components/NotFound')),\n },\n {\n path: '/',\n key: 'main',\n component: loadable(() => import('../containers/Main')),\n routes: [\n {\n path: '/dashboard',\n key: 'dashboard',\n isPublic: true,\n component: Dashboard,\n },\n {\n path: '/user',\n key: 'user',\n component: User,\n },\n {\n path: '/role',\n key: 'role',\n component: Role,\n },\n {\n path: '/asset',\n key: 'asset',\n exact: true,\n component: loadable(() => import('~components/asset/Asset')),\n },\n {\n path: '/asset/new',\n key: 'asset.create',\n exact: true,\n component: loadable(() => import('~components/asset/CreateAsset')),\n },\n {\n path: '/asset/import',\n key: 'asset.import',\n exact: true,\n component: loadable(() => import('~components/asset/ImportAsset')),\n },\n {\n path: '/asset/:id',\n key: 'asset.detail',\n exact: true,\n component: AssetDetail,\n },\n {\n path: '/asset/:id/logs',\n key: 'asset.logs',\n exact: true,\n component: loadable(() => import('~components/asset/AssetLog')),\n },\n {\n path: '/asset/logs/:id/detail',\n key: 'asset.logs.detail',\n exact: true,\n component: loadable(() => import('~components/asset/AssetLogDetail')),\n },\n {\n path: '/job',\n key: 'job',\n exact: true,\n component: loadable(() => import('~components/job/Job')),\n },\n {\n path: '/job/new',\n key: 'job.create',\n exact: true,\n component: loadable(() => import('~components/job/JobForm')),\n },\n {\n path: '/job/:id',\n key: 'job.detail',\n exact: true,\n component: loadable(() => import('~components/job/JobDetail')),\n },\n {\n path: '/noti-job',\n key: 'notification.job',\n exact: true,\n component: loadable(\n () => import('~components/notification/Notification')\n ),\n },\n {\n path: '/noti-job/:id',\n key: 'notification.job.detail',\n exact: true,\n component: loadable(\n () => import('~components/notification/NotificationDetail')\n ),\n },\n {\n path: '/noti-asset',\n key: 'notification.asset',\n exact: true,\n component: loadable(\n () => import('~components/notification/AssetNotification')\n ),\n },\n {\n path: '/noti-asset/:id',\n key: 'notification.asset.detail',\n exact: true,\n component: loadable(\n () => import('~components/notification/AssetNotificationDetail')\n ),\n },\n {\n path: '/costcenter',\n key: 'master.costcenter',\n exact: true,\n component: loadable(() => import('~components/master-data/CostCenter')),\n },\n {\n path: '/assettype',\n key: 'master.assettype',\n exact: true,\n component: loadable(() => import('~components/master-data/AssetType')),\n },\n {\n path: '/assettypedetail',\n key: 'master.assettypedetail',\n exact: true,\n component: loadable(\n () => import('~components/master-data/AssetTypeDetail')\n ),\n },\n {\n path: '/assetclass',\n key: 'master.assetclass',\n exact: true,\n component: loadable(() => import('~components/master-data/AssetClass')),\n },\n {\n path: '/assetstatus',\n key: 'master.assetstatus',\n exact: true,\n component: loadable(\n () => import('~components/master-data/AssetStatus')\n ),\n },\n {\n path: '/location',\n key: 'master.location',\n exact: true,\n component: loadable(() => import('~components/master-data/Location')),\n },\n {\n path: '/soldto',\n key: 'master.soldto',\n exact: true,\n component: loadable(() => import('~components/master-data/SoldTo')),\n },\n {\n path: '/shipto',\n key: 'master.shipto',\n exact: true,\n component: loadable(() => import('~components/master-data/ShipTo')),\n },\n {\n path: '/mailgroup',\n key: 'admin.mailgroup',\n exact: true,\n component: loadable(() => import('~components/admin/MailGroup')),\n },\n {\n path: '/report/daily-asset',\n key: 'report.daily-asset',\n exact: true,\n component: loadable(\n () => import('~components/report/AssetDailyReport')\n ),\n },\n {\n path: '/report/aging',\n key: 'report.aging',\n exact: true,\n component: loadable(() => import('~components/report/AgingReport')),\n },\n ],\n },\n];\n\nexport default routeConfig;\n","import * as React from 'react'\n\nexport default function Dashboard(){\n return

Dashboard

\n}","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n Col,\n Drawer,\n Input,\n Row,\n Select,\n Space,\n Tooltip,\n Form,\n Table,\n notification,\n Pagination,\n Radio,\n} from 'antd';\nimport * as React from 'react';\nimport Box from '~components/common/Box';\nimport { faPlus, faFileExport } from '@fortawesome/free-solid-svg-icons';\nimport Grid from '~components/common/Grid';\nimport useUserApi, { UserQueryProps } from '~root/src/apis/useUserApi';\nimport { UserModel } from '~types/userModel';\nimport { createState, useState } from '@hookstate/core';\nimport CreateUserFormDrawer from './CreateUserFormDrawer';\nimport { parseStateAsJson } from '~utils/transform';\nimport { ActionCell } from '~components/common/Cells';\nimport { useEffect } from 'react';\nimport { userPagedStore, usersStore, userStore } from '~stores/userStores';\nimport useRights from '~hooks/useRights';\nimport SearchBox from '~components/common/SearchBox';\nimport tables from '~constants/tables';\nimport { PagedResultModel } from '~types/pagedResultModels';\nimport { exportDataToExcel } from '~utils/excelExport';\nimport { SearchQuery } from '~types/searchQuery';\nimport useProfile from '~hooks/useProfile';\nimport { ActiveStatus } from '~constants/activeStatus';\nimport { DateTime } from '~utils/format';\n\ninterface UserProps {\n accessKey: string;\n}\n\nexport default function User({ accessKey }: UserProps) {\n const {\n getUsers,\n create,\n update,\n destroy,\n exportToExcel: exportUsers,\n } = useUserApi();\n const { hasCreateRights, hasUpdateRights, hasDeleteRights } = useRights();\n const { profile } = useProfile();\n const usersPaged = useState(userPagedStore);\n const selectedUser = useState(userStore);\n const loading = useState(false);\n const drawerVisible = useState(false);\n const page = useState(1);\n const pageSize = useState(tables.PAGE_SIZE);\n const searchWords = useState('');\n const deleted = useState(ActiveStatus.Active);\n\n const columns = React.useMemo(\n () => [\n {\n title: '',\n dataIndex: '#operation',\n //width: 80,\n render: (text: any, record: any) => (\n \n ),\n },\n {\n title: 'Username',\n dataIndex: 'userName',\n //sorter: (a: any, b: any) => a.userName > b.userName,\n },\n {\n title: 'First Name',\n dataIndex: 'firstName',\n },\n {\n title: 'Last Name',\n dataIndex: 'lastName',\n },\n {\n title: 'Email',\n dataIndex: 'email',\n },\n {\n title: 'Role',\n dataIndex: 'roleName',\n },\n {\n title: 'Active',\n dataIndex: 'active',\n render: (active: any) => {`${active}`},\n },\n {\n title: 'Deleted',\n dataIndex: 'deleted',\n render: (value: any) => ,\n },\n {\n title: 'Created By',\n dataIndex: 'createdUserName',\n },\n {\n title: 'Created At',\n dataIndex: 'createdAt',\n render: (text: string) => (\n \n ),\n },\n {\n title: 'Updated By',\n dataIndex: 'modifiedUserName',\n },\n {\n title: 'Updated At',\n dataIndex: 'updatedAt',\n render: (text: string) => (\n \n ),\n },\n ],\n []\n );\n\n const setFormData = (id: string) => {\n const user = usersPaged.value.records.find((u) => u.id === id);\n selectedUser.set(parseStateAsJson(user));\n };\n\n const handleEdit = (id: string) => {\n setFormData(id);\n openDrawer();\n };\n const handleDelete = async (id: string) => {\n const result = await destroy(id);\n if (result.status === 200 || result.status === 204) {\n notification.success({\n message: 'Data was successfully deleted',\n });\n\n setUsers();\n } else\n notification.error({\n message: result.statusText,\n });\n };\n\n const setUsers = async () => {\n loading.set(true);\n const query: UserQueryProps = {\n page: page.value,\n size: pageSize.value,\n search: searchWords.value,\n deleted: deleted.value,\n };\n const result = await getUsers(query);\n const { status, data } = result;\n\n if (status !== 500) {\n const pagedData = data as PagedResultModel;\n usersPaged.set(pagedData);\n }\n\n loading.set(false);\n };\n\n const openUserForm = () => {\n selectedUser.set(undefined);\n openDrawer();\n };\n const openDrawer = () => drawerVisible.set(true);\n const closeDrawer = () => drawerVisible.set(false);\n\n const startSearch = async (search: string) => {\n searchWords.set(search);\n setUsers();\n };\n\n const handlePageChanged = (pageNumber: number, size?: number) => {\n page.set(pageNumber);\n pageSize.set(size ?? tables.PAGE_SIZE);\n setUsers();\n };\n\n const exportToExcel = async () => {\n loading.set(true);\n const query: SearchQuery = {\n page: 0,\n size: 0,\n search: searchWords.value,\n deleted: ActiveStatus.Active,\n };\n await exportDataToExcel({\n fetch: async () => exportUsers(query),\n });\n loading.set(false);\n };\n\n useEffect(() => {\n setUsers();\n }, [deleted.value]);\n\n return (\n \n

Users

\n\n \n {/* \n \n */}\n \n \n \n \n \n }\n />\n \n {hasCreateRights('user') && (\n \n }\n onClick={openUserForm}\n />\n \n )}\n \n deleted.set(e.target.value)}\n value={deleted.value}\n >\n All\n Active\n Deleted\n \n \n \n \n \n \n `Total ${total} items`}\n defaultPageSize={pageSize.value}\n pageSize={pageSize.value}\n defaultCurrent={1}\n current={usersPaged.value.currentPage}\n onChange={handlePageChanged}\n />\n \n
\n );\n}\n","import * as React from 'react';\nimport Box from '~components/common/Box';\nimport { useState } from '@hookstate/core';\nimport { useEffect } from 'react';\nimport useRights from '~hooks/useRights';\nimport useAssetApi from '../../apis/useAssetApi';\nimport { useHistory, useLocation, useParams } from 'react-router-dom';\nimport { AssetDetailModel } from '~types/assetModels';\nimport AssetForm from './AssetForm';\n\ninterface AssetProps {\n accessKey: string;\n}\n\nexport default function AssetDetail({ accessKey }: AssetProps) {\n const { id } = useParams();\n const { getAsset } = useAssetApi();\n const { hasCreateRights, hasReadRights, hasUpdateRights, hasDeleteRights } =\n useRights();\n const asset = useState(undefined);\n const loading = useState(false);\n\n const prepareData = async () => {\n loading.set(true);\n const res = await getAsset(id);\n asset.set(res.data);\n loading.set(false);\n };\n\n useEffect(() => {\n prepareData();\n }, [id]);\n\n return (\n \n {/*

Asset

*/}\n \n
\n );\n}\n","import mapValues from 'lodash/mapValues'\nimport identity from 'lodash/identity'\nimport compose from 'lodash/fp/compose'\nimport pickBy from 'lodash/fp/pickBy'\nimport fpMapValues from 'lodash/fp/mapValues'\n\nimport { Path } from '~types/route'\n\ninterface PathValue {\n route: string,\n key: string,\n aggregateType?: string\n}\n\nexport const path: Record = {\n root: {\n route: '/',\n key: 'root',\n },\n\n auth: {\n route: '/auth',\n key: 'auth',\n },\n // signInRedirect: {\n // route: process.env.AUTH_REDIRECT_URI,\n // key: 'auth.signin-redirect',\n // },\n // signOutRedirect: {\n // route: process.env.AUTH_POST_LOGOUT_REDIRECT_URI,\n // key: 'auth.signout-redirect',\n // },\n\n main: {\n route: '/main',\n key: 'main',\n },\n dashboard: {\n route: '/dashboard',\n key: 'dashboard',\n },\n user: {\n route: '/user',\n key: 'user',\n },\n role: {\n route: '/role',\n key: 'role',\n },\n\n // profile: {\n // route: '/profile',\n // key: 'users.profile',\n // },\n\n notFound: {\n route: '/not-found',\n key: 'not-found',\n },\n}\n\nexport const routes = mapValues(path, 'route') as Record\nexport const keys = mapValues(path, 'key') as Record\n\nexport const aggregateType = compose(\n pickBy(identity),\n fpMapValues('aggregateType'),\n)(path) as Record\n\nexport type AggregateType = (typeof aggregateType)[keyof typeof aggregateType]\n","import React from 'react';\nimport { Route, Redirect, matchPath } from 'react-router-dom';\n\n//import LoadingOverlay from '~components/LoadingOverlay'\nimport useAuth from '~hooks/useAuth';\nimport { routes as ROUTES } from '~constants/path';\n//import { status as STATUS } from '~constants/common'\n\nexport default function AppRoute({\n key,\n path,\n routes,\n isPublic = false,\n component: Component,\n}: any) {\n //const { authStatus, isLoggedIn } = useAuth()\n const { isLoggedIn, signinRedirect } = useAuth();\n const isPrivateRoute = !isPublic;\n\n return (\n {\n const { location } = props;\n\n if (isPrivateRoute) {\n // if (authStatus === STATUS.idle) {\n // return \n // }\n\n const root = matchPath(location.pathname, {\n exact: true,\n path: ROUTES.root,\n });\n\n // if (isLoggedIn() && root) {\n // return ;\n // }\n\n if (!isLoggedIn()) {\n // return (\n // \n // );\n //signinRedirect(`${location.pathname}${location.search}`);\n signinRedirect();\n }\n }\n\n return ;\n }}\n />\n );\n}\n","import React from 'react';\nimport { Switch, Redirect, Route } from 'react-router-dom';\n\n//import { routes as ROUTES } from '~constants/path'\nimport { RouteProps } from '~types/route';\nimport AppRoute from './AppRoute';\n\ninterface RenderRoutesProps {\n routes: RouteProps[];\n}\n\nfunction RenderRoutes({ routes }: RenderRoutesProps) {\n return (\n \n {routes.map(({ key, ...rest }) => (\n \n ))}\n\n {/* */}\n {/* */}\n \n );\n}\n\nexport default RenderRoutes;\n","import ROUTES from './routeConfig'\nimport RenderRoutes from './RenderRoutes'\n\nexport {\n RenderRoutes,\n}\n\nexport default ROUTES\n","import useApi from '~hooks/useApi';\nimport {\n AssetClassModel,\n AssetStatusModel,\n AssetTypeDetailModel,\n AssetTypeModel,\n CostCenterModel,\n LocationModel,\n ShipToModel,\n SoldToModel,\n} from '~types/masterData';\nimport { SearchQuery } from '~types/searchQuery';\n\nconst endpoint = 'masters';\nexport default function useMasterDataApi() {\n const { find, get, post, put, delete: remove, exportFile } = useApi();\n\n const getAssetTypes = async (query: SearchQuery) => {\n var url = `${endpoint}/types`;\n return await find(url, query);\n };\n\n const getAssetType = async (id: string) => {\n return await get(`${endpoint}/types/${id}`);\n };\n\n const createAssetType = async (payload: AssetTypeModel) => {\n return await post(`${endpoint}/types`, payload);\n };\n\n const updateAssetType = async (payload: AssetTypeModel) => {\n return await put(`${endpoint}/types`, payload);\n };\n\n const deleteAssetType = async (id: string) => {\n return await remove(`${endpoint}/types/${id}`);\n };\n\n const exportAssetTypes = async (query: SearchQuery) => {\n const url = `${endpoint}/types/export`;\n return await exportFile(url, { ...query, page: 0 });\n };\n\n const getAssetTypeDetails = async (query: SearchQuery) => {\n var url = `${endpoint}/typedetails`;\n return await find(url, query);\n };\n\n const getAssetTypeDetail = async (id: string) => {\n return await get(`${endpoint}/typedetails/${id}`);\n };\n\n const createAssetTypeDetail = async (payload: AssetTypeDetailModel) => {\n return await post(`${endpoint}/typedetails`, payload);\n };\n\n const updateAssetTypeDetail = async (payload: AssetTypeDetailModel) => {\n return await put(`${endpoint}/typedetails`, payload);\n };\n\n const deleteAssetTypeDetail = async (id: string) => {\n return await remove(`${endpoint}/typedetails/${id}`);\n };\n\n const exportAssetTypeDetails = async (query: SearchQuery) => {\n const url = `${endpoint}/typedetails/export`;\n return await exportFile(url, { ...query, page: 0 });\n };\n\n const getAssetClasses = async (query: SearchQuery) => {\n var url = `${endpoint}/classes`;\n return await find(url, query);\n };\n\n const getAssetClass = async (id: string) => {\n return await get(`${endpoint}/classes/${id}`);\n };\n\n const createAssetClass = async (payload: AssetClassModel) => {\n return await post(`${endpoint}/classes`, payload);\n };\n\n const updateAssetClass = async (payload: AssetClassModel) => {\n return await put(`${endpoint}/classes`, payload);\n };\n\n const deleteAssetClass = async (id: string) => {\n return await remove(`${endpoint}/classes/${id}`);\n };\n\n const exportAssetClasses = async (query: SearchQuery) => {\n const url = `${endpoint}/classes/export`;\n return await exportFile(url, { ...query, page: 0 });\n };\n\n const getCostCenters = async (query: SearchQuery) => {\n var url = `${endpoint}/costcenters`;\n return await find(url, query);\n };\n\n const getCostCenter = async (id: string) => {\n return await get(`${endpoint}/costcenters/${id}`);\n };\n\n const createCostCenter = async (payload: CostCenterModel) => {\n return await post(`${endpoint}/costcenters`, payload);\n };\n\n const updateCostCenter = async (payload: CostCenterModel) => {\n return await put(`${endpoint}/costcenters`, payload);\n };\n\n const deleteCostCenter = async (id: string) => {\n return await remove(`${endpoint}/costcenters/${id}`);\n };\n\n const exportCostCenters = async (query: SearchQuery) => {\n const url = `${endpoint}/costcenters/export`;\n return await exportFile(url, { ...query, page: 0 });\n };\n\n const getAssetStatuses = async (query: SearchQuery) => {\n var url = `${endpoint}/statuses`;\n return await find(url, query);\n };\n\n const getAssetStatus = async (id: string) => {\n return await get(`${endpoint}/statuses/${id}`);\n };\n\n const createAssetStatus = async (payload: AssetStatusModel) => {\n return await post(`${endpoint}/statuses`, payload);\n };\n\n const updateAssetStatus = async (payload: AssetStatusModel) => {\n return await put(`${endpoint}/statuses`, payload);\n };\n\n const deleteAssetStatus = async (id: string) => {\n return await remove(`${endpoint}/statuses/${id}`);\n };\n\n const exportAssetStatuses = async (query: SearchQuery) => {\n const url = `${endpoint}/statuses/export`;\n return await exportFile(url, { ...query, page: 0 });\n };\n\n const getLocations = async (query: SearchQuery) => {\n var url = `${endpoint}/locations`;\n return await find(url, query);\n };\n\n const getLocation = async (id: string) => {\n return await get(`${endpoint}/locations/${id}`);\n };\n\n const createLocation = async (payload: LocationModel) => {\n return await post(`${endpoint}/locations`, payload);\n };\n\n const updateLocation = async (payload: LocationModel) => {\n return await put(`${endpoint}/locations`, payload);\n };\n\n const deleteLocation = async (id: string) => {\n return await remove(`${endpoint}/locations/${id}`);\n };\n\n const exportLocations = async (query: SearchQuery) => {\n const url = `${endpoint}/locations/export`;\n return await exportFile(url, { ...query, page: 0 });\n };\n\n const getShipTos = async (query: SearchQuery) => {\n var url = `${endpoint}/shiptos`;\n return await find(url, query);\n };\n\n const getShipTo = async (id: string) => {\n return await get(`${endpoint}/shiptos/${id}`);\n };\n\n const createShipTo = async (payload: ShipToModel) => {\n return await post(`${endpoint}/shiptos`, payload);\n };\n\n const updateShipTo = async (payload: ShipToModel) => {\n return await put(`${endpoint}/shiptos`, payload);\n };\n\n const deleteShipTo = async (id: string) => {\n return await remove(`${endpoint}/shiptos/${id}`);\n };\n\n const exportShipTos = async (query: SearchQuery) => {\n const url = `${endpoint}/shiptos/export`;\n return await exportFile(url, { ...query, page: 0 });\n };\n\n const getSoldTos = async (query: SearchQuery) => {\n var url = `${endpoint}/soldtos`;\n return await find(url, query);\n };\n\n const getSoldTo = async (id: string) => {\n return await get(`${endpoint}/soldtos/${id}`);\n };\n\n const createSoldTo = async (payload: SoldToModel) => {\n return await post(`${endpoint}/soldtos`, payload);\n };\n\n const updateSoldTo = async (payload: SoldToModel) => {\n return await put(`${endpoint}/soldtos`, payload);\n };\n\n const deleteSoldTo = async (id: string) => {\n return await remove(`${endpoint}/soldtos/${id}`);\n };\n\n const exportSoldTos = async (query: SearchQuery) => {\n const url = `${endpoint}/soldtos/export`;\n return await exportFile(url, { ...query, page: 0 });\n };\n\n return {\n getAssetTypes,\n getAssetType,\n createAssetType,\n updateAssetType,\n deleteAssetType,\n exportAssetTypes,\n\n getAssetTypeDetails,\n getAssetTypeDetail,\n createAssetTypeDetail,\n updateAssetTypeDetail,\n deleteAssetTypeDetail,\n exportAssetTypeDetails,\n\n getAssetClasses,\n getAssetClass,\n createAssetClass,\n updateAssetClass,\n deleteAssetClass,\n exportAssetClasses,\n\n getAssetStatuses,\n getAssetStatus,\n createAssetStatus,\n updateAssetStatus,\n deleteAssetStatus,\n exportAssetStatuses,\n\n getCostCenters,\n getCostCenter,\n createCostCenter,\n updateCostCenter,\n deleteCostCenter,\n exportCostCenters,\n\n getLocations,\n getLocation,\n createLocation,\n updateLocation,\n deleteLocation,\n exportLocations,\n\n getShipTos,\n getShipTo,\n createShipTo,\n updateShipTo,\n deleteShipTo,\n exportShipTos,\n\n getSoldTos,\n getSoldTo,\n createSoldTo,\n updateSoldTo,\n deleteSoldTo,\n exportSoldTos,\n };\n}\n","import * as React from 'react'\nimport { styles } from '~styles/Styles'\n\ninterface GridProps {\n height?: string;\n columns?: string;\n rows?: string;\n alignContent?: 'center' | 'start' | 'end' | 'space-between' | 'space-around';\n alignItems?: 'center' | 'start' | 'end' | 'space-between' | 'space-around';\n justifyContent?: 'center' | 'start' | 'end' | 'space-between' | 'space-around';\n justifyItems?: 'center' | 'start' | 'end' | 'space-between' | 'space-around';\n bgColor?: string;\n children: React.ReactNode;\n}\n\n\nconst Grid = ({ \n height,\n columns = 'auto', \n rows = 'auto',\n alignContent = 'start', \n alignItems = 'center',\n justifyContent = 'start', \n justifyItems = 'start',\n bgColor = 'transparent', \n children }: GridProps) =>
\n {children}\n
\n\nexport default Grid","import React from 'react';\nimport { createState, useState } from '@hookstate/core';\nimport { PagedResultModel } from '~types/pagedResultModels';\nimport { RoleModel } from '~types/roleModels';\n\nconst rolePagedStore = createState>({\n totalPages: 0,\n totalRecords: 0,\n currentPage: 0,\n pageSize: 0,\n records: [],\n});\n\nexport { rolePagedStore };\n","import * as React from 'react';\nimport {\n Button,\n Col,\n Form,\n Input,\n notification,\n Row,\n Select,\n Space,\n Image,\n Spin,\n Popconfirm,\n Checkbox,\n} from 'antd';\nimport { useState } from '@hookstate/core';\nimport { createOptions, parseStateAsJson } from '~utils/transform';\nimport MESSAGES from '~constants/messages';\nimport Box from '~components/common/Box';\nimport useAssetApi from '~root/src/apis/useAssetApi';\nimport TextArea from 'antd/lib/input/TextArea';\nimport {\n AssetDetailModel,\n AssetModel,\n Attachment,\n UpdateAssetModel,\n} from '~types/assetModels';\nimport AppIcon from '~components/common/AppIcon';\nimport { faCaretLeft, faTrash } from '@fortawesome/free-solid-svg-icons';\nimport { useHistory } from 'react-router-dom';\nimport FileUploader from '~components/common/FileUploader';\nimport { defaultAxiosConfig } from '~constants/api';\nimport { isImage, isPdf } from '~utils/files';\nimport { uuid } from 'uuidv4';\nimport DatePicker from '~components/common/DatePicker';\nimport dayjs from 'dayjs';\nimport Storages from '~utils/storages';\nimport useRoleApi from '~root/src/apis/useRoleApi';\nimport { ATTACHMENT_TYPE } from '~constants/attachment';\nimport { FilePdfOutlined } from '@ant-design/icons';\nimport { downloadFile } from '~utils/downloadFile';\nimport { ASSET_GRID_COLUMNS } from '~constants/responsive';\nimport { DateTime } from '~utils/format';\nimport useMasterDataApi from '~root/src/apis/useMasterDataApi';\nimport { FORMATING } from '~constants/formating';\nimport { ActiveStatus } from '~constants/activeStatus';\nimport { AssetTypeDetailModel } from '~types/masterData';\n\ninterface AssetFormProps {\n data?: AssetDetailModel;\n readonlyFields?: string[];\n onSuccess?(): void;\n onCancel?(): void;\n}\n\nexport default function AssetForm({\n data,\n readonlyFields,\n onSuccess,\n onCancel,\n}: AssetFormProps) {\n const [form] = Form.useForm();\n const { create, update, deleteAttachment } = useAssetApi();\n const {\n getAssetTypes,\n getAssetTypeDetails,\n getAssetClasses,\n getAssetStatuses,\n getCostCenters,\n getLocations,\n getShipTos,\n getSoldTos,\n } = useMasterDataApi();\n const { getRoles } = useRoleApi();\n const loading = useState(false);\n const saving = useState(false);\n const assetTypes = useState([]);\n const assetTypeDetails = useState([]);\n const assetTypeDetailsFiltered = useState([]);\n const assetStatuses = useState([]);\n const assetCostCenters = useState([]);\n const assetClasses = useState([]);\n const ownerRoles = useState([]);\n const locations = useState([]);\n const shipTos = useState([]);\n const soldTos = useState([]);\n const [attachments, setAttachments] = React.useState([]);\n const [uploadFiles, setUploadFiles] = React.useState([]);\n const assetId = useState('');\n const guid = data?.id ?? uuid();\n const deleted = useState(ActiveStatus.Active);\n\n const onFinish = async () => {\n const asset: UpdateAssetModel = await form.validateFields();\n const id = data?.id ?? guid;\n const model: UpdateAssetModel = {\n ...asset,\n id: id,\n warrantyEndAt: asset?.warrantyEndAt\n ? dayjs(asset.warrantyEndAt).toISOString()\n : undefined,\n yearOfManufacture: asset?.yearOfManufacture\n ? dayjs(asset.yearOfManufacture).year()\n : undefined,\n uploadFiles: uploadFiles,\n };\n\n saving.set(true);\n try {\n const result = data?.id ? await update(model) : await create(model);\n\n if (\n result &&\n (result.status === 200 ||\n result.status === 201 ||\n result.status === 204)\n ) {\n notification.success({\n key: 'asset_create_success',\n message: MESSAGES.saveSuccessfully,\n });\n\n //setAttachments(uploadFiles);\n if (typeof onSuccess === 'function') onSuccess();\n }\n } catch (error: any) {\n const {\n data: { status, detail },\n } = error;\n //console.log(['error', error]);\n notification.error({\n key: 'asset_create_failed',\n message: MESSAGES.saveFailure,\n description: `Error: ${status} / ${detail}`,\n });\n } finally {\n resetData(data === undefined);\n }\n };\n\n const onFinishFailed = (errorInfo: any) => {\n console.log('Failed:', errorInfo);\n };\n\n const onValuesChange = (changedValues: any, allValues: any) => {\n assetId.set(changedValues.assetId);\n };\n\n const prepareData = async () => {\n loading.set(true);\n const [\n types,\n details,\n statuses,\n costCenters,\n classes,\n locs,\n ships,\n solds,\n roles,\n ] = await Promise.all([\n getAssetTypes({ page: 0, size: 10, search: '', deleted: deleted.value }),\n getAssetTypeDetails({\n page: 0,\n size: 10,\n search: '',\n deleted: deleted.value,\n }),\n getAssetStatuses({\n page: 0,\n size: 10,\n search: '',\n deleted: deleted.value,\n }),\n getCostCenters({ page: 0, size: 10, search: '', deleted: deleted.value }),\n getAssetClasses({\n page: 0,\n size: 10,\n search: '',\n deleted: deleted.value,\n }),\n getLocations({ page: 0, size: 10, search: '', deleted: deleted.value }),\n getShipTos({ page: 0, size: 10, search: '', deleted: deleted.value }),\n getSoldTos({ page: 0, size: 10, search: '', deleted: deleted.value }),\n getRoles({ page: 0, size: 10, search: '', deleted: deleted.value }),\n ]);\n\n assetTypes.set(types.data.records);\n assetTypeDetails.set(details.data.records);\n assetTypeDetailsFiltered.set(details.data.records);\n assetStatuses.set(statuses.data.records);\n assetCostCenters.set(costCenters.data.records);\n assetClasses.set(classes.data.records);\n locations.set(locs.data.records);\n shipTos.set(ships.data.records);\n soldTos.set(solds.data.records);\n ownerRoles.set(roles.data.records);\n loading.set(false);\n };\n\n const resetData = (resetFields: boolean = true) => {\n if (resetFields) form.resetFields();\n saving.set(false);\n };\n\n function uploadFile(info: any) {\n console.log(['uploadFile', info]);\n\n const { status } = info.file;\n console.log(['status', status]);\n\n if (status === 'done') {\n // const uploadFiles = info.fileList.map((f: any) => ({\n // name: f.name,\n // schemaName: f.name,\n // blob: '',\n // id: '',\n // type: ATTACHMENT_TYPE.Photo,\n // }));\n const uploadFiles = info.fileList.map((f: any) => f.name);\n console.log(['uploadFiles', uploadFiles]);\n setUploadFiles(uploadFiles);\n }\n\n // const files = info.fileList.map((f: any) => ({\n // blob: f.thumbUrl.substring('data:image/png;base64'.length),\n // id: f.uid,\n // name: f.name,\n // schemaName: f.name,\n // type: ATTACHMENT_TYPE.Photo,\n // }));\n // const files = info.fileList.map((f: any) =>\n // console.log(['f', f, f.name, f.thumbUrl])\n // );\n\n //setUploadFiles(files);\n\n // if (status !== 'uploading') {\n // console.log(['info.file', status, info, info.file, info.fileList]);\n // // store reference to file upload info for retry.\n // // setUploadInfo(info);\n // }\n // if (status === 'done') {\n // // set timeout\n\n // }\n // // clear error message\n // setMessage();\n // setError(null);\n // let description = '';\n // if (!fileValidations(info.file))\n // setMessage({\n // status: 'warning',\n // description: `${info.file.name} invalid file type`,\n // });\n // // support only one file per each request.\n // if (info.fileList.length > 1) info.fileList.shift();\n // setUploadFileName(info.file.name);\n // // // store reference to file upload info for retry.\n // // setUploadInfo(info);\n // const { status } = info.file;\n // if (status !== 'uploading') {\n // console.log(['info.file', status, info, info.file, info.fileList]);\n // // store reference to file upload info for retry.\n // // setUploadInfo(info);\n // }\n // if (status === 'done') {\n // // set timeout\n // handleProcessingTimeout();\n // // subscribe to rabbitMQ\n // subscribeDispoImport(dispoImportCallback);\n // description = (\n // \n // \n // {info.file.name} file was uploaded and being processed. Please\n // wait...\n // \n // \n // );\n // // disable form item\n // setProcessing(true);\n // setMessage({\n // status: 'info',\n // description: description,\n // });\n // // call api to start dispo import task\n // // dispoStore.processDispoImport();\n // } else if (status === 'error') {\n // if (info.file.error && info.file.error.status === 401)\n // description = 'Unauthorized';\n // else {\n // // enable form item\n // setProcessing(false);\n // // Dispo import is being processed by other user.\n // if (info.file.error && info.file.error.status === 400) {\n // // set error message\n // setError(null);\n // // set message\n // setMessage({\n // status: 'warning',\n // //description: `Dispo import is being processed by other user. The system will automatically process your dispo after previous job is completed.`\n // description: (\n // \n // \n // Dispo import is being processed by {info.file.response}. This\n // block will automatically close after the processing task is\n // completed.\n // \n // \n // ),\n // });\n // return;\n // } else {\n // description =\n // info.file.response && info.file.response.ErrorMessage\n // ? info.file.response.ErrorMessage\n // : info.file.error && info.file.error.message\n // ? info.file.error.message\n // : 'Network Error: Please try again'; //info.file.error;\n // }\n // }\n // setMessage({\n // status: 'error',\n // description: `${info.file.name} file upload failed. ${description}`,\n // });\n // }\n }\n\n const deleteFile = async (id: string) => {\n const res = await deleteAttachment(id);\n if (res && res.status === 204) {\n removeAttachment(id);\n }\n };\n\n const removeAttachment = (id: string) => {\n setAttachments(attachments?.filter((atm) => atm.id !== id));\n };\n\n const filterTypeDetail = (assetTypeId: string) => {\n var details = parseStateAsJson(\n assetTypeDetails.value.filter(\n (x: AssetTypeDetailModel) =>\n x.assetTypeId === assetTypeId || assetTypeId.length === 0\n )\n );\n\n assetTypeDetailsFiltered.set(details);\n };\n\n React.useEffect(() => {\n prepareData();\n }, []);\n\n React.useEffect(() => {\n form.resetFields();\n setAttachments(data?.attachments ?? []);\n }, [data]);\n\n return (\n \n {/*

Asset / {data ? `${data.assetId}` : 'Create'}

*/}\n {loading.value && }\n \n {/* */}\n\n \n \n \n \n \n \n \n \n \n {\n const label = option?.label?.toString() ?? '';\n return (\n label.toLowerCase().indexOf(input.toLowerCase()) >= 0\n );\n }}\n onSelect={filterTypeDetail}\n allowClear\n onClear={() => filterTypeDetail('')}\n />\n \n \n \n \n {\n const label = option?.label?.toString() ?? '';\n return (\n label.toLowerCase().indexOf(input.toLowerCase()) >= 0\n );\n }}\n allowClear\n />\n \n \n \n \n \n \n \n \n \n \n \n {\n const label = option?.label?.toString() ?? '';\n return (\n label.toLowerCase().indexOf(input.toLowerCase()) >= 0\n );\n }}\n allowClear\n />\n \n \n \n \n \n \n \n \n \n {/* */}\n {\n const label = option?.label?.toString() ?? '';\n return (\n label.toLowerCase().indexOf(input.toLowerCase()) >= 0\n );\n }}\n allowClear\n />\n \n \n \n \n {/* */}\n {\n const label = option?.label?.toString() ?? '';\n return (\n label.toLowerCase().indexOf(input.toLowerCase()) >= 0\n );\n }}\n allowClear\n />\n \n \n \n \n \n \n {\n const label = option?.label?.toString() ?? '';\n return (\n label.toLowerCase().indexOf(input.toLowerCase()) >= 0\n );\n }}\n allowClear\n />\n \n \n \n \n {\n const label = option?.label?.toString() ?? '';\n return (\n label.toLowerCase().indexOf(input.toLowerCase()) >= 0\n );\n }}\n allowClear\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* \n \n \n \n */}\n \n \n \n \n