mirror of
https://github.com/sartography/spiff-arena.git
synced 2025-03-01 17:40:48 +00:00
add page titles for most routes (#468)
This commit is contained in:
parent
beb0449a5a
commit
ef297b1eeb
@ -347,6 +347,10 @@ export const getBpmnProcessIdentifiers = (rootBpmnElement: any) => {
|
|||||||
return childProcesses;
|
return childProcesses;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const setPageTitle = (items: Array<string>) => {
|
||||||
|
document.title = ['SpiffWorkflow'].concat(items).join(' - ');
|
||||||
|
};
|
||||||
|
|
||||||
export const isInteger = (str: string | number) => {
|
export const isInteger = (str: string | number) => {
|
||||||
return /^\d+$/.test(str.toString());
|
return /^\d+$/.test(str.toString());
|
||||||
};
|
};
|
||||||
|
@ -11,6 +11,7 @@ import AuthenticationList from './AuthenticationList';
|
|||||||
import { useUriListForPermissions } from '../hooks/UriListForPermissions';
|
import { useUriListForPermissions } from '../hooks/UriListForPermissions';
|
||||||
import { PermissionsToCheck } from '../interfaces';
|
import { PermissionsToCheck } from '../interfaces';
|
||||||
import { usePermissionFetcher } from '../hooks/PermissionService';
|
import { usePermissionFetcher } from '../hooks/PermissionService';
|
||||||
|
import { setPageTitle } from '../helpers';
|
||||||
|
|
||||||
export default function Configuration() {
|
export default function Configuration() {
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
@ -29,6 +30,7 @@ export default function Configuration() {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
removeError();
|
removeError();
|
||||||
|
setPageTitle(['Configuration']);
|
||||||
let newSelectedTabIndex = 0;
|
let newSelectedTabIndex = 0;
|
||||||
if (location.pathname.match(/^\/admin\/configuration\/authentications\b/)) {
|
if (location.pathname.match(/^\/admin\/configuration\/authentications\b/)) {
|
||||||
newSelectedTabIndex = 1;
|
newSelectedTabIndex = 1;
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import DataStoreList from '../components/DataStoreList';
|
import DataStoreList from '../components/DataStoreList';
|
||||||
|
import { setPageTitle } from '../helpers';
|
||||||
|
|
||||||
export default function DataStorePage() {
|
export default function DataStorePage() {
|
||||||
|
setPageTitle(['Data Stores']);
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h1>Data Stores</h1>
|
<h1>Data Stores</h1>
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
import MessageInstanceList from '../components/MessageInstanceList';
|
import MessageInstanceList from '../components/MessageInstanceList';
|
||||||
|
import { setPageTitle } from '../helpers';
|
||||||
|
|
||||||
export default function MessageListPage() {
|
export default function MessageListPage() {
|
||||||
|
setPageTitle(['Messages']);
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h1>Messages</h1>
|
<h1>Messages</h1>
|
||||||
|
@ -5,6 +5,7 @@ import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
|||||||
import HttpService from '../services/HttpService';
|
import HttpService from '../services/HttpService';
|
||||||
import ProcessGroupForm from '../components/ProcessGroupForm';
|
import ProcessGroupForm from '../components/ProcessGroupForm';
|
||||||
import { ProcessGroup } from '../interfaces';
|
import { ProcessGroup } from '../interfaces';
|
||||||
|
import { setPageTitle } from '../helpers';
|
||||||
|
|
||||||
export default function ProcessGroupEdit() {
|
export default function ProcessGroupEdit() {
|
||||||
const params = useParams();
|
const params = useParams();
|
||||||
@ -22,6 +23,7 @@ export default function ProcessGroupEdit() {
|
|||||||
}, [params]);
|
}, [params]);
|
||||||
|
|
||||||
if (processGroup) {
|
if (processGroup) {
|
||||||
|
setPageTitle([`Editing ${processGroup.display_name}`]);
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ProcessBreadcrumb
|
<ProcessBreadcrumb
|
||||||
|
@ -7,7 +7,7 @@ import {
|
|||||||
import { Can } from '@casl/react';
|
import { Can } from '@casl/react';
|
||||||
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
||||||
import HttpService from '../services/HttpService';
|
import HttpService from '../services/HttpService';
|
||||||
import { modifyProcessIdentifierForPathParam } from '../helpers';
|
import { modifyProcessIdentifierForPathParam, setPageTitle } from '../helpers';
|
||||||
import { CarbonComboBoxSelection, PermissionsToCheck } from '../interfaces';
|
import { CarbonComboBoxSelection, PermissionsToCheck } from '../interfaces';
|
||||||
import { useUriListForPermissions } from '../hooks/UriListForPermissions';
|
import { useUriListForPermissions } from '../hooks/UriListForPermissions';
|
||||||
import { usePermissionFetcher } from '../hooks/PermissionService';
|
import { usePermissionFetcher } from '../hooks/PermissionService';
|
||||||
@ -42,6 +42,7 @@ export default function ProcessGroupList() {
|
|||||||
path: `/process-models?per_page=1000&recursive=true&include_parent_groups=true`,
|
path: `/process-models?per_page=1000&recursive=true&include_parent_groups=true`,
|
||||||
successCallback: processResultForProcessModels,
|
successCallback: processResultForProcessModels,
|
||||||
});
|
});
|
||||||
|
setPageTitle(['Process Groups']);
|
||||||
}, [searchParams]);
|
}, [searchParams]);
|
||||||
|
|
||||||
const processModelSearchArea = () => {
|
const processModelSearchArea = () => {
|
||||||
|
@ -2,6 +2,7 @@ import { useState } from 'react';
|
|||||||
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
||||||
import ProcessGroupForm from '../components/ProcessGroupForm';
|
import ProcessGroupForm from '../components/ProcessGroupForm';
|
||||||
import { ProcessGroup, HotCrumbItem } from '../interfaces';
|
import { ProcessGroup, HotCrumbItem } from '../interfaces';
|
||||||
|
import { setPageTitle } from '../helpers';
|
||||||
|
|
||||||
export default function ProcessGroupNew() {
|
export default function ProcessGroupNew() {
|
||||||
const searchParams = new URLSearchParams(document.location.search);
|
const searchParams = new URLSearchParams(document.location.search);
|
||||||
@ -11,6 +12,7 @@ export default function ProcessGroupNew() {
|
|||||||
display_name: '',
|
display_name: '',
|
||||||
description: '',
|
description: '',
|
||||||
});
|
});
|
||||||
|
setPageTitle(['New Process Group']);
|
||||||
|
|
||||||
const hotCrumbs: HotCrumbItem[] = [['Process Groups', '/admin']];
|
const hotCrumbs: HotCrumbItem[] = [['Process Groups', '/admin']];
|
||||||
if (parentGroupId) {
|
if (parentGroupId) {
|
||||||
|
@ -19,6 +19,7 @@ import {
|
|||||||
getPageInfoFromSearchParams,
|
getPageInfoFromSearchParams,
|
||||||
modifyProcessIdentifierForPathParam,
|
modifyProcessIdentifierForPathParam,
|
||||||
unModifyProcessIdentifierForPathParam,
|
unModifyProcessIdentifierForPathParam,
|
||||||
|
setPageTitle,
|
||||||
} from '../helpers';
|
} from '../helpers';
|
||||||
import {
|
import {
|
||||||
PaginationObject,
|
PaginationObject,
|
||||||
@ -59,6 +60,7 @@ export default function ProcessGroupShow() {
|
|||||||
};
|
};
|
||||||
const processResult = (result: any) => {
|
const processResult = (result: any) => {
|
||||||
setProcessGroup(result);
|
setProcessGroup(result);
|
||||||
|
setPageTitle([result.display_name]);
|
||||||
const unmodifiedProcessGroupId = unModifyProcessIdentifierForPathParam(
|
const unmodifiedProcessGroupId = unModifyProcessIdentifierForPathParam(
|
||||||
(params as any).process_group_id
|
(params as any).process_group_id
|
||||||
);
|
);
|
||||||
|
@ -4,7 +4,10 @@ import 'react-datepicker/dist/react-datepicker.css';
|
|||||||
|
|
||||||
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
||||||
import ProcessInstanceListTable from '../components/ProcessInstanceListTable';
|
import ProcessInstanceListTable from '../components/ProcessInstanceListTable';
|
||||||
import { getProcessModelFullIdentifierFromSearchParams } from '../helpers';
|
import {
|
||||||
|
getProcessModelFullIdentifierFromSearchParams,
|
||||||
|
setPageTitle,
|
||||||
|
} from '../helpers';
|
||||||
import ProcessInstanceListTabs from '../components/ProcessInstanceListTabs';
|
import ProcessInstanceListTabs from '../components/ProcessInstanceListTabs';
|
||||||
|
|
||||||
type OwnProps = {
|
type OwnProps = {
|
||||||
@ -13,6 +16,7 @@ type OwnProps = {
|
|||||||
|
|
||||||
export default function ProcessInstanceList({ variant }: OwnProps) {
|
export default function ProcessInstanceList({ variant }: OwnProps) {
|
||||||
const [searchParams] = useSearchParams();
|
const [searchParams] = useSearchParams();
|
||||||
|
setPageTitle(['Process Instances']);
|
||||||
|
|
||||||
const processInstanceBreadcrumbElement = () => {
|
const processInstanceBreadcrumbElement = () => {
|
||||||
const processModelFullIdentifier =
|
const processModelFullIdentifier =
|
||||||
|
@ -47,6 +47,7 @@ import {
|
|||||||
modifyProcessIdentifierForPathParam,
|
modifyProcessIdentifierForPathParam,
|
||||||
truncateString,
|
truncateString,
|
||||||
unModifyProcessIdentifierForPathParam,
|
unModifyProcessIdentifierForPathParam,
|
||||||
|
setPageTitle,
|
||||||
} from '../helpers';
|
} from '../helpers';
|
||||||
import ButtonWithConfirmation from '../components/ButtonWithConfirmation';
|
import ButtonWithConfirmation from '../components/ButtonWithConfirmation';
|
||||||
import { useUriListForPermissions } from '../hooks/UriListForPermissions';
|
import { useUriListForPermissions } from '../hooks/UriListForPermissions';
|
||||||
@ -162,6 +163,16 @@ export default function ProcessInstanceShow({ variant }: OwnProps) {
|
|||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (processInstance) {
|
||||||
|
setPageTitle([
|
||||||
|
processInstance.process_model_display_name,
|
||||||
|
`Process Instance ${processInstance.id}`,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}, [processInstance]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!permissionsLoaded) {
|
if (!permissionsLoaded) {
|
||||||
return undefined;
|
return undefined;
|
||||||
|
@ -5,6 +5,7 @@ import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
|||||||
import HttpService from '../services/HttpService';
|
import HttpService from '../services/HttpService';
|
||||||
import ProcessModelForm from '../components/ProcessModelForm';
|
import ProcessModelForm from '../components/ProcessModelForm';
|
||||||
import { ProcessModel } from '../interfaces';
|
import { ProcessModel } from '../interfaces';
|
||||||
|
import { setPageTitle } from '../helpers';
|
||||||
|
|
||||||
export default function ProcessModelEdit() {
|
export default function ProcessModelEdit() {
|
||||||
const params = useParams();
|
const params = useParams();
|
||||||
@ -19,6 +20,7 @@ export default function ProcessModelEdit() {
|
|||||||
}, [processModelPath]);
|
}, [processModelPath]);
|
||||||
|
|
||||||
if (processModel) {
|
if (processModel) {
|
||||||
|
setPageTitle([`Editing ${processModel.display_name}`]);
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ProcessBreadcrumb
|
<ProcessBreadcrumb
|
||||||
|
@ -33,7 +33,11 @@ import HttpService from '../services/HttpService';
|
|||||||
import ReactDiagramEditor from '../components/ReactDiagramEditor';
|
import ReactDiagramEditor from '../components/ReactDiagramEditor';
|
||||||
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
||||||
import useAPIError from '../hooks/UseApiError';
|
import useAPIError from '../hooks/UseApiError';
|
||||||
import { makeid, modifyProcessIdentifierForPathParam } from '../helpers';
|
import {
|
||||||
|
makeid,
|
||||||
|
modifyProcessIdentifierForPathParam,
|
||||||
|
setPageTitle,
|
||||||
|
} from '../helpers';
|
||||||
import {
|
import {
|
||||||
CarbonComboBoxProcessSelection,
|
CarbonComboBoxProcessSelection,
|
||||||
ProcessFile,
|
ProcessFile,
|
||||||
@ -178,6 +182,9 @@ export default function ProcessModelEditDiagram() {
|
|||||||
successCallback: setCallers,
|
successCallback: setCallers,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if (processModel && processModelFile) {
|
||||||
|
setPageTitle([processModel.display_name, processModelFile.name]);
|
||||||
|
}
|
||||||
}, [processModel, processModelFile]);
|
}, [processModel, processModelFile]);
|
||||||
|
|
||||||
const handleFileNameCancel = () => {
|
const handleFileNameCancel = () => {
|
||||||
|
@ -3,7 +3,10 @@ import { useParams } from 'react-router-dom';
|
|||||||
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
||||||
import { ProcessModel } from '../interfaces';
|
import { ProcessModel } from '../interfaces';
|
||||||
import ProcessModelForm from '../components/ProcessModelForm';
|
import ProcessModelForm from '../components/ProcessModelForm';
|
||||||
import { unModifyProcessIdentifierForPathParam } from '../helpers';
|
import {
|
||||||
|
unModifyProcessIdentifierForPathParam,
|
||||||
|
setPageTitle,
|
||||||
|
} from '../helpers';
|
||||||
|
|
||||||
export default function ProcessModelNew() {
|
export default function ProcessModelNew() {
|
||||||
const params = useParams();
|
const params = useParams();
|
||||||
@ -15,6 +18,7 @@ export default function ProcessModelNew() {
|
|||||||
primary_process_id: '',
|
primary_process_id: '',
|
||||||
files: [],
|
files: [],
|
||||||
});
|
});
|
||||||
|
setPageTitle(['Add New Process Model']);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
@ -33,6 +33,7 @@ import useAPIError from '../hooks/UseApiError';
|
|||||||
import {
|
import {
|
||||||
getGroupFromModifiedModelId,
|
getGroupFromModifiedModelId,
|
||||||
modifyProcessIdentifierForPathParam,
|
modifyProcessIdentifierForPathParam,
|
||||||
|
setPageTitle,
|
||||||
} from '../helpers';
|
} from '../helpers';
|
||||||
import {
|
import {
|
||||||
PermissionsToCheck,
|
PermissionsToCheck,
|
||||||
@ -96,6 +97,7 @@ export default function ProcessModelShow() {
|
|||||||
const processResult = (result: ProcessModel) => {
|
const processResult = (result: ProcessModel) => {
|
||||||
setProcessModel(result);
|
setProcessModel(result);
|
||||||
setReloadModel(false);
|
setReloadModel(false);
|
||||||
|
setPageTitle([result.display_name]);
|
||||||
};
|
};
|
||||||
HttpService.makeCallToBackend({
|
HttpService.makeCallToBackend({
|
||||||
path: `/process-models/${modifiedProcessModelId}`,
|
path: `/process-models/${modifiedProcessModelId}`,
|
||||||
|
@ -9,8 +9,8 @@ import { Can } from '@casl/react';
|
|||||||
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
||||||
import HttpService from '../services/HttpService';
|
import HttpService from '../services/HttpService';
|
||||||
import ButtonWithConfirmation from '../components/ButtonWithConfirmation';
|
import ButtonWithConfirmation from '../components/ButtonWithConfirmation';
|
||||||
import { modifyProcessIdentifierForPathParam } from '../helpers';
|
import { modifyProcessIdentifierForPathParam, setPageTitle } from '../helpers';
|
||||||
import { ProcessFile, PermissionsToCheck } from '../interfaces';
|
import { ProcessFile, PermissionsToCheck, ProcessModel } from '../interfaces';
|
||||||
import { Notification } from '../components/Notification';
|
import { Notification } from '../components/Notification';
|
||||||
import useAPIError from '../hooks/UseApiError';
|
import useAPIError from '../hooks/UseApiError';
|
||||||
import { usePermissionFetcher } from '../hooks/PermissionService';
|
import { usePermissionFetcher } from '../hooks/PermissionService';
|
||||||
@ -38,6 +38,7 @@ export default function ReactFormEditor() {
|
|||||||
const [displaySaveFileMessage, setDisplaySaveFileMessage] =
|
const [displaySaveFileMessage, setDisplaySaveFileMessage] =
|
||||||
useState<boolean>(false);
|
useState<boolean>(false);
|
||||||
|
|
||||||
|
const [processModel, setProcessModel] = useState<ProcessModel | null>(null);
|
||||||
const [processModelFile, setProcessModelFile] = useState<ProcessFile | null>(
|
const [processModelFile, setProcessModelFile] = useState<ProcessFile | null>(
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
@ -80,6 +81,11 @@ export default function ReactFormEditor() {
|
|||||||
setProcessModelFileContents(result.file_contents);
|
setProcessModelFileContents(result.file_contents);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
HttpService.makeCallToBackend({
|
||||||
|
path: `/process-models/${modifiedProcessModelId}?include_file_references=true`,
|
||||||
|
successCallback: setProcessModel,
|
||||||
|
});
|
||||||
|
|
||||||
if (params.file_name) {
|
if (params.file_name) {
|
||||||
HttpService.makeCallToBackend({
|
HttpService.makeCallToBackend({
|
||||||
path: `/process-models/${modifiedProcessModelId}/files/${params.file_name}`,
|
path: `/process-models/${modifiedProcessModelId}/files/${params.file_name}`,
|
||||||
@ -88,6 +94,12 @@ export default function ReactFormEditor() {
|
|||||||
}
|
}
|
||||||
}, [params, modifiedProcessModelId]);
|
}, [params, modifiedProcessModelId]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (processModelFile && processModel) {
|
||||||
|
setPageTitle([processModel.display_name, processModelFile.name]);
|
||||||
|
}
|
||||||
|
}, [processModel, processModelFile]);
|
||||||
|
|
||||||
const navigateToProcessModelFile = (file: ProcessFile) => {
|
const navigateToProcessModelFile = (file: ProcessFile) => {
|
||||||
setDisplaySaveFileMessage(true);
|
setDisplaySaveFileMessage(true);
|
||||||
if (file.file_contents_hash) {
|
if (file.file_contents_hash) {
|
||||||
|
@ -11,6 +11,7 @@ import {
|
|||||||
doNothing,
|
doNothing,
|
||||||
modifyProcessIdentifierForPathParam,
|
modifyProcessIdentifierForPathParam,
|
||||||
recursivelyChangeNullAndUndefined,
|
recursivelyChangeNullAndUndefined,
|
||||||
|
setPageTitle,
|
||||||
} from '../helpers';
|
} from '../helpers';
|
||||||
import {
|
import {
|
||||||
BasicTask,
|
BasicTask,
|
||||||
@ -63,6 +64,7 @@ export default function TaskShow() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const processBasicTaskResult = (result: BasicTask) => {
|
const processBasicTaskResult = (result: BasicTask) => {
|
||||||
setBasicTask(result);
|
setBasicTask(result);
|
||||||
|
setPageTitle([result.name_for_display]);
|
||||||
if (!result.can_complete) {
|
if (!result.can_complete) {
|
||||||
navigateToInterstitial(result);
|
navigateToInterstitial(result);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user