mirror of
https://github.com/sartography/spiffworkflow-frontend.git
synced 2025-02-24 12:18:17 +00:00
created admin router to namespace routes w/ burnettk
This commit is contained in:
parent
8aeb889022
commit
b5ae21e8c9
@ -1,6 +1,6 @@
|
|||||||
describe('process-groups', () => {
|
describe('process-groups', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.visit('/');
|
cy.visit('/admin');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can perform crud operations', () => {
|
it('can perform crud operations', () => {
|
||||||
|
@ -64,7 +64,7 @@ const updateBpmnPythonScriptWithMonaco = (
|
|||||||
|
|
||||||
describe('process-instances', () => {
|
describe('process-instances', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.visit('/');
|
cy.visit('/admin');
|
||||||
cy.contains('acceptance-tests-group-one').click();
|
cy.contains('acceptance-tests-group-one').click();
|
||||||
cy.contains('acceptance-tests-model-1').click();
|
cy.contains('acceptance-tests-model-1').click();
|
||||||
});
|
});
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
describe('process-models', () => {
|
describe('process-models', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.visit('/');
|
cy.visit('/admin');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can perform crud operations', () => {
|
it('can perform crud operations', () => {
|
||||||
|
125
package-lock.json
generated
125
package-lock.json
generated
@ -31,6 +31,7 @@
|
|||||||
"react-bootstrap": "^2.4.0",
|
"react-bootstrap": "^2.4.0",
|
||||||
"react-datepicker": "^4.8.0",
|
"react-datepicker": "^4.8.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
|
"react-jsonschema-form": "^1.8.1",
|
||||||
"react-router-dom": "^6.3.0",
|
"react-router-dom": "^6.3.0",
|
||||||
"react-scripts": "^5.0.1",
|
"react-scripts": "^5.0.1",
|
||||||
"serve": "^13.0.2",
|
"serve": "^13.0.2",
|
||||||
@ -1792,6 +1793,25 @@
|
|||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@babel/runtime-corejs2": {
|
||||||
|
"version": "7.18.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.18.6.tgz",
|
||||||
|
"integrity": "sha512-bTfcOSG6AHGVCd37zqoBax2e6r4Gy+q3sW2BgLo3h63NdU30C2AKXW0swyQsX/Ik+Zd6eVKQ9TTBKJ9tZQgWig==",
|
||||||
|
"dependencies": {
|
||||||
|
"core-js": "^2.6.12",
|
||||||
|
"regenerator-runtime": "^0.13.4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@babel/runtime-corejs2/node_modules/core-js": {
|
||||||
|
"version": "2.6.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
|
||||||
|
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
|
||||||
|
"deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
|
||||||
|
"hasInstallScript": true
|
||||||
|
},
|
||||||
"node_modules/@babel/runtime-corejs3": {
|
"node_modules/@babel/runtime-corejs3": {
|
||||||
"version": "7.18.3",
|
"version": "7.18.3",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz",
|
||||||
@ -19563,6 +19583,40 @@
|
|||||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
||||||
},
|
},
|
||||||
|
"node_modules/react-jsonschema-form": {
|
||||||
|
"version": "1.8.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-jsonschema-form/-/react-jsonschema-form-1.8.1.tgz",
|
||||||
|
"integrity": "sha512-aaDloxNAcGXOOOcdKOxxqEEn5oDlPUZgWcs8unXXB9vjBRgCF8rCm/wVSv1u2G5ih0j/BX6Ewd/WjI2g00lPdg==",
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/runtime-corejs2": "^7.4.5",
|
||||||
|
"ajv": "^6.7.0",
|
||||||
|
"core-js": "^2.5.7",
|
||||||
|
"lodash": "^4.17.15",
|
||||||
|
"prop-types": "^15.5.8",
|
||||||
|
"react-is": "^16.8.4",
|
||||||
|
"react-lifecycles-compat": "^3.0.4",
|
||||||
|
"shortid": "^2.2.14"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6",
|
||||||
|
"npm": ">=2.14.7"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": ">=15"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/react-jsonschema-form/node_modules/core-js": {
|
||||||
|
"version": "2.6.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
|
||||||
|
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
|
||||||
|
"deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
|
||||||
|
"hasInstallScript": true
|
||||||
|
},
|
||||||
|
"node_modules/react-jsonschema-form/node_modules/react-is": {
|
||||||
|
"version": "16.13.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
||||||
|
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
|
||||||
|
},
|
||||||
"node_modules/react-lifecycles-compat": {
|
"node_modules/react-lifecycles-compat": {
|
||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
||||||
@ -20763,6 +20817,19 @@
|
|||||||
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz",
|
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz",
|
||||||
"integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw=="
|
"integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw=="
|
||||||
},
|
},
|
||||||
|
"node_modules/shortid": {
|
||||||
|
"version": "2.2.16",
|
||||||
|
"resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz",
|
||||||
|
"integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==",
|
||||||
|
"dependencies": {
|
||||||
|
"nanoid": "^2.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/shortid/node_modules/nanoid": {
|
||||||
|
"version": "2.1.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz",
|
||||||
|
"integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA=="
|
||||||
|
},
|
||||||
"node_modules/side-channel": {
|
"node_modules/side-channel": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
||||||
@ -25055,6 +25122,22 @@
|
|||||||
"regenerator-runtime": "^0.13.4"
|
"regenerator-runtime": "^0.13.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@babel/runtime-corejs2": {
|
||||||
|
"version": "7.18.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.18.6.tgz",
|
||||||
|
"integrity": "sha512-bTfcOSG6AHGVCd37zqoBax2e6r4Gy+q3sW2BgLo3h63NdU30C2AKXW0swyQsX/Ik+Zd6eVKQ9TTBKJ9tZQgWig==",
|
||||||
|
"requires": {
|
||||||
|
"core-js": "^2.6.12",
|
||||||
|
"regenerator-runtime": "^0.13.4"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"core-js": {
|
||||||
|
"version": "2.6.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
|
||||||
|
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"@babel/runtime-corejs3": {
|
"@babel/runtime-corejs3": {
|
||||||
"version": "7.18.3",
|
"version": "7.18.3",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz",
|
||||||
@ -38398,6 +38481,33 @@
|
|||||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
||||||
},
|
},
|
||||||
|
"react-jsonschema-form": {
|
||||||
|
"version": "1.8.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-jsonschema-form/-/react-jsonschema-form-1.8.1.tgz",
|
||||||
|
"integrity": "sha512-aaDloxNAcGXOOOcdKOxxqEEn5oDlPUZgWcs8unXXB9vjBRgCF8rCm/wVSv1u2G5ih0j/BX6Ewd/WjI2g00lPdg==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime-corejs2": "^7.4.5",
|
||||||
|
"ajv": "^6.7.0",
|
||||||
|
"core-js": "^2.5.7",
|
||||||
|
"lodash": "^4.17.15",
|
||||||
|
"prop-types": "^15.5.8",
|
||||||
|
"react-is": "^16.8.4",
|
||||||
|
"react-lifecycles-compat": "^3.0.4",
|
||||||
|
"shortid": "^2.2.14"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"core-js": {
|
||||||
|
"version": "2.6.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
|
||||||
|
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
|
||||||
|
},
|
||||||
|
"react-is": {
|
||||||
|
"version": "16.13.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
||||||
|
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"react-lifecycles-compat": {
|
"react-lifecycles-compat": {
|
||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
||||||
@ -39318,6 +39428,21 @@
|
|||||||
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz",
|
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz",
|
||||||
"integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw=="
|
"integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw=="
|
||||||
},
|
},
|
||||||
|
"shortid": {
|
||||||
|
"version": "2.2.16",
|
||||||
|
"resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz",
|
||||||
|
"integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==",
|
||||||
|
"requires": {
|
||||||
|
"nanoid": "^2.1.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"nanoid": {
|
||||||
|
"version": "2.1.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz",
|
||||||
|
"integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"side-channel": {
|
"side-channel": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
"react-bootstrap": "^2.4.0",
|
"react-bootstrap": "^2.4.0",
|
||||||
"react-datepicker": "^4.8.0",
|
"react-datepicker": "^4.8.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
|
"react-jsonschema-form": "^1.8.1",
|
||||||
"react-router-dom": "^6.3.0",
|
"react-router-dom": "^6.3.0",
|
||||||
"react-scripts": "^5.0.1",
|
"react-scripts": "^5.0.1",
|
||||||
"serve": "^13.0.2",
|
"serve": "^13.0.2",
|
||||||
|
81
src/App.js
81
src/App.js
@ -5,20 +5,21 @@ import { BrowserRouter, Routes, Route } from 'react-router-dom';
|
|||||||
import ErrorContext from './contexts/ErrorContext';
|
import ErrorContext from './contexts/ErrorContext';
|
||||||
import NavigationBar from './components/NavigationBar';
|
import NavigationBar from './components/NavigationBar';
|
||||||
|
|
||||||
import ProcessGroups from './routes/ProcessGroups';
|
// import ProcessGroups from './routes/ProcessGroups';
|
||||||
import ProcessGroupShow from './routes/ProcessGroupShow';
|
// import ProcessGroupShow from './routes/ProcessGroupShow';
|
||||||
import ProcessGroupNew from './routes/ProcessGroupNew';
|
// import ProcessGroupNew from './routes/ProcessGroupNew';
|
||||||
import ProcessGroupEdit from './routes/ProcessGroupEdit';
|
// import ProcessGroupEdit from './routes/ProcessGroupEdit';
|
||||||
import ProcessModelShow from './routes/ProcessModelShow';
|
// import ProcessModelShow from './routes/ProcessModelShow';
|
||||||
import ProcessModelEditDiagram from './routes/ProcessModelEditDiagram';
|
// import ProcessModelEditDiagram from './routes/ProcessModelEditDiagram';
|
||||||
import ProcessInstanceList from './routes/ProcessInstanceList';
|
// import ProcessInstanceList from './routes/ProcessInstanceList';
|
||||||
import ProcessInstanceReport from './routes/ProcessInstanceReport';
|
// import ProcessInstanceReport from './routes/ProcessInstanceReport';
|
||||||
import ProcessModelNew from './routes/ProcessModelNew';
|
// import ProcessModelNew from './routes/ProcessModelNew';
|
||||||
import ProcessModelEdit from './routes/ProcessModelEdit';
|
// import ProcessModelEdit from './routes/ProcessModelEdit';
|
||||||
import ProcessInstanceShow from './routes/ProcessInstanceShow';
|
// import ProcessInstanceShow from './routes/ProcessInstanceShow';
|
||||||
import TaskList from './routes/TaskList';
|
// import TaskList from './routes/TaskList';
|
||||||
import TaskShow from './routes/TaskShow';
|
// import TaskShow from './routes/TaskShow';
|
||||||
import ErrorBoundary from './components/ErrorBoundary';
|
import ErrorBoundary from './components/ErrorBoundary';
|
||||||
|
import AdminRoutes from './routes/AdminRoutes';
|
||||||
|
|
||||||
export default function App() {
|
export default function App() {
|
||||||
const [errorMessage, setErrorMessage] = useState('');
|
const [errorMessage, setErrorMessage] = useState('');
|
||||||
@ -36,6 +37,12 @@ export default function App() {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
// <BrowserRouter basename="tasks">
|
||||||
|
// <Routes>
|
||||||
|
// <Route path="/" element={<TaskList />} />
|
||||||
|
// <Route path="/:task_id" element={<TaskShow />} />
|
||||||
|
// </Routes>
|
||||||
|
// </BrowserRouter>
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ErrorContext.Provider value={errorContextValueArray}>
|
<ErrorContext.Provider value={errorContextValueArray}>
|
||||||
@ -45,53 +52,7 @@ export default function App() {
|
|||||||
<ErrorBoundary>
|
<ErrorBoundary>
|
||||||
<BrowserRouter>
|
<BrowserRouter>
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route path="/" element={<ProcessGroups />} />
|
<Route path="/admin/*" element={<AdminRoutes />} />
|
||||||
|
|
||||||
<Route path="process-groups" element={<ProcessGroups />} />
|
|
||||||
<Route
|
|
||||||
path="process-groups/:process_group_id"
|
|
||||||
element={<ProcessGroupShow />}
|
|
||||||
/>
|
|
||||||
<Route path="process-groups/new" element={<ProcessGroupNew />} />
|
|
||||||
<Route
|
|
||||||
path="process-groups/:process_group_id/edit"
|
|
||||||
element={<ProcessGroupEdit />}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Route
|
|
||||||
path="process-models/:process_group_id/new"
|
|
||||||
element={<ProcessModelNew />}
|
|
||||||
/>
|
|
||||||
<Route
|
|
||||||
path="process-models/:process_group_id/:process_model_id"
|
|
||||||
element={<ProcessModelShow />}
|
|
||||||
/>
|
|
||||||
<Route
|
|
||||||
path="process-models/:process_group_id/:process_model_id/file"
|
|
||||||
element={<ProcessModelEditDiagram />}
|
|
||||||
/>
|
|
||||||
<Route
|
|
||||||
path="process-models/:process_group_id/:process_model_id/file/:file_name"
|
|
||||||
element={<ProcessModelEditDiagram />}
|
|
||||||
/>
|
|
||||||
<Route
|
|
||||||
path="process-models/:process_group_id/:process_model_id/process-instances"
|
|
||||||
element={<ProcessInstanceList />}
|
|
||||||
/>
|
|
||||||
<Route
|
|
||||||
path="process-models/:process_group_id/:process_model_id/process-instances/report"
|
|
||||||
element={<ProcessInstanceReport />}
|
|
||||||
/>
|
|
||||||
<Route
|
|
||||||
path="process-models/:process_group_id/:process_model_id/edit"
|
|
||||||
element={<ProcessModelEdit />}
|
|
||||||
/>
|
|
||||||
<Route
|
|
||||||
path="process-models/:process_group_id/:process_model_id/process-instances/:process_instance_id"
|
|
||||||
element={<ProcessInstanceShow />}
|
|
||||||
/>
|
|
||||||
<Route path="tasks" element={<TaskList />} />
|
|
||||||
<Route path="tasks/:task_id" element={<TaskShow />} />
|
|
||||||
</Routes>
|
</Routes>
|
||||||
</BrowserRouter>
|
</BrowserRouter>
|
||||||
</ErrorBoundary>
|
</ErrorBoundary>
|
||||||
|
@ -1,20 +1,33 @@
|
|||||||
import { Navbar, Nav, Container } from 'react-bootstrap';
|
import { Navbar, Nav, Container } from 'react-bootstrap';
|
||||||
|
import { capitalizeFirstLetter } from '../helpers';
|
||||||
import logo from '../logo.svg';
|
import logo from '../logo.svg';
|
||||||
|
|
||||||
// for ref: https://react-bootstrap.github.io/components/navbar/
|
// for ref: https://react-bootstrap.github.io/components/navbar/
|
||||||
export default function NavigationBar() {
|
export default function NavigationBar() {
|
||||||
|
const navItems = ['/admin', '/tasks'];
|
||||||
|
|
||||||
|
const navElements = navItems.map((navItem) => {
|
||||||
|
let className = '';
|
||||||
|
if (window.location.pathname.startsWith(navItem)) {
|
||||||
|
className = 'active';
|
||||||
|
}
|
||||||
|
const title = capitalizeFirstLetter(navItem.replace(/\/*/, ''));
|
||||||
|
return (
|
||||||
|
<Nav.Link href={navItem} className={className}>
|
||||||
|
{title}
|
||||||
|
</Nav.Link>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Navbar bg="dark" expand="lg" variant="dark">
|
<Navbar bg="dark" expand="lg" variant="dark">
|
||||||
<Container>
|
<Container>
|
||||||
<Navbar.Brand href="/">
|
<Navbar.Brand href="/admin">
|
||||||
<img src={logo} className="app-logo" alt="logo" />
|
<img src={logo} className="app-logo" alt="logo" />
|
||||||
</Navbar.Brand>
|
</Navbar.Brand>
|
||||||
<Navbar.Toggle aria-controls="basic-navbar-nav" />
|
<Navbar.Toggle aria-controls="basic-navbar-nav" />
|
||||||
<Navbar.Collapse id="basic-navbar-nav">
|
<Navbar.Collapse id="basic-navbar-nav">
|
||||||
<Nav className="me-auto">
|
<Nav className="me-auto">{navElements}</Nav>
|
||||||
<Nav.Link href="/">Admin</Nav.Link>
|
|
||||||
<Nav.Link href="/tasks">Tasks</Nav.Link>
|
|
||||||
</Nav>
|
|
||||||
</Navbar.Collapse>
|
</Navbar.Collapse>
|
||||||
</Container>
|
</Container>
|
||||||
</Navbar>
|
</Navbar>
|
||||||
|
@ -16,7 +16,7 @@ export default function ProcessBreadcrumb({
|
|||||||
<Breadcrumb.Item
|
<Breadcrumb.Item
|
||||||
linkAs={Link}
|
linkAs={Link}
|
||||||
linkProps={{
|
linkProps={{
|
||||||
to: `/process-models/${processGroupId}/${processModelId}`,
|
to: `/admin/process-models/${processGroupId}/${processModelId}`,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Process Model: {processModelId}
|
Process Model: {processModelId}
|
||||||
@ -32,7 +32,7 @@ export default function ProcessBreadcrumb({
|
|||||||
processGroupBreadcrumb = (
|
processGroupBreadcrumb = (
|
||||||
<Breadcrumb.Item
|
<Breadcrumb.Item
|
||||||
linkAs={Link}
|
linkAs={Link}
|
||||||
linkProps={{ to: `/process-groups/${processGroupId}` }}
|
linkProps={{ to: `/admin/process-groups/${processGroupId}` }}
|
||||||
>
|
>
|
||||||
Process Group: {processGroupId}
|
Process Group: {processGroupId}
|
||||||
</Breadcrumb.Item>
|
</Breadcrumb.Item>
|
||||||
@ -46,7 +46,7 @@ export default function ProcessBreadcrumb({
|
|||||||
return (
|
return (
|
||||||
<main style={{ padding: '1rem 0' }}>
|
<main style={{ padding: '1rem 0' }}>
|
||||||
<Breadcrumb>
|
<Breadcrumb>
|
||||||
<Breadcrumb.Item linkAs={Link} linkProps={{ to: '/' }}>
|
<Breadcrumb.Item linkAs={Link} linkProps={{ to: '/admin' }}>
|
||||||
Home
|
Home
|
||||||
</Breadcrumb.Item>
|
</Breadcrumb.Item>
|
||||||
{processGroupBreadcrumb}
|
{processGroupBreadcrumb}
|
||||||
|
@ -9,6 +9,10 @@ export const slugifyString = (str) => {
|
|||||||
.replace(/-+$/g, '');
|
.replace(/-+$/g, '');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const capitalizeFirstLetter = (string) => {
|
||||||
|
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||||
|
};
|
||||||
|
|
||||||
export const convertDateToSeconds = (date, onChangeFunction) => {
|
export const convertDateToSeconds = (date, onChangeFunction) => {
|
||||||
let dateInSeconds = date;
|
let dateInSeconds = date;
|
||||||
if (date !== null) {
|
if (date !== null) {
|
||||||
|
65
src/routes/AdminRoutes.js
Normal file
65
src/routes/AdminRoutes.js
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
import { Routes, Route } from 'react-router-dom';
|
||||||
|
|
||||||
|
import ProcessGroups from './ProcessGroups';
|
||||||
|
import ProcessGroupShow from './ProcessGroupShow';
|
||||||
|
import ProcessGroupNew from './ProcessGroupNew';
|
||||||
|
import ProcessGroupEdit from './ProcessGroupEdit';
|
||||||
|
import ProcessModelShow from './ProcessModelShow';
|
||||||
|
import ProcessModelEditDiagram from './ProcessModelEditDiagram';
|
||||||
|
import ProcessInstanceList from './ProcessInstanceList';
|
||||||
|
import ProcessInstanceReport from './ProcessInstanceReport';
|
||||||
|
import ProcessModelNew from './ProcessModelNew';
|
||||||
|
import ProcessModelEdit from './ProcessModelEdit';
|
||||||
|
import ProcessInstanceShow from './ProcessInstanceShow';
|
||||||
|
|
||||||
|
export default function Admin() {
|
||||||
|
return (
|
||||||
|
<Routes>
|
||||||
|
<Route path="/" element={<ProcessGroups />} />
|
||||||
|
|
||||||
|
<Route path="process-groups" element={<ProcessGroups />} />
|
||||||
|
<Route
|
||||||
|
path="process-groups/:process_group_id"
|
||||||
|
element={<ProcessGroupShow />}
|
||||||
|
/>
|
||||||
|
<Route path="process-groups/new" element={<ProcessGroupNew />} />
|
||||||
|
<Route
|
||||||
|
path="process-groups/:process_group_id/edit"
|
||||||
|
element={<ProcessGroupEdit />}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Route
|
||||||
|
path="process-models/:process_group_id/new"
|
||||||
|
element={<ProcessModelNew />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="process-models/:process_group_id/:process_model_id"
|
||||||
|
element={<ProcessModelShow />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="process-models/:process_group_id/:process_model_id/file"
|
||||||
|
element={<ProcessModelEditDiagram />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="process-models/:process_group_id/:process_model_id/file/:file_name"
|
||||||
|
element={<ProcessModelEditDiagram />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="process-models/:process_group_id/:process_model_id/process-instances"
|
||||||
|
element={<ProcessInstanceList />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="process-models/:process_group_id/:process_model_id/process-instances/report"
|
||||||
|
element={<ProcessInstanceReport />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="process-models/:process_group_id/:process_model_id/edit"
|
||||||
|
element={<ProcessModelEdit />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="process-models/:process_group_id/:process_model_id/process-instances/:process_instance_id"
|
||||||
|
element={<ProcessInstanceShow />}
|
||||||
|
/>
|
||||||
|
</Routes>
|
||||||
|
);
|
||||||
|
}
|
@ -42,7 +42,7 @@ export default function ProcessGroupEdit() {
|
|||||||
}),
|
}),
|
||||||
}).then(
|
}).then(
|
||||||
() => {
|
() => {
|
||||||
navigate(`/process-groups/${processGroup.id}`);
|
navigate(`/admin/process-groups/${processGroup.id}`);
|
||||||
},
|
},
|
||||||
// Note: it's important to handle errors here
|
// Note: it's important to handle errors here
|
||||||
// instead of a catch() block so that we don't swallow
|
// instead of a catch() block so that we don't swallow
|
||||||
@ -92,7 +92,7 @@ export default function ProcessGroupEdit() {
|
|||||||
<Button type="submit">Submit</Button>
|
<Button type="submit">Submit</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="secondary"
|
variant="secondary"
|
||||||
href={`/process-groups/${processGroup.id}`}
|
href={`/admin/process-groups/${processGroup.id}`}
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
|
@ -25,7 +25,7 @@ export default function ProcessGroupNew() {
|
|||||||
}),
|
}),
|
||||||
}).then(
|
}).then(
|
||||||
() => {
|
() => {
|
||||||
navigate(`/process-groups/${identifier}`);
|
navigate(`/admin/process-groups/${identifier}`);
|
||||||
},
|
},
|
||||||
// Note: it's important to handle errors here
|
// Note: it's important to handle errors here
|
||||||
// instead of a catch() block so that we don't swallow
|
// instead of a catch() block so that we don't swallow
|
||||||
|
@ -61,7 +61,7 @@ export default function ProcessGroupShow() {
|
|||||||
return (
|
return (
|
||||||
<tr key={row.id}>
|
<tr key={row.id}>
|
||||||
<td>
|
<td>
|
||||||
<Link to={`/process-models/${processGroup.id}/${row.id}`}>
|
<Link to={`/admin/process-models/${processGroup.id}/${row.id}`}>
|
||||||
{row.id}
|
{row.id}
|
||||||
</Link>
|
</Link>
|
||||||
</td>
|
</td>
|
||||||
@ -97,11 +97,11 @@ export default function ProcessGroupShow() {
|
|||||||
<h2>Process Group: {processGroup.id}</h2>
|
<h2>Process Group: {processGroup.id}</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<Stack direction="horizontal" gap={3}>
|
<Stack direction="horizontal" gap={3}>
|
||||||
<Button href={`/process-models/${processGroup.id}/new`}>
|
<Button href={`/admin/process-models/${processGroup.id}/new`}>
|
||||||
Add a process model
|
Add a process model
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
href={`/process-groups/${processGroup.id}/edit`}
|
href={`/admin/process-groups/${processGroup.id}/edit`}
|
||||||
variant="secondary"
|
variant="secondary"
|
||||||
>
|
>
|
||||||
Edit process group
|
Edit process group
|
||||||
@ -114,7 +114,7 @@ export default function ProcessGroupShow() {
|
|||||||
perPage={perPage}
|
perPage={perPage}
|
||||||
pagination={pagination}
|
pagination={pagination}
|
||||||
tableToDisplay={buildTable()}
|
tableToDisplay={buildTable()}
|
||||||
path={`/process-groups/${processGroup.id}`}
|
path={`/admin/process-groups/${processGroup.id}`}
|
||||||
/>
|
/>
|
||||||
</ul>
|
</ul>
|
||||||
</main>
|
</main>
|
||||||
|
@ -47,7 +47,7 @@ export default function ProcessGroups() {
|
|||||||
return (
|
return (
|
||||||
<tr key={row.id}>
|
<tr key={row.id}>
|
||||||
<td>
|
<td>
|
||||||
<Link to={`/process-groups/${row.id}`}>{row.id}</Link>
|
<Link to={`/admin/process-groups/${row.id}`}>{row.id}</Link>
|
||||||
</td>
|
</td>
|
||||||
<td>{row.display_name}</td>
|
<td>{row.display_name}</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -80,7 +80,7 @@ export default function ProcessGroups() {
|
|||||||
perPage={perPage}
|
perPage={perPage}
|
||||||
pagination={pagination}
|
pagination={pagination}
|
||||||
tableToDisplay={buildTable()}
|
tableToDisplay={buildTable()}
|
||||||
path="/process-groups"
|
path="/admin/process-groups"
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
@ -94,7 +94,7 @@ export default function ProcessGroups() {
|
|||||||
<main style={{ padding: '1rem 0' }}>
|
<main style={{ padding: '1rem 0' }}>
|
||||||
<ProcessBreadcrumb />
|
<ProcessBreadcrumb />
|
||||||
<h2>Process Groups</h2>
|
<h2>Process Groups</h2>
|
||||||
<Button href="/process-groups/new">Add a process group</Button>
|
<Button href="/admin/process-groups/new">Add a process group</Button>
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
{processGroupsDisplayArea()}
|
{processGroupsDisplayArea()}
|
||||||
|
@ -153,7 +153,7 @@ export default function ProcessInstanceList() {
|
|||||||
|
|
||||||
setErrorMessage('');
|
setErrorMessage('');
|
||||||
navigate(
|
navigate(
|
||||||
`/process-models/${params.process_group_id}/${params.process_model_id}/process-instances?${queryParamString}`
|
`/admin/process-models/${params.process_group_id}/${params.process_model_id}/process-instances?${queryParamString}`
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -269,7 +269,7 @@ export default function ProcessInstanceList() {
|
|||||||
<td>
|
<td>
|
||||||
<Link
|
<Link
|
||||||
data-qa="process-instance-show-link"
|
data-qa="process-instance-show-link"
|
||||||
to={`/process-models/${params.process_group_id}/${params.process_model_id}/process-instances/${row.id}`}
|
to={`/admin/process-models/${params.process_group_id}/${params.process_model_id}/process-instances/${row.id}`}
|
||||||
>
|
>
|
||||||
{row.id}
|
{row.id}
|
||||||
</Link>
|
</Link>
|
||||||
@ -322,7 +322,7 @@ export default function ProcessInstanceList() {
|
|||||||
pagination={pagination}
|
pagination={pagination}
|
||||||
tableToDisplay={buildTable()}
|
tableToDisplay={buildTable()}
|
||||||
queryParamString={getSearchParamsAsQueryString()}
|
queryParamString={getSearchParamsAsQueryString()}
|
||||||
path={`/process-models/${params.process_group_id}/${params.process_model_id}/process-instances`}
|
path={`/admin/process-models/${params.process_group_id}/${params.process_model_id}/process-instances`}
|
||||||
/>
|
/>
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
|
@ -101,7 +101,7 @@ export default function ProcessInstanceReport() {
|
|||||||
perPage={perPage}
|
perPage={perPage}
|
||||||
pagination={pagination}
|
pagination={pagination}
|
||||||
tableToDisplay={buildTable()}
|
tableToDisplay={buildTable()}
|
||||||
path={`/process-models/${params.process_group_id}/${params.process_model_id}/process-instances/report`}
|
path={`/admin/process-models/${params.process_group_id}/${params.process_model_id}/process-instances/report`}
|
||||||
/>
|
/>
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
|
@ -20,7 +20,7 @@ export default function ProcessInstanceShow() {
|
|||||||
).then(
|
).then(
|
||||||
() => {
|
() => {
|
||||||
navigate(
|
navigate(
|
||||||
`/process-models/${params.process_group_id}/${params.process_model_id}/process-instances`
|
`/admin/process-models/${params.process_group_id}/${params.process_model_id}/process-instances`
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
(error) => {
|
(error) => {
|
||||||
|
@ -46,7 +46,7 @@ export default function ProcessModelEdit() {
|
|||||||
}),
|
}),
|
||||||
}).then(
|
}).then(
|
||||||
() => {
|
() => {
|
||||||
navigate(`/${processModelPath}`);
|
navigate(`/admin/${processModelPath}`);
|
||||||
},
|
},
|
||||||
// Note: it's important to handle errors here
|
// Note: it's important to handle errors here
|
||||||
// instead of a catch() block so that we don't swallow
|
// instead of a catch() block so that we don't swallow
|
||||||
@ -68,7 +68,7 @@ export default function ProcessModelEdit() {
|
|||||||
}
|
}
|
||||||
).then(
|
).then(
|
||||||
() => {
|
() => {
|
||||||
navigate(`/process-groups/${params.process_group_id}`);
|
navigate(`/admin/process-groups/${params.process_group_id}`);
|
||||||
},
|
},
|
||||||
(error) => {
|
(error) => {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
|
@ -86,7 +86,7 @@ export default function ProcessModelEditDiagram() {
|
|||||||
() => {
|
() => {
|
||||||
if (!params.file_name) {
|
if (!params.file_name) {
|
||||||
navigate(
|
navigate(
|
||||||
`/process-models/${params.process_group_id}/${params.process_model_id}/file/${fileNameWithExtension}`
|
`/admin/process-models/${params.process_group_id}/${params.process_model_id}/file/${fileNameWithExtension}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -32,7 +32,9 @@ export default function ProcessModelNew() {
|
|||||||
}),
|
}),
|
||||||
}).then(
|
}).then(
|
||||||
() => {
|
() => {
|
||||||
navigate(`/process-models/${params.process_group_id}/${identifier}`);
|
navigate(
|
||||||
|
`/admin/process-models/${params.process_group_id}/${identifier}`
|
||||||
|
);
|
||||||
},
|
},
|
||||||
// Note: it's important to handle errors here
|
// Note: it's important to handle errors here
|
||||||
// instead of a catch() block so that we don't swallow
|
// instead of a catch() block so that we don't swallow
|
||||||
|
@ -94,7 +94,7 @@ export default function ProcessModelShow() {
|
|||||||
return (
|
return (
|
||||||
<li key={fileBpmn.name}>
|
<li key={fileBpmn.name}>
|
||||||
<Link
|
<Link
|
||||||
to={`/process-models/${processModel.process_group_id}/${processModel.id}/file/${fileBpmn.name}`}
|
to={`/admin/process-models/${processModel.process_group_id}/${processModel.id}/file/${fileBpmn.name}`}
|
||||||
>
|
>
|
||||||
{fileBpmn.name}
|
{fileBpmn.name}
|
||||||
</Link>
|
</Link>
|
||||||
@ -123,19 +123,19 @@ export default function ProcessModelShow() {
|
|||||||
Run
|
Run
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
href={`/process-models/${processModel.process_group_id}/${processModel.id}/edit`}
|
href={`/admin/process-models/${processModel.process_group_id}/${processModel.id}/edit`}
|
||||||
variant="secondary"
|
variant="secondary"
|
||||||
>
|
>
|
||||||
Edit process model
|
Edit process model
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
href={`/process-models/${processModel.process_group_id}/${processModel.id}/file?file_type=bpmn`}
|
href={`/admin/process-models/${processModel.process_group_id}/${processModel.id}/file?file_type=bpmn`}
|
||||||
variant="warning"
|
variant="warning"
|
||||||
>
|
>
|
||||||
Add New BPMN File
|
Add New BPMN File
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
href={`/process-models/${processModel.process_group_id}/${processModel.id}/file?file_type=dmn`}
|
href={`/admin/process-models/${processModel.process_group_id}/${processModel.id}/file?file_type=dmn`}
|
||||||
variant="success"
|
variant="success"
|
||||||
>
|
>
|
||||||
Add New DMN File
|
Add New DMN File
|
||||||
@ -144,7 +144,7 @@ export default function ProcessModelShow() {
|
|||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<Link
|
<Link
|
||||||
to={`/process-models/${processModel.process_group_id}/${processModel.id}/process-instances`}
|
to={`/admin/process-models/${processModel.process_group_id}/${processModel.id}/process-instances`}
|
||||||
>
|
>
|
||||||
Process Instances
|
Process Instances
|
||||||
</Link>
|
</Link>
|
||||||
|
@ -45,6 +45,7 @@ export default function TaskList() {
|
|||||||
<td>
|
<td>
|
||||||
<Link to={`/tasks/${row.id}`}>{row.id}</Link>
|
<Link to={`/tasks/${row.id}`}>{row.id}</Link>
|
||||||
</td>
|
</td>
|
||||||
|
<td>{row.status}</td>
|
||||||
</tr>
|
</tr>
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -53,6 +54,7 @@ export default function TaskList() {
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Id</th>
|
<th>Id</th>
|
||||||
|
<th>Status</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>{rows}</tbody>
|
<tbody>{rows}</tbody>
|
||||||
|
@ -29,6 +29,7 @@ export default function TaskShow() {
|
|||||||
<main>
|
<main>
|
||||||
<h1>Task ID: {task.id}</h1>
|
<h1>Task ID: {task.id}</h1>
|
||||||
<h3>process_instance_id: {task.process_instance_id}</h3>
|
<h3>process_instance_id: {task.process_instance_id}</h3>
|
||||||
|
<h3>status: {task.status}</h3>
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user