diff --git a/.github/workflows/delploy.yml b/.github/workflows/_disabled_delploy.yml similarity index 99% rename from .github/workflows/delploy.yml rename to .github/workflows/_disabled_delploy.yml index 8c62adb8..5b557ebb 100644 --- a/.github/workflows/delploy.yml +++ b/.github/workflows/_disabled_delploy.yml @@ -1,4 +1,4 @@ -name: deploy +name: Deploy on: workflow_dispatch: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..58d91a37 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,75 @@ +name: Build artifacts + +on: + push: + branches: + - main + - develop + workflow_dispatch: + +env: + REGISTRY: ghcr.io + REPOSITORY_OWNER: wkspower + KEYCLOAK_URL: http://localhost:8082 + WKS_API_URL: http://localhost:8081 + WKS_STORAGE_API_URL: http://localhost:8085 + WEBSOCKET_ENABLED: false + WEBSOCKET_URL: ws://localhost:8484 + TOPIC_CASE_CREATE: case-create + TOPIC_CREATE_HUMAN_TASK: human-task-create + NOVU_ENABLED: false + NOVU_PUBLISHER_API_URL: http://localhost:3002 + +jobs: + checkout-repo: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + id: checkout + uses: actions/checkout@v3 + + build-java: + runs-on: ubuntu-latest + needs: checkout-repo + permissions: + contents: read + packages: write + steps: + - name: Set up jdk 18 + uses: actions/setup-java@v3 + with: + java-version: "18" + distribution: "temurin" + + - name: Set up maven + uses: stCarolas/setup-maven@v4.5 + with: + maven-version: 3.8.2 + + - name: Build all for backend api + run: mvn -B package --file ./apps/java/pom.xml + + build-react: + runs-on: ubuntu-latest + needs: checkout-repo + permissions: + contents: read + packages: write + steps: + - name: Install dependencies for case-portal + run: yarn --cwd ./apps/react/case-portal install + + - name: Build for case-portal + env: + NODE_OPTIONS: "--max_old_space_size=4096" + run: | + export REACT_APP_KEYCLOAK_URL="${{ env.KEYCLOAK_URL }}" + export REACT_APP_API_URL="${{ env.WKS_API_URL }}" + export REACT_APP_STORAGE_URL="${{ env.WKS_STORAGE_API_URL }}" + export REACT_APP_WEBSOCKETS_ENABLED="${{ env.WEBSOCKET_ENABLED }}" + export REACT_APP_WEBSOCKETS_URL="${{ env.WEBSOCKET_URL }}" + export REACT_APP_WEBSOCKETS_CASE_CREATED="${{ env.TOPIC_CASE_CREATE }}" + export REACT_APP_WEBSOCKETS_HUMAN_TASK_CREATED="${{ env.TOPIC_CREATE_HUMAN_TASK }}" + export REACT_APP_NOVU_ENABLED="${{ env.NOVU_ENABLED }}" + export REACT_APP_NOVU_PUBLISHER_API_URL="${{ env.NOVU_PUBLISHER_API_URL }}" + yarn --cwd ./apps/react/case-portal build diff --git a/.github/workflows/jarDeploy.yml b/.github/workflows/jarDeploy.yml deleted file mode 100644 index 5daf4190..00000000 --- a/.github/workflows/jarDeploy.yml +++ /dev/null @@ -1,33 +0,0 @@ -# This workflow will build a package using Maven and then publish it to GitHub packages when a release is created -# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path - -name: jar deploy - -on: - workflow_dispatch: - -jobs: - build: - - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - - steps: - - uses: actions/checkout@v3 - - name: Set up JDK 17 - uses: actions/setup-java@v3.9.0 - with: - java-version: '17' - distribution: 'temurin' - server-id: github # Value of the distributionManagement/repository/id field of the pom.xml - settings-path: ${{ github.workspace }} # location for the settings.xml file - - - name: Build with Maven - run: mvn -B package --file pom.xml - - - name: Publish to GitHub Packages Apache Maven - run: mvn deploy -s $GITHUB_WORKSPACE/settings.xml - env: - GITHUB_TOKEN: ${{ github.token }} diff --git a/.github/workflows/tags.yml b/.github/workflows/release.yml similarity index 93% rename from .github/workflows/tags.yml rename to .github/workflows/release.yml index 8b852fbd..bcf9187b 100644 --- a/.github/workflows/tags.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -name: tags +name: Release - Build and Publish Docker Images on: push: @@ -20,7 +20,8 @@ env: NOVU_PUBLISHER_API_URL: http://localhost:3002 jobs: - build: + + checkout: runs-on: ubuntu-latest permissions: contents: read @@ -29,10 +30,13 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Extract tag name - id: extract_tag - run: echo "::set-output name=tag::$(echo ${GITHUB_REF#refs/tags/})" + build-java: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: - name: Set up jdk 18 uses: actions/setup-java@v3 with: @@ -44,16 +48,16 @@ jobs: with: maven-version: 3.8.2 - - name: Log in to the Container registry - uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Build all for backend api run: mvn -B package --file apps/java/pom.xml + build-react: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: - name: Install dependencies for case-portal run: yarn --cwd apps/react/case-portal install @@ -72,6 +76,19 @@ jobs: export REACT_APP_NOVU_PUBLISHER_API_URL="${{ env.NOVU_PUBLISHER_API_URL }}" yarn --cwd apps/react/case-portal build + build-docker-images: + steps: + - name: Extract tag name + id: extract_tag + run: echo "::set-output name=tag::$(echo ${GITHUB_REF#refs/tags/})" + + - name: Log in to the Container registry + uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up QEMU uses: docker/setup-qemu-action@v2 @@ -132,15 +149,6 @@ jobs: push: true tags: "${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-portal:${{ steps.extract_tag.outputs.tag }}" - - name: Build and push Docker image for case-portal - uses: docker/build-push-action@v2 - with: - context: ./apps/react/case-portal - platforms: linux/amd64,linux/arm64 - file: apps/react/case-portal/deployments/Dockerfile - push: true - tags: "${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-portal:${{ steps.extract_tag.outputs.tag }}" - - name: Build and push Docker image for websocket-publisher uses: docker/build-push-action@v2 with: diff --git a/apps/react/case-portal/package.json b/apps/react/case-portal/package.json index 56f19390..3492119e 100644 --- a/apps/react/case-portal/package.json +++ b/apps/react/case-portal/package.json @@ -40,12 +40,13 @@ "simplebar-react": "^3.2.4" }, "scripts": { - "start": "webpack serve --mode=development --port 3001", - "build": "eslint --fix . && webpack --mode=production", - "test": "jest", - "lint": "eslint --fix .", - "format": "prettier --write \"**/*.{js,jsx,json,css,scss,md}\"", - "format:check": "prettier --check \"**/*.{js,jsx,json,css,scss,md}\"" + "start": "echo 'Starting development server...' && webpack serve --mode=development --port 3001", + "build": "echo 'Running ESLint...' && eslint . && echo 'Checking code formatting...' && prettier --check \"**/*.{js,jsx,json,css,scss,md}\" && echo 'Building for production...' && webpack --mode=production", + "lint:fix": "echo 'Fixing linting issues...' && eslint --fix .", + "lint:check": "echo 'Checking for linting issues...' && eslint .", + "format:fix": "echo 'Fixing code formatting...' && prettier --write \"**/*.{js,jsx,json,css,scss,md}\"", + "format:check": "echo 'Checking code formatting...' && prettier --check \"**/*.{js,jsx,json,css,scss,md}\"", + "test": "echo 'Running tests...' && jest" }, "babel": { "presets": [ diff --git a/apps/react/case-portal/src/SessionStoreContext.js b/apps/react/case-portal/src/SessionStoreContext.js index 67edbb63..868d778a 100644 --- a/apps/react/case-portal/src/SessionStoreContext.js +++ b/apps/react/case-portal/src/SessionStoreContext.js @@ -1,8 +1,8 @@ -import React, { useContext } from 'react'; +import React, { useContext } from 'react' -const SessionStoreContext = React.createContext({}); -export const SessionStoreProvider = SessionStoreContext.Provider; -export const SessionStoreConsumer = SessionStoreContext.Consumer; +const SessionStoreContext = React.createContext({}) +export const SessionStoreProvider = SessionStoreContext.Provider +export const SessionStoreConsumer = SessionStoreContext.Consumer export function withStore(WrappedComponent) { function WithStoreComponent(props) { @@ -10,24 +10,24 @@ export function withStore(WrappedComponent) { {(stores) => } - ); + ) } - return WithStoreComponent; + return WithStoreComponent } export const useSession = () => { - const attrs = useContext(SessionStoreContext); - return attrs['keycloak']; -}; + const attrs = useContext(SessionStoreContext) + return attrs['keycloak'] +} export const useMenu = () => { - const attrs = useContext(SessionStoreContext); - return attrs['menu']; -}; + const attrs = useContext(SessionStoreContext) + return attrs['menu'] +} export const useBpmEngine = () => { - const attrs = useContext(SessionStoreContext); - return attrs['bpmEngine']; -}; + const attrs = useContext(SessionStoreContext) + return attrs['bpmEngine'] +} -export default SessionStoreContext; +export default SessionStoreContext diff --git a/apps/react/case-portal/src/assets/images/auth/AuthBackground.js b/apps/react/case-portal/src/assets/images/auth/AuthBackground.js index cd8d693c..52643aeb 100644 --- a/apps/react/case-portal/src/assets/images/auth/AuthBackground.js +++ b/apps/react/case-portal/src/assets/images/auth/AuthBackground.js @@ -1,11 +1,11 @@ // material-ui -import { useTheme } from '@mui/material/styles'; -import { Box } from '@mui/material'; +import { useTheme } from '@mui/material/styles' +import { Box } from '@mui/material' // ==============================|| AUTH BLUR BACK SVG ||============================== // const AuthBackground = () => { - const theme = useTheme(); + const theme = useTheme() return ( { /> - ); -}; + ) +} -export default AuthBackground; +export default AuthBackground diff --git a/apps/react/case-portal/src/common/caseStatus.js b/apps/react/case-portal/src/common/caseStatus.js index 2efd5aa2..d48b6ab9 100644 --- a/apps/react/case-portal/src/common/caseStatus.js +++ b/apps/react/case-portal/src/common/caseStatus.js @@ -2,4 +2,4 @@ export const CaseStatus = { WipCaseStatus: Symbol('WIP_CASE_STATUS'), ClosedCaseStatus: Symbol('CLOSED_CASE_STATUS'), ArchivedCaseStatus: Symbol('ARCHIVED_CASE_STATUS'), -}; +} diff --git a/apps/react/case-portal/src/components/@extended/AnimateButton.js b/apps/react/case-portal/src/components/@extended/AnimateButton.js index 481ef42c..c06beb5b 100644 --- a/apps/react/case-portal/src/components/@extended/AnimateButton.js +++ b/apps/react/case-portal/src/components/@extended/AnimateButton.js @@ -1,7 +1,7 @@ -import PropTypes from 'prop-types'; +import PropTypes from 'prop-types' // third-party -import { motion } from 'framer-motion'; +import { motion } from 'framer-motion' // ==============================|| ANIMATION BUTTON ||============================== // @@ -15,15 +15,15 @@ export default function AnimateButton({ children, type }) { {children} - ); + ) } } AnimateButton.propTypes = { children: PropTypes.node, type: PropTypes.oneOf(['slide', 'scale', 'rotate']), -}; +} AnimateButton.defaultProps = { type: 'scale', -}; +} diff --git a/apps/react/case-portal/src/components/@extended/Breadcrumbs.js b/apps/react/case-portal/src/components/@extended/Breadcrumbs.js index e65c0384..34a259ac 100644 --- a/apps/react/case-portal/src/components/@extended/Breadcrumbs.js +++ b/apps/react/case-portal/src/components/@extended/Breadcrumbs.js @@ -1,52 +1,52 @@ -import PropTypes from 'prop-types'; -import { useEffect, useState } from 'react'; -import { Link, useLocation } from 'react-router-dom'; +import PropTypes from 'prop-types' +import { useEffect, useState } from 'react' +import { Link, useLocation } from 'react-router-dom' // material-ui -import MuiBreadcrumbs from '@mui/material/Breadcrumbs'; -import { Grid, Typography } from '@mui/material'; -import MainCard from '../MainCard'; +import MuiBreadcrumbs from '@mui/material/Breadcrumbs' +import { Grid, Typography } from '@mui/material' +import MainCard from '../MainCard' const Breadcrumbs = ({ navigation, title, ...others }) => { - const location = useLocation(); - const [main, setMain] = useState(); - const [item, setItem] = useState(); + const location = useLocation() + const [main, setMain] = useState() + const [item, setItem] = useState() // set active item state const getCollapse = (menu) => { if (menu.children) { menu.children.filter((collapse) => { if (collapse.type && collapse.type === 'collapse') { - getCollapse(collapse); + getCollapse(collapse) } else if (collapse.type && collapse.type === 'item') { if (location.pathname === collapse.url) { - setMain(menu); - setItem(collapse); + setMain(menu) + setItem(collapse) } } - return false; - }); + return false + }) } - }; + } useEffect(() => { navigation?.items?.map((menu) => { if (menu.type && menu.type === 'group') { - getCollapse(menu); + getCollapse(menu) } - return false; - }); - }); + return false + }) + }) // only used for component demo breadcrumbs if (location.pathname === '/breadcrumbs') { - location.pathname = '/dashboard/analytics'; + location.pathname = '/dashboard/analytics' } - let mainContent; - let itemContent; - let breadcrumbContent = ; - let itemTitle = ''; + let mainContent + let itemContent + let breadcrumbContent = + let itemTitle = '' // collapse item if (main && main.type === 'collapse') { @@ -59,17 +59,17 @@ const Breadcrumbs = ({ navigation, title, ...others }) => { > {main.title} - ); + ) } // items if (item && item.type === 'item') { - itemTitle = item.title; + itemTitle = item.title itemContent = ( {itemTitle} - ); + ) // main if (item.breadcrumbs !== false) { @@ -109,16 +109,16 @@ const Breadcrumbs = ({ navigation, title, ...others }) => { )} - ); + ) } } - return breadcrumbContent; -}; + return breadcrumbContent +} Breadcrumbs.propTypes = { navigation: PropTypes.object, title: PropTypes.bool, -}; +} -export default Breadcrumbs; +export default Breadcrumbs diff --git a/apps/react/case-portal/src/components/@extended/Dot.js b/apps/react/case-portal/src/components/@extended/Dot.js index fe99236e..0fc32511 100644 --- a/apps/react/case-portal/src/components/@extended/Dot.js +++ b/apps/react/case-portal/src/components/@extended/Dot.js @@ -1,29 +1,29 @@ -import PropTypes from 'prop-types'; -import { useTheme } from '@mui/material/styles'; -import Box from '@mui/material/Box'; +import PropTypes from 'prop-types' +import { useTheme } from '@mui/material/styles' +import Box from '@mui/material/Box' const Dot = ({ color, size }) => { - const theme = useTheme(); - let main; + const theme = useTheme() + let main switch (color) { case 'secondary': - main = theme.palette.secondary.main; - break; + main = theme.palette.secondary.main + break case 'error': - main = theme.palette.error.main; - break; + main = theme.palette.error.main + break case 'warning': - main = theme.palette.warning.main; - break; + main = theme.palette.warning.main + break case 'info': - main = theme.palette.info.main; - break; + main = theme.palette.info.main + break case 'success': - main = theme.palette.success.main; - break; + main = theme.palette.success.main + break case 'primary': default: - main = theme.palette.primary.main; + main = theme.palette.primary.main } return ( @@ -35,12 +35,12 @@ const Dot = ({ color, size }) => { bgcolor: main, }} /> - ); -}; + ) +} Dot.propTypes = { color: PropTypes.string, size: PropTypes.number, -}; +} -export default Dot; +export default Dot diff --git a/apps/react/case-portal/src/components/@extended/Transitions.js b/apps/react/case-portal/src/components/@extended/Transitions.js index b7bb90ae..90adfeec 100644 --- a/apps/react/case-portal/src/components/@extended/Transitions.js +++ b/apps/react/case-portal/src/components/@extended/Transitions.js @@ -1,15 +1,15 @@ -import PropTypes from 'prop-types'; -import { forwardRef } from 'react'; -import Fade from '@mui/material/Fade'; -import Box from '@mui/material/Box'; -import Grow from '@mui/material/Grow'; +import PropTypes from 'prop-types' +import { forwardRef } from 'react' +import Fade from '@mui/material/Fade' +import Box from '@mui/material/Box' +import Grow from '@mui/material/Grow' // ==============================|| TRANSITIONS ||============================== // function CreateTransitions({ children, position, type, ...others }, ref) { let positionSX = { transformOrigin: '0 0 0', - }; + } switch (position) { case 'top-right': @@ -21,8 +21,8 @@ function CreateTransitions({ children, position, type, ...others }, ref) { default: positionSX = { transformOrigin: '0 0 0', - }; - break; + } + break } return ( @@ -45,10 +45,10 @@ function CreateTransitions({ children, position, type, ...others }, ref) { )} - ); + ) } -const Transitions = forwardRef(CreateTransitions); +const Transitions = forwardRef(CreateTransitions) Transitions.propTypes = { children: PropTypes.node, @@ -61,11 +61,11 @@ Transitions.propTypes = { 'bottom-right', 'bottom', ]), -}; +} Transitions.defaultProps = { type: 'grow', position: 'top-left', -}; +} -export default Transitions; +export default Transitions diff --git a/apps/react/case-portal/src/components/Kanban/kanban.js b/apps/react/case-portal/src/components/Kanban/kanban.js index 3859eac6..17bf727a 100644 --- a/apps/react/case-portal/src/components/Kanban/kanban.js +++ b/apps/react/case-portal/src/components/Kanban/kanban.js @@ -1,12 +1,12 @@ -import './kanban.css'; -import { extend, addClass } from '@syncfusion/ej2-base'; +import './kanban.css' +import { extend, addClass } from '@syncfusion/ej2-base' import { KanbanComponent, ColumnsDirective, ColumnDirective, -} from '@syncfusion/ej2-react-kanban'; -import { registerLicense } from '@syncfusion/ej2-base'; -import Link from '@mui/material/Link'; +} from '@syncfusion/ej2-react-kanban' +import { registerLicense } from '@syncfusion/ej2-base' +import Link from '@mui/material/Link' export const Kanban = ({ stages, @@ -18,13 +18,13 @@ export const Kanban = ({ }) => { registerLicense( 'ORg4AjUWIQA/Gnt2VVhkQlFadVdJXGFWfVJpTGpQdk5xdV9DaVZUTWY/P1ZhSXxQdkdiX39adXNWRGZYVkw=', - ); + ) - let data = extend([], cases, null, true); + let data = extend([], cases, null, true) function cardRendered(args) { - let val = 'Low'; - addClass([args.element], val); + let val = 'Low' + addClass([args.element], val) } function columnTemplate(props) { @@ -33,14 +33,14 @@ export const Kanban = ({
{props.headerText}
- ); + ) } function cardTemplate(props) { // card css styling docs: https://ej2.syncfusion.com/angular/documentation/card/style - let title = kanbanConfig?.title; - let content = kanbanConfig?.content; + let title = kanbanConfig?.title + let content = kanbanConfig?.content return (
@@ -54,9 +54,9 @@ export const Kanban = ({ setACase({ businessKey: props.businessKey, caseDefinitionId: caseDefId, - }); - e.stopPropagation(); - setOpenCaseForm(true); + }) + e.stopPropagation() + setOpenCaseForm(true) }} > {props.businessKey} @@ -67,7 +67,7 @@ export const Kanban = ({ {title ?.map((attributeName) => { return props.attributes.find((o) => o.name === attributeName) - ?.value; + ?.value }) .join(' ')}
@@ -78,7 +78,7 @@ export const Kanban = ({ {content ?.map((attributeName) => { return props.attributes.find((o) => o.name === attributeName) - ?.value; + ?.value }) .join(' ')} @@ -89,11 +89,11 @@ export const Kanban = ({ - ); + ) } function DialogOpen(args) { - args.cancel = true; + args.cancel = true } return ( @@ -122,12 +122,12 @@ export const Kanban = ({ allowDrop={false} template={columnTemplate.bind(this)} /> - ); + ) })} - ); -}; + ) +} diff --git a/apps/react/case-portal/src/components/Loadable.js b/apps/react/case-portal/src/components/Loadable.js index 49bda4ec..afb2ab80 100644 --- a/apps/react/case-portal/src/components/Loadable.js +++ b/apps/react/case-portal/src/components/Loadable.js @@ -1,5 +1,5 @@ -import { Suspense } from 'react'; -import Loader from './Loader'; +import { Suspense } from 'react' +import Loader from './Loader' function Loadable(Component) { return function LoadableComponent(props) { @@ -7,8 +7,8 @@ function Loadable(Component) { }> - ); - }; + ) + } } -export default Loadable; +export default Loadable diff --git a/apps/react/case-portal/src/components/Loader.js b/apps/react/case-portal/src/components/Loader.js index 8ba0e577..45f2e275 100644 --- a/apps/react/case-portal/src/components/Loader.js +++ b/apps/react/case-portal/src/components/Loader.js @@ -1,6 +1,6 @@ // material-ui -import { styled } from '@mui/material/styles'; -import LinearProgress from '@mui/material/LinearProgress'; +import { styled } from '@mui/material/styles' +import LinearProgress from '@mui/material/LinearProgress' // loader style const LoaderWrapper = styled('div')(({ theme }) => ({ @@ -12,7 +12,7 @@ const LoaderWrapper = styled('div')(({ theme }) => ({ '& > * + *': { marginTop: theme.spacing(2), }, -})); +})) // ==============================|| Loader ||============================== // @@ -20,6 +20,6 @@ const Loader = () => ( -); +) -export default Loader; +export default Loader diff --git a/apps/react/case-portal/src/components/Logo/Logo.js b/apps/react/case-portal/src/components/Logo/Logo.js index c9c09b1d..11a8eeef 100644 --- a/apps/react/case-portal/src/components/Logo/Logo.js +++ b/apps/react/case-portal/src/components/Logo/Logo.js @@ -1,8 +1,8 @@ -import { useTheme } from '@mui/material/styles'; -import logo from 'assets/images/logo.svg'; +import { useTheme } from '@mui/material/styles' +import logo from 'assets/images/logo.svg' const Logo = () => { - const theme = useTheme(); + const theme = useTheme() return ( <> @@ -49,7 +49,7 @@ const Logo = () => { - ); -}; + ) +} -export default Logo; +export default Logo diff --git a/apps/react/case-portal/src/components/Logo/index.js b/apps/react/case-portal/src/components/Logo/index.js index 3ff9668d..55a5029f 100644 --- a/apps/react/case-portal/src/components/Logo/index.js +++ b/apps/react/case-portal/src/components/Logo/index.js @@ -1,8 +1,8 @@ -import PropTypes from 'prop-types'; -import { Link } from 'react-router-dom'; -import ButtonBase from '@mui/material/ButtonBase'; -import Logo from './Logo'; -import config from 'config'; +import PropTypes from 'prop-types' +import { Link } from 'react-router-dom' +import ButtonBase from '@mui/material/ButtonBase' +import Logo from './Logo' +import config from 'config' // ==============================|| MAIN LOGO ||============================== // @@ -15,11 +15,11 @@ const LogoSection = ({ sx, to }) => ( > -); +) LogoSection.propTypes = { sx: PropTypes.object, to: PropTypes.string, -}; +} -export default LogoSection; +export default LogoSection diff --git a/apps/react/case-portal/src/components/MainCard.js b/apps/react/case-portal/src/components/MainCard.js index 295dcf8e..bec599bc 100644 --- a/apps/react/case-portal/src/components/MainCard.js +++ b/apps/react/case-portal/src/components/MainCard.js @@ -1,18 +1,18 @@ -import PropTypes from 'prop-types'; -import { forwardRef } from 'react'; -import { useTheme } from '@mui/material/styles'; -import Card from '@mui/material/Card'; -import CardContent from '@mui/material/CardContent'; -import CardHeader from '@mui/material/CardHeader'; -import Divider from '@mui/material/Divider'; -import Typography from '@mui/material/Typography'; -import Highlighter from './third-party/Highlighter'; +import PropTypes from 'prop-types' +import { forwardRef } from 'react' +import { useTheme } from '@mui/material/styles' +import Card from '@mui/material/Card' +import CardContent from '@mui/material/CardContent' +import CardHeader from '@mui/material/CardHeader' +import Divider from '@mui/material/Divider' +import Typography from '@mui/material/Typography' +import Highlighter from './third-party/Highlighter' // header style const headerSX = { p: 2.5, '& .MuiCardHeader-action': { m: '0px auto', alignSelf: 'center' }, -}; +} // ==============================|| CUSTOM - MAIN CARD ||============================== // @@ -35,8 +35,8 @@ function CreateMainCard( }, ref, ) { - const theme = useTheme(); - boxShadow = theme.palette.mode === 'dark' ? boxShadow || true : boxShadow; + const theme = useTheme() + boxShadow = theme.palette.mode === 'dark' ? boxShadow || true : boxShadow return ( )} - ); + ) } -const MainCard = forwardRef(CreateMainCard); +const MainCard = forwardRef(CreateMainCard) MainCard.propTypes = { border: PropTypes.bool, @@ -119,6 +119,6 @@ MainCard.propTypes = { codeHighlight: PropTypes.bool, content: PropTypes.bool, children: PropTypes.node, -}; +} -export default MainCard; +export default MainCard diff --git a/apps/react/case-portal/src/components/ScrollTop.js b/apps/react/case-portal/src/components/ScrollTop.js index a1d89cbf..68c39207 100644 --- a/apps/react/case-portal/src/components/ScrollTop.js +++ b/apps/react/case-portal/src/components/ScrollTop.js @@ -1,24 +1,24 @@ -import PropTypes from 'prop-types'; -import { useEffect } from 'react'; -import { useLocation } from 'react-router-dom'; +import PropTypes from 'prop-types' +import { useEffect } from 'react' +import { useLocation } from 'react-router-dom' const ScrollTop = ({ children }) => { - const location = useLocation(); - const { pathname } = location; + const location = useLocation() + const { pathname } = location useEffect(() => { window.scrollTo({ top: 0, left: 0, behavior: 'smooth', - }); - }, [pathname]); + }) + }, [pathname]) - return children || null; -}; + return children || null +} ScrollTop.propTypes = { children: PropTypes.node, -}; +} -export default ScrollTop; +export default ScrollTop diff --git a/apps/react/case-portal/src/components/cards/AuthFooter.js b/apps/react/case-portal/src/components/cards/AuthFooter.js index 2de1602c..230c23b4 100644 --- a/apps/react/case-portal/src/components/cards/AuthFooter.js +++ b/apps/react/case-portal/src/components/cards/AuthFooter.js @@ -1,11 +1,11 @@ -import useMediaQuery from '@mui/material/useMediaQuery'; -import Container from '@mui/material/Container'; -import Link from '@mui/material/Link'; -import Typography from '@mui/material/Typography'; -import Stack from '@mui/material/Stack'; +import useMediaQuery from '@mui/material/useMediaQuery' +import Container from '@mui/material/Container' +import Link from '@mui/material/Link' +import Typography from '@mui/material/Typography' +import Stack from '@mui/material/Stack' const AuthFooter = () => { - const matchDownSM = useMediaQuery((theme) => theme.breakpoints.down('sm')); + const matchDownSM = useMediaQuery((theme) => theme.breakpoints.down('sm')) return ( @@ -66,7 +66,7 @@ const AuthFooter = () => { - ); -}; + ) +} -export default AuthFooter; +export default AuthFooter diff --git a/apps/react/case-portal/src/components/cards/DashboardCard.js b/apps/react/case-portal/src/components/cards/DashboardCard.js index 532d80fa..40724199 100644 --- a/apps/react/case-portal/src/components/cards/DashboardCard.js +++ b/apps/react/case-portal/src/components/cards/DashboardCard.js @@ -1,10 +1,10 @@ -import { Link as RouterLink } from 'react-router-dom'; -import Box from '@mui/material/Box'; -import Grid from '@mui/material/Grid'; -import Link from '@mui/material/Link'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; -import MainCard from 'components/MainCard'; +import { Link as RouterLink } from 'react-router-dom' +import Box from '@mui/material/Box' +import Grid from '@mui/material/Grid' +import Link from '@mui/material/Link' +import Stack from '@mui/material/Stack' +import Typography from '@mui/material/Typography' +import MainCard from 'components/MainCard' // assets @@ -26,6 +26,6 @@ const DashboardCard = ({ title, subtitle, to, icon }) => ( -); +) -export default DashboardCard; +export default DashboardCard diff --git a/apps/react/case-portal/src/components/cards/statistics/AnalyticEcommerce.js b/apps/react/case-portal/src/components/cards/statistics/AnalyticEcommerce.js index ea24eaf9..00d50b1c 100644 --- a/apps/react/case-portal/src/components/cards/statistics/AnalyticEcommerce.js +++ b/apps/react/case-portal/src/components/cards/statistics/AnalyticEcommerce.js @@ -1,12 +1,12 @@ -import PropTypes from 'prop-types'; -import Box from '@mui/material/Box'; -import Chip from '@mui/material/Chip'; -import Grid from '@mui/material/Grid'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; -import MainCard from 'components/MainCard'; -import RiseOutlined from '@ant-design/icons/RiseOutlined'; -import FallOutlined from '@ant-design/icons/FallOutlined'; +import PropTypes from 'prop-types' +import Box from '@mui/material/Box' +import Chip from '@mui/material/Chip' +import Grid from '@mui/material/Grid' +import Stack from '@mui/material/Stack' +import Typography from '@mui/material/Typography' +import MainCard from 'components/MainCard' +import RiseOutlined from '@ant-design/icons/RiseOutlined' +import FallOutlined from '@ant-design/icons/FallOutlined' const AnalyticEcommerce = ({ color, @@ -68,7 +68,7 @@ const AnalyticEcommerce = ({
-); +) AnalyticEcommerce.propTypes = { color: PropTypes.string, @@ -77,10 +77,10 @@ AnalyticEcommerce.propTypes = { percentage: PropTypes.number, isLoss: PropTypes.bool, extra: PropTypes.oneOfType([PropTypes.node, PropTypes.string]), -}; +} AnalyticEcommerce.defaultProps = { color: 'primary', -}; +} -export default AnalyticEcommerce; +export default AnalyticEcommerce diff --git a/apps/react/case-portal/src/components/third-party/Highlighter.js b/apps/react/case-portal/src/components/third-party/Highlighter.js index a2c878e4..4d14b8a5 100644 --- a/apps/react/case-portal/src/components/third-party/Highlighter.js +++ b/apps/react/case-portal/src/components/third-party/Highlighter.js @@ -1,18 +1,18 @@ -import PropTypes from 'prop-types'; -import { useState } from 'react'; -import Box from '@mui/material/Box'; -import CardActions from '@mui/material/CardActions'; -import Collapse from '@mui/material/Collapse'; -import Divider from '@mui/material/Divider'; -import IconButton from '@mui/material/IconButton'; -import Tooltip from '@mui/material/Tooltip'; -import SyntaxHighlight from 'utils/SyntaxHighlight'; -import CodeOutlined from '@ant-design/icons/CodeOutlined'; +import PropTypes from 'prop-types' +import { useState } from 'react' +import Box from '@mui/material/Box' +import CardActions from '@mui/material/CardActions' +import Collapse from '@mui/material/Collapse' +import Divider from '@mui/material/Divider' +import IconButton from '@mui/material/IconButton' +import Tooltip from '@mui/material/Tooltip' +import SyntaxHighlight from 'utils/SyntaxHighlight' +import CodeOutlined from '@ant-design/icons/CodeOutlined' // ==============================|| CLIPBOARD & HIGHLIGHTER ||============================== // const Highlighter = () => { - const [highlight, setHighlight] = useState(false); + const [highlight, setHighlight] = useState(false) return ( @@ -57,11 +57,11 @@ const Highlighter = () => { )} - ); -}; + ) +} Highlighter.propTypes = { children: PropTypes.node, -}; +} -export default Highlighter; +export default Highlighter diff --git a/apps/react/case-portal/src/components/third-party/SimpleBar.js b/apps/react/case-portal/src/components/third-party/SimpleBar.js index 6b210254..7b814bd4 100644 --- a/apps/react/case-portal/src/components/third-party/SimpleBar.js +++ b/apps/react/case-portal/src/components/third-party/SimpleBar.js @@ -1,15 +1,15 @@ -import PropTypes from 'prop-types'; -import { alpha, styled } from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import SimpleBar from 'simplebar-react'; -import { BrowserView, MobileView } from 'react-device-detect'; +import PropTypes from 'prop-types' +import { alpha, styled } from '@mui/material/styles' +import Box from '@mui/material/Box' +import SimpleBar from 'simplebar-react' +import { BrowserView, MobileView } from 'react-device-detect' // root style const RootStyle = styled(BrowserView)({ flexGrow: 1, height: '100%', overflow: 'hidden', -}); +}) // scroll bar wrapper const SimpleBarStyle = styled(SimpleBar)(({ theme }) => ({ @@ -31,7 +31,7 @@ const SimpleBarStyle = styled(SimpleBar)(({ theme }) => ({ '& .simplebar-mask': { zIndex: 'inherit', }, -})); +})) // ==============================|| SIMPLE SCROLL BAR ||============================== // @@ -49,10 +49,10 @@ export default function SimpleBarScroll({ children, sx, ...other }) { - ); + ) } SimpleBarScroll.propTypes = { children: PropTypes.node, sx: PropTypes.object, -}; +} diff --git a/apps/react/case-portal/src/config.js b/apps/react/case-portal/src/config.js index e2db3ebe..c52fc7de 100644 --- a/apps/react/case-portal/src/config.js +++ b/apps/react/case-portal/src/config.js @@ -1,18 +1,18 @@ const config = { basename: '/', defaultPath: '/home', - fontFamily: '\'Public Sans\', sans-serif', + fontFamily: "'Public Sans', sans-serif", i18n: 'en', miniDrawer: false, container: true, mode: 'light', presetColor: 'default', themeDirection: 'ltr', -}; +} -export default config; -export const drawerWidth = 260; +export default config +export const drawerWidth = 260 -export const twitterColor = '#1DA1F2'; -export const facebookColor = '#3b5998'; -export const linkedInColor = '#0e76a8'; +export const twitterColor = '#1DA1F2' +export const facebookColor = '#3b5998' +export const linkedInColor = '#0e76a8' diff --git a/apps/react/case-portal/src/consts/index.js b/apps/react/case-portal/src/consts/index.js index d6277b1d..d8b48c30 100644 --- a/apps/react/case-portal/src/consts/index.js +++ b/apps/react/case-portal/src/consts/index.js @@ -14,23 +14,23 @@ const Config = { process.env.REACT_APP_NOVU_ENABLED === 'true' ? await fetchNovuAppId() : undefined, -}; +} async function fetchNovuAppId() { try { - const apiUrl = `${process.env.REACT_APP_NOVU_PUBLISHER_API_URL}/novu-app-id`; + const apiUrl = `${process.env.REACT_APP_NOVU_PUBLISHER_API_URL}/novu-app-id` - const response = await fetch(apiUrl); + const response = await fetch(apiUrl) if (!response.ok) { - throw new Error(`Failed to fetch NovuAppId. Status: ${response.status}`); + throw new Error(`Failed to fetch NovuAppId. Status: ${response.status}`) } - const data = await response.json(); - return data.novuAppId; + const data = await response.json() + return data.novuAppId } catch (error) { - console.error('Error fetching NovuAppId:', error); - return null; + console.error('Error fetching NovuAppId:', error) + return null } } -export default Config; +export default Config diff --git a/apps/react/case-portal/src/i18n/en_us.js b/apps/react/case-portal/src/i18n/en_us.js index 49bb6c73..4f02315d 100644 --- a/apps/react/case-portal/src/i18n/en_us.js +++ b/apps/react/case-portal/src/i18n/en_us.js @@ -157,6 +157,6 @@ const defs = { }, }, }, -}; +} -export default defs; +export default defs diff --git a/apps/react/case-portal/src/i18n/index.js b/apps/react/case-portal/src/i18n/index.js index 48f3683a..727c1802 100644 --- a/apps/react/case-portal/src/i18n/index.js +++ b/apps/react/case-portal/src/i18n/index.js @@ -1,12 +1,12 @@ -import i18n from 'i18next'; -import ptBR from './pt_br'; -import enUS from './en_us'; +import i18n from 'i18next' +import ptBR from './pt_br' +import enUS from './en_us' -var lang = 'en'; -var fallbackLng = 'en'; +var lang = 'en' +var fallbackLng = 'en' if (navigator.language === 'pt-BR') { - lang = 'ptBR'; + lang = 'ptBR' } i18n.init({ @@ -23,6 +23,6 @@ i18n.init({ interpolation: { escapeValue: false, }, -}); +}) -export default i18n; +export default i18n diff --git a/apps/react/case-portal/src/i18n/pt_br.js b/apps/react/case-portal/src/i18n/pt_br.js index 3bd685a5..4442a591 100644 --- a/apps/react/case-portal/src/i18n/pt_br.js +++ b/apps/react/case-portal/src/i18n/pt_br.js @@ -157,6 +157,6 @@ const defs = { }, }, }, -}; +} -export default defs; +export default defs diff --git a/apps/react/case-portal/src/index.js b/apps/react/case-portal/src/index.js index 3eea7cb1..f47b70bd 100644 --- a/apps/react/case-portal/src/index.js +++ b/apps/react/case-portal/src/index.js @@ -1,13 +1,13 @@ -import { BrowserRouter } from 'react-router-dom'; -import { createRoot } from 'react-dom/client'; -import { Provider } from 'react-redux'; -import { store } from './store'; -import App from './App'; -import i18n from './i18n'; -import { I18nextProvider } from 'react-i18next'; +import { BrowserRouter } from 'react-router-dom' +import { createRoot } from 'react-dom/client' +import { Provider } from 'react-redux' +import { store } from './store' +import App from './App' +import i18n from './i18n' +import { I18nextProvider } from 'react-i18next' -const container = document.getElementById('root'); -const root = createRoot(container); +const container = document.getElementById('root') +const root = createRoot(container) root.render( @@ -16,4 +16,4 @@ root.render( , -); +) diff --git a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavCollapse.js b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavCollapse.js index 398ab6c5..d3f5859e 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavCollapse.js +++ b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavCollapse.js @@ -1,42 +1,42 @@ -import PropTypes from 'prop-types'; -import { useState } from 'react'; -import Collapse from '@mui/material/Collapse'; -import List from '@mui/material/List'; -import ListItemButton from '@mui/material/ListItemButton'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; -import Typography from '@mui/material/Typography'; -import { useTheme } from '@mui/material/styles'; -import NavItem from './NavItem'; -import FiberManualRecordIcon from '@mui/icons-material/FiberManualRecord'; -import { IconChevronDown, IconChevronUp } from '@tabler/icons-react'; +import PropTypes from 'prop-types' +import { useState } from 'react' +import Collapse from '@mui/material/Collapse' +import List from '@mui/material/List' +import ListItemButton from '@mui/material/ListItemButton' +import ListItemIcon from '@mui/material/ListItemIcon' +import ListItemText from '@mui/material/ListItemText' +import Typography from '@mui/material/Typography' +import { useTheme } from '@mui/material/styles' +import NavItem from './NavItem' +import FiberManualRecordIcon from '@mui/icons-material/FiberManualRecord' +import { IconChevronDown, IconChevronUp } from '@tabler/icons-react' const NavCollapse = ({ menu, level }) => { - const theme = useTheme(); - const [open, setOpen] = useState(false); - const [selected, setSelected] = useState(null); + const theme = useTheme() + const [open, setOpen] = useState(false) + const [selected, setSelected] = useState(null) const handleClick = () => { - setOpen(!open); - setSelected(!selected ? menu.id : null); - }; + setOpen(!open) + setSelected(!selected ? menu.id : null) + } const menus = menu.children?.map((item) => { switch (item.type) { case 'collapse': - return ; + return case 'item': - return ; + return default: return ( Menu Items Error - ); + ) } - }); + }) - const Icon = menu.icon; + const Icon = menu.icon const menuIcon = menu.icon ? ( { }} fontSize={level > 0 ? 'inherit' : 'medium'} /> - ); + ) return ( <> @@ -114,7 +114,7 @@ const NavCollapse = ({ menu, level }) => { sx={{ position: 'relative', '&:after': { - content: '\'\'', + content: "''", position: 'absolute', left: '32px', top: 0, @@ -129,12 +129,12 @@ const NavCollapse = ({ menu, level }) => { - ); -}; + ) +} NavCollapse.propTypes = { menu: PropTypes.object, level: PropTypes.number, -}; +} -export default NavCollapse; +export default NavCollapse diff --git a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavGroup.js b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavGroup.js index 883c549e..3017ff9b 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavGroup.js +++ b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavGroup.js @@ -1,21 +1,21 @@ -import PropTypes from 'prop-types'; -import { useSelector } from 'react-redux'; -import Box from '@mui/material/Box'; -import List from '@mui/material/List'; -import Typography from '@mui/material/Typography'; -import NavItem from './NavItem'; -import NavCollapse from './NavCollapse'; +import PropTypes from 'prop-types' +import { useSelector } from 'react-redux' +import Box from '@mui/material/Box' +import List from '@mui/material/List' +import Typography from '@mui/material/Typography' +import NavItem from './NavItem' +import NavCollapse from './NavCollapse' const NavGroup = ({ item }) => { - const menu = useSelector((state) => state.menu); - const { drawerOpen } = menu; + const menu = useSelector((state) => state.menu) + const { drawerOpen } = menu const navCollapse = item.children?.map((menuItem) => { switch (menuItem.type) { case 'collapse': - return ; + return case 'item': - return ; + return default: return ( { > Fix - Group Collapse or Items - ); + ) } - }); + }) return ( { > {navCollapse} - ); -}; + ) +} NavGroup.propTypes = { item: PropTypes.object, -}; +} -export default NavGroup; +export default NavGroup diff --git a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavItem.js b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavItem.js index 564080e2..eb938eb2 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavItem.js +++ b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavItem.js @@ -1,65 +1,65 @@ -import Avatar from '@mui/material/Avatar'; -import Chip from '@mui/material/Chip'; -import ListItemButton from '@mui/material/ListItemButton'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; -import Typography from '@mui/material/Typography'; -import { useTheme } from '@mui/material/styles'; -import PropTypes from 'prop-types'; -import { forwardRef, useEffect } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; -import { Link } from 'react-router-dom'; -import { activeItem } from 'store/reducers/menu'; +import Avatar from '@mui/material/Avatar' +import Chip from '@mui/material/Chip' +import ListItemButton from '@mui/material/ListItemButton' +import ListItemIcon from '@mui/material/ListItemIcon' +import ListItemText from '@mui/material/ListItemText' +import Typography from '@mui/material/Typography' +import { useTheme } from '@mui/material/styles' +import PropTypes from 'prop-types' +import { forwardRef, useEffect } from 'react' +import { useDispatch, useSelector } from 'react-redux' +import { Link } from 'react-router-dom' +import { activeItem } from 'store/reducers/menu' const NavItem = ({ item, level }) => { - const theme = useTheme(); - const dispatch = useDispatch(); - const menu = useSelector((state) => state.menu); - const { drawerOpen, openItem } = menu; + const theme = useTheme() + const dispatch = useDispatch() + const menu = useSelector((state) => state.menu) + const { drawerOpen, openItem } = menu - let itemTarget = '_self'; + let itemTarget = '_self' if (item.target) { - itemTarget = '_blank'; + itemTarget = '_blank' } function CustomLink(props, ref) { - return ; + return } - const ForwardedCustomLink = forwardRef(CustomLink); + const ForwardedCustomLink = forwardRef(CustomLink) let listItemProps = { component: ForwardedCustomLink, - }; + } if (item?.external) { - listItemProps = { component: 'a', href: item.url, target: itemTarget }; + listItemProps = { component: 'a', href: item.url, target: itemTarget } } const itemHandler = (id) => { - dispatch(activeItem({ openItem: [id] })); - }; + dispatch(activeItem({ openItem: [id] })) + } - const Icon = item.icon; + const Icon = item.icon const itemIcon = item.icon ? ( ) : ( false - ); + ) - const isSelected = openItem.findIndex((id) => id === item.id) > -1; + const isSelected = openItem.findIndex((id) => id === item.id) > -1 useEffect(() => { const currentIndex = document.location.pathname .toString() .split('/') - .findIndex((id) => id === item.id); + .findIndex((id) => id === item.id) if (currentIndex > -1) { - dispatch(activeItem({ openItem: [item.id] })); + dispatch(activeItem({ openItem: [item.id] })) } - }, []); + }, []) - const textColor = 'text.primary'; - const iconSelectedColor = 'primary.main'; + const textColor = 'text.primary' + const iconSelectedColor = 'primary.main' return ( { /> )} - ); -}; + ) +} NavItem.propTypes = { item: PropTypes.object, level: PropTypes.number, -}; +} -export default NavItem; +export default NavItem diff --git a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/index.js b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/index.js index 3dd11e60..da6c4812 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/index.js +++ b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/Navigation/index.js @@ -1,25 +1,25 @@ -import Box from '@mui/material/Box'; -import Typography from '@mui/material/Typography'; -import NavGroup from './NavGroup'; -import { useMenu } from 'SessionStoreContext'; +import Box from '@mui/material/Box' +import Typography from '@mui/material/Typography' +import NavGroup from './NavGroup' +import { useMenu } from 'SessionStoreContext' const Navigation = () => { - const menu = useMenu(); + const menu = useMenu() const navGroups = menu.items.map((item) => { switch (item.type) { case 'group': - return ; + return default: return ( Fix - Navigation Group - ); + ) } - }); + }) - return {navGroups}; -}; + return {navGroups} +} -export default Navigation; +export default Navigation diff --git a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/index.js b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/index.js index a69acfed..70bc3d0f 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/index.js +++ b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerContent/index.js @@ -1,5 +1,5 @@ -import SimpleBar from 'components/third-party/SimpleBar'; -import Navigation from './Navigation'; +import SimpleBar from 'components/third-party/SimpleBar' +import Navigation from './Navigation' const DrawerContent = () => ( ( > -); +) -export default DrawerContent; +export default DrawerContent diff --git a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerHeader/DrawerHeaderStyled.js b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerHeader/DrawerHeaderStyled.js index 53689678..005593c4 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerHeader/DrawerHeaderStyled.js +++ b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerHeader/DrawerHeaderStyled.js @@ -1,5 +1,5 @@ -import { styled } from '@mui/material/styles'; -import Box from '@mui/material/Box'; +import { styled } from '@mui/material/styles' +import Box from '@mui/material/Box' const DrawerHeaderStyled = styled(Box, { shouldForwardProp: (prop) => prop !== 'open', @@ -9,6 +9,6 @@ const DrawerHeaderStyled = styled(Box, { alignItems: 'center', justifyContent: open ? 'flex-start' : 'center', paddingLeft: theme.spacing(open ? 3 : 0), -})); +})) -export default DrawerHeaderStyled; +export default DrawerHeaderStyled diff --git a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerHeader/index.js b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerHeader/index.js index 6a2a02e9..ef4a042b 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerHeader/index.js +++ b/apps/react/case-portal/src/layout/MainLayout/Drawer/DrawerHeader/index.js @@ -1,11 +1,11 @@ -import PropTypes from 'prop-types'; -import { useTheme } from '@mui/material/styles'; -import Stack from '@mui/material/Stack'; -import DrawerHeaderStyled from './DrawerHeaderStyled'; -import Logo from 'components/Logo'; +import PropTypes from 'prop-types' +import { useTheme } from '@mui/material/styles' +import Stack from '@mui/material/Stack' +import DrawerHeaderStyled from './DrawerHeaderStyled' +import Logo from 'components/Logo' const DrawerHeader = ({ open }) => { - const theme = useTheme(); + const theme = useTheme() return ( @@ -13,11 +13,11 @@ const DrawerHeader = ({ open }) => { - ); -}; + ) +} DrawerHeader.propTypes = { open: PropTypes.bool, -}; +} -export default DrawerHeader; +export default DrawerHeader diff --git a/apps/react/case-portal/src/layout/MainLayout/Drawer/MiniDrawerStyled.js b/apps/react/case-portal/src/layout/MainLayout/Drawer/MiniDrawerStyled.js index da5dbbcb..c94480e3 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Drawer/MiniDrawerStyled.js +++ b/apps/react/case-portal/src/layout/MainLayout/Drawer/MiniDrawerStyled.js @@ -1,7 +1,7 @@ // material-ui -import { styled } from '@mui/material/styles'; -import Drawer from '@mui/material/Drawer'; -import { drawerWidth } from 'config'; +import { styled } from '@mui/material/styles' +import Drawer from '@mui/material/Drawer' +import { drawerWidth } from 'config' const openedMixin = (theme) => ({ width: drawerWidth, @@ -12,7 +12,7 @@ const openedMixin = (theme) => ({ }), overflowX: 'hidden', boxShadow: 'none', -}); +}) const closedMixin = (theme) => ({ transition: theme.transitions.create('width', { @@ -23,7 +23,7 @@ const closedMixin = (theme) => ({ width: 0, borderRight: 'none', boxShadow: theme.customShadows.z1, -}); +}) const MiniDrawerStyled = styled(Drawer, { shouldForwardProp: (prop) => prop !== 'open', @@ -40,6 +40,6 @@ const MiniDrawerStyled = styled(Drawer, { ...closedMixin(theme), '& .MuiDrawer-paper': closedMixin(theme), }), -})); +})) -export default MiniDrawerStyled; +export default MiniDrawerStyled diff --git a/apps/react/case-portal/src/layout/MainLayout/Drawer/index.js b/apps/react/case-portal/src/layout/MainLayout/Drawer/index.js index ca878af7..3ac4cf86 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Drawer/index.js +++ b/apps/react/case-portal/src/layout/MainLayout/Drawer/index.js @@ -1,21 +1,21 @@ -import PropTypes from 'prop-types'; -import { useMemo } from 'react'; -import { useTheme } from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import Drawer from '@mui/material/Drawer'; -import useMediaQuery from '@mui/material/useMediaQuery'; -import DrawerHeader from './DrawerHeader'; -import DrawerContent from './DrawerContent'; -import MiniDrawerStyled from './MiniDrawerStyled'; -import { drawerWidth } from 'config'; +import PropTypes from 'prop-types' +import { useMemo } from 'react' +import { useTheme } from '@mui/material/styles' +import Box from '@mui/material/Box' +import Drawer from '@mui/material/Drawer' +import useMediaQuery from '@mui/material/useMediaQuery' +import DrawerHeader from './DrawerHeader' +import DrawerContent from './DrawerContent' +import MiniDrawerStyled from './MiniDrawerStyled' +import { drawerWidth } from 'config' const MainDrawer = ({ open, handleDrawerToggle, window }) => { - const theme = useTheme(); - const matchDownMD = useMediaQuery(theme.breakpoints.down('lg')); + const theme = useTheme() + const matchDownMD = useMediaQuery(theme.breakpoints.down('lg')) const container = - window !== undefined ? () => window().document.body : undefined; - const drawerContent = useMemo(() => , []); - const drawerHeader = useMemo(() => , [open]); + window !== undefined ? () => window().document.body : undefined + const drawerContent = useMemo(() => , []) + const drawerHeader = useMemo(() => , [open]) return ( { )} - ); -}; + ) +} MainDrawer.propTypes = { open: PropTypes.bool, handleDrawerToggle: PropTypes.func, window: PropTypes.object, -}; +} -export default MainDrawer; +export default MainDrawer diff --git a/apps/react/case-portal/src/layout/MainLayout/Header/AppBarStyled.js b/apps/react/case-portal/src/layout/MainLayout/Header/AppBarStyled.js index b75662cd..0f167566 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Header/AppBarStyled.js +++ b/apps/react/case-portal/src/layout/MainLayout/Header/AppBarStyled.js @@ -1,9 +1,9 @@ // material-ui -import { styled } from '@mui/material/styles'; -import AppBar from '@mui/material/AppBar'; +import { styled } from '@mui/material/styles' +import AppBar from '@mui/material/AppBar' // project import -import { drawerWidth } from 'config'; +import { drawerWidth } from 'config' // ==============================|| HEADER - APP BAR STYLED ||============================== // @@ -23,6 +23,6 @@ const AppBarStyled = styled(AppBar, { duration: theme.transitions.duration.enteringScreen, }), }), -})); +})) -export default AppBarStyled; +export default AppBarStyled diff --git a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/MobileSection.js b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/MobileSection.js index e245719b..6ed9ad2f 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/MobileSection.js +++ b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/MobileSection.js @@ -1,5 +1,5 @@ -import { useEffect, useRef, useState } from 'react'; -import { useTheme } from '@mui/material/styles'; +import { useEffect, useRef, useState } from 'react' +import { useTheme } from '@mui/material/styles' import { AppBar, Box, @@ -8,38 +8,38 @@ import { Paper, Popper, Toolbar, -} from '@mui/material'; -import Search from './Search'; -import Profile from './Profile'; -import Transitions from 'components/@extended/Transitions'; -import MoreOutlined from '@ant-design/icons/MoreOutlined'; +} from '@mui/material' +import Search from './Search' +import Profile from './Profile' +import Transitions from 'components/@extended/Transitions' +import MoreOutlined from '@ant-design/icons/MoreOutlined' const MobileSection = () => { - const theme = useTheme(); + const theme = useTheme() - const [open, setOpen] = useState(false); - const anchorRef = useRef(null); + const [open, setOpen] = useState(false) + const anchorRef = useRef(null) const handleToggle = () => { - setOpen((prevOpen) => !prevOpen); - }; + setOpen((prevOpen) => !prevOpen) + } const handleClose = (event) => { if (anchorRef.current && anchorRef.current.contains(event.target)) { - return; + return } - setOpen(false); - }; + setOpen(false) + } - const prevOpen = useRef(open); + const prevOpen = useRef(open) useEffect(() => { if (prevOpen.current === true && open === false) { - anchorRef.current.focus(); + anchorRef.current.focus() } - prevOpen.current = open; - }, [open]); + prevOpen.current = open + }, [open]) return ( <> @@ -96,7 +96,7 @@ const MobileSection = () => { )} - ); -}; + ) +} -export default MobileSection; +export default MobileSection diff --git a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Notification.js b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Notification.js index 81522b27..d662e973 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Notification.js +++ b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Notification.js @@ -1,5 +1,5 @@ -import { useRef, useState, useEffect } from 'react'; -import { useTheme } from '@mui/material/styles'; +import { useRef, useState, useEffect } from 'react' +import { useTheme } from '@mui/material/styles' import { Avatar, Badge, @@ -16,23 +16,23 @@ import { Popper, Typography, useMediaQuery, -} from '@mui/material'; -import MainCard from 'components/MainCard'; -import Transitions from 'components/@extended/Transitions'; -import BellOutlined from '@ant-design/icons/BellOutlined'; -import CloseOutlined from '@ant-design/icons/CloseOutlined'; -import GiftOutlined from '@ant-design/icons/GiftOutlined'; -import MessageOutlined from '@ant-design/icons/MessageOutlined'; -import SettingOutlined from '@ant-design/icons/SettingOutlined'; -import { NotificationService } from '../../../../services'; -import { useSession } from 'SessionStoreContext'; +} from '@mui/material' +import MainCard from 'components/MainCard' +import Transitions from 'components/@extended/Transitions' +import BellOutlined from '@ant-design/icons/BellOutlined' +import CloseOutlined from '@ant-design/icons/CloseOutlined' +import GiftOutlined from '@ant-design/icons/GiftOutlined' +import MessageOutlined from '@ant-design/icons/MessageOutlined' +import SettingOutlined from '@ant-design/icons/SettingOutlined' +import { NotificationService } from '../../../../services' +import { useSession } from 'SessionStoreContext' // sx styles const avatarSX = { width: 36, height: 36, fontSize: '1rem', -}; +} const actionSX = { mt: '6px', @@ -42,54 +42,54 @@ const actionSX = { alignSelf: 'flex-start', transform: 'none', -}; +} -const iconBackColorOpen = 'grey.300'; -const iconBackColor = 'grey.100'; +const iconBackColorOpen = 'grey.300' +const iconBackColor = 'grey.100' const Notification = () => { - const theme = useTheme(); - const matchesXs = useMediaQuery(theme.breakpoints.down('md')); - const anchorRef = useRef(null); - const [open, setOpen] = useState(false); - const [messages, setMessages] = useState([]); - const [badge, setBudget] = useState(0); - const keycloak = useSession(); + const theme = useTheme() + const matchesXs = useMediaQuery(theme.breakpoints.down('md')) + const anchorRef = useRef(null) + const [open, setOpen] = useState(false) + const [messages, setMessages] = useState([]) + const [badge, setBudget] = useState(0) + const keycloak = useSession() const handleToggle = () => { - setOpen((prevOpen) => !prevOpen); - }; + setOpen((prevOpen) => !prevOpen) + } const handleClose = (event) => { if (anchorRef.current && anchorRef.current.contains(event.target)) { - return; + return } - setOpen(false); - }; + setOpen(false) + } useEffect(() => { - let delay = 1000; - let timeout = null; + let delay = 1000 + let timeout = null const updateNotify = () => { NotificationService.getNotifications(keycloak) .then((data) => { - setBudget(data.length ? data[0].total : 0); - setMessages(data); - delay = delay * 30; - timeout = setTimeout(updateNotify, delay); + setBudget(data.length ? data[0].total : 0) + setMessages(data) + delay = delay * 30 + timeout = setTimeout(updateNotify, delay) }) .catch((error) => { - console.error('Could not update notify. waiting a bit...', error); - delay = delay * 2; - timeout = setTimeout(updateNotify, delay); - }); - }; + console.error('Could not update notify. waiting a bit...', error) + delay = delay * 2 + timeout = setTimeout(updateNotify, delay) + }) + } - updateNotify(); + updateNotify() - return () => timeout && clearTimeout(timeout); - }, []); + return () => timeout && clearTimeout(timeout) + }, []) return ( @@ -177,11 +177,11 @@ const Notification = () => { )} - ); -}; + ) +} function NotificationList({ items }) { - const hasMoreView = items.length ? items[0].total > 5 : false; + const hasMoreView = items.length ? items[0].total > 5 : false return ( <> @@ -200,7 +200,7 @@ function NotificationList({ items }) { - ); + ) })} @@ -219,7 +219,7 @@ function NotificationList({ items }) { )} - ); + ) } function AvatarIcon({ stage }) { @@ -233,7 +233,7 @@ function AvatarIcon({ stage }) { > - ); + ) } if (stage === 'contract_writing_stg') { @@ -246,7 +246,7 @@ function AvatarIcon({ stage }) { > - ); + ) } if (stage === 'info_docs_analysis_stg') { @@ -259,10 +259,10 @@ function AvatarIcon({ stage }) { > - ); + ) } - return; + return } -export default Notification; +export default Notification diff --git a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Profile/ProfileTab.js b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Profile/ProfileTab.js index cecbcd97..3fb00f45 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Profile/ProfileTab.js +++ b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Profile/ProfileTab.js @@ -1,11 +1,11 @@ -import PropTypes from 'prop-types'; -import { useTheme } from '@mui/material/styles'; -import { List, ListItemButton, ListItemIcon, ListItemText } from '@mui/material'; -import LogoutOutlined from '@ant-design/icons/LogoutOutlined'; -import UserOutlined from '@ant-design/icons/UserOutlined'; +import PropTypes from 'prop-types' +import { useTheme } from '@mui/material/styles' +import { List, ListItemButton, ListItemIcon, ListItemText } from '@mui/material' +import LogoutOutlined from '@ant-design/icons/LogoutOutlined' +import UserOutlined from '@ant-design/icons/UserOutlined' const ProfileTab = ({ handleLogout }) => { - const theme = useTheme(); + const theme = useTheme() return ( { - ); -}; + ) +} ProfileTab.propTypes = { handleLogout: PropTypes.func, -}; +} -export default ProfileTab; +export default ProfileTab diff --git a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Profile/SettingTab.js b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Profile/SettingTab.js index ecf9db80..6cc7d8e4 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Profile/SettingTab.js +++ b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Profile/SettingTab.js @@ -1,15 +1,15 @@ -import { useState } from 'react'; -import { useTheme } from '@mui/material/styles'; -import { List, ListItemButton, ListItemIcon, ListItemText } from '@mui/material'; -import UserOutlined from '@ant-design/icons/UserOutlined'; +import { useState } from 'react' +import { useTheme } from '@mui/material/styles' +import { List, ListItemButton, ListItemIcon, ListItemText } from '@mui/material' +import UserOutlined from '@ant-design/icons/UserOutlined' const SettingTab = () => { - const theme = useTheme(); + const theme = useTheme() - const [selectedIndex, setSelectedIndex] = useState(0); + const [selectedIndex, setSelectedIndex] = useState(0) const handleListItemClick = (event, index) => { - setSelectedIndex(index); - }; + setSelectedIndex(index) + } return ( { - ); -}; + ) +} -export default SettingTab; +export default SettingTab diff --git a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Profile/index.js b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Profile/index.js index e1c83750..88da1788 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Profile/index.js +++ b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Profile/index.js @@ -1,27 +1,27 @@ -import PropTypes from 'prop-types'; -import { useRef, useState } from 'react'; -import Avatar from '@mui/material/Avatar'; -import Box from '@mui/material/Box'; -import ButtonBase from '@mui/material/ButtonBase'; -import CardContent from '@mui/material/CardContent'; -import ClickAwayListener from '@mui/material/ClickAwayListener'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import Paper from '@mui/material/Paper'; -import Popper from '@mui/material/Popper'; -import Stack from '@mui/material/Stack'; -import Tab from '@mui/material/Tab'; -import Tabs from '@mui/material/Tabs'; -import Typography from '@mui/material/Typography'; -import useTheme from '@mui/material/styles/useTheme'; -import Transitions from 'components/@extended/Transitions'; -import MainCard from 'components/MainCard'; -import ProfileTab from './ProfileTab'; -import SettingTab from './SettingTab'; -import LogoutOutlined from '@ant-design/icons/LogoutOutlined'; -import SettingOutlined from '@ant-design/icons/SettingOutlined'; -import UserOutlined from '@ant-design/icons/UserOutlined'; -import avatar2 from 'assets/images/users/avatar-2.png'; +import PropTypes from 'prop-types' +import { useRef, useState } from 'react' +import Avatar from '@mui/material/Avatar' +import Box from '@mui/material/Box' +import ButtonBase from '@mui/material/ButtonBase' +import CardContent from '@mui/material/CardContent' +import ClickAwayListener from '@mui/material/ClickAwayListener' +import Grid from '@mui/material/Grid' +import IconButton from '@mui/material/IconButton' +import Paper from '@mui/material/Paper' +import Popper from '@mui/material/Popper' +import Stack from '@mui/material/Stack' +import Tab from '@mui/material/Tab' +import Tabs from '@mui/material/Tabs' +import Typography from '@mui/material/Typography' +import useTheme from '@mui/material/styles/useTheme' +import Transitions from 'components/@extended/Transitions' +import MainCard from 'components/MainCard' +import ProfileTab from './ProfileTab' +import SettingTab from './SettingTab' +import LogoutOutlined from '@ant-design/icons/LogoutOutlined' +import SettingOutlined from '@ant-design/icons/SettingOutlined' +import UserOutlined from '@ant-design/icons/UserOutlined' +import avatar2 from 'assets/images/users/avatar-2.png' function TabPanel({ children, value, index, ...other }) { return ( @@ -34,47 +34,47 @@ function TabPanel({ children, value, index, ...other }) { > {value === index && children} - ); + ) } TabPanel.propTypes = { children: PropTypes.node, index: PropTypes.any.isRequired, value: PropTypes.any.isRequired, -}; +} function a11yProps(index) { return { id: `profile-tab-${index}`, 'aria-controls': `profile-tabpanel-${index}`, - }; + } } const Profile = ({ keycloak }) => { - const theme = useTheme(); - const iconBackColorOpen = 'grey.300'; - const anchorRef = useRef(null); - const [open, setOpen] = useState(false); - const [value, setValue] = useState(0); + const theme = useTheme() + const iconBackColorOpen = 'grey.300' + const anchorRef = useRef(null) + const [open, setOpen] = useState(false) + const [value, setValue] = useState(0) const handleLogout = async () => { - keycloak.logout({ redirectUri: window.location.origin }); - }; + keycloak.logout({ redirectUri: window.location.origin }) + } const handleToggle = () => { - setOpen((prevOpen) => !prevOpen); - }; + setOpen((prevOpen) => !prevOpen) + } const handleClose = (event) => { if (anchorRef.current && anchorRef.current.contains(event.target)) { - return; + return } - setOpen(false); - }; + setOpen(false) + } const handleChange = (event, newValue) => { - setValue(newValue); - }; + setValue(newValue) + } return ( @@ -239,7 +239,7 @@ const Profile = ({ keycloak }) => { )} - ); -}; + ) +} -export default Profile; +export default Profile diff --git a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Search.js b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Search.js index f774bcbe..871dd4dc 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Search.js +++ b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/Search.js @@ -1,5 +1,5 @@ -import { Box, FormControl, InputAdornment, OutlinedInput } from '@mui/material'; -import SearchOutlined from '@ant-design/icons/SearchOutlined'; +import { Box, FormControl, InputAdornment, OutlinedInput } from '@mui/material' +import SearchOutlined from '@ant-design/icons/SearchOutlined' // ==============================|| HEADER CONTENT - SEARCH ||============================== // @@ -22,6 +22,6 @@ const Search = () => ( /> -); +) -export default Search; +export default Search diff --git a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/index.js b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/index.js index 02ce1889..a79eb0c6 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/index.js +++ b/apps/react/case-portal/src/layout/MainLayout/Header/HeaderContent/index.js @@ -1,17 +1,17 @@ -import { Box, useMediaQuery } from '@mui/material'; +import { Box, useMediaQuery } from '@mui/material' import { NotificationBell, NovuProvider, PopoverNotificationCenter, -} from '@novu/notification-center'; -import MobileSection from './MobileSection'; -import Profile from './Profile'; -import Search from './Search'; -import Config from 'consts/index'; -import Notification from './Notification'; +} from '@novu/notification-center' +import MobileSection from './MobileSection' +import Profile from './Profile' +import Search from './Search' +import Config from 'consts/index' +import Notification from './Notification' const HeaderContent = ({ keycloak }) => { - const matchesXs = useMediaQuery((theme) => theme.breakpoints.down('md')); + const matchesXs = useMediaQuery((theme) => theme.breakpoints.down('md')) return ( <> @@ -35,7 +35,7 @@ const HeaderContent = ({ keycloak }) => { {!matchesXs && } {matchesXs && } - ); -}; + ) +} -export default HeaderContent; +export default HeaderContent diff --git a/apps/react/case-portal/src/layout/MainLayout/Header/index.js b/apps/react/case-portal/src/layout/MainLayout/Header/index.js index dd7bd960..144811d0 100644 --- a/apps/react/case-portal/src/layout/MainLayout/Header/index.js +++ b/apps/react/case-portal/src/layout/MainLayout/Header/index.js @@ -1,16 +1,16 @@ -import PropTypes from 'prop-types'; -import { AppBar, IconButton, Toolbar, useMediaQuery } from '@mui/material'; -import { useTheme } from '@mui/material/styles'; -import AppBarStyled from './AppBarStyled'; -import HeaderContent from './HeaderContent'; -import MenuFoldOutlined from '@ant-design/icons/MenuFoldOutlined'; -import MenuUnfoldOutlined from '@ant-design/icons/MenuUnfoldOutlined'; +import PropTypes from 'prop-types' +import { AppBar, IconButton, Toolbar, useMediaQuery } from '@mui/material' +import { useTheme } from '@mui/material/styles' +import AppBarStyled from './AppBarStyled' +import HeaderContent from './HeaderContent' +import MenuFoldOutlined from '@ant-design/icons/MenuFoldOutlined' +import MenuUnfoldOutlined from '@ant-design/icons/MenuUnfoldOutlined' const Header = ({ open, handleDrawerToggle, keycloak }) => { - const theme = useTheme(); - const matchDownMD = useMediaQuery(theme.breakpoints.down('lg')); - const iconBackColor = 'grey.100'; - const iconBackColorOpen = 'grey.200'; + const theme = useTheme() + const matchDownMD = useMediaQuery(theme.breakpoints.down('lg')) + const iconBackColor = 'grey.100' + const iconBackColorOpen = 'grey.200' const mainHeader = ( @@ -30,7 +30,7 @@ const Header = ({ open, handleDrawerToggle, keycloak }) => { - ); + ) const appBar = { position: 'fixed', @@ -39,7 +39,7 @@ const Header = ({ open, handleDrawerToggle, keycloak }) => { sx: { borderBottom: `1px solid ${theme.palette.divider}`, }, - }; + } return ( <> @@ -51,12 +51,12 @@ const Header = ({ open, handleDrawerToggle, keycloak }) => { {mainHeader} )} - ); -}; + ) +} Header.propTypes = { open: PropTypes.bool, handleDrawerToggle: PropTypes.func, -}; +} -export default Header; +export default Header diff --git a/apps/react/case-portal/src/layout/MainLayout/index.js b/apps/react/case-portal/src/layout/MainLayout/index.js index b8601eee..5a43385b 100644 --- a/apps/react/case-portal/src/layout/MainLayout/index.js +++ b/apps/react/case-portal/src/layout/MainLayout/index.js @@ -1,23 +1,23 @@ -import { useState } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; -import { Outlet } from 'react-router-dom'; -import { Box, Toolbar } from '@mui/material'; -import Breadcrumbs from 'components/@extended/Breadcrumbs'; -import Drawer from './Drawer'; -import Header from './Header'; -import { openDrawer } from 'store/reducers/menu'; -import { useMenu } from 'SessionStoreContext'; +import { useState } from 'react' +import { useDispatch, useSelector } from 'react-redux' +import { Outlet } from 'react-router-dom' +import { Box, Toolbar } from '@mui/material' +import Breadcrumbs from 'components/@extended/Breadcrumbs' +import Drawer from './Drawer' +import Header from './Header' +import { openDrawer } from 'store/reducers/menu' +import { useMenu } from 'SessionStoreContext' const MainLayout = ({ keycloak, authenticated }) => { - const dispatch = useDispatch(); - const { drawerOpen } = useSelector((state) => state.menu); - const [open, setOpen] = useState(drawerOpen); - const menu = useMenu(); + const dispatch = useDispatch() + const { drawerOpen } = useSelector((state) => state.menu) + const [open, setOpen] = useState(drawerOpen) + const menu = useMenu() const handleDrawerToggle = () => { - setOpen(!open); - dispatch(openDrawer({ drawerOpen: !open })); - }; + setOpen(!open) + dispatch(openDrawer({ drawerOpen: !open })) + } return ( keycloak && @@ -39,7 +39,7 @@ const MainLayout = ({ keycloak, authenticated }) => { ) - ); -}; + ) +} -export default MainLayout; +export default MainLayout diff --git a/apps/react/case-portal/src/menu/dashboard.js b/apps/react/case-portal/src/menu/dashboard.js index 966e899d..fd9db095 100644 --- a/apps/react/case-portal/src/menu/dashboard.js +++ b/apps/react/case-portal/src/menu/dashboard.js @@ -1,7 +1,7 @@ -import HomeOutlined from '@ant-design/icons/HomeOutlined'; -import i18n from '../i18n'; +import HomeOutlined from '@ant-design/icons/HomeOutlined' +import i18n from '../i18n' -const icons = { HomeOutlined }; +const icons = { HomeOutlined } const dashboard = { id: 'dashboard', @@ -17,6 +17,6 @@ const dashboard = { breadcrumbs: false, }, ], -}; +} -export default dashboard; +export default dashboard diff --git a/apps/react/case-portal/src/menu/index.js b/apps/react/case-portal/src/menu/index.js index bd1d3062..cb045fcd 100644 --- a/apps/react/case-portal/src/menu/index.js +++ b/apps/react/case-portal/src/menu/index.js @@ -1,9 +1,9 @@ -import dashboard from './dashboard'; -import workspace from './workspace'; -import management from './management'; +import dashboard from './dashboard' +import workspace from './workspace' +import management from './management' const menuItems = { items: [dashboard, workspace, management], -}; +} -export default menuItems; +export default menuItems diff --git a/apps/react/case-portal/src/menu/management.js b/apps/react/case-portal/src/menu/management.js index 69d48f88..3972e089 100644 --- a/apps/react/case-portal/src/menu/management.js +++ b/apps/react/case-portal/src/menu/management.js @@ -1,4 +1,4 @@ -import i18n from '../i18n'; +import i18n from '../i18n' // assets import { @@ -6,7 +6,7 @@ import { IconDatabase, IconPencil, IconSchema, -} from '@tabler/icons-react'; +} from '@tabler/icons-react' // icons const icons = { @@ -14,7 +14,7 @@ const icons = { IconDatabase, IconPencil, IconSchema, -}; +} const management = { id: 'management', @@ -87,6 +87,6 @@ const management = { ], }, ], -}; +} -export default management; +export default management diff --git a/apps/react/case-portal/src/menu/workspace.js b/apps/react/case-portal/src/menu/workspace.js index 07e2f4ab..9682af2d 100644 --- a/apps/react/case-portal/src/menu/workspace.js +++ b/apps/react/case-portal/src/menu/workspace.js @@ -1,4 +1,4 @@ -import FolderOutlined from '@ant-design/icons/FolderOutlined'; +import FolderOutlined from '@ant-design/icons/FolderOutlined' import { IconArchive, @@ -7,9 +7,9 @@ import { IconList, IconSquareAsterisk, IconDatabase, -} from '@tabler/icons-react'; +} from '@tabler/icons-react' -import i18n from '../i18n'; +import i18n from '../i18n' const icons = { FolderOutlined, @@ -19,7 +19,7 @@ const icons = { IconSquareAsterisk, IconList, IconDatabase, -}; +} const workspace = { id: 'utilities', @@ -49,6 +49,6 @@ const workspace = { children: [], }, ], -}; +} -export default workspace; +export default workspace diff --git a/apps/react/case-portal/src/plugins/MemoryTokenManager.js b/apps/react/case-portal/src/plugins/MemoryTokenManager.js index c3669ae7..652daf2e 100644 --- a/apps/react/case-portal/src/plugins/MemoryTokenManager.js +++ b/apps/react/case-portal/src/plugins/MemoryTokenManager.js @@ -1,14 +1,14 @@ -var _TokenInMemory_ = null; +var _TokenInMemory_ = null class MemoryTokenManager { static getToken() { - return _TokenInMemory_; + return _TokenInMemory_ } static setToken(token) { - _TokenInMemory_ = token; - return true; + _TokenInMemory_ = token + return true } } -export default MemoryTokenManager; +export default MemoryTokenManager diff --git a/apps/react/case-portal/src/plugins/RegisterInjectUserSession.js b/apps/react/case-portal/src/plugins/RegisterInjectUserSession.js index 4b8c0ccb..77694e36 100644 --- a/apps/react/case-portal/src/plugins/RegisterInjectUserSession.js +++ b/apps/react/case-portal/src/plugins/RegisterInjectUserSession.js @@ -1,10 +1,10 @@ -import { Formio } from 'formiojs'; +import { Formio } from 'formiojs' export function RegisterInjectUserSession(keycloak) { - const name = 'injectUserSession'; + const name = 'injectUserSession' if (Formio.getPlugin(name)) { - Formio.deregisterPlugin(name); + Formio.deregisterPlugin(name) } Formio.registerPlugin( @@ -13,12 +13,12 @@ export function RegisterInjectUserSession(keycloak) { preRequest: function (args) { return new Promise(function (resolve) { if (args.opts && args.opts.header) { - args.opts.header.set('Authorization', `Bearer ${keycloak.token}`); + args.opts.header.set('Authorization', `Bearer ${keycloak.token}`) } - return resolve(args); - }); + return resolve(args) + }) }, }, 'injectUserSession', - ); + ) } diff --git a/apps/react/case-portal/src/plugins/RegisterOptions.js b/apps/react/case-portal/src/plugins/RegisterOptions.js index f162828c..cad554fa 100644 --- a/apps/react/case-portal/src/plugins/RegisterOptions.js +++ b/apps/react/case-portal/src/plugins/RegisterOptions.js @@ -1,9 +1,9 @@ -import MemoryTokenManager from './MemoryTokenManager'; +import MemoryTokenManager from './MemoryTokenManager' export function RegisteOptions(keycloak) { if (keycloak == null) { - MemoryTokenManager.setToken(null); + MemoryTokenManager.setToken(null) } else { - MemoryTokenManager.setToken(keycloak.token); + MemoryTokenManager.setToken(keycloak.token) } } diff --git a/apps/react/case-portal/src/plugins/index.js b/apps/react/case-portal/src/plugins/index.js index 4abc99b6..b7d06371 100644 --- a/apps/react/case-portal/src/plugins/index.js +++ b/apps/react/case-portal/src/plugins/index.js @@ -1,4 +1,4 @@ -import { RegisterInjectUserSession } from './RegisterInjectUserSession'; -import { RegisteOptions } from './RegisterOptions'; +import { RegisterInjectUserSession } from './RegisterInjectUserSession' +import { RegisteOptions } from './RegisterOptions' -export { RegisterInjectUserSession, RegisteOptions }; +export { RegisterInjectUserSession, RegisteOptions } diff --git a/apps/react/case-portal/src/plugins/storage/index.js b/apps/react/case-portal/src/plugins/storage/index.js index 2a524c9f..b6907ac6 100644 --- a/apps/react/case-portal/src/plugins/storage/index.js +++ b/apps/react/case-portal/src/plugins/storage/index.js @@ -1,6 +1,6 @@ -import { Formio } from 'formiojs'; -import Config from '../../consts'; -import MemoryTokenManager from '../MemoryTokenManager'; +import { Formio } from 'formiojs' +import Config from '../../consts' +import MemoryTokenManager from '../MemoryTokenManager' export class StorageService { async uploadFile(file, fileName, dir, evt) { @@ -14,7 +14,7 @@ export class StorageService { null, null, () => null, - ); + ) } async deleteFile() { @@ -22,7 +22,7 @@ export class StorageService { } async downloadFile(fileInfo) { - return minio().downloadFile(fileInfo); + return minio().downloadFile(fileInfo) } } @@ -32,34 +32,34 @@ export function minio() { headers: { Authorization: `Bearer ${MemoryTokenManager.getToken()}`, }, - }; + } } return { uploadFile(file, dir, progressCallback, abortCallback) { function doUpload(url, fd) { return new Promise((resolve, reject) => { - let request = new XMLHttpRequest(); + let request = new XMLHttpRequest() - request.open('POST', url); + request.open('POST', url) request.addEventListener('openAndSetHeaders', function (...params) { - request.open(...params); + request.open(...params) request.setRequestHeader( 'Authorization', `Bearer ${Formio.getToken()}`, - ); - }); + ) + }) request.upload.addEventListener('progress', function (e) { if (typeof progressCallback === 'function') { - progressCallback(e); + progressCallback(e) } if (typeof abortCallback === 'function') { - abortCallback(() => request.abort()); + abortCallback(() => request.abort()) } - }); + }) request.addEventListener('load', function () { if (request.status >= 200 && request.status < 300) { @@ -70,88 +70,88 @@ export function minio() { url: file.name, size: file.size, type: file.type, - }); + }) } else { - reject(request.response || 'Unable to upload file'); + reject(request.response || 'Unable to upload file') } - }); + }) request.addEventListener('error', function (e) { - e.networkError = true; - reject(e); - }); + e.networkError = true + reject(e) + }) request.addEventListener('abort', function (e) { - e.networkError = true; - reject(e); - }); + e.networkError = true + reject(e) + }) - request.send(fd); - }); + request.send(fd) + }) } - let goUploadToFileUrl = `${Config.StorageUrl}/storage/files/${dir}/uploads/${file.name}?content-type=${file.type}`; + let goUploadToFileUrl = `${Config.StorageUrl}/storage/files/${dir}/uploads/${file.name}?content-type=${file.type}` if (!dir) { - goUploadToFileUrl = `${Config.StorageUrl}/storage/files/uploads/${file.name}?content-type=${file.type}`; + goUploadToFileUrl = `${Config.StorageUrl}/storage/files/uploads/${file.name}?content-type=${file.type}` } return fetch(goUploadToFileUrl, createHeaders()) .then((resp) => resp.json()) .then((data) => { - const form = new FormData(); + const form = new FormData() for (const key in data.formData) { - form.append(key, data.formData[key]); + form.append(key, data.formData[key]) } if (!dir) { - form.append('key', file.name); + form.append('key', file.name) } else { - form.append('key', dir + '/' + file.name); + form.append('key', dir + '/' + file.name) } - form.append('content-type', file.type); - form.append('file', file); + form.append('content-type', file.type) + form.append('file', file) - return doUpload(data.url, form); - }); + return doUpload(data.url, form) + }) }, downloadFile(file) { - let getObjectForUrl = `${Config.StorageUrl}/storage/files/${file.dir}/downloads/${file.name}?content-type=${file.type}`; + let getObjectForUrl = `${Config.StorageUrl}/storage/files/${file.dir}/downloads/${file.name}?content-type=${file.type}` if (!file.dir) { - getObjectForUrl = `${Config.StorageUrl}/storage/files/downloads/${file.name}?content-type=${file.type}`; + getObjectForUrl = `${Config.StorageUrl}/storage/files/downloads/${file.name}?content-type=${file.type}` } return fetch(getObjectForUrl, createHeaders()) .then((resp) => resp.json()) .then(async (data) => { - const resp = await fetch(data.url); - const blob = await resp.blob(); - const downloadUrl = window.URL.createObjectURL(blob); + const resp = await fetch(data.url) + const blob = await resp.blob() + const downloadUrl = window.URL.createObjectURL(blob) - const anchor = document.createElement('a'); - document.body.appendChild(anchor); - anchor.href = downloadUrl; + const anchor = document.createElement('a') + document.body.appendChild(anchor) + anchor.href = downloadUrl - const url = new URL(data.url); + const url = new URL(data.url) if (url.pathname) { anchor.download = url.pathname .slice(url.pathname.lastIndexOf('/') + 1) - .replaceAll('\''); + .replaceAll("'") } else { - anchor.download = downloadUrl; + anchor.download = downloadUrl } - anchor.click(); + anchor.click() setTimeout(() => { - window.URL.revokeObjectURL(downloadUrl); - document.body.removeChild(anchor); - }, 0); - return; - }); + window.URL.revokeObjectURL(downloadUrl) + document.body.removeChild(anchor) + }, 0) + return + }) }, - }; + } } -minio.title = 's3'; +minio.title = 's3' diff --git a/apps/react/case-portal/src/routes/MainRoutes.js b/apps/react/case-portal/src/routes/MainRoutes.js index 8b62eaa0..e3e4bde6 100644 --- a/apps/react/case-portal/src/routes/MainRoutes.js +++ b/apps/react/case-portal/src/routes/MainRoutes.js @@ -1,18 +1,18 @@ -import { lazy } from 'react'; -import Loadable from 'components/Loadable'; -import MainLayout from 'layout/MainLayout'; -import { CaseStatus } from 'common/caseStatus'; -import { CaseList } from 'views/caseList/caseList'; -import { RecordList } from 'views/record/recordList'; -import { TaskList } from 'views/taskList/taskList'; -import { CaseDefList } from 'views/management/caseDef/caseDefList/caseDefList'; -import { ProcessDefList } from 'views/management/processDef/processDefList'; -import { FormList } from 'views/management/form/formList'; -import { RecordTypeList } from 'views/management/recordType/recordTypeList'; -import { QueueList } from 'views/management/queue/queueList'; +import { lazy } from 'react' +import Loadable from 'components/Loadable' +import MainLayout from 'layout/MainLayout' +import { CaseStatus } from 'common/caseStatus' +import { CaseList } from 'views/caseList/caseList' +import { RecordList } from 'views/record/recordList' +import { TaskList } from 'views/taskList/taskList' +import { CaseDefList } from 'views/management/caseDef/caseDefList/caseDefList' +import { ProcessDefList } from 'views/management/processDef/processDefList' +import { FormList } from 'views/management/form/formList' +import { RecordTypeList } from 'views/management/recordType/recordTypeList' +import { QueueList } from 'views/management/queue/queueList' -const ManagamentDefault = Loadable(lazy(() => import('../views/management'))); -const DashboardDefault = Loadable(lazy(() => import('../views/dashboard'))); +const ManagamentDefault = Loadable(lazy(() => import('../views/management'))) +const DashboardDefault = Loadable(lazy(() => import('../views/dashboard'))) export const MainRoutes = ( keycloak, @@ -97,21 +97,21 @@ export const MainRoutes = ( ], }, ], - }; + } casesDefinitions.forEach((element) => { routes.children.push({ path: 'case-list/' + element.id, element: , - }); - }); + }) + }) recordsTypes.forEach((element) => { routes.children.push({ path: 'record-list/' + element.id, element: , - }); - }); + }) + }) - return routes; -}; + return routes +} diff --git a/apps/react/case-portal/src/routes/index.js b/apps/react/case-portal/src/routes/index.js index 8f736d08..93edfa05 100644 --- a/apps/react/case-portal/src/routes/index.js +++ b/apps/react/case-portal/src/routes/index.js @@ -1,5 +1,5 @@ -import { useRoutes } from 'react-router-dom'; -import { MainRoutes } from './MainRoutes'; +import { useRoutes } from 'react-router-dom' +import { MainRoutes } from './MainRoutes' export const ThemeRoutes = ({ keycloak, @@ -9,5 +9,5 @@ export const ThemeRoutes = ({ }) => { return useRoutes([ MainRoutes(keycloak, authenticated, recordsTypes, casesDefinitions), - ]); -}; + ]) +} diff --git a/apps/react/case-portal/src/services/CaseDefService.js b/apps/react/case-portal/src/services/CaseDefService.js index 425aff04..1b48bbdd 100644 --- a/apps/react/case-portal/src/services/CaseDefService.js +++ b/apps/react/case-portal/src/services/CaseDefService.js @@ -1,15 +1,15 @@ -import { json, nop } from './request'; -import Config from '../consts'; +import { json, nop } from './request' +import Config from '../consts' export const CaseDefService = { create, update, remove, getAll, -}; +} async function create(keycloak, body) { - const url = `${Config.CaseEngineUrl}/case-definition`; + const url = `${Config.CaseEngineUrl}/case-definition` try { const resp = await fetch(url, { @@ -20,16 +20,16 @@ async function create(keycloak, body) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(body), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function update(keycloak, id, body) { - const url = `${Config.CaseEngineUrl}/case-definition/${id}`; + const url = `${Config.CaseEngineUrl}/case-definition/${id}` try { const resp = await fetch(url, { @@ -40,16 +40,16 @@ async function update(keycloak, id, body) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(body), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function remove(keycloak, id) { - const url = `${Config.CaseEngineUrl}/case-definition/${id}`; + const url = `${Config.CaseEngineUrl}/case-definition/${id}` try { const resp = await fetch(url, { @@ -59,30 +59,30 @@ async function remove(keycloak, id) { 'Content-Type': 'application/json', Authorization: `Bearer ${keycloak.token}`, }, - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function getAll(keycloak) { if (keycloak.isTokenExpired()) { - keycloak.logout({ redirectUri: window.location.origin }); + keycloak.logout({ redirectUri: window.location.origin }) } const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } - var url = `${Config.CaseEngineUrl}/case-definition`; + var url = `${Config.CaseEngineUrl}/case-definition` try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } diff --git a/apps/react/case-portal/src/services/CaseService.js b/apps/react/case-portal/src/services/CaseService.js index 57224995..835eb314 100644 --- a/apps/react/case-portal/src/services/CaseService.js +++ b/apps/react/case-portal/src/services/CaseService.js @@ -1,6 +1,6 @@ -import Config from '../consts'; -import i18n from '../i18n'; -import { json, nop } from './request'; +import Config from '../consts' +import i18n from '../i18n' +import { json, nop } from './request' export const CaseService = { getAllByStatus, @@ -14,102 +14,102 @@ export const CaseService = { addComment, updateComment, deleteComment, -}; +} async function getAllByStatus(keycloak, status, limit) { if (!status) { - return Promise.resolve([]); + return Promise.resolve([]) } const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } - var url = `${Config.CaseEngineUrl}/case?status=${status}&limit=${limit}`; + var url = `${Config.CaseEngineUrl}/case?status=${status}&limit=${limit}` try { - const resp = await fetch(url, { headers }); - const data = await json(keycloak, resp); - return mapperToCase(data); + const resp = await fetch(url, { headers }) + const data = await json(keycloak, resp) + return mapperToCase(data) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function getCaseDefinitions(keycloak) { - const url = `${Config.CaseEngineUrl}/case-definition?deployed=true`; + const url = `${Config.CaseEngineUrl}/case-definition?deployed=true` const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function getCaseDefinitionsById(keycloak, caseDefId) { - const url = `${Config.CaseEngineUrl}/case-definition/${caseDefId || ''}`; + const url = `${Config.CaseEngineUrl}/case-definition/${caseDefId || ''}` const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function getCaseById(keycloak, id) { - let url = `${Config.CaseEngineUrl}/case/${id}`; + let url = `${Config.CaseEngineUrl}/case/${id}` const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function filterCase(keycloak, caseDefId, status, cursor) { - let url = `${Config.CaseEngineUrl}/case?`; - url = url + (status ? `status=${status}` : ''); - url = url + (caseDefId ? `&caseDefinitionId=${caseDefId}` : ''); - url = url + `&before=${cursor.before || ''}`; - url = url + `&after=${cursor.after || ''}`; - url = url + `&sort=${cursor.sort || 'asc'}`; - url = url + `&limit=${cursor.limit || 10}`; + let url = `${Config.CaseEngineUrl}/case?` + url = url + (status ? `status=${status}` : '') + url = url + (caseDefId ? `&caseDefinitionId=${caseDefId}` : '') + url = url + `&before=${cursor.before || ''}` + url = url + `&after=${cursor.after || ''}` + url = url + `&sort=${cursor.sort || 'asc'}` + url = url + `&limit=${cursor.limit || 10}` const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } try { - const resp = await fetch(url, { headers }); - const data = await json(keycloak, resp); - return mapperToCase(data); + const resp = await fetch(url, { headers }) + const data = await json(keycloak, resp) + return mapperToCase(data) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function patch(keycloak, id, body) { - const url = `${Config.CaseEngineUrl}/case/${id}`; + const url = `${Config.CaseEngineUrl}/case/${id}` try { const resp = await fetch(url, { @@ -120,16 +120,16 @@ async function patch(keycloak, id, body) { Authorization: `Bearer ${keycloak.token}`, }, body: body, - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function createCase(keycloak, body) { - const url = `${Config.CaseEngineUrl}/case`; + const url = `${Config.CaseEngineUrl}/case` try { const resp = await fetch(url, { @@ -140,16 +140,16 @@ async function createCase(keycloak, body) { Authorization: `Bearer ${keycloak.token}`, }, body: body, - }); - return json(keycloak, resp); + }) + return json(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function addDocuments(keycloak, businessKey, document) { - const url = `${Config.CaseEngineUrl}/case/${businessKey}/document`; + const url = `${Config.CaseEngineUrl}/case/${businessKey}/document` try { const resp = await fetch(url, { @@ -160,16 +160,16 @@ async function addDocuments(keycloak, businessKey, document) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(document), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function addComment(keycloak, text, parentId, businessKey) { - const url = `${Config.CaseEngineUrl}/case/${businessKey}/comment`; + const url = `${Config.CaseEngineUrl}/case/${businessKey}/comment` const comment = { body: text, @@ -177,7 +177,7 @@ async function addComment(keycloak, text, parentId, businessKey) { userId: keycloak.tokenParsed.preferred_username, userName: keycloak.tokenParsed.given_name, caseId: businessKey, - }; + } try { const resp = await fetch(url, { @@ -188,23 +188,23 @@ async function addComment(keycloak, text, parentId, businessKey) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(comment), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function updateComment(keycloak, text, commentId, businessKey) { - const url = `${Config.CaseEngineUrl}/case/${businessKey}/comment/${commentId}`; + const url = `${Config.CaseEngineUrl}/case/${businessKey}/comment/${commentId}` const comment = { id: commentId, body: text, userId: keycloak.tokenParsed.preferred_username, caseId: businessKey, - }; + } try { const resp = await fetch(url, { @@ -215,16 +215,16 @@ async function updateComment(keycloak, text, commentId, businessKey) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(comment), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function deleteComment(keycloak, commentId, businessKey) { - const url = `${Config.CaseEngineUrl}/case/${businessKey}/comment/${commentId}`; + const url = `${Config.CaseEngineUrl}/case/${businessKey}/comment/${commentId}` try { const resp = await fetch(url, { @@ -234,19 +234,19 @@ async function deleteComment(keycloak, commentId, businessKey) { 'Content-Type': 'application/json', Authorization: `Bearer ${keycloak.token}`, }, - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } function mapperToCase(resp) { - const { data, paging } = resp; + const { data, paging } = resp if (!data.length) { - return Promise.resolve({ data: [], paging: {} }); + return Promise.resolve({ data: [], paging: {} }) } const toStatus = (status) => { @@ -254,25 +254,25 @@ function mapperToCase(resp) { WIP_CASE_STATUS: i18n.t('general.case.status.wip'), CLOSED_CASE_STATUS: i18n.t('general.case.status.closed'), ARCHIVED_CASE_STATUS: i18n.t('general.case.status.archived'), - }; + } - return mapper[status] || '-'; - }; + return mapper[status] || '-' + } const toCase = data.map((element) => { const createdAt = element?.attributes?.find( (attribute) => attribute.name === 'createdAt', - ); - element.createdAt = createdAt ? createdAt.value : ''; - element.statusDescription = toStatus(element.status); - return element; - }); + ) + element.createdAt = createdAt ? createdAt.value : '' + element.statusDescription = toStatus(element.status) + return element + }) const toPaging = { cursors: paging.cursors, hasPrevious: paging.hasPrevious, hasNext: paging.hasNext, - }; + } - return Promise.resolve({ data: toCase, paging: toPaging }); + return Promise.resolve({ data: toCase, paging: toPaging }) } diff --git a/apps/react/case-portal/src/services/DeploymentService.js b/apps/react/case-portal/src/services/DeploymentService.js index 2c381007..f1d9c907 100644 --- a/apps/react/case-portal/src/services/DeploymentService.js +++ b/apps/react/case-portal/src/services/DeploymentService.js @@ -1,12 +1,12 @@ -import { nop } from './request'; -import Config from 'consts/index'; +import { nop } from './request' +import Config from 'consts/index' export const DeploymentService = { deploy, -}; +} async function deploy(keycloak, file) { - const url = `${Config.CaseEngineUrl}/deployment`; + const url = `${Config.CaseEngineUrl}/deployment` try { const resp = await fetch(url, { @@ -17,10 +17,10 @@ async function deploy(keycloak, file) { Authorization: `Bearer ${keycloak.token}`, }, body: file, - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } diff --git a/apps/react/case-portal/src/services/EmailService.js b/apps/react/case-portal/src/services/EmailService.js index ce7066f9..0590b65e 100644 --- a/apps/react/case-portal/src/services/EmailService.js +++ b/apps/react/case-portal/src/services/EmailService.js @@ -1,13 +1,13 @@ -import { json } from './request'; -import Config from '../consts'; +import { json } from './request' +import Config from '../consts' export const EmailService = { send, getAllByBusinessKey, -}; +} async function send(keycloak, body) { - const url = `${Config.CaseEngineUrl}/case-email`; + const url = `${Config.CaseEngineUrl}/case-email` try { await fetch(url, { @@ -18,25 +18,25 @@ async function send(keycloak, body) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(body), - }); + }) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function getAllByBusinessKey(keycloak, caseInstanceBusinessKey) { const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } - var url = `${Config.CaseEngineUrl}/case-email?caseInstanceBusinessKey=${caseInstanceBusinessKey}`; + var url = `${Config.CaseEngineUrl}/case-email?caseInstanceBusinessKey=${caseInstanceBusinessKey}` try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } diff --git a/apps/react/case-portal/src/services/FileService.js b/apps/react/case-portal/src/services/FileService.js index 689dbfa4..2e384ec1 100644 --- a/apps/react/case-portal/src/services/FileService.js +++ b/apps/react/case-portal/src/services/FileService.js @@ -1,27 +1,27 @@ -import Config from '../consts'; +import Config from '../consts' export const FileService = { upload, download, -}; +} function upload({ dir, file, progress, keycloak }) { function doUpload(url, fd) { return new Promise((resolve, reject) => { - let request = new XMLHttpRequest(); + let request = new XMLHttpRequest() - request.open('POST', url); + request.open('POST', url) request.addEventListener('openAndSetHeaders', function (...params) { - request.open(...params); - request.setRequestHeader('Authorization', `Bearer ${keycloak.token}`); - }); + request.open(...params) + request.setRequestHeader('Authorization', `Bearer ${keycloak.token}`) + }) request.upload.addEventListener('progress', function (e) { if (typeof progress === 'function') { - progress(e, (e.loaded / e.total) * 100); + progress(e, (e.loaded / e.total) * 100) } - }); + }) request.addEventListener('load', function () { if (request.status >= 200 && request.status < 300) { @@ -32,87 +32,87 @@ function upload({ dir, file, progress, keycloak }) { url: file.name, size: file.size, type: file.type, - }); + }) } else { - reject(request.response || 'Unable to upload file'); + reject(request.response || 'Unable to upload file') } - }); + }) request.addEventListener('error', function (e) { - e.networkError = true; - reject(e); - }); + e.networkError = true + reject(e) + }) request.addEventListener('abort', function (e) { - e.networkError = true; - reject(e); - }); + e.networkError = true + reject(e) + }) - request.send(fd); - }); + request.send(fd) + }) } - let goUploadToFileUrl = `${Config.StorageUrl}/storage/files/${dir}/uploads/${file.name}?content-type=${file.type}`; + let goUploadToFileUrl = `${Config.StorageUrl}/storage/files/${dir}/uploads/${file.name}?content-type=${file.type}` if (!dir) { - goUploadToFileUrl = `${Config.StorageUrl}/storage/files/uploads/${file.name}?content-type=${file.type}`; + goUploadToFileUrl = `${Config.StorageUrl}/storage/files/uploads/${file.name}?content-type=${file.type}` } return fetch(goUploadToFileUrl, createHeaders(keycloak)) .then((resp) => resp.json()) .then((data) => { - const form = new FormData(); + const form = new FormData() for (const key in data.formData) { - form.append(key, data.formData[key]); + form.append(key, data.formData[key]) } if (!dir) { - form.append('key', file.name); + form.append('key', file.name) } else { - form.append('key', dir + '/' + file.name); + form.append('key', dir + '/' + file.name) } - form.append('content-type', file.type); - form.append('file', file); + form.append('content-type', file.type) + form.append('file', file) - return doUpload(data.url, form); - }); + return doUpload(data.url, form) + }) } function download(file, keycloak) { - let getObjectForUrl = `${Config.StorageUrl}/storage/files/${file.dir}/downloads/${file.name}?content-type=${file.type}`; + let getObjectForUrl = `${Config.StorageUrl}/storage/files/${file.dir}/downloads/${file.name}?content-type=${file.type}` if (!file.dir) { - getObjectForUrl = `${Config.StorageUrl}/storage/files/downloads/${file.name}?content-type=${file.type}`; + getObjectForUrl = `${Config.StorageUrl}/storage/files/downloads/${file.name}?content-type=${file.type}` } return fetch(getObjectForUrl, createHeaders(keycloak)) .then((resp) => resp.json()) .then(async (data) => { - const resp = await fetch(data.url); - const blob = await resp.blob(); - const downloadUrl = window.URL.createObjectURL(blob); + const resp = await fetch(data.url) + const blob = await resp.blob() + const downloadUrl = window.URL.createObjectURL(blob) - const anchor = document.createElement('a'); - document.body.appendChild(anchor); - anchor.href = downloadUrl; + const anchor = document.createElement('a') + document.body.appendChild(anchor) + anchor.href = downloadUrl - const url = new URL(data.url); + const url = new URL(data.url) if (url.pathname) { anchor.download = url.pathname .slice(url.pathname.lastIndexOf('/') + 1) - .replaceAll('\''); + .replaceAll("'") } else { - anchor.download = downloadUrl; + anchor.download = downloadUrl } - anchor.click(); + anchor.click() setTimeout(() => { - window.URL.revokeObjectURL(downloadUrl); - document.body.removeChild(anchor); - }, 0); - return; - }); + window.URL.revokeObjectURL(downloadUrl) + document.body.removeChild(anchor) + }, 0) + return + }) } function createHeaders(keycloak) { @@ -120,5 +120,5 @@ function createHeaders(keycloak) { headers: { Authorization: `Bearer ${keycloak.token}`, }, - }; + } } diff --git a/apps/react/case-portal/src/services/FormService.js b/apps/react/case-portal/src/services/FormService.js index c656e7c7..37f8b569 100644 --- a/apps/react/case-portal/src/services/FormService.js +++ b/apps/react/case-portal/src/services/FormService.js @@ -1,5 +1,5 @@ -import { json, nop } from './request'; -import Config from '../consts'; +import { json, nop } from './request' +import Config from '../consts' export const FormService = { getAll, @@ -8,10 +8,10 @@ export const FormService = { update, remove, create, -}; +} async function create(keycloak, body) { - const url = `${Config.CaseEngineUrl}/form`; + const url = `${Config.CaseEngineUrl}/form` try { const resp = await fetch(url, { @@ -22,16 +22,16 @@ async function create(keycloak, body) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(body), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function update(keycloak, id, body) { - const url = `${Config.CaseEngineUrl}/form/${id}`; + const url = `${Config.CaseEngineUrl}/form/${id}` try { const resp = await fetch(url, { @@ -42,16 +42,16 @@ async function update(keycloak, id, body) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(body), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function remove(keycloak, id) { - const url = `${Config.CaseEngineUrl}/form/${id}`; + const url = `${Config.CaseEngineUrl}/form/${id}` try { const resp = await fetch(url, { @@ -61,60 +61,60 @@ async function remove(keycloak, id) { 'Content-Type': 'application/json', Authorization: `Bearer ${keycloak.token}`, }, - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function getAll(keycloak) { const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } - var url = `${Config.CaseEngineUrl}/form`; + var url = `${Config.CaseEngineUrl}/form` try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function getByKey(keycloak, formKey) { const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } - var url = `${Config.CaseEngineUrl}/form/${formKey}`; + var url = `${Config.CaseEngineUrl}/form/${formKey}` try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function getVariableById(keycloak, processInstanceId) { const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } - const body = JSON.stringify({ processInstanceId }); + const body = JSON.stringify({ processInstanceId }) - var url = `${Config.CaseEngineUrl}/variable`; + var url = `${Config.CaseEngineUrl}/variable` try { - const resp = await fetch(url, { headers, body }); - return json(keycloak, resp); + const resp = await fetch(url, { headers, body }) + return json(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } diff --git a/apps/react/case-portal/src/services/NotificationService.js b/apps/react/case-portal/src/services/NotificationService.js index 4d70a347..b13f5324 100644 --- a/apps/react/case-portal/src/services/NotificationService.js +++ b/apps/react/case-portal/src/services/NotificationService.js @@ -1,17 +1,17 @@ -import moment from 'moment'; -import { CaseService } from './CaseService'; -import { Typography } from '@mui/material'; +import moment from 'moment' +import { CaseService } from './CaseService' +import { Typography } from '@mui/material' export const NotificationService = { getNotifications, -}; +} async function getNotifications(keycloak) { function truncIfAboveFiveElements(resp) { - const { data } = resp; + const { data } = resp if (!data || !data.length) { - return Promise.resolve({ data: [], page: {} }); + return Promise.resolve({ data: [], page: {} }) } return Promise.resolve({ @@ -20,7 +20,7 @@ async function getNotifications(keycloak) { total: data.length, limit: 5, }, - }); + }) } function toMessage({ data, page }) { @@ -31,9 +31,9 @@ async function getNotifications(keycloak) { 'Data Collection': 'data_collection_stg', 'Contract Writing': 'contract_writing_stg', 'Info & Docs Analysis': 'info_docs_analysis_stg', - }; + } - return mapper[s] || 'data_collection_stg'; + return mapper[s] || 'data_collection_stg' } return { @@ -55,9 +55,9 @@ async function getNotifications(keycloak) { stage ), - }; + } }), - ); + ) } try { @@ -65,11 +65,11 @@ async function getNotifications(keycloak) { keycloak, 'WIP_CASE_STATUS', 5, - ); - const data = await truncIfAboveFiveElements(resp); - return toMessage(data); + ) + const data = await truncIfAboveFiveElements(resp) + return toMessage(data) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } diff --git a/apps/react/case-portal/src/services/ProcessDefService.js b/apps/react/case-portal/src/services/ProcessDefService.js index fffd5314..607a7a26 100644 --- a/apps/react/case-portal/src/services/ProcessDefService.js +++ b/apps/react/case-portal/src/services/ProcessDefService.js @@ -1,14 +1,14 @@ -import { json } from './request'; -import Config from 'consts/index'; +import { json } from './request' +import Config from 'consts/index' export const ProcessDefService = { start, find, getBPMNXml, -}; +} async function start(keycloak, procDefKey, businessKey) { - const url = `${Config.CaseEngineUrl}/process-definition/key/${procDefKey}/start`; + const url = `${Config.CaseEngineUrl}/process-definition/key/${procDefKey}/start` try { const resp = await fetch(url, { @@ -19,46 +19,46 @@ async function start(keycloak, procDefKey, businessKey) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify({ businessKey: businessKey }), - }); - return json(keycloak, resp); + }) + return json(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function find(keycloak) { if (keycloak.isTokenExpired()) { - keycloak.logout({ redirectUri: window.location.origin }); + keycloak.logout({ redirectUri: window.location.origin }) } const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } - var url = `${Config.CaseEngineUrl}/process-definition`; + var url = `${Config.CaseEngineUrl}/process-definition` try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function getBPMNXml(keycloak, processDefId) { const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } - var url = `${Config.CaseEngineUrl}/process-definition/${processDefId}/xml`; + var url = `${Config.CaseEngineUrl}/process-definition/${processDefId}/xml` try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp.text()); + const resp = await fetch(url, { headers }) + return json(keycloak, resp.text()) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } diff --git a/apps/react/case-portal/src/services/QueueService.js b/apps/react/case-portal/src/services/QueueService.js index 10e42b5d..55df6d3a 100644 --- a/apps/react/case-portal/src/services/QueueService.js +++ b/apps/react/case-portal/src/services/QueueService.js @@ -1,5 +1,5 @@ -import Config from '../consts'; -import { json, nop } from './request'; +import Config from '../consts' +import { json, nop } from './request' export const QueueService = { find, @@ -7,10 +7,10 @@ export const QueueService = { update, remove, save, -}; +} async function save(keycloak, body) { - const url = `${Config.CaseEngineUrl}/queue`; + const url = `${Config.CaseEngineUrl}/queue` try { const resp = await fetch(url, { @@ -21,16 +21,16 @@ async function save(keycloak, body) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(body), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function update(keycloak, id, body) { - const url = `${Config.CaseEngineUrl}/queue/${id}`; + const url = `${Config.CaseEngineUrl}/queue/${id}` try { const resp = await fetch(url, { @@ -41,16 +41,16 @@ async function update(keycloak, id, body) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(body), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function remove(keycloak, id) { - const url = `${Config.CaseEngineUrl}/queue/${id}`; + const url = `${Config.CaseEngineUrl}/queue/${id}` try { const resp = await fetch(url, { @@ -60,42 +60,42 @@ async function remove(keycloak, id) { 'Content-Type': 'application/json', Authorization: `Bearer ${keycloak.token}`, }, - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function find(keycloak) { const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } - var url = `${Config.CaseEngineUrl}/queue`; + var url = `${Config.CaseEngineUrl}/queue` try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } async function get(keycloak, id) { const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } - var url = `${Config.CaseEngineUrl}/queue/${id}`; + var url = `${Config.CaseEngineUrl}/queue/${id}` try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } diff --git a/apps/react/case-portal/src/services/RecordService.js b/apps/react/case-portal/src/services/RecordService.js index b5921fa6..c95cdf94 100644 --- a/apps/react/case-portal/src/services/RecordService.js +++ b/apps/react/case-portal/src/services/RecordService.js @@ -1,5 +1,5 @@ -import { json, nop } from './request'; -import Config from '../consts'; +import { json, nop } from './request' +import Config from '../consts' export const RecordService = { getRecordTypeById, @@ -9,58 +9,58 @@ export const RecordService = { updateRecord, createRecord, deleteRecord, -}; +} async function getRecordById(keycloak, id) { - const url = `${Config.CaseEngineUrl}/record/${id}`; + const url = `${Config.CaseEngineUrl}/record/${id}` const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function getAllRecordTypes(keycloak) { - const url = `${Config.CaseEngineUrl}/record-type`; + const url = `${Config.CaseEngineUrl}/record-type` const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function getRecordTypeById(keycloak, id) { - const url = `${Config.CaseEngineUrl}/record-type/${id}`; + const url = `${Config.CaseEngineUrl}/record-type/${id}` const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function createRecordType(keycloak, id, data) { - const url = `${Config.CaseEngineUrl}/record-type/${id}`; + const url = `${Config.CaseEngineUrl}/record-type/${id}` try { const resp = await fetch(url, { @@ -71,16 +71,16 @@ async function createRecordType(keycloak, id, data) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(data), - }); - return json(keycloak, resp); + }) + return json(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function createRecord(keycloak, id, data) { - const url = `${Config.CaseEngineUrl}/record/${id}`; + const url = `${Config.CaseEngineUrl}/record/${id}` try { const resp = await fetch(url, { @@ -91,16 +91,16 @@ async function createRecord(keycloak, id, data) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(data), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function updateRecord(keycloak, id, oid, data) { - const url = `${Config.CaseEngineUrl}/record/${id}/${oid}`; + const url = `${Config.CaseEngineUrl}/record/${id}/${oid}` try { const resp = await fetch(url, { @@ -111,16 +111,16 @@ async function updateRecord(keycloak, id, oid, data) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(data), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function deleteRecord(keycloak, id, oid) { - const url = `${Config.CaseEngineUrl}/record/${id}/${oid}`; + const url = `${Config.CaseEngineUrl}/record/${id}/${oid}` try { const resp = await fetch(url, { @@ -130,10 +130,10 @@ async function deleteRecord(keycloak, id, oid) { 'Content-Type': 'application/json', Authorization: `Bearer ${keycloak.token}`, }, - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } diff --git a/apps/react/case-portal/src/services/RecordTypeService.js b/apps/react/case-portal/src/services/RecordTypeService.js index 1c8713ca..3847cd10 100644 --- a/apps/react/case-portal/src/services/RecordTypeService.js +++ b/apps/react/case-portal/src/services/RecordTypeService.js @@ -1,15 +1,15 @@ -import { json, nop } from './request'; -import Config from '../consts'; +import { json, nop } from './request' +import Config from '../consts' export const RecordTypeService = { create, update, remove, getAll, -}; +} async function getAll(keycloak) { - const url = `${Config.CaseEngineUrl}/record-type`; + const url = `${Config.CaseEngineUrl}/record-type` try { const resp = await fetch(url, { @@ -18,16 +18,16 @@ async function getAll(keycloak) { 'Content-Type': 'application/json', Authorization: `Bearer ${keycloak.token}`, }, - }); - return json(keycloak, resp); + }) + return json(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function create(keycloak, data) { - const url = `${Config.CaseEngineUrl}/record-type`; + const url = `${Config.CaseEngineUrl}/record-type` try { const resp = await fetch(url, { @@ -38,16 +38,16 @@ async function create(keycloak, data) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(data), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function update(keycloak, id, data) { - const url = `${Config.CaseEngineUrl}/record-type/${id}`; + const url = `${Config.CaseEngineUrl}/record-type/${id}` try { const resp = await fetch(url, { @@ -58,16 +58,16 @@ async function update(keycloak, id, data) { Authorization: `Bearer ${keycloak.token}`, }, body: JSON.stringify(data), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function remove(keycloak, id) { - const url = `${Config.CaseEngineUrl}/record-type/${id}`; + const url = `${Config.CaseEngineUrl}/record-type/${id}` try { const resp = await fetch(url, { @@ -77,10 +77,10 @@ async function remove(keycloak, id) { 'Content-Type': 'application/json', Authorization: `Bearer ${keycloak.token}`, }, - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } diff --git a/apps/react/case-portal/src/services/TaskService.js b/apps/react/case-portal/src/services/TaskService.js index 79d3b047..ab9e48f9 100644 --- a/apps/react/case-portal/src/services/TaskService.js +++ b/apps/react/case-portal/src/services/TaskService.js @@ -1,5 +1,5 @@ -import { json, nop } from './request'; -import Config from 'consts/index'; +import { json, nop } from './request' +import Config from 'consts/index' export const TaskService = { getActivityInstancesById, @@ -9,142 +9,142 @@ export const TaskService = { createNewTask, filterTasks, filterProcessInstances, -}; +} async function getActivityInstancesById(keycloak, processInstanceId) { - const url = `${Config.CaseEngineUrl}/process-instance/${processInstanceId}/activity-instances`; + const url = `${Config.CaseEngineUrl}/process-instance/${processInstanceId}/activity-instances` const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function claim(keycloak, taskId) { - const url = `${Config.CaseEngineUrl}/task/${taskId}/claim/${keycloak.idTokenParsed.given_name}`; + const url = `${Config.CaseEngineUrl}/task/${taskId}/claim/${keycloak.idTokenParsed.given_name}` const headers = { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: `Bearer ${keycloak.token}`, - }; + } try { - const resp = await fetch(url, { method: 'POST', headers }); - return nop(keycloak, resp); + const resp = await fetch(url, { method: 'POST', headers }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function unclaim(keycloak, taskId) { - const url = `${Config.CaseEngineUrl}/task/${taskId}/unclaim`; + const url = `${Config.CaseEngineUrl}/task/${taskId}/unclaim` const headers = { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: `Bearer ${keycloak.token}`, - }; + } try { - const resp = await fetch(url, { method: 'POST', headers }); - return nop(keycloak, resp); + const resp = await fetch(url, { method: 'POST', headers }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function complete(keycloak, taskId, body) { - const url = `${Config.CaseEngineUrl}/task/${taskId}/complete`; + const url = `${Config.CaseEngineUrl}/task/${taskId}/complete` const headers = { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: `Bearer ${keycloak.token}`, - }; + } try { const resp = await fetch(url, { method: 'POST', headers, body: JSON.stringify(body), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function createNewTask(keycloak, body) { - const url = `${Config.CaseEngineUrl}/task/create`; + const url = `${Config.CaseEngineUrl}/task/create` const headers = { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: `Bearer ${keycloak.token}`, - }; + } try { const resp = await fetch(url, { method: 'POST', headers, body: JSON.stringify(body), - }); - return nop(keycloak, resp); + }) + return nop(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function filterTasks(keycloak, businessKey) { - let query = ''; + let query = '' if (businessKey) { - query = query + (businessKey ? 'businessKey=' + businessKey : ''); + query = query + (businessKey ? 'businessKey=' + businessKey : '') } - const url = `${Config.CaseEngineUrl}/task?${query}`; + const url = `${Config.CaseEngineUrl}/task?${query}` const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } async function filterProcessInstances(keycloak, businessKey) { if (!businessKey) { - businessKey = ''; + businessKey = '' } - const url = `${Config.CaseEngineUrl}/process-instance?businessKey=${businessKey}`; + const url = `${Config.CaseEngineUrl}/process-instance?businessKey=${businessKey}` const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (e) { - console.log(e); - return await Promise.reject(e); + console.log(e) + return await Promise.reject(e) } } diff --git a/apps/react/case-portal/src/services/VariableService.js b/apps/react/case-portal/src/services/VariableService.js index fb28d90d..f4a64f3a 100644 --- a/apps/react/case-portal/src/services/VariableService.js +++ b/apps/react/case-portal/src/services/VariableService.js @@ -1,22 +1,22 @@ -import { json } from './request'; -import Config from '../consts'; +import { json } from './request' +import Config from '../consts' export const VariableService = { getByProcessInstanceId, -}; +} async function getByProcessInstanceId(keycloak, processInstanceId) { const headers = { Authorization: `Bearer ${keycloak.token}`, - }; + } - var url = `${Config.CaseEngineUrl}/variable?processInstanceId=${processInstanceId}`; + var url = `${Config.CaseEngineUrl}/variable?processInstanceId=${processInstanceId}` try { - const resp = await fetch(url, { headers }); - return json(keycloak, resp); + const resp = await fetch(url, { headers }) + return json(keycloak, resp) } catch (err) { - console.log(err); - return await Promise.reject(err); + console.log(err) + return await Promise.reject(err) } } diff --git a/apps/react/case-portal/src/services/index.js b/apps/react/case-portal/src/services/index.js index 9bd0038f..92533d75 100644 --- a/apps/react/case-portal/src/services/index.js +++ b/apps/react/case-portal/src/services/index.js @@ -1,15 +1,15 @@ -import { CaseService } from './CaseService'; -import { NotificationService } from './NotificationService'; -import { EmailService } from './EmailService'; -import { FormService } from './FormService'; -import { RecordService } from './RecordService'; -import { TaskService } from './TaskService'; -import { CaseDefService } from './CaseDefService'; -import { ProcessDefService } from './ProcessDefService'; -import { RecordTypeService } from './RecordTypeService'; -import { FileService } from './FileService'; -import { DeploymentService } from './DeploymentService'; -import { VariableService } from './VariableService'; +import { CaseService } from './CaseService' +import { NotificationService } from './NotificationService' +import { EmailService } from './EmailService' +import { FormService } from './FormService' +import { RecordService } from './RecordService' +import { TaskService } from './TaskService' +import { CaseDefService } from './CaseDefService' +import { ProcessDefService } from './ProcessDefService' +import { RecordTypeService } from './RecordTypeService' +import { FileService } from './FileService' +import { DeploymentService } from './DeploymentService' +import { VariableService } from './VariableService' export { NotificationService, @@ -24,4 +24,4 @@ export { FileService, DeploymentService, VariableService, -}; +} diff --git a/apps/react/case-portal/src/services/request.js b/apps/react/case-portal/src/services/request.js index 05d8fecb..dbb1a968 100644 --- a/apps/react/case-portal/src/services/request.js +++ b/apps/react/case-portal/src/services/request.js @@ -1,28 +1,28 @@ export function json(keycloak, resp) { if (resp.status === 401) { - forceLogoutWhenTokenExpired(keycloak, resp); - return Promise.reject(resp); + forceLogoutWhenTokenExpired(keycloak, resp) + return Promise.reject(resp) } if (resp.ok) { - return resp.json(); + return resp.json() } - return Promise.resolve(resp); + return Promise.resolve(resp) } export function nop(keycloak, resp) { if (resp.status === 401) { - forceLogoutWhenTokenExpired(keycloak, resp); - return Promise.reject(resp); + forceLogoutWhenTokenExpired(keycloak, resp) + return Promise.reject(resp) } - return resp; + return resp } function forceLogoutWhenTokenExpired(keycloak, resp) { if (keycloak.isTokenExpired()) { - console.error(resp); - keycloak.logout({ redirectUri: window.location.origin }); + console.error(resp) + keycloak.logout({ redirectUri: window.location.origin }) } } diff --git a/apps/react/case-portal/src/setupTests.js b/apps/react/case-portal/src/setupTests.js index df506c39..b35a9ffd 100644 --- a/apps/react/case-portal/src/setupTests.js +++ b/apps/react/case-portal/src/setupTests.js @@ -2,5 +2,5 @@ // allows you to do things like: // expect(element).toHaveTextContent(/react/i) // learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; -import 'jest-location-mock'; +import '@testing-library/jest-dom' +import 'jest-location-mock' diff --git a/apps/react/case-portal/src/store/account/AccountStore.test.js b/apps/react/case-portal/src/store/account/AccountStore.test.js index 961315d2..901889a5 100644 --- a/apps/react/case-portal/src/store/account/AccountStore.test.js +++ b/apps/react/case-portal/src/store/account/AccountStore.test.js @@ -1,38 +1,38 @@ /* eslint-disable no-undef */ -import store from './index'; +import store from './index' class Keycloak { constructor(role) { - this.hasRole = role; + this.hasRole = role } hasRealmRole(role) { - return this.hasRole === role; + return this.hasRole === role } } test('should be true when user has managament role', () => { - expect(store.isManagerUser(new Keycloak('mgmt_case_def'))).toEqual(true); - expect(store.isManagerUser(new Keycloak('mgmt_record_type'))).toEqual(true); - expect(store.isManagerUser(new Keycloak('mgmt_form'))).toEqual(true); -}); + expect(store.isManagerUser(new Keycloak('mgmt_case_def'))).toEqual(true) + expect(store.isManagerUser(new Keycloak('mgmt_record_type'))).toEqual(true) + expect(store.isManagerUser(new Keycloak('mgmt_form'))).toEqual(true) +}) test('should be false when user dont has managament role', () => { - const results = store.isManagerUser(new Keycloak('client_user')); + const results = store.isManagerUser(new Keycloak('client_user')) - expect(results).toEqual(false); -}); + expect(results).toEqual(false) +}) test('should be true if user has some role', () => { expect(store.hasRole(new Keycloak('mgmt_case_def'), 'mgmt_case_def')).toEqual( true, - ); + ) expect(store.hasRole(new Keycloak('client_task'), 'client_task')).toEqual( true, - ); -}); + ) +}) test('should be false if user dont have some role', () => { - expect(store.hasRole(new Keycloak('client_task', 'unknown'))).toEqual(false); -}); + expect(store.hasRole(new Keycloak('client_task', 'unknown'))).toEqual(false) +}) /* eslint-disable no-undef */ diff --git a/apps/react/case-portal/src/store/account/index.js b/apps/react/case-portal/src/store/account/index.js index cc0fb18d..1a6c37ac 100644 --- a/apps/react/case-portal/src/store/account/index.js +++ b/apps/react/case-portal/src/store/account/index.js @@ -1,20 +1,20 @@ -const MGMT_ROLES = ['mgmt_case_def', 'mgmt_record_type', 'mgmt_form']; +const MGMT_ROLES = ['mgmt_case_def', 'mgmt_record_type', 'mgmt_form'] -const CLT_ROLES = ['client_case', 'client_task', 'client_record']; +const CLT_ROLES = ['client_case', 'client_task', 'client_record'] function isManagerUser(keycloak) { - const count = MGMT_ROLES.filter((role) => keycloak.hasRealmRole(role)); - return count.length > 0; + const count = MGMT_ROLES.filter((role) => keycloak.hasRealmRole(role)) + return count.length > 0 } function hasRole(keycloak, role) { - return keycloak.hasRealmRole(role); + return keycloak.hasRealmRole(role) } function hasAnyRole(keycloak) { - const roles = [...CLT_ROLES, ...MGMT_ROLES]; - const count = roles.filter((role) => keycloak.hasRealmRole(role)); - return count.length > 0; + const roles = [...CLT_ROLES, ...MGMT_ROLES] + const count = roles.filter((role) => keycloak.hasRealmRole(role)) + return count.length > 0 } -export default { hasRole, hasAnyRole, isManagerUser }; +export default { hasRole, hasAnyRole, isManagerUser } diff --git a/apps/react/case-portal/src/store/index.js b/apps/react/case-portal/src/store/index.js index 96195742..646757a8 100644 --- a/apps/react/case-portal/src/store/index.js +++ b/apps/react/case-portal/src/store/index.js @@ -1,12 +1,12 @@ -import { configureStore } from '@reduxjs/toolkit'; -import reducers from './reducers'; -import accountStore from './account'; -import sessionStore from './session'; +import { configureStore } from '@reduxjs/toolkit' +import reducers from './reducers' +import accountStore from './account' +import sessionStore from './session' const store = configureStore({ reducer: reducers, -}); +}) -const { dispatch } = store; +const { dispatch } = store -export { store, dispatch, accountStore, sessionStore }; +export { store, dispatch, accountStore, sessionStore } diff --git a/apps/react/case-portal/src/store/reducers/actions.js b/apps/react/case-portal/src/store/reducers/actions.js index d5a0eb8d..4143e695 100644 --- a/apps/react/case-portal/src/store/reducers/actions.js +++ b/apps/react/case-portal/src/store/reducers/actions.js @@ -1,4 +1,4 @@ // action - account reducer -export const LOGIN = '@auth/LOGIN'; -export const LOGOUT = '@auth/LOGOUT'; -export const REGISTER = '@auth/REGISTER'; +export const LOGIN = '@auth/LOGIN' +export const LOGOUT = '@auth/LOGOUT' +export const REGISTER = '@auth/REGISTER' diff --git a/apps/react/case-portal/src/store/reducers/index.js b/apps/react/case-portal/src/store/reducers/index.js index e5c32610..f8ff228d 100644 --- a/apps/react/case-portal/src/store/reducers/index.js +++ b/apps/react/case-portal/src/store/reducers/index.js @@ -1,11 +1,11 @@ // third-party -import { combineReducers } from 'redux'; +import { combineReducers } from 'redux' // project import -import menu from './menu'; +import menu from './menu' // ==============================|| COMBINE REDUCERS ||============================== // -const reducers = combineReducers({ menu }); +const reducers = combineReducers({ menu }) -export default reducers; +export default reducers diff --git a/apps/react/case-portal/src/store/reducers/menu.js b/apps/react/case-portal/src/store/reducers/menu.js index 84a82ae1..9859c718 100644 --- a/apps/react/case-portal/src/store/reducers/menu.js +++ b/apps/react/case-portal/src/store/reducers/menu.js @@ -1,5 +1,5 @@ // types -import { createSlice } from '@reduxjs/toolkit'; +import { createSlice } from '@reduxjs/toolkit' // initial state const initialState = { @@ -7,7 +7,7 @@ const initialState = { openComponent: 'buttons', drawerOpen: true, componentDrawerOpen: true, -}; +} // ==============================|| SLICE - MENU ||============================== // @@ -16,24 +16,24 @@ const menu = createSlice({ initialState, reducers: { activeItem(state, action) { - state.openItem = action.payload.openItem; + state.openItem = action.payload.openItem }, activeComponent(state, action) { - state.openComponent = action.payload.openComponent; + state.openComponent = action.payload.openComponent }, openDrawer(state, action) { - state.drawerOpen = action.payload.drawerOpen; + state.drawerOpen = action.payload.drawerOpen }, openComponentDrawer(state, action) { - state.componentDrawerOpen = action.payload.componentDrawerOpen; + state.componentDrawerOpen = action.payload.componentDrawerOpen }, }, -}); +}) -export default menu.reducer; +export default menu.reducer export const { activeItem, activeComponent, openDrawer, openComponentDrawer } = - menu.actions; + menu.actions diff --git a/apps/react/case-portal/src/store/session/SessionStore.test.js b/apps/react/case-portal/src/store/session/SessionStore.test.js index 96caceec..98a5b7fa 100644 --- a/apps/react/case-portal/src/store/session/SessionStore.test.js +++ b/apps/react/case-portal/src/store/session/SessionStore.test.js @@ -1,35 +1,35 @@ /* eslint-disable no-undef */ -import store from './index'; +import store from './index' -jest.mock('keycloak-js'); +jest.mock('keycloak-js') test('should be initialize realm with subdmain when using dns', () => { - window.location.assign('http://marketshare.wkspower.local/'); + window.location.assign('http://marketshare.wkspower.local/') - const { keycloak, realm, clientId } = store.bootstrap(); + const { keycloak, realm, clientId } = store.bootstrap() - expect(keycloak).not.toBeNull(); - expect(realm).toEqual('marketshare'); - expect(clientId).toEqual('wks-portal'); -}); + expect(keycloak).not.toBeNull() + expect(realm).toEqual('marketshare') + expect(clientId).toEqual('wks-portal') +}) test('should be initialize realm default realm when using localhost', () => { - window.location.assign('http://localhost:3001/'); + window.location.assign('http://localhost:3001/') - const { keycloak, realm, clientId } = store.bootstrap(); + const { keycloak, realm, clientId } = store.bootstrap() - expect(keycloak).not.toBeNull(); - expect(realm).toEqual('localhost'); - expect(clientId).toEqual('wks-portal'); -}); + expect(keycloak).not.toBeNull() + expect(realm).toEqual('localhost') + expect(clientId).toEqual('wks-portal') +}) test('should be initialize default realm when using app dns', () => { - window.location.assign('http://app.wkspower.local/'); + window.location.assign('http://app.wkspower.local/') - const { keycloak, realm, clientId } = store.bootstrap(); + const { keycloak, realm, clientId } = store.bootstrap() - expect(keycloak).not.toBeNull(); - expect(realm).toEqual('app'); - expect(clientId).toEqual('wks-portal'); -}); + expect(keycloak).not.toBeNull() + expect(realm).toEqual('app') + expect(clientId).toEqual('wks-portal') +}) /* eslint-disable no-undef */ diff --git a/apps/react/case-portal/src/store/session/index.js b/apps/react/case-portal/src/store/session/index.js index 3fb95be1..94a16758 100644 --- a/apps/react/case-portal/src/store/session/index.js +++ b/apps/react/case-portal/src/store/session/index.js @@ -1,30 +1,30 @@ -import Keycloak from 'keycloak-js'; -import Config from '../../consts'; +import Keycloak from 'keycloak-js' +import Config from '../../consts' function bootstrap() { - let realm = ''; - const clientId = 'wks-portal'; - const hostname = window.location.hostname; + let realm = '' + const clientId = 'wks-portal' + const hostname = window.location.hostname if (hostname !== 'localhost') { - realm = hostname.substring(0, hostname.indexOf('.')); + realm = hostname.substring(0, hostname.indexOf('.')) } else { - realm = hostname; + realm = hostname } const kc = new Keycloak({ url: Config.LoginUrl, realm: realm, clientId: clientId, - }); + }) return { keycloak: kc, realm, clientId, - }; + } } export default { bootstrap, -}; +} diff --git a/apps/react/case-portal/src/themes/index.js b/apps/react/case-portal/src/themes/index.js index 19623ac8..49a7a71c 100644 --- a/apps/react/case-portal/src/themes/index.js +++ b/apps/react/case-portal/src/themes/index.js @@ -1,23 +1,23 @@ -import PropTypes from 'prop-types'; -import { useMemo } from 'react'; +import PropTypes from 'prop-types' +import { useMemo } from 'react' // material-ui -import { CssBaseline, StyledEngineProvider } from '@mui/material'; -import { createTheme, ThemeProvider } from '@mui/material/styles'; +import { CssBaseline, StyledEngineProvider } from '@mui/material' +import { createTheme, ThemeProvider } from '@mui/material/styles' // project import -import Palette from './palette'; -import Typography from './typography'; -import CustomShadows from './shadows'; -import componentsOverride from './overrides'; +import Palette from './palette' +import Typography from './typography' +import CustomShadows from './shadows' +import componentsOverride from './overrides' // ==============================|| DEFAULT THEME - MAIN ||============================== // export default function ThemeCustomization({ children }) { - const theme = Palette('light', 'default'); + const theme = Palette('light', 'default') - const themeTypography = Typography('\'Open Sans\',\'Public Sans\', sans-serif'); - const themeCustomShadows = useMemo(() => CustomShadows(theme), [theme]); + const themeTypography = Typography("'Open Sans','Public Sans', sans-serif") + const themeCustomShadows = useMemo(() => CustomShadows(theme), [theme]) const themeOptions = useMemo( () => ({ @@ -43,10 +43,10 @@ export default function ThemeCustomization({ children }) { typography: themeTypography, }), [theme, themeTypography, themeCustomShadows], - ); + ) - const themes = createTheme(themeOptions); - themes.components = componentsOverride(themes); + const themes = createTheme(themeOptions) + themes.components = componentsOverride(themes) return ( @@ -55,9 +55,9 @@ export default function ThemeCustomization({ children }) { {children} - ); + ) } ThemeCustomization.propTypes = { children: PropTypes.node, -}; +} diff --git a/apps/react/case-portal/src/themes/overrides/Badge.js b/apps/react/case-portal/src/themes/overrides/Badge.js index 0fd6235d..b9708906 100644 --- a/apps/react/case-portal/src/themes/overrides/Badge.js +++ b/apps/react/case-portal/src/themes/overrides/Badge.js @@ -11,5 +11,5 @@ export default function Badge(theme) { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/Button.js b/apps/react/case-portal/src/themes/overrides/Button.js index 51c7abc1..e6da05bd 100644 --- a/apps/react/case-portal/src/themes/overrides/Button.js +++ b/apps/react/case-portal/src/themes/overrides/Button.js @@ -5,7 +5,7 @@ export default function Button(theme) { '&.Mui-disabled': { backgroundColor: theme.palette.grey[200], }, - }; + } return { MuiButton: { @@ -24,5 +24,5 @@ export default function Button(theme) { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/CardContent.js b/apps/react/case-portal/src/themes/overrides/CardContent.js index 0d4b0aa4..3702c75a 100644 --- a/apps/react/case-portal/src/themes/overrides/CardContent.js +++ b/apps/react/case-portal/src/themes/overrides/CardContent.js @@ -12,5 +12,5 @@ export default function CardContent() { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/Checkbox.js b/apps/react/case-portal/src/themes/overrides/Checkbox.js index 3c89dd42..516598c2 100644 --- a/apps/react/case-portal/src/themes/overrides/Checkbox.js +++ b/apps/react/case-portal/src/themes/overrides/Checkbox.js @@ -9,5 +9,5 @@ export default function Checkbox(theme) { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/Chip.js b/apps/react/case-portal/src/themes/overrides/Chip.js index ec943bab..7376c2c6 100644 --- a/apps/react/case-portal/src/themes/overrides/Chip.js +++ b/apps/react/case-portal/src/themes/overrides/Chip.js @@ -36,5 +36,5 @@ export default function Chip(theme) { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/Grid.js b/apps/react/case-portal/src/themes/overrides/Grid.js index 4633d981..dd808468 100644 --- a/apps/react/case-portal/src/themes/overrides/Grid.js +++ b/apps/react/case-portal/src/themes/overrides/Grid.js @@ -20,5 +20,5 @@ export default function Grid(theme) { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/IconButton.js b/apps/react/case-portal/src/themes/overrides/IconButton.js index 70dbdc98..fb3eb814 100644 --- a/apps/react/case-portal/src/themes/overrides/IconButton.js +++ b/apps/react/case-portal/src/themes/overrides/IconButton.js @@ -24,5 +24,5 @@ export default function IconButton(theme) { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/InputLabel.js b/apps/react/case-portal/src/themes/overrides/InputLabel.js index 77c134b0..2dc6c578 100644 --- a/apps/react/case-portal/src/themes/overrides/InputLabel.js +++ b/apps/react/case-portal/src/themes/overrides/InputLabel.js @@ -21,5 +21,5 @@ export default function InputLabel(theme) { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/LinearProgress.js b/apps/react/case-portal/src/themes/overrides/LinearProgress.js index 8c9b4c90..714520c2 100644 --- a/apps/react/case-portal/src/themes/overrides/LinearProgress.js +++ b/apps/react/case-portal/src/themes/overrides/LinearProgress.js @@ -13,5 +13,5 @@ export default function LinearProgress() { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/Link.js b/apps/react/case-portal/src/themes/overrides/Link.js index ba8f9d6a..07677f73 100644 --- a/apps/react/case-portal/src/themes/overrides/Link.js +++ b/apps/react/case-portal/src/themes/overrides/Link.js @@ -7,5 +7,5 @@ export default function Link() { underline: 'hover', }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/ListItemIcon.js b/apps/react/case-portal/src/themes/overrides/ListItemIcon.js index 41daa4cf..b9622dcc 100644 --- a/apps/react/case-portal/src/themes/overrides/ListItemIcon.js +++ b/apps/react/case-portal/src/themes/overrides/ListItemIcon.js @@ -9,5 +9,5 @@ export default function ListItemIcon() { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/OutlinedInput.js b/apps/react/case-portal/src/themes/overrides/OutlinedInput.js index 7e25d6a2..dcaf2ee6 100644 --- a/apps/react/case-portal/src/themes/overrides/OutlinedInput.js +++ b/apps/react/case-portal/src/themes/overrides/OutlinedInput.js @@ -1,5 +1,5 @@ // material-ui -import { alpha } from '@mui/material/styles'; +import { alpha } from '@mui/material/styles' // ==============================|| OVERRIDES - OUTLINED INPUT ||============================== // @@ -43,5 +43,5 @@ export default function OutlinedInput(theme) { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/Tab.js b/apps/react/case-portal/src/themes/overrides/Tab.js index 7b5e723f..49affcf8 100644 --- a/apps/react/case-portal/src/themes/overrides/Tab.js +++ b/apps/react/case-portal/src/themes/overrides/Tab.js @@ -10,5 +10,5 @@ export default function Tab(theme) { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/TableCell.js b/apps/react/case-portal/src/themes/overrides/TableCell.js index b6895c64..91559031 100644 --- a/apps/react/case-portal/src/themes/overrides/TableCell.js +++ b/apps/react/case-portal/src/themes/overrides/TableCell.js @@ -16,5 +16,5 @@ export default function TableCell(theme) { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/Tabs.js b/apps/react/case-portal/src/themes/overrides/Tabs.js index f61598da..8bcf519f 100644 --- a/apps/react/case-portal/src/themes/overrides/Tabs.js +++ b/apps/react/case-portal/src/themes/overrides/Tabs.js @@ -9,5 +9,5 @@ export default function Tabs() { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/Typography.js b/apps/react/case-portal/src/themes/overrides/Typography.js index 7a0df8d5..3cafabbc 100644 --- a/apps/react/case-portal/src/themes/overrides/Typography.js +++ b/apps/react/case-portal/src/themes/overrides/Typography.js @@ -9,5 +9,5 @@ export default function Typography() { }, }, }, - }; + } } diff --git a/apps/react/case-portal/src/themes/overrides/index.js b/apps/react/case-portal/src/themes/overrides/index.js index 067ae82a..cec68d91 100644 --- a/apps/react/case-portal/src/themes/overrides/index.js +++ b/apps/react/case-portal/src/themes/overrides/index.js @@ -1,23 +1,23 @@ // third-party -import { merge } from 'lodash'; +import { merge } from 'lodash' // project import -import Badge from './Badge'; -import Button from './Button'; -import CardContent from './CardContent'; -import Checkbox from './Checkbox'; -import Chip from './Chip'; -import IconButton from './IconButton'; -import InputLabel from './InputLabel'; -import LinearProgress from './LinearProgress'; -import Link from './Link'; -import ListItemIcon from './ListItemIcon'; -import OutlinedInput from './OutlinedInput'; -import Grid from './Grid'; -import Tab from './Tab'; -import TableCell from './TableCell'; -import Tabs from './Tabs'; -import Typography from './Typography'; +import Badge from './Badge' +import Button from './Button' +import CardContent from './CardContent' +import Checkbox from './Checkbox' +import Chip from './Chip' +import IconButton from './IconButton' +import InputLabel from './InputLabel' +import LinearProgress from './LinearProgress' +import Link from './Link' +import ListItemIcon from './ListItemIcon' +import OutlinedInput from './OutlinedInput' +import Grid from './Grid' +import Tab from './Tab' +import TableCell from './TableCell' +import Tabs from './Tabs' +import Typography from './Typography' // ==============================|| OVERRIDES - MAIN ||============================== // @@ -39,5 +39,5 @@ export default function ComponentsOverrides(theme) { TableCell(theme), Tabs(), Typography(), - ); + ) } diff --git a/apps/react/case-portal/src/themes/palette.js b/apps/react/case-portal/src/themes/palette.js index 2c3466b0..05e6fdba 100644 --- a/apps/react/case-portal/src/themes/palette.js +++ b/apps/react/case-portal/src/themes/palette.js @@ -1,16 +1,16 @@ // material-ui -import { createTheme } from '@mui/material/styles'; +import { createTheme } from '@mui/material/styles' // third-party -import { presetPalettes } from '@ant-design/colors'; +import { presetPalettes } from '@ant-design/colors' // project import -import ThemeOption from './theme'; +import ThemeOption from './theme' // ==============================|| DEFAULT THEME - PALETTE ||============================== // const Palette = (mode) => { - const colors = presetPalettes; + const colors = presetPalettes const greyPrimary = [ '#ffffff', @@ -24,13 +24,13 @@ const Palette = (mode) => { '#262626', '#141414', '#000000', - ]; - const greyAscent = ['#fafafa', '#bfbfbf', '#434343', '#1f1f1f']; - const greyConstant = ['#fafafb', '#e6ebf1']; + ] + const greyAscent = ['#fafafa', '#bfbfbf', '#434343', '#1f1f1f'] + const greyConstant = ['#fafafb', '#e6ebf1'] - colors.grey = [...greyPrimary, ...greyAscent, ...greyConstant]; + colors.grey = [...greyPrimary, ...greyAscent, ...greyConstant] - const paletteColor = ThemeOption(colors); + const paletteColor = ThemeOption(colors) return createTheme({ palette: { @@ -54,7 +54,7 @@ const Palette = (mode) => { default: paletteColor.grey.A50, }, }, - }); -}; + }) +} -export default Palette; +export default Palette diff --git a/apps/react/case-portal/src/themes/shadows.js b/apps/react/case-portal/src/themes/shadows.js index 799abb18..eed81784 100644 --- a/apps/react/case-portal/src/themes/shadows.js +++ b/apps/react/case-portal/src/themes/shadows.js @@ -1,5 +1,5 @@ // material-ui -import { alpha } from '@mui/material/styles'; +import { alpha } from '@mui/material/styles' // ==============================|| DEFAULT THEME - CUSTOM SHADOWS ||============================== // @@ -8,6 +8,6 @@ const CustomShadows = (theme) => ({ text: '0 -1px 0 rgb(0 0 0 / 12%)', z1: `0px 2px 8px ${alpha(theme.palette.grey[900], 0.15)}`, // only available in paid version -}); +}) -export default CustomShadows; +export default CustomShadows diff --git a/apps/react/case-portal/src/themes/theme/index.js b/apps/react/case-portal/src/themes/theme/index.js index e0c2b047..5170672a 100644 --- a/apps/react/case-portal/src/themes/theme/index.js +++ b/apps/react/case-portal/src/themes/theme/index.js @@ -1,7 +1,7 @@ // ==============================|| PRESET THEME - THEME SELECTOR ||============================== // const Theme = (colors) => { - const { red, gold, cyan, green, grey } = colors; + const { red, gold, cyan, green, grey } = colors const blue = [ '#e8faff', @@ -14,7 +14,7 @@ const Theme = (colors) => { '#025ca6', '#004280', '#002b59', - ]; + ] const greyColors = { 0: grey[0], @@ -34,8 +34,8 @@ const Theme = (colors) => { A400: grey[13], A700: grey[14], A800: grey[16], - }; - const contrastText = '#fff'; + } + const contrastText = '#fff' return { primary: { @@ -100,7 +100,7 @@ const Theme = (colors) => { contrastText, }, grey: greyColors, - }; -}; + } +} -export default Theme; +export default Theme diff --git a/apps/react/case-portal/src/themes/typography.js b/apps/react/case-portal/src/themes/typography.js index 9d72b762..4335a360 100644 --- a/apps/react/case-portal/src/themes/typography.js +++ b/apps/react/case-portal/src/themes/typography.js @@ -66,6 +66,6 @@ const Typography = (fontFamily) => ({ button: { textTransform: 'capitalize', }, -}); +}) -export default Typography; +export default Typography diff --git a/apps/react/case-portal/src/utils/SyntaxHighlight.js b/apps/react/case-portal/src/utils/SyntaxHighlight.js index 6c922afb..ff724401 100644 --- a/apps/react/case-portal/src/utils/SyntaxHighlight.js +++ b/apps/react/case-portal/src/utils/SyntaxHighlight.js @@ -1,8 +1,8 @@ -import PropTypes from 'prop-types'; +import PropTypes from 'prop-types' // third-party -import SyntaxHighlighter from 'react-syntax-highlighter'; -import { a11yDark } from 'react-syntax-highlighter/dist/esm/styles/hljs'; +import SyntaxHighlighter from 'react-syntax-highlighter' +import { a11yDark } from 'react-syntax-highlighter/dist/esm/styles/hljs' // ==============================|| CODE HIGHLIGHTER ||============================== // @@ -16,9 +16,9 @@ export default function SyntaxHighlight({ children, ...others }) { > {children} - ); + ) } SyntaxHighlight.propTypes = { children: PropTypes.node, -}; +} diff --git a/apps/react/case-portal/src/utils/jsonStringCheck.js b/apps/react/case-portal/src/utils/jsonStringCheck.js index 99ddc8ad..00b9c926 100644 --- a/apps/react/case-portal/src/utils/jsonStringCheck.js +++ b/apps/react/case-portal/src/utils/jsonStringCheck.js @@ -1,8 +1,8 @@ export function tryParseJSONObject(jsonString) { try { - JSON.parse(jsonString); + JSON.parse(jsonString) } catch (e) { - return false; + return false } - return true; + return true } diff --git a/apps/react/case-portal/src/utils/password-strength.js b/apps/react/case-portal/src/utils/password-strength.js index 33df7b82..d133695f 100644 --- a/apps/react/case-portal/src/utils/password-strength.js +++ b/apps/react/case-portal/src/utils/password-strength.js @@ -1,30 +1,30 @@ // has number -const hasNumber = (number) => new RegExp(/[0-9]/).test(number); +const hasNumber = (number) => new RegExp(/[0-9]/).test(number) // has mix of small and capitals const hasMixed = (number) => - new RegExp(/[a-z]/).test(number) && new RegExp(/[A-Z]/).test(number); + new RegExp(/[a-z]/).test(number) && new RegExp(/[A-Z]/).test(number) // has special chars -const hasSpecial = (number) => new RegExp(/[!#@$%^&*)(+=._-]/).test(number); +const hasSpecial = (number) => new RegExp(/[!#@$%^&*)(+=._-]/).test(number) // set color based on password strength export const strengthColor = (count) => { - if (count < 2) return { label: 'Poor', color: 'error.main' }; - if (count < 3) return { label: 'Weak', color: 'warning.main' }; - if (count < 4) return { label: 'Normal', color: 'warning.dark' }; - if (count < 5) return { label: 'Good', color: 'success.main' }; - if (count < 6) return { label: 'Strong', color: 'success.dark' }; - return { label: 'Poor', color: 'error.main' }; -}; + if (count < 2) return { label: 'Poor', color: 'error.main' } + if (count < 3) return { label: 'Weak', color: 'warning.main' } + if (count < 4) return { label: 'Normal', color: 'warning.dark' } + if (count < 5) return { label: 'Good', color: 'success.main' } + if (count < 6) return { label: 'Strong', color: 'success.dark' } + return { label: 'Poor', color: 'error.main' } +} // password strength indicator export const strengthIndicator = (number) => { - let strengths = 0; - if (number.length > 5) strengths += 1; - if (number.length > 7) strengths += 1; - if (hasNumber(number)) strengths += 1; - if (hasSpecial(number)) strengths += 1; - if (hasMixed(number)) strengths += 1; - return strengths; -}; + let strengths = 0 + if (number.length > 5) strengths += 1 + if (number.length > 7) strengths += 1 + if (hasNumber(number)) strengths += 1 + if (hasSpecial(number)) strengths += 1 + if (hasMixed(number)) strengths += 1 + return strengths +} diff --git a/apps/react/case-portal/src/views/bpmnViewer/BpmnReact.js b/apps/react/case-portal/src/views/bpmnViewer/BpmnReact.js index 251e250e..8b2ff17f 100644 --- a/apps/react/case-portal/src/views/bpmnViewer/BpmnReact.js +++ b/apps/react/case-portal/src/views/bpmnViewer/BpmnReact.js @@ -1,11 +1,11 @@ -import React, { useCallback, useEffect, useState } from 'react'; -import BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js'; -import './BpmnIo.css'; -import { useSession } from 'SessionStoreContext'; +import React, { useCallback, useEffect, useState } from 'react' +import BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js' +import './BpmnIo.css' +import { useSession } from 'SessionStoreContext' export const ReactBpmn = ({ url, activities }) => { - const [containerRef, setContainerRef] = useState(React.createRef); - const keycloak = useSession(); + const [containerRef, setContainerRef] = useState(React.createRef) + const keycloak = useSession() useEffect(() => { fetch(url, { @@ -15,26 +15,26 @@ export const ReactBpmn = ({ url, activities }) => { }) .then((response) => response.text()) .then((text) => { - memoizedCallback(text); - }); - }, [activities]); + memoizedCallback(text) + }) + }, [activities]) const memoizedCallback = useCallback( (text) => { - setContainerRef(React.createRef); - const container = containerRef.current; - const bpmnViewer = new BpmnJS({ container }); + setContainerRef(React.createRef) + const container = containerRef.current + const bpmnViewer = new BpmnJS({ container }) bpmnViewer.importXML(text).then(() => { - const canvas = bpmnViewer.get('canvas'); + const canvas = bpmnViewer.get('canvas') activities.forEach((activity) => canvas.addMarker(activity.activityId, 'highlight'), - ); - canvas.zoom('fit-viewport'); - }); + ) + canvas.zoom('fit-viewport') + }) }, [activities], - ); + ) const Div = useCallback( ({ containerRef }) => { @@ -49,11 +49,11 @@ export const ReactBpmn = ({ url, activities }) => { className='react-bpmn-diagram-container' ref={containerRef} > - ); + ) }, [activities], - ); + ) - return
; -}; + return
+} diff --git a/apps/react/case-portal/src/views/bpmnViewer/ProcessDiagram.js b/apps/react/case-portal/src/views/bpmnViewer/ProcessDiagram.js index df22bebc..cf449efb 100644 --- a/apps/react/case-portal/src/views/bpmnViewer/ProcessDiagram.js +++ b/apps/react/case-portal/src/views/bpmnViewer/ProcessDiagram.js @@ -1,8 +1,8 @@ -import { ReactBpmn } from './BpmnReact'; -import Config from 'consts/index'; +import { ReactBpmn } from './BpmnReact' +import Config from 'consts/index' export const ProcessDiagram = ({ processDefinitionId, activityInstances }) => { - const url = `${Config.CaseEngineUrl}/process-definition/${processDefinitionId}/xml`; + const url = `${Config.CaseEngineUrl}/process-definition/${processDefinitionId}/xml` - return ; -}; + return +} diff --git a/apps/react/case-portal/src/views/caseComment/Comment.js b/apps/react/case-portal/src/views/caseComment/Comment.js index 3fa9fb60..0da37271 100644 --- a/apps/react/case-portal/src/views/caseComment/Comment.js +++ b/apps/react/case-portal/src/views/caseComment/Comment.js @@ -1,10 +1,10 @@ -import Avatar from '@mui/material/Avatar'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Typography from '@mui/material/Typography'; -import User1 from 'assets/images/users/avatar-3.png'; -import { useTranslation } from 'react-i18next'; -import CommentForm from './CommentForm'; +import Avatar from '@mui/material/Avatar' +import Box from '@mui/material/Box' +import Button from '@mui/material/Button' +import Typography from '@mui/material/Typography' +import User1 from 'assets/images/users/avatar-3.png' +import { useTranslation } from 'react-i18next' +import CommentForm from './CommentForm' const Comment = ({ comment, @@ -20,20 +20,20 @@ const Comment = ({ const isEditing = activeComment && activeComment.id === comment.id && - activeComment.type === 'editing'; + activeComment.type === 'editing' const isReplying = activeComment && activeComment.id === comment.id && - activeComment.type === 'replying'; + activeComment.type === 'replying' // const fiveMinutes = 300000; // const timePassed = new Date() - new Date(comment.createdAt) > fiveMinutes; - const canDelete = replies.length === 0; // && currentUserId === comment.userId && !timePassed; - const canReply = true; //Boolean(currentUserId); - const canEdit = true; //currentUserId === comment.userId && !timePassed; - const replyId = parentId ? parentId : comment.id; - const createdAt = new Date(comment.createdAt).toLocaleDateString(); + const canDelete = replies.length === 0 // && currentUserId === comment.userId && !timePassed; + const canReply = true //Boolean(currentUserId); + const canEdit = true //currentUserId === comment.userId && !timePassed; + const replyId = parentId ? parentId : comment.id + const createdAt = new Date(comment.createdAt).toLocaleDateString() - const { t } = useTranslation(); + const { t } = useTranslation() return (
@@ -57,7 +57,7 @@ const Comment = ({ initialText={comment.body} handleSubmit={(text) => updateComment(text, comment.id)} handleCancel={() => { - setActiveComment(null); + setActiveComment(null) }} /> )} @@ -117,7 +117,7 @@ const Comment = ({ )}
- ); -}; + ) +} -export default Comment; +export default Comment diff --git a/apps/react/case-portal/src/views/caseComment/CommentForm.js b/apps/react/case-portal/src/views/caseComment/CommentForm.js index d9af9508..e078fac6 100644 --- a/apps/react/case-portal/src/views/caseComment/CommentForm.js +++ b/apps/react/case-portal/src/views/caseComment/CommentForm.js @@ -1,7 +1,7 @@ -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import TextField from '@mui/material/TextField'; -import { useState } from 'react'; +import Box from '@mui/material/Box' +import Button from '@mui/material/Button' +import TextField from '@mui/material/TextField' +import { useState } from 'react' const CommentForm = ({ handleSubmit, @@ -10,13 +10,13 @@ const CommentForm = ({ handleCancel, initialText = '', }) => { - const [text, setText] = useState(initialText); - const isTextareaDisabled = text.length === 0; + const [text, setText] = useState(initialText) + const isTextareaDisabled = text.length === 0 const onSubmit = (event) => { - event.preventDefault(); - handleSubmit(text); - setText(''); - }; + event.preventDefault() + handleSubmit(text) + setText('') + } return ( )} - ); -}; + ) +} -export default CommentForm; +export default CommentForm diff --git a/apps/react/case-portal/src/views/caseComment/Comments.js b/apps/react/case-portal/src/views/caseComment/Comments.js index 5deefecc..db8cc657 100644 --- a/apps/react/case-portal/src/views/caseComment/Comments.js +++ b/apps/react/case-portal/src/views/caseComment/Comments.js @@ -1,23 +1,23 @@ -import React from 'react'; -import Typography from '@mui/material/Typography'; -import { useSession } from 'SessionStoreContext'; -import { useEffect, useState } from 'react'; -import { CaseService } from '../../services'; -import Comment from './Comment'; -import CommentForm from './CommentForm'; -import { deleteComment as deleteCommentApi } from './api'; -import './comments.css'; +import React from 'react' +import Typography from '@mui/material/Typography' +import { useSession } from 'SessionStoreContext' +import { useEffect, useState } from 'react' +import { CaseService } from '../../services' +import Comment from './Comment' +import CommentForm from './CommentForm' +import { deleteComment as deleteCommentApi } from './api' +import './comments.css' export const Comments = ({ comments, aCase, getCaseInfo }) => { - const [backendComments, setBackendComments] = useState(comments); + const [backendComments, setBackendComments] = useState(comments) - const [activeComment, setActiveComment] = useState(null); + const [activeComment, setActiveComment] = useState(null) const rootComments = backendComments.filter( (backendComment) => backendComment.parentId === null || !Object.prototype.hasOwnProperty.call(backendComment, 'parentId'), - ); + ) const getReplies = (commentId) => backendComments @@ -25,57 +25,57 @@ export const Comments = ({ comments, aCase, getCaseInfo }) => { .sort( (a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime(), - ); + ) - const keycloak = useSession(); + const keycloak = useSession() const addComment = async (text, parentId) => { CaseService.addComment(keycloak, text, parentId, aCase.businessKey) .then(() => { - getCaseInfo(aCase); + getCaseInfo(aCase) }) .then(() => { - getCaseInfo(aCase); - setActiveComment(null); + getCaseInfo(aCase) + setActiveComment(null) }) - .catch((err) => console.error(err)); - }; + .catch((err) => console.error(err)) + } const updateComment = (text, commentId) => { CaseService.updateComment(keycloak, text, commentId, aCase.businessKey) .then(() => { - getCaseInfo(aCase); - setActiveComment(null); + getCaseInfo(aCase) + setActiveComment(null) }) .catch((err) => { - console.error(err); - setActiveComment(null); - }); - }; + console.error(err) + setActiveComment(null) + }) + } const deleteComment = (commentId) => { // if (window.confirm('Are you sure you want to remove comment?')) { deleteCommentApi().then(() => { const updatedBackendComments = backendComments.filter( (backendComment) => backendComment.id !== commentId, - ); - setBackendComments(updatedBackendComments); - }); + ) + setBackendComments(updatedBackendComments) + }) CaseService.deleteComment(keycloak, commentId, aCase.businessKey) .then(() => { - getCaseInfo(aCase, true); - setActiveComment(null); + getCaseInfo(aCase, true) + setActiveComment(null) }) .catch((err) => { - console.error(err); - setActiveComment(null); - }); + console.error(err) + setActiveComment(null) + }) // } - }; + } useEffect(() => { - setBackendComments(comments); - }); + setBackendComments(comments) + }) return ( @@ -102,5 +102,5 @@ export const Comments = ({ comments, aCase, getCaseInfo }) => { /> ))} - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/caseComment/api.js b/apps/react/case-portal/src/views/caseComment/api.js index df83b40e..c040a969 100644 --- a/apps/react/case-portal/src/views/caseComment/api.js +++ b/apps/react/case-portal/src/views/caseComment/api.js @@ -32,8 +32,8 @@ export const getComments = async () => { parentId: '2', createdAt: '2021-08-16T23:00:33.010+02:00', }, - ]; -}; + ] +} export const createComment = async (text, parentId = null) => { return { @@ -43,13 +43,13 @@ export const createComment = async (text, parentId = null) => { userId: '1', username: 'John', createdAt: new Date().toISOString(), - }; -}; + } +} export const updateComment = async (text) => { - return { text }; -}; + return { text } +} export const deleteComment = async () => { - return {}; -}; + return {} +} diff --git a/apps/react/case-portal/src/views/caseEmail/caseEmailList.js b/apps/react/case-portal/src/views/caseEmail/caseEmailList.js index 6faaf303..b6e13ccd 100644 --- a/apps/react/case-portal/src/views/caseEmail/caseEmailList.js +++ b/apps/react/case-portal/src/views/caseEmail/caseEmailList.js @@ -1,4 +1,4 @@ -import EmailIcon from '@mui/icons-material/Email'; +import EmailIcon from '@mui/icons-material/Email' import { Avatar, Box, @@ -10,51 +10,51 @@ import { ListItemText, Modal, Typography, -} from '@mui/material'; -import { useSession } from 'SessionStoreContext'; -import DOMPurify from 'dompurify'; -import { useEffect, useState } from 'react'; -import { useTranslation } from 'react-i18next'; -import { EmailService } from '../../services'; -import { EmailForm } from './emailForm'; +} from '@mui/material' +import { useSession } from 'SessionStoreContext' +import DOMPurify from 'dompurify' +import { useEffect, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { EmailService } from '../../services' +import { EmailForm } from './emailForm' export const CaseEmailsList = ({ caseInstanceBusinessKey }) => { - const [emails, setEmails] = useState([]); - const [expandedEmailId, setExpandedEmailId] = useState(null); - const [isModalOpen, setIsModalOpen] = useState(false); - const { t } = useTranslation(); - const keycloak = useSession(); + const [emails, setEmails] = useState([]) + const [expandedEmailId, setExpandedEmailId] = useState(null) + const [isModalOpen, setIsModalOpen] = useState(false) + const { t } = useTranslation() + const keycloak = useSession() useEffect(() => { EmailService.getAllByBusinessKey(keycloak, caseInstanceBusinessKey) .then((data) => { - setEmails(data); + setEmails(data) }) .catch((err) => { - console.log(err.message); - }); - }, [caseInstanceBusinessKey]); + console.log(err.message) + }) + }, [caseInstanceBusinessKey]) const handleExpandToggle = (emailId) => { - setExpandedEmailId(expandedEmailId === emailId ? null : emailId); - }; + setExpandedEmailId(expandedEmailId === emailId ? null : emailId) + } const handleEmailSend = (emailData) => { EmailService.send(keycloak, { ...emailData, outbound: true, caseInstanceBusinessKey, - }); - setIsModalOpen(false); - }; + }) + setIsModalOpen(false) + } const handleOpenModal = () => { - setIsModalOpen(true); - }; + setIsModalOpen(true) + } const handleCloseModal = () => { - setIsModalOpen(false); - }; + setIsModalOpen(false) + } return ( <> @@ -138,5 +138,5 @@ export const CaseEmailsList = ({ caseInstanceBusinessKey }) => { ))} - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/caseForm/Documents.js b/apps/react/case-portal/src/views/caseForm/Documents.js index d2043fcd..2eadf6cd 100644 --- a/apps/react/case-portal/src/views/caseForm/Documents.js +++ b/apps/react/case-portal/src/views/caseForm/Documents.js @@ -1,34 +1,34 @@ -import FileExcelOutlined from '@ant-design/icons/FileExcelOutlined'; -import FileImageOutlined from '@ant-design/icons/FileImageOutlined'; -import FileOutlined from '@ant-design/icons/FileOutlined'; -import FilePdfOutlined from '@ant-design/icons/FilePdfOutlined'; -import { Grid } from '@mui/material'; -import MuiAlert from '@mui/material/Alert'; -import Avatar from '@mui/material/Avatar'; -import Box from '@mui/material/Box'; -import CircularProgress from '@mui/material/CircularProgress'; -import Fade from '@mui/material/Fade'; -import List from '@mui/material/List'; -import ListItem from '@mui/material/ListItem'; -import ListItemAvatar from '@mui/material/ListItemAvatar'; -import ListItemText from '@mui/material/ListItemText'; -import Snackbar from '@mui/material/Snackbar'; -import Typography from '@mui/material/Typography'; -import { useSession } from 'SessionStoreContext'; -import React, { useState } from 'react'; -import Files from 'react-files'; -import { FileService } from '../../services'; -import CaseStore from './store'; +import FileExcelOutlined from '@ant-design/icons/FileExcelOutlined' +import FileImageOutlined from '@ant-design/icons/FileImageOutlined' +import FileOutlined from '@ant-design/icons/FileOutlined' +import FilePdfOutlined from '@ant-design/icons/FilePdfOutlined' +import { Grid } from '@mui/material' +import MuiAlert from '@mui/material/Alert' +import Avatar from '@mui/material/Avatar' +import Box from '@mui/material/Box' +import CircularProgress from '@mui/material/CircularProgress' +import Fade from '@mui/material/Fade' +import List from '@mui/material/List' +import ListItem from '@mui/material/ListItem' +import ListItemAvatar from '@mui/material/ListItemAvatar' +import ListItemText from '@mui/material/ListItemText' +import Snackbar from '@mui/material/Snackbar' +import Typography from '@mui/material/Typography' +import { useSession } from 'SessionStoreContext' +import React, { useState } from 'react' +import Files from 'react-files' +import { FileService } from '../../services' +import CaseStore from './store' function Documents({ aCase, initialValue }) { - const keycloak = useSession(); - const [fetching, setFetching] = useState(false); - const [percent, setPercent] = useState(0); - const [messageError, setMessageError] = useState(null); - const [filesUploaded, setFilesUploaded] = useState(initialValue); + const keycloak = useSession() + const [fetching, setFetching] = useState(false) + const [percent, setPercent] = useState(0) + const [messageError, setMessageError] = useState(null) + const [filesUploaded, setFilesUploaded] = useState(initialValue) const handleChange = (files) => { - setFetching(true); + setFetching(true) CaseStore.saveDocumentsFromFiles( keycloak, @@ -37,28 +37,28 @@ function Documents({ aCase, initialValue }) { setPercent, ) .then((data) => { - setFilesUploaded([...filesUploaded, ...data]); + setFilesUploaded([...filesUploaded, ...data]) }) .catch((e) => { - console.log(e); - setMessageError(e); + console.log(e) + setMessageError(e) }) .finally(() => { const timer = setTimeout(() => { - setPercent(0); - setFetching(false); - clearTimeout(timer); - }, 800); - }); - }; + setPercent(0) + setFetching(false) + clearTimeout(timer) + }, 800) + }) + } const handleError = (error) => { - console.log('error code ' + error.code + ': ' + error.message); - }; + console.log('error code ' + error.code + ': ' + error.message) + } const handleCloseMesssage = () => { - setMessageError(null); - }; + setMessageError(null) + } const AnimatedCircularProgress = React.forwardRef( function AnimatedCircularProgress(props, ref) { @@ -86,13 +86,13 @@ function Documents({ aCase, initialValue }) {
- ); + ) }, - ); + ) const Alert = React.forwardRef(function Alert(props, ref) { - return ; - }); + return + }) return ( - ); + ) })} )} @@ -200,11 +200,11 @@ function Documents({ aCase, initialValue }) { - ); + ) } const downloadFile = (file, keycloak) => { - return FileService.download(file, keycloak); -}; + return FileService.download(file, keycloak) +} -export default Documents; +export default Documents diff --git a/apps/react/case-portal/src/views/caseForm/caseForm.js b/apps/react/case-portal/src/views/caseForm/caseForm.js index 2f0cc6c6..df3de4c3 100644 --- a/apps/react/case-portal/src/views/caseForm/caseForm.js +++ b/apps/react/case-portal/src/views/caseForm/caseForm.js @@ -1,101 +1,101 @@ -import QuestionCircleOutlined from '@ant-design/icons/QuestionCircleOutlined'; -import { Form } from '@formio/react'; -import CloseIcon from '@mui/icons-material/Close'; -import MoreVertIcon from '@mui/icons-material/MoreVert'; -import NotificationsActiveIcon from '@mui/icons-material/NotificationsActive'; -import { Grid } from '@mui/material'; -import AppBar from '@mui/material/AppBar'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import DialogTitle from '@mui/material/DialogTitle'; -import Divider from '@mui/material/Divider'; -import IconButton from '@mui/material/IconButton'; -import List from '@mui/material/List'; -import ListItem from '@mui/material/ListItem'; -import ListItemText from '@mui/material/ListItemText'; -import Menu from '@mui/material/Menu'; -import MenuItem from '@mui/material/MenuItem'; -import Slide from '@mui/material/Slide'; -import Step from '@mui/material/Step'; -import StepLabel from '@mui/material/StepLabel'; -import Stepper from '@mui/material/Stepper'; -import Tab from '@mui/material/Tab'; -import Tabs from '@mui/material/Tabs'; -import Toolbar from '@mui/material/Toolbar'; -import Tooltip from '@mui/material/Tooltip'; -import Typography from '@mui/material/Typography'; -import { CaseStatus } from 'common/caseStatus'; -import { StorageService } from 'plugins/storage'; -import PropTypes from 'prop-types'; -import React, { useEffect, useState } from 'react'; -import { useTranslation } from 'react-i18next'; -import { ProcessDefService } from 'services/ProcessDefService'; -import { Comments } from 'views/caseComment/Comments'; -import { CaseEmailsList } from 'views/caseEmail/caseEmailList'; -import { CaseService, FormService } from '../../services'; -import { tryParseJSONObject } from '../../utils/jsonStringCheck'; -import { TaskList } from '../taskList/taskList'; -import Documents from './Documents'; +import QuestionCircleOutlined from '@ant-design/icons/QuestionCircleOutlined' +import { Form } from '@formio/react' +import CloseIcon from '@mui/icons-material/Close' +import MoreVertIcon from '@mui/icons-material/MoreVert' +import NotificationsActiveIcon from '@mui/icons-material/NotificationsActive' +import { Grid } from '@mui/material' +import AppBar from '@mui/material/AppBar' +import Box from '@mui/material/Box' +import Button from '@mui/material/Button' +import Dialog from '@mui/material/Dialog' +import DialogTitle from '@mui/material/DialogTitle' +import Divider from '@mui/material/Divider' +import IconButton from '@mui/material/IconButton' +import List from '@mui/material/List' +import ListItem from '@mui/material/ListItem' +import ListItemText from '@mui/material/ListItemText' +import Menu from '@mui/material/Menu' +import MenuItem from '@mui/material/MenuItem' +import Slide from '@mui/material/Slide' +import Step from '@mui/material/Step' +import StepLabel from '@mui/material/StepLabel' +import Stepper from '@mui/material/Stepper' +import Tab from '@mui/material/Tab' +import Tabs from '@mui/material/Tabs' +import Toolbar from '@mui/material/Toolbar' +import Tooltip from '@mui/material/Tooltip' +import Typography from '@mui/material/Typography' +import { CaseStatus } from 'common/caseStatus' +import { StorageService } from 'plugins/storage' +import PropTypes from 'prop-types' +import React, { useEffect, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { ProcessDefService } from 'services/ProcessDefService' +import { Comments } from 'views/caseComment/Comments' +import { CaseEmailsList } from 'views/caseEmail/caseEmailList' +import { CaseService, FormService } from '../../services' +import { tryParseJSONObject } from '../../utils/jsonStringCheck' +import { TaskList } from '../taskList/taskList' +import Documents from './Documents' export const CaseForm = ({ open, handleClose, aCase, keycloak }) => { - const [caseDef, setCaseDef] = useState(null); - const [form, setForm] = useState(null); - const [formData, setFormData] = useState(null); - const [comments, setComments] = useState(null); - const [documents, setDocuments] = useState(null); - const [mainTabIndex, setMainTabIndex] = useState(0); - const [rightTabIndex, setRightTabIndex] = useState(0); - const [activeStage, setActiveStage] = React.useState(0); - const [stages, setStages] = useState([]); - const { t } = useTranslation(); - - const [anchorEl, setAnchorEl] = React.useState(null); - const isMenuOpen = Boolean(anchorEl); - - const [openProcessesDialog, setOpenProcessesDialog] = useState(false); - const [manualInitProcessDefs, setManualInitProcessDefs] = useState([]); - - const [isFollowing, setIsFollowing] = useState(false); + const [caseDef, setCaseDef] = useState(null) + const [form, setForm] = useState(null) + const [formData, setFormData] = useState(null) + const [comments, setComments] = useState(null) + const [documents, setDocuments] = useState(null) + const [mainTabIndex, setMainTabIndex] = useState(0) + const [rightTabIndex, setRightTabIndex] = useState(0) + const [activeStage, setActiveStage] = React.useState(0) + const [stages, setStages] = useState([]) + const { t } = useTranslation() + + const [anchorEl, setAnchorEl] = React.useState(null) + const isMenuOpen = Boolean(anchorEl) + + const [openProcessesDialog, setOpenProcessesDialog] = useState(false) + const [manualInitProcessDefs, setManualInitProcessDefs] = useState([]) + + const [isFollowing, setIsFollowing] = useState(false) const handleFollowClick = () => { - setIsFollowing(!isFollowing); - }; + setIsFollowing(!isFollowing) + } useEffect(() => { - getCaseInfo(aCase); - }, [open, aCase]); + getCaseInfo(aCase) + }, [open, aCase]) useEffect(() => { if (activeStage) { - const stage = caseDef.stages.find((o) => o.name === activeStage); - const stageProcesses = stage ? stage.processesDefinitions : []; + const stage = caseDef.stages.find((o) => o.name === activeStage) + const stageProcesses = stage ? stage.processesDefinitions : [] const autoStartProcesses = stageProcesses ? stageProcesses.filter((o) => o.autoStart === false) - : undefined; - setManualInitProcessDefs(autoStartProcesses); + : undefined + setManualInitProcessDefs(autoStartProcesses) } - }, [activeStage]); + }, [activeStage]) const handleMenuOpen = (event) => { - setAnchorEl(event.currentTarget); - }; + setAnchorEl(event.currentTarget) + } const handleMenuClose = () => { - setAnchorEl(null); - }; + setAnchorEl(null) + } const getCaseInfo = (aCase) => { CaseService.getCaseDefinitionsById(keycloak, aCase.caseDefinitionId) .then((data) => { - setCaseDef(data); + setCaseDef(data) setStages( data.stages.sort((a, b) => a.index - b.index).map((o) => o.name), - ); - return FormService.getByKey(keycloak, data.formKey); + ) + return FormService.getByKey(keycloak, data.formKey) }) .then((data) => { - setForm(data); - return CaseService.getCaseById(keycloak, aCase.businessKey); + setForm(data) + return CaseService.getCaseById(keycloak, aCase.businessKey) }) .then((caseData) => { setComments( @@ -103,8 +103,8 @@ export const CaseForm = ({ open, handleClose, aCase, keycloak }) => { (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(), ), - ); - setDocuments(caseData?.documents); + ) + setDocuments(caseData?.documents) setFormData({ data: caseData.attributes.reduce( (obj, item) => @@ -117,21 +117,21 @@ export const CaseForm = ({ open, handleClose, aCase, keycloak }) => { ), metadata: {}, isValid: true, - }); - setActiveStage(caseData.stage); + }) + setActiveStage(caseData.stage) }) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } const handleMainTabChanged = (event, newValue) => { - setMainTabIndex(newValue); - }; + setMainTabIndex(newValue) + } const handleRightTabChanged = (event, newValue) => { - setRightTabIndex(newValue); - }; + setRightTabIndex(newValue) + } const handleUpdateCaseStatus = (newStatus) => { CaseService.patch( @@ -142,34 +142,34 @@ export const CaseForm = ({ open, handleClose, aCase, keycloak }) => { }), ) .then(() => { - handleClose(); + handleClose() }) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } const updateActiveState = () => { CaseService.getCaseById(keycloak, aCase.businessKey).then((data) => setActiveStage(data.stage), - ); - }; + ) + } const handleOpenProcessesDialog = () => { - setOpenProcessesDialog(true); - handleMenuClose(); - }; + setOpenProcessesDialog(true) + handleMenuClose() + } const handleCloseProcessesDialog = () => { - setOpenProcessesDialog(false); - }; + setOpenProcessesDialog(false) + } const startProcess = (key) => { - ProcessDefService.start(keycloak, key, aCase.businessKey); + ProcessDefService.start(keycloak, key, aCase.businessKey) // Close the dialog - handleCloseProcessesDialog(); - }; + handleCloseProcessesDialog() + } return ( aCase && @@ -299,17 +299,17 @@ export const CaseForm = ({ open, handleClose, aCase, keycloak }) => { > { - return o === activeStage; + return o === activeStage })} > {stages.map((label) => { - const stagesProps = {}; - const labelProps = {}; + const stagesProps = {} + const labelProps = {} return ( {label} - ); + ) })} @@ -456,22 +456,22 @@ export const CaseForm = ({ open, handleClose, aCase, keycloak }) => { )} ) - ); -}; + ) +} const Transition = React.forwardRef(function Transition(props, ref) { - return ; -}); + return +}) function a11yProps(index) { return { id: `simple-tab-${index}`, 'aria-controls': `simple-tabpanel-${index}`, - }; + } } function TabPanel(props) { - const { children, value, index, ...other } = props; + const { children, value, index, ...other } = props return (
)}
- ); + ) } TabPanel.propTypes = { children: PropTypes.node, index: PropTypes.number.isRequired, value: PropTypes.number.isRequired, -}; +} diff --git a/apps/react/case-portal/src/views/caseForm/newCaseForm.js b/apps/react/case-portal/src/views/caseForm/newCaseForm.js index 9bbae5fa..cbe376ef 100644 --- a/apps/react/case-portal/src/views/caseForm/newCaseForm.js +++ b/apps/react/case-portal/src/views/caseForm/newCaseForm.js @@ -1,24 +1,24 @@ -import { useState } from 'react'; -import { QuestionCircleOutlined } from '@ant-design/icons'; -import CloseIcon from '@mui/icons-material/Close'; -import { Box, Tooltip } from '@mui/material'; -import AppBar from '@mui/material/AppBar'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import Slide from '@mui/material/Slide'; -import Toolbar from '@mui/material/Toolbar'; -import Typography from '@mui/material/Typography'; -import React, { useEffect } from 'react'; -import { Form } from '@formio/react'; -import { useSession } from 'SessionStoreContext'; -import { CaseService, FormService } from '../../services'; -import { StorageService } from 'plugins/storage'; +import { useState } from 'react' +import { QuestionCircleOutlined } from '@ant-design/icons' +import CloseIcon from '@mui/icons-material/Close' +import { Box, Tooltip } from '@mui/material' +import AppBar from '@mui/material/AppBar' +import Button from '@mui/material/Button' +import Dialog from '@mui/material/Dialog' +import Grid from '@mui/material/Grid' +import IconButton from '@mui/material/IconButton' +import Slide from '@mui/material/Slide' +import Toolbar from '@mui/material/Toolbar' +import Typography from '@mui/material/Typography' +import React, { useEffect } from 'react' +import { Form } from '@formio/react' +import { useSession } from 'SessionStoreContext' +import { CaseService, FormService } from '../../services' +import { StorageService } from 'plugins/storage' const Transition = React.forwardRef(function Transition(props, ref) { - return ; -}); + return +}) export const NewCaseForm = ({ open, @@ -26,32 +26,32 @@ export const NewCaseForm = ({ caseDefId, setLastCreatedCase, }) => { - const [caseDef, setCaseDef] = useState([]); - const [form, setForm] = useState([]); - const [formData, setFormData] = useState(null); - const keycloak = useSession(); + const [caseDef, setCaseDef] = useState([]) + const [form, setForm] = useState([]) + const [formData, setFormData] = useState(null) + const keycloak = useSession() useEffect(() => { CaseService.getCaseDefinitionsById(keycloak, caseDefId) .then((data) => { - setCaseDef(data); - return FormService.getByKey(keycloak, data.formKey); + setCaseDef(data) + return FormService.getByKey(keycloak, data.formKey) }) .then((data) => { - setForm(data); + setForm(data) setFormData({ data: {}, metadata: {}, isValid: true, - }); + }) }) .catch((err) => { - console.log(err.message); - }); - }, [open, caseDefId]); + console.log(err.message) + }) + }, [open, caseDefId]) const onSave = () => { - const caseAttributes = []; + const caseAttributes = [] Object.keys(formData.data).forEach((key) => { caseAttributes.push({ name: key, @@ -60,8 +60,8 @@ export const NewCaseForm = ({ ? formData.data[key] : JSON.stringify(formData.data[key]), type: typeof formData.data[key] !== 'object' ? 'String' : 'Json', - }); - }); + }) + }) CaseService.createCase( keycloak, @@ -77,13 +77,13 @@ export const NewCaseForm = ({ }), ) .then((data) => { - setLastCreatedCase(data); - handleClose(); + setLastCreatedCase(data) + handleClose() }) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } return (
@@ -139,5 +139,5 @@ export const NewCaseForm = ({
- ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/caseForm/store/index.js b/apps/react/case-portal/src/views/caseForm/store/index.js index 6990ff68..e7f0eec4 100644 --- a/apps/react/case-portal/src/views/caseForm/store/index.js +++ b/apps/react/case-portal/src/views/caseForm/store/index.js @@ -1,8 +1,8 @@ -import { CaseService, FileService } from '../../../services'; +import { CaseService, FileService } from '../../../services' const CaseStore = { saveDocumentsFromFiles, -}; +} async function saveDocumentsFromFiles( keycloak, @@ -17,32 +17,32 @@ async function saveDocumentsFromFiles( file: file, keycloak, progress: (e, percent) => { - progressCallback(percent); + progressCallback(percent) }, - }; + } return FileService.upload(args) .then((data) => saveDocument(keycloak, businessKey, data)) .catch(() => { return Promise.reject( `Could't upload this file "${file.name}", try again with other file.`, - ); - }); + ) + }) }), - ); + ) } async function saveDocument(keycloak, businessKey, document) { try { - const data = await CaseService.addDocuments(keycloak, businessKey, document); + const data = await CaseService.addDocuments(keycloak, businessKey, document) if (!data.ok) { - return Promise.reject(data); + return Promise.reject(data) } - return Promise.resolve(document); + return Promise.resolve(document) } catch (e) { - return Promise.reject(e); + return Promise.reject(e) } } -export default CaseStore; +export default CaseStore diff --git a/apps/react/case-portal/src/views/dashboard/index.js b/apps/react/case-portal/src/views/dashboard/index.js index 0e987f2f..38663d98 100644 --- a/apps/react/case-portal/src/views/dashboard/index.js +++ b/apps/react/case-portal/src/views/dashboard/index.js @@ -1,10 +1,10 @@ -import { Grid, Typography } from '@mui/material'; -import DashboardCard from 'components/cards/DashboardCard'; -import { IconArchive, IconList, IconSquareAsterisk } from '@tabler/icons-react'; -import { useTranslation } from 'react-i18next'; +import { Grid, Typography } from '@mui/material' +import DashboardCard from 'components/cards/DashboardCard' +import { IconArchive, IconList, IconSquareAsterisk } from '@tabler/icons-react' +import { useTranslation } from 'react-i18next' const DashboardDefault = () => { - const { t } = useTranslation(); + const { t } = useTranslation() return ( @@ -40,7 +40,7 @@ const DashboardDefault = () => { sx={{ display: { sm: 'none', md: 'block', lg: 'none' } }} /> - ); -}; + ) +} -export default DashboardDefault; +export default DashboardDefault diff --git a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefForm.js b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefForm.js index f3b0a6c0..19cf86f2 100644 --- a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefForm.js +++ b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefForm.js @@ -1,38 +1,38 @@ -import CloseIcon from '@mui/icons-material/Close'; -import AppBar from '@mui/material/AppBar'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import IconButton from '@mui/material/IconButton'; -import Slide from '@mui/material/Slide'; -import Toolbar from '@mui/material/Toolbar'; -import Typography from '@mui/material/Typography'; -import React, { useState } from 'react'; -import Box from '@mui/material/Box'; -import Tab from '@mui/material/Tab'; -import Tabs from '@mui/material/Tabs'; -import PropTypes from 'prop-types'; -import { useEffect } from 'react'; -import { CaseDefFormEvents } from './listeners/caseDefFormListenerList'; -import { CaseDefFormStages } from './caseDefFormStages'; -import { CaseDefGeneralForm } from './caseDefGeneralForm'; -import { CaseDefFormForm } from './caseDefFormForm'; -import { CaseKanbanForm } from './caseDefKanban'; -import { CaseDefService } from 'services'; -import { useSession } from 'SessionStoreContext'; +import CloseIcon from '@mui/icons-material/Close' +import AppBar from '@mui/material/AppBar' +import Button from '@mui/material/Button' +import Dialog from '@mui/material/Dialog' +import IconButton from '@mui/material/IconButton' +import Slide from '@mui/material/Slide' +import Toolbar from '@mui/material/Toolbar' +import Typography from '@mui/material/Typography' +import React, { useState } from 'react' +import Box from '@mui/material/Box' +import Tab from '@mui/material/Tab' +import Tabs from '@mui/material/Tabs' +import PropTypes from 'prop-types' +import { useEffect } from 'react' +import { CaseDefFormEvents } from './listeners/caseDefFormListenerList' +import { CaseDefFormStages } from './caseDefFormStages' +import { CaseDefGeneralForm } from './caseDefGeneralForm' +import { CaseDefFormForm } from './caseDefFormForm' +import { CaseKanbanForm } from './caseDefKanban' +import { CaseDefService } from 'services' +import { useSession } from 'SessionStoreContext' const Transition = React.forwardRef(function Transition(props, ref) { - return ; -}); + return +}) function a11yProps(index) { return { id: `simple-tab-${index}`, 'aria-controls': `simple-tabpanel-${index}`, - }; + } } function TabPanel(props) { - const { children, value, index, ...other } = props; + const { children, value, index, ...other } = props return (
)}
- ); + ) } TabPanel.propTypes = { children: PropTypes.node, index: PropTypes.number.isRequired, value: PropTypes.number.isRequired, -}; +} export const CaseDefForm = ({ open, handleClose, caseDefParam }) => { - const [tabValue, setTabValue] = useState(0); - const [caseDef, setCaseDef] = useState(caseDefParam); - const keycloak = useSession(); + const [tabValue, setTabValue] = useState(0) + const [caseDef, setCaseDef] = useState(caseDefParam) + const keycloak = useSession() useEffect(() => { - setCaseDef(caseDefParam); - }, [open, caseDefParam]); + setCaseDef(caseDefParam) + }, [open, caseDefParam]) const handleTabChange = (event, newValue) => { - setTabValue(newValue); - }; + setTabValue(newValue) + } const handleSave = () => { if (caseDef.status && caseDef.status === 'new') { CaseDefService.create(keycloak, caseDef) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); + console.log(err.message) + }) } else { CaseDefService.update(keycloak, caseDef.id, caseDef) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); + console.log(err.message) + }) } - }; + } const handleDelete = () => { CaseDefService.remove(keycloak, caseDef.id) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } return (
@@ -162,5 +162,5 @@ export const CaseDefForm = ({ open, handleClose, caseDefParam }) => {
- ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefFormForm.js b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefFormForm.js index 0f5a776f..ab3a284e 100644 --- a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefFormForm.js +++ b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefFormForm.js @@ -1,29 +1,29 @@ -import FormControl from '@mui/material/FormControl'; -import InputLabel from '@mui/material/InputLabel'; -import MenuItem from '@mui/material/MenuItem'; -import Select from '@mui/material/Select'; -import React from 'react'; -import { useEffect, useState } from 'react'; -import { FormService } from 'services'; -import { useSession } from 'SessionStoreContext'; +import FormControl from '@mui/material/FormControl' +import InputLabel from '@mui/material/InputLabel' +import MenuItem from '@mui/material/MenuItem' +import Select from '@mui/material/Select' +import React from 'react' +import { useEffect, useState } from 'react' +import { FormService } from 'services' +import { useSession } from 'SessionStoreContext' export const CaseDefFormForm = ({ caseDef, setCaseDef }) => { - const [forms, setForms] = useState(); - const keycloak = useSession(); + const [forms, setForms] = useState() + const keycloak = useSession() useEffect(() => { FormService.getAll(keycloak) .then((data) => { - setForms(data); + setForms(data) }) .catch((err) => { - console.log(err.message); - }); - }, [caseDef]); + console.log(err.message) + }) + }, [caseDef]) const handleFormChange = (event) => { - setCaseDef({ ...caseDef, formKey: event.target.value }); - }; + setCaseDef({ ...caseDef, formKey: event.target.value }) + } return ( @@ -42,11 +42,11 @@ export const CaseDefFormForm = ({ caseDef, setCaseDef }) => { {form.title} - ); + ) })} )} - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefFormStages.js b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefFormStages.js index 118bfadc..71639334 100644 --- a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefFormStages.js +++ b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefFormStages.js @@ -1,20 +1,20 @@ -import React from 'react'; -import Box from '@mui/material/Box'; -import { DataGrid } from '@mui/x-data-grid'; -import MainCard from 'components/MainCard'; -import Button from '@mui/material/Button'; -import { CaseDefStageProcesses } from './caseDefStageProcesses'; +import React from 'react' +import Box from '@mui/material/Box' +import { DataGrid } from '@mui/x-data-grid' +import MainCard from 'components/MainCard' +import Button from '@mui/material/Button' +import { CaseDefStageProcesses } from './caseDefStageProcesses' export const CaseDefFormStages = ({ caseDef, setCaseDef }) => { - const [openProcessesList, setOpenProcessesList] = React.useState(false); - const [currentStage, setCurrentStage] = React.useState(null); + const [openProcessesList, setOpenProcessesList] = React.useState(false) + const [currentStage, setCurrentStage] = React.useState(null) const [sortModel] = React.useState([ { field: 'index', sort: 'asc', }, - ]); + ]) const columns = [ { @@ -43,7 +43,7 @@ export const CaseDefFormStages = ({ caseDef, setCaseDef }) => { Processes - ); + ) }, }, { @@ -53,24 +53,24 @@ export const CaseDefFormStages = ({ caseDef, setCaseDef }) => { renderCell: (params) => { const onClick = (e) => { const newCaseDefStages = caseDef.stages.filter(function (value) { - return value.id !== params.row.id; - }); - setCaseDef({ ...caseDef, stages: newCaseDefStages }); - e.stopPropagation(); // don't select this row after clicking - }; + return value.id !== params.row.id + }) + setCaseDef({ ...caseDef, stages: newCaseDefStages }) + e.stopPropagation() // don't select this row after clicking + } return ( - ); + ) }, }, - ]; + ] const handleNewStage = () => { - const length = caseDef.stages.length; - const lastStage = caseDef.stages[length - 1]; + const length = caseDef.stages.length + const lastStage = caseDef.stages[length - 1] setCaseDef({ ...caseDef, stages: [ @@ -81,32 +81,32 @@ export const CaseDefFormStages = ({ caseDef, setCaseDef }) => { name: 'Stage ' + (parseInt(lastStage.id) + 1), }, ], - }); - }; + }) + } const processRowUpdate = (newRow) => { - let newCaseDefStages = [...caseDef.stages]; - newCaseDefStages[newRow.id] = newRow; - setCaseDef({ ...caseDef, stages: newCaseDefStages }); - return newRow; - }; + let newCaseDefStages = [...caseDef.stages] + newCaseDefStages[newRow.id] = newRow + setCaseDef({ ...caseDef, stages: newCaseDefStages }) + return newRow + } const openProcessesDialog = (stage) => { - setCurrentStage(stage); - setOpenProcessesList(true); - }; + setCurrentStage(stage) + setOpenProcessesList(true) + } const closeProcessesDialog = () => { - setOpenProcessesList(false); - setCurrentStage(null); - }; + setOpenProcessesList(false) + setCurrentStage(null) + } const updateProcesses = (stageId, processes) => { - let newStages = [...caseDef.stages]; - let stage = newStages.find((s) => s.id === stageId); - stage.processesDefinitions = processes; - setCaseDef({ ...caseDef, stages: newStages }); - }; + let newStages = [...caseDef.stages] + let stage = newStages.find((s) => s.id === stageId) + stage.processesDefinitions = processes + setCaseDef({ ...caseDef, stages: newStages }) + } return (
@@ -139,5 +139,5 @@ export const CaseDefFormStages = ({ caseDef, setCaseDef }) => { )}
- ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefGeneralForm.js b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefGeneralForm.js index f38fa8fe..6a95e76d 100644 --- a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefGeneralForm.js +++ b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefGeneralForm.js @@ -1,44 +1,44 @@ -import Checkbox from '@mui/material/Checkbox'; -import FormControl from '@mui/material/FormControl'; -import FormControlLabel from '@mui/material/FormControlLabel'; -import InputLabel from '@mui/material/InputLabel'; -import MenuItem from '@mui/material/MenuItem'; -import Select from '@mui/material/Select'; -import TextField from '@mui/material/TextField'; -import { useSession } from 'SessionStoreContext'; -import React, { useEffect, useState } from 'react'; -import { ProcessDefService } from 'services/ProcessDefService'; +import Checkbox from '@mui/material/Checkbox' +import FormControl from '@mui/material/FormControl' +import FormControlLabel from '@mui/material/FormControlLabel' +import InputLabel from '@mui/material/InputLabel' +import MenuItem from '@mui/material/MenuItem' +import Select from '@mui/material/Select' +import TextField from '@mui/material/TextField' +import { useSession } from 'SessionStoreContext' +import React, { useEffect, useState } from 'react' +import { ProcessDefService } from 'services/ProcessDefService' export const CaseDefGeneralForm = ({ caseDef, setCaseDef }) => { - const [processesDefinitions, setProcessesDefinitions] = useState(); - const keycloak = useSession(); + const [processesDefinitions, setProcessesDefinitions] = useState() + const keycloak = useSession() useEffect(() => { ProcessDefService.find(keycloak) .then((data) => { - setProcessesDefinitions(data); + setProcessesDefinitions(data) }) .catch((err) => { - setProcessesDefinitions(null); - console.log(err.message); - }); - }, [caseDef]); + setProcessesDefinitions(null) + console.log(err.message) + }) + }, [caseDef]) const handleInputChange = (event) => { setCaseDef({ ...caseDef, deployed: event.target.checked, [event.target.name]: event.target.value, - }); - }; + }) + } const handleDeployedChange = (event) => { - setCaseDef({ ...caseDef, deployed: event.target.checked }); - }; + setCaseDef({ ...caseDef, deployed: event.target.checked }) + } const handleProcessDefinitionChange = (event) => { - setCaseDef({ ...caseDef, stagesLifecycleProcessKey: event.target.value }); - }; + setCaseDef({ ...caseDef, stagesLifecycleProcessKey: event.target.value }) + } return ( @@ -88,7 +88,7 @@ export const CaseDefGeneralForm = ({ caseDef, setCaseDef }) => { > {processDefinition.name} - ); + ) })} @@ -104,5 +104,5 @@ export const CaseDefGeneralForm = ({ caseDef, setCaseDef }) => { /> - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefKanban.js b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefKanban.js index 8d7371c8..bcc42140 100644 --- a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefKanban.js +++ b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefKanban.js @@ -1,6 +1,6 @@ -import FormControl from '@mui/material/FormControl'; -import TextField from '@mui/material/TextField'; -import React from 'react'; +import FormControl from '@mui/material/FormControl' +import TextField from '@mui/material/TextField' +import React from 'react' export const CaseKanbanForm = ({ caseDef, setCaseDef }) => { const handleInputChange = (event) => { @@ -10,8 +10,8 @@ export const CaseKanbanForm = ({ caseDef, setCaseDef }) => { ...caseDef.kanbanConfig, [event.target.name]: event.target.value.split(','), }, - }); - }; + }) + } return ( @@ -35,5 +35,5 @@ export const CaseKanbanForm = ({ caseDef, setCaseDef }) => { /> - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefStageProcesses.js b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefStageProcesses.js index 533e1ef3..fff07051 100644 --- a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefStageProcesses.js +++ b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/caseDefStageProcesses.js @@ -1,22 +1,22 @@ -import React, { useEffect, useState } from 'react'; -import DeleteIcon from '@mui/icons-material/Delete'; -import Checkbox from '@mui/material/Checkbox'; -import Dialog from '@mui/material/Dialog'; -import DialogActions from '@mui/material/DialogActions'; -import DialogContent from '@mui/material/DialogContent'; -import DialogTitle from '@mui/material/DialogTitle'; -import IconButton from '@mui/material/IconButton'; -import List from '@mui/material/List'; -import Button from '@mui/material/Button'; -import ListItem from '@mui/material/ListItem'; -import ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction'; -import ListItemText from '@mui/material/ListItemText'; -import MenuItem from '@mui/material/MenuItem'; -import Select from '@mui/material/Select'; -import { ProcessDefService } from 'services/ProcessDefService'; -import { useSession } from 'SessionStoreContext'; -import FormControl from '@mui/material/FormControl'; -import InputLabel from '@mui/material/InputLabel'; +import React, { useEffect, useState } from 'react' +import DeleteIcon from '@mui/icons-material/Delete' +import Checkbox from '@mui/material/Checkbox' +import Dialog from '@mui/material/Dialog' +import DialogActions from '@mui/material/DialogActions' +import DialogContent from '@mui/material/DialogContent' +import DialogTitle from '@mui/material/DialogTitle' +import IconButton from '@mui/material/IconButton' +import List from '@mui/material/List' +import Button from '@mui/material/Button' +import ListItem from '@mui/material/ListItem' +import ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction' +import ListItemText from '@mui/material/ListItemText' +import MenuItem from '@mui/material/MenuItem' +import Select from '@mui/material/Select' +import { ProcessDefService } from 'services/ProcessDefService' +import { useSession } from 'SessionStoreContext' +import FormControl from '@mui/material/FormControl' +import InputLabel from '@mui/material/InputLabel' export const CaseDefStageProcesses = ({ open, @@ -24,45 +24,45 @@ export const CaseDefStageProcesses = ({ stage, updateProcesses, }) => { - const keycloak = useSession(); + const keycloak = useSession() const [processes, setProcesses] = React.useState( stage.processesDefinitions || [], - ); + ) const [newProcess, setNewProcess] = React.useState({ definitionKey: '', autoStart: false, - }); + }) - const [processesDefinitions, setProcessesDefinitions] = useState(); + const [processesDefinitions, setProcessesDefinitions] = useState() useEffect(() => { ProcessDefService.find(keycloak) .then((data) => { - setProcessesDefinitions(data); + setProcessesDefinitions(data) }) .catch((err) => { - setProcessesDefinitions(null); - console.log(err.message); - }); - }, [open]); + setProcessesDefinitions(null) + console.log(err.message) + }) + }, [open]) const handleAddProcess = () => { if (newProcess.definitionKey) { - setProcesses([...processes, newProcess]); - setNewProcess({ definitionKey: '', autoStart: false }); + setProcesses([...processes, newProcess]) + setNewProcess({ definitionKey: '', autoStart: false }) } - }; + } const handleDeleteProcess = (index) => { - const updatedProcesses = [...processes]; - updatedProcesses.splice(index, 1); - setProcesses(updatedProcesses); - }; + const updatedProcesses = [...processes] + updatedProcesses.splice(index, 1) + setProcesses(updatedProcesses) + } const handleSave = () => { - updateProcesses(stage.id, processes); - handleClose(); - }; + updateProcesses(stage.id, processes) + handleClose() + } return ( @@ -121,7 +121,7 @@ export const CaseDefStageProcesses = ({ > {processDefinition.name} - ); + ) })} @@ -157,5 +157,5 @@ export const CaseDefStageProcesses = ({ - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/listeners/caseDefFormListenerForm.js b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/listeners/caseDefFormListenerForm.js index 7109fbbd..46a33b21 100644 --- a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/listeners/caseDefFormListenerForm.js +++ b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/listeners/caseDefFormListenerForm.js @@ -10,11 +10,11 @@ import { MenuItem, Select, TextField, -} from '@mui/material'; -import React, { useEffect, useState } from 'react'; -import { ProcessDefService } from 'services/ProcessDefService'; -import { useSession } from 'SessionStoreContext'; -import { QueueService } from 'services/QueueService'; +} from '@mui/material' +import React, { useEffect, useState } from 'react' +import { ProcessDefService } from 'services/ProcessDefService' +import { useSession } from 'SessionStoreContext' +import { QueueService } from 'services/QueueService' const styles = { dialogContent: { @@ -34,7 +34,7 @@ const styles = { saveButton: { color: '#4caf50', }, -}; +} export const CaseDefFormEventsForm = ({ open, @@ -43,60 +43,60 @@ export const CaseDefFormEventsForm = ({ hookData, stages, }) => { - const keycloak = useSession(); - const [taskDefKey, setTaskDefKey] = useState(''); - const [processDefKey, setProcessDefKey] = useState(''); - const [eventType, setEventType] = useState(''); - const [actionType, setActionType] = useState(''); - const [newStage, setNewStage] = useState(''); - const [queueId, setQueueId] = useState(''); + const keycloak = useSession() + const [taskDefKey, setTaskDefKey] = useState('') + const [processDefKey, setProcessDefKey] = useState('') + const [eventType, setEventType] = useState('') + const [actionType, setActionType] = useState('') + const [newStage, setNewStage] = useState('') + const [queueId, setQueueId] = useState('') - const [processesDefinitions, setProcessesDefinitions] = useState(); - const [queues, setQueues] = useState(); + const [processesDefinitions, setProcessesDefinitions] = useState() + const [queues, setQueues] = useState() useEffect(() => { ProcessDefService.find(keycloak) .then((data) => { - setProcessesDefinitions(data); + setProcessesDefinitions(data) }) .catch((err) => { - setProcessesDefinitions(null); - console.log(err.message); - }); + setProcessesDefinitions(null) + console.log(err.message) + }) QueueService.find(keycloak) .then((data) => { - setQueues(data); + setQueues(data) }) .catch((err) => { - setQueues(null); - console.log(err.message); - }); + setQueues(null) + console.log(err.message) + }) if (hookData) { - setTaskDefKey(hookData.taskDefKey || ''); - setProcessDefKey(hookData.processDefKey || ''); - setEventType(hookData.eventType || ''); - setActionType(hookData.actions[0]?.actionType || ''); - setNewStage(hookData.actions[0]?.newStage || ''); - setQueueId(hookData.actions[0]?.queueId || ''); + setTaskDefKey(hookData.taskDefKey || '') + setProcessDefKey(hookData.processDefKey || '') + setEventType(hookData.eventType || '') + setActionType(hookData.actions[0]?.actionType || '') + setNewStage(hookData.actions[0]?.newStage || '') + setQueueId(hookData.actions[0]?.queueId || '') } else { - setTaskDefKey(''); - setProcessDefKey(''); - setEventType(''); - setActionType(''); - setNewStage(''); - setQueueId(''); + setTaskDefKey('') + setProcessDefKey('') + setEventType('') + setActionType('') + setNewStage('') + setQueueId('') } - }, [hookData]); + }, [hookData]) const handleSubmit = () => { - let actions = []; + let actions = [] if (actionType === 'CASE_STAGE_UPDATE_ACTION') { - actions = [...actions, { actionType: actionType, newStage: newStage }]; + actions = [...actions, { actionType: actionType, newStage: newStage }] } else if (actionType === 'CASE_QUEUE_UPDATE_ACTION') { - actions = [...actions, { actionType: actionType, queueId: queueId }]; + actions = [...actions, { actionType: actionType, queueId: queueId }] } const newHook = { @@ -104,9 +104,9 @@ export const CaseDefFormEventsForm = ({ taskDefKey, processDefKey, actions, - }; - onSubmit(newHook); - }; + } + onSubmit(newHook) + } return ( @@ -146,7 +146,7 @@ export const CaseDefFormEventsForm = ({ > {processDefinition.name} - ); + ) })} @@ -191,7 +191,7 @@ export const CaseDefFormEventsForm = ({ {stage.name} - ); + ) })} @@ -210,7 +210,7 @@ export const CaseDefFormEventsForm = ({ {queue.name} - ); + ) })} @@ -226,5 +226,5 @@ export const CaseDefFormEventsForm = ({ - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/listeners/caseDefFormListenerList.js b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/listeners/caseDefFormListenerList.js index 56c12fbc..95ac9478 100644 --- a/apps/react/case-portal/src/views/management/caseDef/caseDefForm/listeners/caseDefFormListenerList.js +++ b/apps/react/case-portal/src/views/management/caseDef/caseDefForm/listeners/caseDefFormListenerList.js @@ -3,8 +3,8 @@ import { AssignmentTurnedIn, DeleteOutline, EditOutlined, -} from '@mui/icons-material'; -import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; +} from '@mui/icons-material' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' import { Accordion, AccordionDetails, @@ -17,17 +17,17 @@ import { Grid, IconButton, Typography, -} from '@mui/material'; -import MainCard from 'components/MainCard'; -import React, { useEffect, useState } from 'react'; -import { CaseDefFormEventsForm } from './caseDefFormListenerForm'; +} from '@mui/material' +import MainCard from 'components/MainCard' +import React, { useEffect, useState } from 'react' +import { CaseDefFormEventsForm } from './caseDefFormListenerForm' export const CaseDefFormEvents = ({ caseDef, setCaseDef }) => { - const [isLoading, setIsLoading] = useState(false); - const [hooks, setHooks] = useState([]); - const [selectedHookIndex, setSelectedHookIndex] = useState(null); + const [isLoading, setIsLoading] = useState(false) + const [hooks, setHooks] = useState([]) + const [selectedHookIndex, setSelectedHookIndex] = useState(null) - const [isHookFormOpen, setIsHookFormOpen] = useState(false); + const [isHookFormOpen, setIsHookFormOpen] = useState(false) const addButtonStyle = { position: 'fixed', @@ -37,30 +37,30 @@ export const CaseDefFormEvents = ({ caseDef, setCaseDef }) => { boxShadow: '0px 2px 5px rgba(0, 0, 0, 0.2)', borderRadius: '50%', background: '#fff', - }; + } useEffect(() => { - setIsLoading(true); - setHooks(caseDef.caseHooks); - setIsLoading(false); - }, [caseDef.caseHooks]); + setIsLoading(true) + setHooks(caseDef.caseHooks) + setIsLoading(false) + }, [caseDef.caseHooks]) const handleAddHook = (event) => { - setCaseDef({ ...caseDef, caseHooks: [...caseDef.caseHooks, event] }); - closeHookForm(); - }; + setCaseDef({ ...caseDef, caseHooks: [...caseDef.caseHooks, event] }) + closeHookForm() + } const handleReplaceHook = (event) => { - let hooksCopy = [...caseDef.caseHooks]; - hooksCopy[selectedHookIndex] = event; - setCaseDef({ ...caseDef, caseHooks: hooksCopy }); - closeHookForm(); - }; + let hooksCopy = [...caseDef.caseHooks] + hooksCopy[selectedHookIndex] = event + setCaseDef({ ...caseDef, caseHooks: hooksCopy }) + closeHookForm() + } const handleEditHook = (hookIndex) => { - setSelectedHookIndex(hookIndex); - setIsHookFormOpen(true); - }; + setSelectedHookIndex(hookIndex) + setIsHookFormOpen(true) + } const handleRemoveHook = (hookIndex) => { setCaseDef({ @@ -68,34 +68,34 @@ export const CaseDefFormEvents = ({ caseDef, setCaseDef }) => { caseHooks: caseDef.caseHooks.filter( (element, index) => index !== hookIndex, ), - }); - closeHookForm(); - }; + }) + closeHookForm() + } const formatActionList = (actions) => { - if (!actions.length) return ''; + if (!actions.length) return '' const actionList = actions.map((action) => { if (action.actionType === 'CASE_STAGE_UPDATE_ACTION') { - return `Progress Case Stage to ${action.newStage}`; + return `Progress Case Stage to ${action.newStage}` } else if (action.actionType === 'CASE_QUEUE_UPDATE_ACTION') { - return `Update Case Queue to ${action.queueId}`; + return `Update Case Queue to ${action.queueId}` } else { - return ''; + return '' } - }); + }) - return actionList.join(' AND '); - }; + return actionList.join(' AND ') + } const openHookForm = () => { - setSelectedHookIndex(null); // Reset the selected hook index when opening the form for adding - setIsHookFormOpen(true); - }; + setSelectedHookIndex(null) // Reset the selected hook index when opening the form for adding + setIsHookFormOpen(true) + } const closeHookForm = () => { - setIsHookFormOpen(false); - }; + setIsHookFormOpen(false) + } return ( @@ -207,5 +207,5 @@ export const CaseDefFormEvents = ({ caseDef, setCaseDef }) => { - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/caseDef/caseDefList/caseDefList.js b/apps/react/case-portal/src/views/management/caseDef/caseDefList/caseDefList.js index c602bf8b..c09e9d4a 100644 --- a/apps/react/case-portal/src/views/management/caseDef/caseDefList/caseDefList.js +++ b/apps/react/case-portal/src/views/management/caseDef/caseDefList/caseDefList.js @@ -1,30 +1,30 @@ -import React, { useEffect, useState } from 'react'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import { DataGrid } from '@mui/x-data-grid'; -import MainCard from 'components/MainCard'; -import { CaseDefForm } from '../caseDefForm/caseDefForm'; -import { CaseDefService } from 'services'; -import { useSession } from 'SessionStoreContext'; +import React, { useEffect, useState } from 'react' +import Box from '@mui/material/Box' +import Button from '@mui/material/Button' +import { DataGrid } from '@mui/x-data-grid' +import MainCard from 'components/MainCard' +import { CaseDefForm } from '../caseDefForm/caseDefForm' +import { CaseDefService } from 'services' +import { useSession } from 'SessionStoreContext' export const CaseDefList = () => { - const [caseDefs, setCaseDefs] = useState([]); - const [aCaseDef, setACaseDef] = useState(null); - const [openCaseDefForm, setOpenCaseDefForm] = useState(false); - const [fetching, setFetching] = useState(false); - const keycloak = useSession(); + const [caseDefs, setCaseDefs] = useState([]) + const [aCaseDef, setACaseDef] = useState(null) + const [openCaseDefForm, setOpenCaseDefForm] = useState(false) + const [fetching, setFetching] = useState(false) + const keycloak = useSession() useEffect(() => { - setFetching(true); + setFetching(true) CaseDefService.getAll(keycloak) .then((data) => { - setCaseDefs(data); + setCaseDefs(data) }) .finally(() => { - setFetching(false); - }); - }, [openCaseDefForm]); + setFetching(false) + }) + }, [openCaseDefForm]) const columns = [ { field: 'id', headerName: 'Id', width: 300 }, @@ -35,23 +35,23 @@ export const CaseDefList = () => { sortable: false, renderCell: (params) => { const onClick = (e) => { - setACaseDef(params.row); - e.stopPropagation(); // don't select this row after clicking - setOpenCaseDefForm(true); - }; + setACaseDef(params.row) + e.stopPropagation() // don't select this row after clicking + setOpenCaseDefForm(true) + } return ( - ); + ) }, }, - ]; + ] const handleCloseCaseDefForm = () => { - setOpenCaseDefForm(false); - }; + setOpenCaseDefForm(false) + } const handleNewCaseDef = () => { setACaseDef({ @@ -63,9 +63,9 @@ export const CaseDefList = () => { stages: [{ id: 0, index: 0, name: 'Stage 0' }], taskCompleteHooks: [], kanbanConfig: {}, - }); - setOpenCaseDefForm(true); - }; + }) + setOpenCaseDefForm(true) + } return (
@@ -92,5 +92,5 @@ export const CaseDefList = () => { /> )}
- ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/form/formDetail.js b/apps/react/case-portal/src/views/management/form/formDetail.js index 18b62716..ab5ab532 100644 --- a/apps/react/case-portal/src/views/management/form/formDetail.js +++ b/apps/react/case-portal/src/views/management/form/formDetail.js @@ -1,28 +1,28 @@ -import React from 'react'; -import CloseIcon from '@mui/icons-material/Close'; -import AppBar from '@mui/material/AppBar'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import FormControl from '@mui/material/FormControl'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import InputLabel from '@mui/material/InputLabel'; -import MenuItem from '@mui/material/MenuItem'; -import Select from '@mui/material/Select'; -import Slide from '@mui/material/Slide'; -import Toolbar from '@mui/material/Toolbar'; -import Typography from '@mui/material/Typography'; -import { FormBuilder } from '@formio/react'; -import { TextField } from '@mui/material'; -import MainCard from 'components/MainCard'; -import { FormService } from 'services'; -import { useSession } from 'SessionStoreContext'; -import { StorageService } from 'plugins/storage'; +import React from 'react' +import CloseIcon from '@mui/icons-material/Close' +import AppBar from '@mui/material/AppBar' +import Box from '@mui/material/Box' +import Button from '@mui/material/Button' +import Dialog from '@mui/material/Dialog' +import FormControl from '@mui/material/FormControl' +import Grid from '@mui/material/Grid' +import IconButton from '@mui/material/IconButton' +import InputLabel from '@mui/material/InputLabel' +import MenuItem from '@mui/material/MenuItem' +import Select from '@mui/material/Select' +import Slide from '@mui/material/Slide' +import Toolbar from '@mui/material/Toolbar' +import Typography from '@mui/material/Typography' +import { FormBuilder } from '@formio/react' +import { TextField } from '@mui/material' +import MainCard from 'components/MainCard' +import { FormService } from 'services' +import { useSession } from 'SessionStoreContext' +import { StorageService } from 'plugins/storage' const Transition = React.forwardRef(function Transition(props, ref) { - return ; -}); + return +}) export const FormDetail = ({ open, @@ -31,23 +31,23 @@ export const FormDetail = ({ handleInputChange, handleSelectDisplay, }) => { - const keycloak = useSession(); + const keycloak = useSession() const saveForm = () => { FormService.update(keycloak, form.key, form) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } const deleteForm = () => { FormService.remove(keycloak, form.key) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } return ( form && ( @@ -144,5 +144,5 @@ export const FormDetail = ({ ) - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/form/formList.js b/apps/react/case-portal/src/views/management/form/formList.js index 8886df29..1f86188b 100644 --- a/apps/react/case-portal/src/views/management/form/formList.js +++ b/apps/react/case-portal/src/views/management/form/formList.js @@ -1,33 +1,33 @@ -import { useEffect, useState } from 'react'; -import Box from '@mui/material/Box'; -import { DataGrid } from '@mui/x-data-grid'; -import MainCard from 'components/MainCard'; -import Button from '@mui/material/Button'; -import { FormDetail } from './formDetail'; -import { FormNew as NewForm } from './formNew'; -import { FormService } from 'services'; -import { useSession } from 'SessionStoreContext'; +import { useEffect, useState } from 'react' +import Box from '@mui/material/Box' +import { DataGrid } from '@mui/x-data-grid' +import MainCard from 'components/MainCard' +import Button from '@mui/material/Button' +import { FormDetail } from './formDetail' +import { FormNew as NewForm } from './formNew' +import { FormService } from 'services' +import { useSession } from 'SessionStoreContext' export const FormList = () => { - const [forms, setForms] = useState([]); - const [openForm, setOpenForm] = useState(false); - const [openNewForm, setOpenNewForm] = useState(false); - const [form, setForm] = useState(null); - const keycloak = useSession(); + const [forms, setForms] = useState([]) + const [openForm, setOpenForm] = useState(false) + const [openNewForm, setOpenNewForm] = useState(false) + const [form, setForm] = useState(null) + const keycloak = useSession() useEffect(() => { FormService.getAll(keycloak) .then((data) => { - setForms(data); + setForms(data) }) .catch((err) => { - console.log(err.message); - }); - }, [openForm, openNewForm]); + console.log(err.message) + }) + }, [openForm, openNewForm]) const handleCloseForm = () => { - setOpenForm(false); - }; + setOpenForm(false) + } const columns = [ { field: 'key', headerName: 'Form Key', width: 300 }, @@ -38,33 +38,33 @@ export const FormList = () => { sortable: false, renderCell: (params) => { const onDetailsClick = (e) => { - setForm(params.row); - e.stopPropagation(); // don't select this row after clicking - setOpenForm(true); - }; + setForm(params.row) + e.stopPropagation() // don't select this row after clicking + setOpenForm(true) + } - return ; + return }, }, - ]; + ] const handleNewForm = () => { - setOpenNewForm(true); - }; + setOpenNewForm(true) + } const handleCloseNewForm = () => { - setOpenNewForm(false); - }; + setOpenNewForm(false) + } const handleInputChange = (event) => { - setForm({ ...form, [event.target.name]: event.target.value }); - }; + setForm({ ...form, [event.target.name]: event.target.value }) + } const handleSelectDisplay = (event) => { - let structure = { ...form.structure }; - structure.display = event.target.value; - setForm({ ...form, structure: structure }); - }; + let structure = { ...form.structure } + structure.display = event.target.value + setForm({ ...form, structure: structure }) + } return (
@@ -94,5 +94,5 @@ export const FormList = () => { )} {}
- ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/form/formNew.js b/apps/react/case-portal/src/views/management/form/formNew.js index 6b7d9990..4a3b779b 100644 --- a/apps/react/case-portal/src/views/management/form/formNew.js +++ b/apps/react/case-portal/src/views/management/form/formNew.js @@ -1,58 +1,58 @@ -import React, { useEffect, useState } from 'react'; -import FormControl from '@mui/material/FormControl'; -import TextField from '@mui/material/TextField'; -import AppBar from '@mui/material/AppBar'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import InputLabel from '@mui/material/InputLabel'; -import Slide from '@mui/material/Slide'; -import Toolbar from '@mui/material/Toolbar'; -import CloseIcon from '@mui/icons-material/Close'; -import Box from '@mui/material/Box'; -import Typography from '@mui/material/Typography'; -import MenuItem from '@mui/material/MenuItem'; -import Select from '@mui/material/Select'; -import MainCard from 'components/MainCard'; -import { FormBuilder } from '@formio/react'; -import { FormService } from 'services'; -import { useSession } from 'SessionStoreContext'; -import { StorageService } from 'plugins/storage'; +import React, { useEffect, useState } from 'react' +import FormControl from '@mui/material/FormControl' +import TextField from '@mui/material/TextField' +import AppBar from '@mui/material/AppBar' +import Button from '@mui/material/Button' +import Dialog from '@mui/material/Dialog' +import Grid from '@mui/material/Grid' +import IconButton from '@mui/material/IconButton' +import InputLabel from '@mui/material/InputLabel' +import Slide from '@mui/material/Slide' +import Toolbar from '@mui/material/Toolbar' +import CloseIcon from '@mui/icons-material/Close' +import Box from '@mui/material/Box' +import Typography from '@mui/material/Typography' +import MenuItem from '@mui/material/MenuItem' +import Select from '@mui/material/Select' +import MainCard from 'components/MainCard' +import { FormBuilder } from '@formio/react' +import { FormService } from 'services' +import { useSession } from 'SessionStoreContext' +import { StorageService } from 'plugins/storage' const Transition = React.forwardRef(function Transition(props, ref) { - return ; -}); + return +}) export const FormNew = ({ open, handleClose }) => { - const [form, setForm] = useState(null); - const keycloak = useSession(); + const [form, setForm] = useState(null) + const keycloak = useSession() useEffect(() => { setForm({ key: '', description: '', structure: { components: [], display: 'form' }, - }); - }, [open]); + }) + }, [open]) const saveNewForm = () => { FormService.create(keycloak, form) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } const handleInputChange = (event) => { - setForm({ ...form, [event.target.name]: event.target.value }); - }; + setForm({ ...form, [event.target.name]: event.target.value }) + } const handleSelectDisplay = (event) => { - let structure = { ...form.structure }; - structure.display = event.target.value; - setForm({ ...form, structure: structure }); - }; + let structure = { ...form.structure } + structure.display = event.target.value + setForm({ ...form, structure: structure }) + } return ( form && ( @@ -145,5 +145,5 @@ export const FormNew = ({ open, handleClose }) => { ) - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/index.js b/apps/react/case-portal/src/views/management/index.js index 401132fc..3acc66d2 100644 --- a/apps/react/case-portal/src/views/management/index.js +++ b/apps/react/case-portal/src/views/management/index.js @@ -1,6 +1,6 @@ -import { Grid, Typography } from '@mui/material'; -import DashboardCard from 'components/cards/DashboardCard'; -import { IconForms, IconPalette, IconPencil } from '@tabler/icons-react'; +import { Grid, Typography } from '@mui/material' +import DashboardCard from 'components/cards/DashboardCard' +import { IconForms, IconPalette, IconPencil } from '@tabler/icons-react' const DashboardDefault = () => { return ( @@ -59,7 +59,7 @@ const DashboardDefault = () => { sx={{ display: { sm: 'none', md: 'block', lg: 'none' } }} /> - ); -}; + ) +} -export default DashboardDefault; +export default DashboardDefault diff --git a/apps/react/case-portal/src/views/management/processDef/bpmnModeler.js b/apps/react/case-portal/src/views/management/processDef/bpmnModeler.js index c9a14434..00202a8a 100644 --- a/apps/react/case-portal/src/views/management/processDef/bpmnModeler.js +++ b/apps/react/case-portal/src/views/management/processDef/bpmnModeler.js @@ -1,14 +1,14 @@ -import CloseIcon from '@mui/icons-material/Close'; -import AppBar from '@mui/material/AppBar'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import IconButton from '@mui/material/IconButton'; -import Slide from '@mui/material/Slide'; -import Toolbar from '@mui/material/Toolbar'; -import Typography from '@mui/material/Typography'; -import React, { useCallback, useMemo, useRef, useState, useEffect } from 'react'; -import { ProcessDefService } from 'services/ProcessDefService'; -import { DeploymentService } from 'services/DeploymentService'; +import CloseIcon from '@mui/icons-material/Close' +import AppBar from '@mui/material/AppBar' +import Button from '@mui/material/Button' +import Dialog from '@mui/material/Dialog' +import IconButton from '@mui/material/IconButton' +import Slide from '@mui/material/Slide' +import Toolbar from '@mui/material/Toolbar' +import Typography from '@mui/material/Typography' +import React, { useCallback, useMemo, useRef, useState, useEffect } from 'react' +import { ProcessDefService } from 'services/ProcessDefService' +import { DeploymentService } from 'services/DeploymentService' import { BpmnModeler as CamundaWebModeler, @@ -17,92 +17,92 @@ import { isNotificationEvent, isPropertiesPanelResizedEvent, isUIUpdateRequiredEvent, -} from '@wkspower/camunda-web-modeler'; -import newProcessXml from './new-process'; +} from '@wkspower/camunda-web-modeler' +import newProcessXml from './new-process' const Transition = React.forwardRef(function Transition(props, ref) { - return ; -}); + return +}) export const BPMNModeler = ({ open, keycloak, processDef, handleClose }) => { - const [bpmnXml, setBpmnXml] = useState(); + const [bpmnXml, setBpmnXml] = useState() useEffect(() => { if (!processDef.id) { - setBpmnXml(newProcessXml); + setBpmnXml(newProcessXml) } else { ProcessDefService.getBPMNXml(keycloak, processDef.id) .then((data) => { - setBpmnXml(data); + setBpmnXml(data) }) .catch((err) => { - setBpmnXml(null); - console.log(err.message); - }); + setBpmnXml(null) + console.log(err.message) + }) } - }, [open]); + }, [open]) - const modelerRef = useRef(); + const modelerRef = useRef() const onXmlChanged = useCallback((newXml) => { // console.log(`Model has been changed because of ${reason}`); // Do whatever you want here, save the XML and SVG in the backend etc. - setBpmnXml(newXml); - }, []); + setBpmnXml(newXml) + }, []) const onSaveClicked = useCallback(async () => { if (!modelerRef.current) { // Should actually never happen, but required for type safety - return; + return } // console.log("Saving model..."); - const result = await modelerRef.current.save(); + const result = await modelerRef.current.save() DeploymentService.deploy(keycloak, result.xml).then(() => { - handleClose(); - }); + handleClose() + }) // console.log("Saved model!", result.xml, result.svg); - }, []); + }, []) const onEvent = useCallback( async (event) => { if (isContentSavedEvent(event)) { // Content has been saved, e.g. because user edited the model or because he switched // from BPMN to XML. - onXmlChanged(event.data.xml, event.data.svg, event.data.reason); - return; + onXmlChanged(event.data.xml, event.data.svg, event.data.reason) + return } if (isNotificationEvent(event)) { // There's a notification the user is supposed to see, e.g. the model could not be // imported because it was invalid. - return; + return } if (isUIUpdateRequiredEvent(event)) { // Something in the modeler has changed and the UI (e.g. menu) should be updated. // This happens when the user selects an element, for example. - return; + return } if (isPropertiesPanelResizedEvent(event)) { // The user has resized the properties panel. You can save this value e.g. in local // storage to restore it on next load and pass it as initializing option. // console.log(`Properties panel has been resized to ${event.data.width}`); - return; + return } if (isBpmnIoEvent(event)) { // Just a regular bpmn-js event - actually lots of them - return; + return } // console.log("Unhandled event received", event); }, [onXmlChanged], - ); + ) /** * ==== @@ -117,7 +117,7 @@ export const BPMNModeler = ({ open, keycloak, processDef, handleClose }) => { monacoOptions: undefined, }), [], - ); + ) const propertiesPanelOptions = useMemo( () => ({ @@ -133,7 +133,7 @@ export const BPMNModeler = ({ open, keycloak, processDef, handleClose }) => { }, }), [], - ); + ) const modelerOptions = useMemo( () => ({ @@ -148,9 +148,9 @@ export const BPMNModeler = ({ open, keycloak, processDef, handleClose }) => { }, }), [], - ); + ) - const bpmnJsOptions = useMemo(() => undefined, []); + const bpmnJsOptions = useMemo(() => undefined, []) const modelerTabOptions = useMemo( () => ({ @@ -161,7 +161,7 @@ export const BPMNModeler = ({ open, keycloak, processDef, handleClose }) => { propertiesPanelOptions: propertiesPanelOptions, }), [bpmnJsOptions, modelerOptions, propertiesPanelOptions], - ); + ) return (
@@ -184,7 +184,9 @@ export const BPMNModeler = ({ open, keycloak, processDef, handleClose }) => { />
- + { - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/processDef/new-process.js b/apps/react/case-portal/src/views/management/processDef/new-process.js index 2b3b375c..cb1ae68e 100644 --- a/apps/react/case-portal/src/views/management/processDef/new-process.js +++ b/apps/react/case-portal/src/views/management/processDef/new-process.js @@ -1,3 +1,3 @@ const xml = - ''; -export default xml; + '' +export default xml diff --git a/apps/react/case-portal/src/views/management/processDef/processDefList.js b/apps/react/case-portal/src/views/management/processDef/processDefList.js index 0d7abd90..dcc5015a 100644 --- a/apps/react/case-portal/src/views/management/processDef/processDefList.js +++ b/apps/react/case-portal/src/views/management/processDef/processDefList.js @@ -1,10 +1,10 @@ -import React, { useEffect, useState, lazy } from 'react'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import { DataGrid } from '@mui/x-data-grid'; -import MainCard from 'components/MainCard'; -import { useSession } from 'SessionStoreContext'; -import { ProcessDefService } from 'services/ProcessDefService'; +import React, { useEffect, useState, lazy } from 'react' +import Box from '@mui/material/Box' +import Button from '@mui/material/Button' +import { DataGrid } from '@mui/x-data-grid' +import MainCard from 'components/MainCard' +import { useSession } from 'SessionStoreContext' +import { ProcessDefService } from 'services/ProcessDefService' const BPMNModeler = lazy(() => import('./bpmnModeler').then((module) => ({ @@ -13,23 +13,23 @@ const BPMNModeler = lazy(() => ) export const ProcessDefList = () => { - const [processDefs, setProcessDefs] = useState([]); - const [processDef, setProcessDef] = useState(null); - const [openBPMNModeler, setOpenBPMNModeler] = useState(false); - const [fetching, setFetching] = useState(false); - const keycloak = useSession(); + const [processDefs, setProcessDefs] = useState([]) + const [processDef, setProcessDef] = useState(null) + const [openBPMNModeler, setOpenBPMNModeler] = useState(false) + const [fetching, setFetching] = useState(false) + const keycloak = useSession() useEffect(() => { - setFetching(true); + setFetching(true) ProcessDefService.find(keycloak) .then((data) => { - setProcessDefs(data); + setProcessDefs(data) }) .finally(() => { - setFetching(false); - }); - }, [openBPMNModeler]); + setFetching(false) + }) + }, [openBPMNModeler]) const columns = [ { field: 'id', headerName: 'Id', width: 300 }, @@ -42,32 +42,32 @@ export const ProcessDefList = () => { sortable: false, renderCell: (params) => { const onClick = (e) => { - setProcessDef(params.row); - e.stopPropagation(); // don't select this row after clicking - setOpenBPMNModeler(true); - }; + setProcessDef(params.row) + e.stopPropagation() // don't select this row after clicking + setOpenBPMNModeler(true) + } return ( - ); + ) }, }, - ]; + ] const handleCloseBPMNModeler = () => { - setOpenBPMNModeler(false); - }; + setOpenBPMNModeler(false) + } const handleNewProcessDef = () => { setProcessDef({ id: '', name: '', key: '', - }); - setOpenBPMNModeler(true); - }; + }) + setOpenBPMNModeler(true) + } return (
@@ -99,5 +99,5 @@ export const ProcessDefList = () => { /> )}
- ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/queue/queueForm.js b/apps/react/case-portal/src/views/management/queue/queueForm.js index 4b28eebe..6b49d8dd 100644 --- a/apps/react/case-portal/src/views/management/queue/queueForm.js +++ b/apps/react/case-portal/src/views/management/queue/queueForm.js @@ -1,48 +1,48 @@ -import CloseIcon from '@mui/icons-material/Close'; -import { FormControl, TextField } from '@mui/material'; -import AppBar from '@mui/material/AppBar'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import IconButton from '@mui/material/IconButton'; -import Slide from '@mui/material/Slide'; -import Toolbar from '@mui/material/Toolbar'; -import Typography from '@mui/material/Typography'; -import { useSession } from 'SessionStoreContext'; -import MainCard from 'components/MainCard'; -import React from 'react'; -import { QueueService } from 'services/QueueService'; +import CloseIcon from '@mui/icons-material/Close' +import { FormControl, TextField } from '@mui/material' +import AppBar from '@mui/material/AppBar' +import Box from '@mui/material/Box' +import Button from '@mui/material/Button' +import Dialog from '@mui/material/Dialog' +import IconButton from '@mui/material/IconButton' +import Slide from '@mui/material/Slide' +import Toolbar from '@mui/material/Toolbar' +import Typography from '@mui/material/Typography' +import { useSession } from 'SessionStoreContext' +import MainCard from 'components/MainCard' +import React from 'react' +import { QueueService } from 'services/QueueService' const Transition = React.forwardRef(function Transition(props, ref) { - return ; -}); + return +}) export const QueueForm = ({ open, handleClose, queue, handleInputChange }) => { - const keycloak = useSession(); + const keycloak = useSession() const save = () => { if (queue.mode && queue.mode === 'new') { QueueService.save(keycloak, queue) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); + console.log(err.message) + }) } else { QueueService.update(keycloak, queue.id, queue) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); + console.log(err.message) + }) } - }; + } const deleteQueue = () => { QueueService.remove(keycloak, queue.id) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } return ( queue && ( @@ -111,5 +111,5 @@ export const QueueForm = ({ open, handleClose, queue, handleInputChange }) => { ) - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/queue/queueList.js b/apps/react/case-portal/src/views/management/queue/queueList.js index c326d497..507ec0a3 100644 --- a/apps/react/case-portal/src/views/management/queue/queueList.js +++ b/apps/react/case-portal/src/views/management/queue/queueList.js @@ -1,31 +1,31 @@ -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import { DataGrid } from '@mui/x-data-grid'; -import { useSession } from 'SessionStoreContext'; -import MainCard from 'components/MainCard'; -import { useEffect, useState } from 'react'; -import { QueueService } from 'services/QueueService'; -import { QueueForm } from './queueForm'; +import Box from '@mui/material/Box' +import Button from '@mui/material/Button' +import { DataGrid } from '@mui/x-data-grid' +import { useSession } from 'SessionStoreContext' +import MainCard from 'components/MainCard' +import { useEffect, useState } from 'react' +import { QueueService } from 'services/QueueService' +import { QueueForm } from './queueForm' export const QueueList = () => { - const [queues, setQueues] = useState([]); - const [openForm, setOpenForm] = useState(false); - const [queue, setQueue] = useState(null); - const keycloak = useSession(); + const [queues, setQueues] = useState([]) + const [openForm, setOpenForm] = useState(false) + const [queue, setQueue] = useState(null) + const keycloak = useSession() useEffect(() => { QueueService.find(keycloak) .then((data) => { - setQueues(data); + setQueues(data) }) .catch((err) => { - console.log(err.message); - }); - }, [openForm]); + console.log(err.message) + }) + }, [openForm]) const handleCloseForm = () => { - setOpenForm(false); - }; + setOpenForm(false) + } const columns = [ { field: 'id', headerName: 'Id', width: 300 }, @@ -37,28 +37,28 @@ export const QueueList = () => { sortable: false, renderCell: (params) => { const onDetailsClick = (e) => { - setQueue(params.row); - e.stopPropagation(); // don't select this row after clicking - setOpenForm(true); - }; + setQueue(params.row) + e.stopPropagation() // don't select this row after clicking + setOpenForm(true) + } - return ; + return }, }, - ]; + ] const handleInputChange = (event) => { - setQueue({ ...queue, [event.target.name]: event.target.value }); - }; + setQueue({ ...queue, [event.target.name]: event.target.value }) + } const handleNew = () => { setQueue({ id: '', fields: { components: [], display: 'form' }, mode: 'new', - }); - setOpenForm(true); - }; + }) + setOpenForm(true) + } return (
@@ -85,5 +85,5 @@ export const QueueList = () => { /> )}
- ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/recordType/recordTypeForm.js b/apps/react/case-portal/src/views/management/recordType/recordTypeForm.js index e40024fd..e64ddb48 100644 --- a/apps/react/case-portal/src/views/management/recordType/recordTypeForm.js +++ b/apps/react/case-portal/src/views/management/recordType/recordTypeForm.js @@ -1,24 +1,24 @@ -import React from 'react'; -import CloseIcon from '@mui/icons-material/Close'; -import AppBar from '@mui/material/AppBar'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import Slide from '@mui/material/Slide'; -import Toolbar from '@mui/material/Toolbar'; -import Typography from '@mui/material/Typography'; -import { FormBuilder } from '@formio/react'; -import { TextField } from '@mui/material'; -import MainCard from 'components/MainCard'; -import { RecordTypeService } from 'services'; -import { useSession } from 'SessionStoreContext'; -import { StorageService } from 'plugins/storage'; +import React from 'react' +import CloseIcon from '@mui/icons-material/Close' +import AppBar from '@mui/material/AppBar' +import Box from '@mui/material/Box' +import Button from '@mui/material/Button' +import Dialog from '@mui/material/Dialog' +import Grid from '@mui/material/Grid' +import IconButton from '@mui/material/IconButton' +import Slide from '@mui/material/Slide' +import Toolbar from '@mui/material/Toolbar' +import Typography from '@mui/material/Typography' +import { FormBuilder } from '@formio/react' +import { TextField } from '@mui/material' +import MainCard from 'components/MainCard' +import { RecordTypeService } from 'services' +import { useSession } from 'SessionStoreContext' +import { StorageService } from 'plugins/storage' const Transition = React.forwardRef(function Transition(props, ref) { - return ; -}); + return +}) export const RecordTypeForm = ({ open, @@ -26,31 +26,31 @@ export const RecordTypeForm = ({ recordType, handleInputChange, }) => { - const keycloak = useSession(); + const keycloak = useSession() const save = () => { if (recordType.mode && recordType.mode === 'new') { RecordTypeService.create(keycloak, recordType) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); + console.log(err.message) + }) } else { RecordTypeService.update(keycloak, recordType.id, recordType) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); + console.log(err.message) + }) } - }; + } const deleteRecordType = () => { RecordTypeService.remove(keycloak, recordType.id) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } return ( recordType && ( @@ -114,5 +114,5 @@ export const RecordTypeForm = ({ ) - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/recordType/recordTypeList.js b/apps/react/case-portal/src/views/management/recordType/recordTypeList.js index 3bee44dd..21f59a9a 100644 --- a/apps/react/case-portal/src/views/management/recordType/recordTypeList.js +++ b/apps/react/case-portal/src/views/management/recordType/recordTypeList.js @@ -1,31 +1,31 @@ -import { useEffect, useState } from 'react'; -import Box from '@mui/material/Box'; -import { DataGrid } from '@mui/x-data-grid'; -import MainCard from 'components/MainCard'; -import Button from '@mui/material/Button'; -import { RecordTypeForm } from './recordTypeForm'; -import { RecordTypeService } from 'services'; -import { useSession } from 'SessionStoreContext'; +import { useEffect, useState } from 'react' +import Box from '@mui/material/Box' +import { DataGrid } from '@mui/x-data-grid' +import MainCard from 'components/MainCard' +import Button from '@mui/material/Button' +import { RecordTypeForm } from './recordTypeForm' +import { RecordTypeService } from 'services' +import { useSession } from 'SessionStoreContext' export const RecordTypeList = () => { - const [recordTypes, setRecordTypes] = useState([]); - const [openForm, setOpenForm] = useState(false); - const [recordType, setRecordType] = useState(null); - const keycloak = useSession(); + const [recordTypes, setRecordTypes] = useState([]) + const [openForm, setOpenForm] = useState(false) + const [recordType, setRecordType] = useState(null) + const keycloak = useSession() useEffect(() => { RecordTypeService.getAll(keycloak) .then((data) => { - setRecordTypes(data); + setRecordTypes(data) }) .catch((err) => { - console.log(err.message); - }); - }, [openForm]); + console.log(err.message) + }) + }, [openForm]) const handleCloseForm = () => { - setOpenForm(false); - }; + setOpenForm(false) + } const columns = [ { field: 'id', headerName: 'Id', width: 300 }, @@ -35,28 +35,28 @@ export const RecordTypeList = () => { sortable: false, renderCell: (params) => { const onDetailsClick = (e) => { - setRecordType(params.row); - e.stopPropagation(); // don't select this row after clicking - setOpenForm(true); - }; + setRecordType(params.row) + e.stopPropagation() // don't select this row after clicking + setOpenForm(true) + } - return ; + return }, }, - ]; + ] const handleInputChange = (event) => { - setRecordType({ ...recordType, [event.target.name]: event.target.value }); - }; + setRecordType({ ...recordType, [event.target.name]: event.target.value }) + } const handleNew = () => { setRecordType({ id: '', fields: { components: [], display: 'form' }, mode: 'new', - }); - setOpenForm(true); - }; + }) + setOpenForm(true) + } return (
@@ -83,5 +83,5 @@ export const RecordTypeList = () => { /> )}
- ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/management/utilities/Color.js b/apps/react/case-portal/src/views/management/utilities/Color.js index c0868228..5a9a9b65 100644 --- a/apps/react/case-portal/src/views/management/utilities/Color.js +++ b/apps/react/case-portal/src/views/management/utilities/Color.js @@ -1,12 +1,12 @@ -import PropTypes from 'prop-types'; -import Box from '@mui/material/Box'; -import Card from '@mui/material/Card'; -import Grid from '@mui/material/Grid'; -import Typography from '@mui/material/Typography'; -import SubCard from 'ui-component/cards/SubCard'; -import MainCard from 'ui-component/cards/MainCard'; -import SecondaryAction from 'ui-component/cards/CardSecondaryAction'; -import { gridSpacing } from 'store/constant'; +import PropTypes from 'prop-types' +import Box from '@mui/material/Box' +import Card from '@mui/material/Card' +import Grid from '@mui/material/Grid' +import Typography from '@mui/material/Typography' +import SubCard from 'ui-component/cards/SubCard' +import MainCard from 'ui-component/cards/MainCard' +import SecondaryAction from 'ui-component/cards/CardSecondaryAction' +import { gridSpacing } from 'store/constant' // ===============================|| COLOR BOX ||=============================== // @@ -44,14 +44,14 @@ const ColorBox = ({ bgcolor, title, data, dark }) => ( )} -); +) ColorBox.propTypes = { bgcolor: PropTypes.string, title: PropTypes.string, data: PropTypes.object.isRequired, dark: PropTypes.bool, -}; +} // ===============================|| UI COLOR ||=============================== // @@ -345,6 +345,6 @@ const UIColor = () => ( -); +) -export default UIColor; +export default UIColor diff --git a/apps/react/case-portal/src/views/management/utilities/MaterialIcons.js b/apps/react/case-portal/src/views/management/utilities/MaterialIcons.js index 2261c063..9a38866b 100644 --- a/apps/react/case-portal/src/views/management/utilities/MaterialIcons.js +++ b/apps/react/case-portal/src/views/management/utilities/MaterialIcons.js @@ -1,14 +1,14 @@ -import { styled } from '@mui/material/styles'; -import Card from '@mui/material/Card'; -import MainCard from 'ui-component/cards/MainCard'; -import SecondaryAction from 'ui-component/cards/CardSecondaryAction'; +import { styled } from '@mui/material/styles' +import Card from '@mui/material/Card' +import MainCard from 'ui-component/cards/MainCard' +import SecondaryAction from 'ui-component/cards/CardSecondaryAction' // styles const IFrameWrapper = styled('iframe')(({ theme }) => ({ height: 'calc(100vh - 210px)', border: '1px solid', borderColor: theme.palette.primary.light, -})); +})) const MaterialIcons = () => ( ( /> -); +) -export default MaterialIcons; +export default MaterialIcons diff --git a/apps/react/case-portal/src/views/management/utilities/Shadow.js b/apps/react/case-portal/src/views/management/utilities/Shadow.js index 44dd2583..88dcdd9f 100644 --- a/apps/react/case-portal/src/views/management/utilities/Shadow.js +++ b/apps/react/case-portal/src/views/management/utilities/Shadow.js @@ -1,11 +1,11 @@ -import PropTypes from 'prop-types'; -import Box from '@mui/material/Box'; -import Card from '@mui/material/Card'; -import Grid from '@mui/material/Grid'; -import SubCard from 'ui-component/cards/SubCard'; -import MainCard from 'ui-component/cards/MainCard'; -import SecondaryAction from 'ui-component/cards/CardSecondaryAction'; -import { gridSpacing } from 'store/constant'; +import PropTypes from 'prop-types' +import Box from '@mui/material/Box' +import Card from '@mui/material/Card' +import Grid from '@mui/material/Grid' +import SubCard from 'ui-component/cards/SubCard' +import MainCard from 'ui-component/cards/MainCard' +import SecondaryAction from 'ui-component/cards/CardSecondaryAction' +import { gridSpacing } from 'store/constant' const ShadowBox = ({ shadow }) => ( @@ -22,11 +22,11 @@ const ShadowBox = ({ shadow }) => ( boxShadow: {shadow} -); +) ShadowBox.propTypes = { shadow: PropTypes.string.isRequired, -}; +} // ============================|| UTILITIES SHADOW ||============================ // @@ -121,6 +121,6 @@ const UtilitiesShadow = () => ( -); +) -export default UtilitiesShadow; +export default UtilitiesShadow diff --git a/apps/react/case-portal/src/views/management/utilities/TablerIcons.js b/apps/react/case-portal/src/views/management/utilities/TablerIcons.js index 52ea67af..73ff66c2 100644 --- a/apps/react/case-portal/src/views/management/utilities/TablerIcons.js +++ b/apps/react/case-portal/src/views/management/utilities/TablerIcons.js @@ -1,15 +1,15 @@ -import { styled } from '@mui/material/styles'; -import Card from '@mui/material/Card'; -import MainCard from 'ui-component/cards/MainCard'; -import SecondaryAction from 'ui-component/cards/CardSecondaryAction'; -import LinkIcon from '@mui/icons-material/Link'; +import { styled } from '@mui/material/styles' +import Card from '@mui/material/Card' +import MainCard from 'ui-component/cards/MainCard' +import SecondaryAction from 'ui-component/cards/CardSecondaryAction' +import LinkIcon from '@mui/icons-material/Link' // styles const IFrameWrapper = styled('iframe')(({ theme }) => ({ height: 'calc(100vh - 210px)', border: '1px solid', borderColor: theme.palette.primary.light, -})); +})) const TablerIcons = () => ( ( /> -); +) -export default TablerIcons; +export default TablerIcons diff --git a/apps/react/case-portal/src/views/management/utilities/Typography.js b/apps/react/case-portal/src/views/management/utilities/Typography.js index 79a5e758..913d32ed 100644 --- a/apps/react/case-portal/src/views/management/utilities/Typography.js +++ b/apps/react/case-portal/src/views/management/utilities/Typography.js @@ -1,9 +1,9 @@ -import { Grid, Link } from '@mui/material'; -import MuiTypography from '@mui/material/Typography'; -import SubCard from 'ui-component/cards/SubCard'; -import MainCard from 'ui-component/cards/MainCard'; -import SecondaryAction from 'ui-component/cards/CardSecondaryAction'; -import { gridSpacing } from 'store/constant'; +import { Grid, Link } from '@mui/material' +import MuiTypography from '@mui/material/Typography' +import SubCard from 'ui-component/cards/SubCard' +import MainCard from 'ui-component/cards/MainCard' +import SecondaryAction from 'ui-component/cards/CardSecondaryAction' +import { gridSpacing } from 'store/constant' // ==============================|| TYPOGRAPHY ||============================== // @@ -128,6 +128,6 @@ const Typography = () => ( -); +) -export default Typography; +export default Typography diff --git a/apps/react/case-portal/src/views/record/recordForm.js b/apps/react/case-portal/src/views/record/recordForm.js index 90c30a47..13d8a4dd 100644 --- a/apps/react/case-portal/src/views/record/recordForm.js +++ b/apps/react/case-portal/src/views/record/recordForm.js @@ -1,47 +1,47 @@ -import React, { useState } from 'react'; -import CloseIcon from '@mui/icons-material/Close'; -import AppBar from '@mui/material/AppBar'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import IconButton from '@mui/material/IconButton'; -import Slide from '@mui/material/Slide'; -import Toolbar from '@mui/material/Toolbar'; -import Typography from '@mui/material/Typography'; -import { Form } from '@formio/react'; -import Grid from '@mui/material/Grid'; -import MainCard from 'components/MainCard'; -import { useEffect } from 'react'; -import { RecordService } from '../../services'; -import { useSession } from 'SessionStoreContext'; -import { StorageService } from 'plugins/storage'; +import React, { useState } from 'react' +import CloseIcon from '@mui/icons-material/Close' +import AppBar from '@mui/material/AppBar' +import Button from '@mui/material/Button' +import Dialog from '@mui/material/Dialog' +import IconButton from '@mui/material/IconButton' +import Slide from '@mui/material/Slide' +import Toolbar from '@mui/material/Toolbar' +import Typography from '@mui/material/Typography' +import { Form } from '@formio/react' +import Grid from '@mui/material/Grid' +import MainCard from 'components/MainCard' +import { useEffect } from 'react' +import { RecordService } from '../../services' +import { useSession } from 'SessionStoreContext' +import { StorageService } from 'plugins/storage' const Transition = React.forwardRef(function Transition(props, ref) { - return ; -}); + return +}) export const RecordForm = ({ open, recordType, record, handleClose, mode }) => { - const [form, setForm] = useState(null); - const [formData, setFormData] = useState(null); - const keycloak = useSession(); + const [form, setForm] = useState(null) + const [formData, setFormData] = useState(null) + const keycloak = useSession() useEffect(() => { - setForm(recordType.fields); + setForm(recordType.fields) setFormData({ data: record, metadata: {}, isValid: true, - }); - }, [record]); + }) + }, [record]) const save = () => { if (mode === 'new') { RecordService.createRecord(keycloak, recordType.id, formData.data) .then(() => { - handleClose(); + handleClose() }) .catch((err) => { - console.log(err.message); - }); + console.log(err.message) + }) } else { RecordService.updateRecord( keycloak, @@ -50,23 +50,23 @@ export const RecordForm = ({ open, recordType, record, handleClose, mode }) => { formData.data, ) .then(() => { - handleClose(); + handleClose() }) .catch((err) => { - console.log(err.message); - }); + console.log(err.message) + }) } - }; + } const deleteRecord = () => { RecordService.deleteRecord(recordType.id, record._id.$oid) .then(() => { - handleClose(); + handleClose() }) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } return ( form && @@ -121,5 +121,5 @@ export const RecordForm = ({ open, recordType, record, handleClose, mode }) => { ) - ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/record/recordList.js b/apps/react/case-portal/src/views/record/recordList.js index 6ae0338a..1d652bf6 100644 --- a/apps/react/case-portal/src/views/record/recordList.js +++ b/apps/react/case-portal/src/views/record/recordList.js @@ -1,36 +1,36 @@ -import { useEffect, useState } from 'react'; -import Box from '@mui/material/Box'; -import { DataGrid } from '@mui/x-data-grid'; -import MainCard from 'components/MainCard'; -import Button from '@mui/material/Button'; -import { RecordForm } from './recordForm'; -import { useTranslation } from 'react-i18next'; -import { RecordService } from '../../services'; -import { useSession } from 'SessionStoreContext'; +import { useEffect, useState } from 'react' +import Box from '@mui/material/Box' +import { DataGrid } from '@mui/x-data-grid' +import MainCard from 'components/MainCard' +import Button from '@mui/material/Button' +import { RecordForm } from './recordForm' +import { useTranslation } from 'react-i18next' +import { RecordService } from '../../services' +import { useSession } from 'SessionStoreContext' export const RecordList = ({ recordTypeId }) => { - const [records, setRecords] = useState([]); - const [record, setRecord] = useState(null); - const [recordType, setRecordType] = useState([]); - const [openForm, setOpenForm] = useState(false); - const [columns, setColumns] = useState([]); - const [mode, setMode] = useState('new'); - const { t } = useTranslation(); - const keycloak = useSession(); + const [records, setRecords] = useState([]) + const [record, setRecord] = useState(null) + const [recordType, setRecordType] = useState([]) + const [openForm, setOpenForm] = useState(false) + const [columns, setColumns] = useState([]) + const [mode, setMode] = useState('new') + const { t } = useTranslation() + const keycloak = useSession() useEffect(() => { RecordService.getRecordTypeById(keycloak, recordTypeId) .then((data) => { - let dynamicColumns = []; + let dynamicColumns = [] data.fields.components .filter((element) => element.input === true) .forEach((element) => { - const key = element.key; - const label = element.label; + const key = element.key + const label = element.label - dynamicColumns.push({ field: key, headerName: label, width: 100 }); - }); + dynamicColumns.push({ field: key, headerName: label, width: 100 }) + }) dynamicColumns.push({ field: 'action', @@ -38,44 +38,44 @@ export const RecordList = ({ recordTypeId }) => { sortable: false, renderCell: (params) => { const onDetailsClick = (e) => { - setRecord(params.row); - e.stopPropagation(); // don't select this row after clicking - setMode('update'); - setOpenForm(true); - }; + setRecord(params.row) + e.stopPropagation() // don't select this row after clicking + setMode('update') + setOpenForm(true) + } return ( - ); + ) }, - }); - setColumns(dynamicColumns); - setRecordType(data); + }) + setColumns(dynamicColumns) + setRecordType(data) }) .catch((err) => { - console.log(err.message); - }); + console.log(err.message) + }) RecordService.getRecordById(keycloak, recordTypeId) .then((data) => { - setRecords(data); + setRecords(data) }) .catch((err) => { - console.log(err.message); - }); - }, [recordTypeId, openForm]); + console.log(err.message) + }) + }, [recordTypeId, openForm]) const handleCloseForm = () => { - setOpenForm(false); - }; + setOpenForm(false) + } const handleNew = () => { - setMode('new'); - setRecord({}); - setOpenForm(true); - }; + setMode('new') + setRecord({}) + setOpenForm(true) + } return (
@@ -104,5 +104,5 @@ export const RecordList = ({ recordTypeId }) => { /> )}
- ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/taskForm/taskForm.js b/apps/react/case-portal/src/views/taskForm/taskForm.js index 5b4776c9..459ef42c 100644 --- a/apps/react/case-portal/src/views/taskForm/taskForm.js +++ b/apps/react/case-portal/src/views/taskForm/taskForm.js @@ -1,104 +1,104 @@ -import { Form } from '@formio/react'; -import CloseIcon from '@mui/icons-material/Close'; -import AppBar from '@mui/material/AppBar'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import IconButton from '@mui/material/IconButton'; -import Slide from '@mui/material/Slide'; -import Toolbar from '@mui/material/Toolbar'; -import Typography from '@mui/material/Typography'; -import MainCard from 'components/MainCard'; -import { StorageService } from 'plugins/storage'; -import React, { useEffect, useState } from 'react'; -import { useTranslation } from 'react-i18next'; -import { FormService, TaskService, VariableService } from 'services'; -import { ProcessDiagram } from 'views/bpmnViewer/ProcessDiagram'; -import { useSession } from '../../SessionStoreContext'; +import { Form } from '@formio/react' +import CloseIcon from '@mui/icons-material/Close' +import AppBar from '@mui/material/AppBar' +import Box from '@mui/material/Box' +import Button from '@mui/material/Button' +import Dialog from '@mui/material/Dialog' +import IconButton from '@mui/material/IconButton' +import Slide from '@mui/material/Slide' +import Toolbar from '@mui/material/Toolbar' +import Typography from '@mui/material/Typography' +import MainCard from 'components/MainCard' +import { StorageService } from 'plugins/storage' +import React, { useEffect, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { FormService, TaskService, VariableService } from 'services' +import { ProcessDiagram } from 'views/bpmnViewer/ProcessDiagram' +import { useSession } from '../../SessionStoreContext' const Transition = React.forwardRef(function Transition(props, ref) { - return ; -}); + return +}) export const TaskForm = ({ open, handleClose, task }) => { - const [claimed, setClaimed] = useState(false); - const [assignee, setAssignee] = useState(null); - const [formComponents, setFormComponents] = useState(null); - const [variableValues, setVariableValues] = useState(null); - const [activityInstances, setActivityInstances] = useState(null); - const { t } = useTranslation(); - const keycloak = useSession(); + const [claimed, setClaimed] = useState(false) + const [assignee, setAssignee] = useState(null) + const [formComponents, setFormComponents] = useState(null) + const [variableValues, setVariableValues] = useState(null) + const [activityInstances, setActivityInstances] = useState(null) + const { t } = useTranslation() + const keycloak = useSession() useEffect(() => { - let apiDataVariables = {}; - let apiDataFormComponents = {}; + let apiDataVariables = {} + let apiDataFormComponents = {} FormService.getByKey(keycloak, task.formKey) .then((data) => { - apiDataFormComponents = data.structure; + apiDataFormComponents = data.structure apiDataVariables = { data: {}, metadata: {}, isValid: true, - }; + } return VariableService.getByProcessInstanceId( keycloak, task.processInstanceId, - ); + ) }) .then((data) => { data.forEach((item) => { if (item.type === 'Json') { - apiDataVariables.data[item.name] = JSON.parse(item.value); + apiDataVariables.data[item.name] = JSON.parse(item.value) } else { - apiDataVariables.data[item.name] = item.value; + apiDataVariables.data[item.name] = item.value } - }); + }) - setFormComponents(apiDataFormComponents); - setVariableValues(apiDataVariables); - setClaimed(task.assignee !== null && task.assignee !== undefined); - setAssignee(task.assignee); + setFormComponents(apiDataFormComponents) + setVariableValues(apiDataVariables) + setClaimed(task.assignee !== null && task.assignee !== undefined) + setAssignee(task.assignee) }) .catch((err) => { - console.log(err.message); - }); + console.log(err.message) + }) TaskService.getActivityInstancesById(keycloak, task.processInstanceId).then( (data) => { - setActivityInstances(data); + setActivityInstances(data) }, - ); - }, [open, task]); + ) + }, [open, task]) const handleClaim = function () { TaskService.claim(keycloak, task.id) .then(() => { - setClaimed(true); - setAssignee(keycloak.idTokenParsed.given_name); + setClaimed(true) + setAssignee(keycloak.idTokenParsed.given_name) }) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } const handleUnclaim = function () { TaskService.unclaim(keycloak, task.id) .then(() => { - setClaimed(false); - setAssignee(null); + setClaimed(false) + setAssignee(null) }) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } const handleComplete = function () { - let variables = { ...variableValues.data }; + let variables = { ...variableValues.data } - let variablesList = []; + let variablesList = [] Object.keys(variables).forEach(function (key) { let variable = { @@ -109,16 +109,16 @@ export const TaskForm = ({ open, handleClose, task }) => { : variables[key], type: typeof variables[key] === 'object' ? 'Json' : typeof variables[key], - }; - variablesList.push(variable); - }); + } + variablesList.push(variable) + }) TaskService.complete(keycloak, task.id, variablesList) .then(() => handleClose()) .catch((err) => { - console.log(err.message); - }); - }; + console.log(err.message) + }) + } return (
@@ -187,5 +187,5 @@ export const TaskForm = ({ open, handleClose, task }) => {
- ); -}; + ) +} diff --git a/apps/react/case-portal/src/views/taskList/taskList.js b/apps/react/case-portal/src/views/taskList/taskList.js index 28a33fb4..399777f3 100644 --- a/apps/react/case-portal/src/views/taskList/taskList.js +++ b/apps/react/case-portal/src/views/taskList/taskList.js @@ -1,62 +1,62 @@ -import { AddCircleOutline, PlayCircle } from '@mui/icons-material'; -import { Box } from '@mui/material'; -import Button from '@mui/material/Button'; -import List from '@mui/material/List'; +import { AddCircleOutline, PlayCircle } from '@mui/icons-material' +import { Box } from '@mui/material' +import Button from '@mui/material/Button' +import List from '@mui/material/List' import { default as IconButton, default as ListItem, -} from '@mui/material/ListItem'; -import { default as ListItemSecondaryAction } from '@mui/material/ListItemIcon'; -import ListSubheader from '@mui/material/ListSubheader'; -import Modal from '@mui/material/Modal'; -import TextField from '@mui/material/TextField'; -import Typography from '@mui/material/Typography'; -import Config from 'consts/index'; -import { format } from 'date-fns'; -import React, { useEffect, useState } from 'react'; -import { useTranslation } from 'react-i18next'; -import { TaskService } from 'services'; -import { useSession } from '../../SessionStoreContext'; -import { TaskForm } from '../taskForm/taskForm'; -import './taskList.css'; +} from '@mui/material/ListItem' +import { default as ListItemSecondaryAction } from '@mui/material/ListItemIcon' +import ListSubheader from '@mui/material/ListSubheader' +import Modal from '@mui/material/Modal' +import TextField from '@mui/material/TextField' +import Typography from '@mui/material/Typography' +import Config from 'consts/index' +import { format } from 'date-fns' +import React, { useEffect, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { TaskService } from 'services' +import { useSession } from '../../SessionStoreContext' +import { TaskForm } from '../taskForm/taskForm' +import './taskList.css' export const TaskList = ({ businessKey, callback }) => { - const [tasks, setTasks] = useState(null); - const [open, setOpen] = useState(false); - const [task, setTask] = useState(null); - const { t } = useTranslation(); - const [fetching, setFetching] = useState(false); - const keycloak = useSession(); + const [tasks, setTasks] = useState(null) + const [open, setOpen] = useState(false) + const [task, setTask] = useState(null) + const { t } = useTranslation() + const [fetching, setFetching] = useState(false) + const keycloak = useSession() - const [isModalOpen, setModalOpen] = useState(false); + const [isModalOpen, setModalOpen] = useState(false) const [newTaskData, setNewTaskData] = useState({ name: '', description: '', due: null, assignee: '', caseInstanceId: businessKey, - }); + }) useEffect(() => { if (Config.WebsocketsEnabled) { - const websocketUrl = Config.WebsocketUrl; - const topic = Config.WebsocketsTopicHumanTaskCreated; - const ws = new WebSocket(`${websocketUrl}/${topic}`); + const websocketUrl = Config.WebsocketUrl + const topic = Config.WebsocketsTopicHumanTaskCreated + const ws = new WebSocket(`${websocketUrl}/${topic}`) ws.onmessage = () => { - fetchTasks(setFetching, keycloak, businessKey, setTasks); - }; + fetchTasks(setFetching, keycloak, businessKey, setTasks) + } return () => { - ws.close(); // Close WebSocket connection when component unmounts - }; + ws.close() // Close WebSocket connection when component unmounts + } } - }, []); + }, []) const handleNewTaskSubmit = () => { // Perform any necessary validation on the new task data // ... TaskService.createNewTask(keycloak, newTaskData).then(() => { - fetchTasks(setFetching, keycloak, businessKey, setTasks); - }); + fetchTasks(setFetching, keycloak, businessKey, setTasks) + }) // Reset the new task form setNewTaskData({ @@ -65,20 +65,20 @@ export const TaskList = ({ businessKey, callback }) => { due: null, assignee: '', caseInstanceId: businessKey, - }); + }) // Close the modal - setModalOpen(false); - }; + setModalOpen(false) + } useEffect(() => { - fetchTasks(setFetching, keycloak, businessKey, setTasks); - }, [open, businessKey]); + fetchTasks(setFetching, keycloak, businessKey, setTasks) + }, [open, businessKey]) const handleClose = () => { - setOpen(false); - callback(); - }; + setOpen(false) + callback() + } return ( @@ -143,8 +143,8 @@ export const TaskList = ({ businessKey, callback }) => { edge='end' aria-label='complete' onClick={() => { - setTask(task); - setOpen(true); + setTask(task) + setOpen(true) }} > @@ -230,11 +230,11 @@ export const TaskList = ({ businessKey, callback }) => { /> )} - ); -}; + ) +} function fetchTasks(setFetching, keycloak, businessKey, setTasks) { - setFetching(true); + setFetching(true) TaskService.filterTasks(keycloak, businessKey) .then((data) => { @@ -248,9 +248,9 @@ function fetchTasks(setFetching, keycloak, businessKey, setTasks) { followUp: o.followUp && format(new Date(o.followUp), 'P'), }), ), - ); + ) }) .finally(() => { - setFetching(false); - }); + setFetching(false) + }) } diff --git a/apps/react/case-portal/src/views/utilities/Color.js b/apps/react/case-portal/src/views/utilities/Color.js index c0868228..5a9a9b65 100644 --- a/apps/react/case-portal/src/views/utilities/Color.js +++ b/apps/react/case-portal/src/views/utilities/Color.js @@ -1,12 +1,12 @@ -import PropTypes from 'prop-types'; -import Box from '@mui/material/Box'; -import Card from '@mui/material/Card'; -import Grid from '@mui/material/Grid'; -import Typography from '@mui/material/Typography'; -import SubCard from 'ui-component/cards/SubCard'; -import MainCard from 'ui-component/cards/MainCard'; -import SecondaryAction from 'ui-component/cards/CardSecondaryAction'; -import { gridSpacing } from 'store/constant'; +import PropTypes from 'prop-types' +import Box from '@mui/material/Box' +import Card from '@mui/material/Card' +import Grid from '@mui/material/Grid' +import Typography from '@mui/material/Typography' +import SubCard from 'ui-component/cards/SubCard' +import MainCard from 'ui-component/cards/MainCard' +import SecondaryAction from 'ui-component/cards/CardSecondaryAction' +import { gridSpacing } from 'store/constant' // ===============================|| COLOR BOX ||=============================== // @@ -44,14 +44,14 @@ const ColorBox = ({ bgcolor, title, data, dark }) => ( )} -); +) ColorBox.propTypes = { bgcolor: PropTypes.string, title: PropTypes.string, data: PropTypes.object.isRequired, dark: PropTypes.bool, -}; +} // ===============================|| UI COLOR ||=============================== // @@ -345,6 +345,6 @@ const UIColor = () => ( -); +) -export default UIColor; +export default UIColor diff --git a/apps/react/case-portal/src/views/utilities/MaterialIcons.js b/apps/react/case-portal/src/views/utilities/MaterialIcons.js index 2261c063..9a38866b 100644 --- a/apps/react/case-portal/src/views/utilities/MaterialIcons.js +++ b/apps/react/case-portal/src/views/utilities/MaterialIcons.js @@ -1,14 +1,14 @@ -import { styled } from '@mui/material/styles'; -import Card from '@mui/material/Card'; -import MainCard from 'ui-component/cards/MainCard'; -import SecondaryAction from 'ui-component/cards/CardSecondaryAction'; +import { styled } from '@mui/material/styles' +import Card from '@mui/material/Card' +import MainCard from 'ui-component/cards/MainCard' +import SecondaryAction from 'ui-component/cards/CardSecondaryAction' // styles const IFrameWrapper = styled('iframe')(({ theme }) => ({ height: 'calc(100vh - 210px)', border: '1px solid', borderColor: theme.palette.primary.light, -})); +})) const MaterialIcons = () => ( ( /> -); +) -export default MaterialIcons; +export default MaterialIcons diff --git a/apps/react/case-portal/src/views/utilities/TablerIcons.js b/apps/react/case-portal/src/views/utilities/TablerIcons.js index 52ea67af..73ff66c2 100644 --- a/apps/react/case-portal/src/views/utilities/TablerIcons.js +++ b/apps/react/case-portal/src/views/utilities/TablerIcons.js @@ -1,15 +1,15 @@ -import { styled } from '@mui/material/styles'; -import Card from '@mui/material/Card'; -import MainCard from 'ui-component/cards/MainCard'; -import SecondaryAction from 'ui-component/cards/CardSecondaryAction'; -import LinkIcon from '@mui/icons-material/Link'; +import { styled } from '@mui/material/styles' +import Card from '@mui/material/Card' +import MainCard from 'ui-component/cards/MainCard' +import SecondaryAction from 'ui-component/cards/CardSecondaryAction' +import LinkIcon from '@mui/icons-material/Link' // styles const IFrameWrapper = styled('iframe')(({ theme }) => ({ height: 'calc(100vh - 210px)', border: '1px solid', borderColor: theme.palette.primary.light, -})); +})) const TablerIcons = () => ( ( /> -); +) -export default TablerIcons; +export default TablerIcons diff --git a/apps/react/case-portal/src/views/utilities/Typography.js b/apps/react/case-portal/src/views/utilities/Typography.js index 4fea6129..2d206d8f 100644 --- a/apps/react/case-portal/src/views/utilities/Typography.js +++ b/apps/react/case-portal/src/views/utilities/Typography.js @@ -1,10 +1,10 @@ -import Grid from '@mui/material/Grid'; -import Link from '@mui/material/Link'; -import MuiTypography from '@mui/material/Typography'; -import SubCard from 'ui-component/cards/SubCard'; -import MainCard from 'ui-component/cards/MainCard'; -import SecondaryAction from 'ui-component/cards/CardSecondaryAction'; -import { gridSpacing } from 'store/constant'; +import Grid from '@mui/material/Grid' +import Link from '@mui/material/Link' +import MuiTypography from '@mui/material/Typography' +import SubCard from 'ui-component/cards/SubCard' +import MainCard from 'ui-component/cards/MainCard' +import SecondaryAction from 'ui-component/cards/CardSecondaryAction' +import { gridSpacing } from 'store/constant' // ==============================|| TYPOGRAPHY ||============================== // @@ -129,6 +129,6 @@ const Typography = () => ( -); +) -export default Typography; +export default Typography