Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
8d938ff
fixed word-break
canptura May 15, 2026
f938080
refactoring
canptura May 15, 2026
cc28b96
Merge branch 'main' of https://github.com/PROCEED-Labs/proceed into e…
canptura May 18, 2026
7d6f1d7
new tab added with placeholder text
canptura May 19, 2026
31e3846
more placeholder fields added, refactoring for readability
canptura May 20, 2026
7f1772f
styling ideas
canptura May 22, 2026
a5346ad
timing moved to different tab
canptura May 26, 2026
f065958
breakpoint causes Modal instead of Drawer
canptura May 26, 2026
71cd501
incorporation of some reference layouts and style
canptura Jun 1, 2026
7068e65
tech tags and switch functionality added
canptura Jun 2, 2026
c45d6e4
N/A-elements added, grid generalization added, general abstraction
canptura Jun 2, 2026
12fd725
reusable text component added for data display
canptura Jun 3, 2026
2a77911
variable form styling finished, activity styling added
canptura Jun 8, 2026
34e1f7f
removed unwanted and redundant elements, added description text viewe…
canptura Jun 9, 2026
a09bc6b
Merge branch 'main' of https://github.com/PROCEED-Labs/proceed into e…
canptura Jun 9, 2026
4d3cb6c
adapted to new stucture
canptura Jun 9, 2026
fe67182
Merge branch 'main' of https://github.com/PROCEED-Labs/proceed into e…
canptura Jun 10, 2026
27e896c
bugfix: unknow prop given to DOM element
canptura Jun 10, 2026
e261b73
filling some values in the details page
canptura Jun 11, 2026
37992c0
planned delay added
canptura Jun 13, 2026
9fd9631
getProcessVersions server action added, field data added: timing, ini…
canptura Jun 15, 2026
132dfe1
dynamic loading of the textViewer added
canptura Jun 15, 2026
e7d6d26
cost display bugfix
canptura Jun 15, 2026
da49167
proper image display in overview
canptura Jun 15, 2026
10409aa
removed description styling
canptura Jun 16, 2026
eac9feb
Process Manager data added
canptura Jun 19, 2026
c467c87
Merge branch 'main' of https://github.com/PROCEED-Labs/proceed into e…
canptura Jun 19, 2026
84e0bc8
refactoring of component names to resemble the tab labels
canptura Jun 19, 2026
1a580c1
removed TODO text contents
canptura Jun 19, 2026
c3146e0
date formatting added
canptura Jun 19, 2026
8a1e318
event details panel data added
canptura Jun 22, 2026
863d32e
overview event data added
canptura Jun 23, 2026
801a748
code cleanup
canptura Jun 23, 2026
2b38385
previous step added, some styling
canptura Jun 23, 2026
9c5033d
typo
canptura Jun 23, 2026
e7b0a9f
previousStepID, some restyling
canptura Jun 23, 2026
04fc16d
bogfix: wrong instance state on multiple tokens
canptura Jun 25, 2026
ffcf389
instance selector set to hide dummy data
canptura Jun 25, 2026
4e36769
cleaning up imports
canptura Jun 25, 2026
ba87ab6
hiding and commenting of unused element, display of even name in over…
canptura Jun 25, 2026
d54947d
Merge branch 'main' of https://github.com/PROCEED-Labs/proceed into e…
canptura Jun 26, 2026
6e22742
typos and little tweaks
canptura Jun 27, 2026
c789a10
actualperformer using correct data
canptura Jun 27, 2026
4ed4a71
loading from log if possible to skip fetching data
canptura Jun 27, 2026
eab33f3
loading actualOwner from token if possible
canptura Jun 29, 2026
b20a3f4
getResponsiblePartyFromElement added to bpmn-helpers
canptura Jun 29, 2026
b28d86e
typo
canptura Jun 29, 2026
4bc7a11
typo
canptura Jun 29, 2026
20bc817
showing variable text format when type is string
canptura Jun 29, 2026
e14ce60
ran prettier
canptura Jun 29, 2026
89dd501
typo
canptura Jun 29, 2026
1a014e9
useEffect and fetch optimizations
canptura Jun 29, 2026
732778f
error handling and permission check
canptura Jun 29, 2026
36b29a7
optimization
canptura Jun 29, 2026
e4c3dd4
state to memo, little restyling
canptura Jun 29, 2026
93011ca
overview dummy picture style fix
canptura Jun 30, 2026
83474ca
Merge branch 'main' of https://github.com/PROCEED-Labs/proceed into e…
canptura Jun 30, 2026
79422de
fix: merge duplikated file contents
canptura Jun 30, 2026
10520a4
Small cleanup
jjoderis Jun 30, 2026
a59981a
Merge branch 'main' into executions_info-panel-tweaks
jjoderis Jun 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 22 additions & 2 deletions src/helper-modules/bpmn-helper/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,28 @@ declare const _exports: {
area: getters.AreaInfos[];
workingPlace: getters.WorkingPlaceInfos[];
};
getPerformersFromElement(element: object): any[];
getPerformersFromElementById(bpmn: string | object, elementId: string): any[];
getPerformersFromElement(element: object): {
user: string[];
roles: string[];
};
getPerformersFromElementById(
bpmn: string | object,
elementId: string,
): {
user: string[];
roles: string[];
};
getResponsiblePartyFromElement(element: object): {
user: string[];
roles: string[];
};
getResponsiblePartyFromElementId(
bpmn: string | object,
elementId: string,
): {
user: string[];
roles: string[];
};
getPotentialOwnersFromElementById(
elementId: string,
bpmn: string | object,
Expand Down
49 changes: 45 additions & 4 deletions src/helper-modules/bpmn-helper/src/getters.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -747,17 +747,58 @@ export function getLocationsFromElement(element: object): {
* Get the performers for given element
*
* @param {object} element
* @returns {Array} performers given for element
* @returns {{ user: string[], roles: string[] } | undefined} performers given for element
*/
export function getPerformersFromElement(element: object): any[];
export function getPerformersFromElement(element: object):
| {
user: string[];
roles: string[];
}
| undefined;
/**
* Get the performers for given element id
*
* @param {(string|object)} bpmn - the process definition as XML string or BPMN-Moddle Object
* @param {string} elementId the id of the element
* @returns {Array} array with all performers
* @returns {{ user: string[], roles: string[] } | undefined} array with all performers
*/
export function getPerformersFromElementById(bpmn: string | object, elementId: string): any[];
export function getPerformersFromElementById(
bpmn: string | object,
elementId: string,
):
| {
user: string[];
roles: string[];
}
| undefined;
/**
* Get the responsible persons for given element
*
* @param {object} element
* @returns {{ user: string[], roles: string[] } | undefined} responsible persons given for element
*/
export function getResponsiblePartyFromElement(element: object):
| {
user: string[];
roles: string[];
}
| undefined;
/**
* Get the performers for given element id
*
* @param {(string|object)} bpmn - the process definition as XML string or BPMN-Moddle Object
* @param {string} elementId the id of the element
* @returns {{ user: string[], roles: string[] } | undefined} array with all responsible persons
*/
export function getResponsiblePartyFromElementId(
bpmn: string | object,
elementId: string,
):
| {
user: string[];
roles: string[];
}
| undefined;
/**
* Returrns the roles and users that may be owners of a specific element
*
Expand Down
44 changes: 41 additions & 3 deletions src/helper-modules/bpmn-helper/src/getters.js
Original file line number Diff line number Diff line change
Expand Up @@ -856,7 +856,7 @@ async function getVariablesFromElementById(bpmn, elementId) {
*
* @param {(string|object)} bpmn - the process definition as XML string or BPMN-Moddle Object
* @param {string} elementId the id of the element
* @returns {Array} array with all performers
* @returns {{ user: string[], roles: string[] } | undefined} array with all performers
*/
async function getPerformersFromElementById(bpmn, elementId) {
const bpmnObj = typeof bpmn === 'string' ? await toBpmnObject(bpmn) : bpmn;
Expand All @@ -865,6 +865,20 @@ async function getPerformersFromElementById(bpmn, elementId) {
return getPerformersFromElement(element);
}

/**
* Get the performers for given element id
*
* @param {(string|object)} bpmn - the process definition as XML string or BPMN-Moddle Object
* @param {string} elementId the id of the element
* @returns {{ user: string[], roles: string[] } | undefined} array with all responsible persons
*/
async function getResponsiblePartyFromElementId(bpmn, elementId) {
const bpmnObj = typeof bpmn === 'string' ? await toBpmnObject(bpmn) : bpmn;
const element = getElementById(bpmnObj, elementId);

return getResponsiblePartyFromElement(element);
}

/**
* An object containing properties from defined companies
*
Expand Down Expand Up @@ -1169,7 +1183,7 @@ function getResourcesFromElement(element) {
* Get the performers for given element
*
* @param {object} element
* @returns {Array} performers given for element
* @returns {{ user: string[], roles: string[] } | undefined} performers given for element
*/
function getPerformersFromElement(element) {
if (element.resources) {
Expand All @@ -1186,7 +1200,29 @@ function getPerformersFromElement(element) {
return JSON.parse(potentialOwner.resourceAssignmentExpression.expression.body);
}
}
return [];
}

/**
* Get the responsible persons for given element
*
* @param {object} element
* @returns {{ user: string[], roles: string[] } | undefined} responsible persons given for element
*/
function getResponsiblePartyFromElement(element) {
if (element.resources) {
const responsiblePerson = element.resources.find(
(resource) => resource.$type === 'proceed:ResponsibleParty',
);

if (
responsiblePerson &&
responsiblePerson.resourceAssignmentExpression &&
responsiblePerson.resourceAssignmentExpression.expression &&
responsiblePerson.resourceAssignmentExpression.expression.body
) {
return JSON.parse(responsiblePerson.resourceAssignmentExpression.expression.body);
}
}
}

/**
Expand Down Expand Up @@ -1346,6 +1382,8 @@ module.exports = {
getLocationsFromElement,
getPerformersFromElement,
getPerformersFromElementById,
getResponsiblePartyFromElement,
getResponsiblePartyFromElementId,
getPotentialOwnersFromElementById,
parseISODuration,
convertISODurationToMiliseconds,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
.GridContainer {
display: grid;
grid-template-columns: repeat(1, 1fr);
}

.GridCell {
padding: 10px 5px;
border-bottom: 1px solid #ddd;
}

.GridCell:last-child {
border-bottom: none;
}

.GridCell:hover {
background-color: rgba(93, 117, 136, 0.05);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import { ReactNode } from 'react';
import { Col, Row, Tag, Typography } from 'antd';
import { ClockCircleFilled } from '@ant-design/icons';
import styles from './element-activity.module.scss';
import { ElementLike } from 'diagram-js/lib/model/Types';
import { ExtendedInstanceInfo } from '@/lib/data/instance';

type EntryTextProps = React.ComponentProps<typeof Typography.Text>;
const TimetableEntryText = (props: EntryTextProps) => (
<Typography.Text
ellipsis={{ tooltip: { ...props } }}
style={{
wordBreak: 'normal',
}}
{...props}
/>
);

const ClockSymbol = () => (
<ClockCircleFilled style={{ fontSize: '1.1rem', verticalAlign: 'middle' }} />
);

export function ElementActivity({
processId,
element,
instance,
}: {
processId: string;
element?: ElementLike;
instance?: ExtendedInstanceInfo;
}) {
const activityEntries: ReactNode[][] = [];

const activityLog: [string, 'INFO' | 'WARN', string][] = [
Comment thread
jjoderis marked this conversation as resolved.
['09:14:02', 'INFO', 'Process started by m.chen'],
['09:15:02', 'INFO', "ZStep 'Receive Application' started"],
['09:16:13', 'INFO', "Step 'Receive Application' completed"],
['09:18:23', 'INFO', "Gateway 'Application complete?' yes"],
['09:23:13', 'INFO', "Step 'Credit Check' started"],
['09:19:35', 'WARN', 'Credit Bureau response delayed (retry 1/3)'],
['09:25:54', 'INFO', "Step 'Credit Check' completed"],
['09:35:23', 'INFO', "Step 'Manager Approval' started"],
];

const tagStatus: Record<'INFO' | 'WARN', string> = {
INFO: 'processing',
WARN: 'warning',
};

return (
<div
className={styles.GridContainer}
style={{ border: 'solid 1px #ddd', borderRadius: 12, marginBlock: 15 }}
>
{activityLog.map((row, idx_row) => (
<Row key={'activity' + idx_row} className={styles.GridCell}>
<Col flex="70px" style={{ textAlign: 'center' }}>
{row[0]}
</Col>

<Col flex="70px" style={{ textAlign: 'center' }}>
<Tag color={tagStatus[row[1]]}>{row[1]}</Tag>
</Col>

<Col flex="auto" style={{ padding: '0 10px' }}>
{row[2]}
</Col>
</Row>
))}
</div>
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
.ElementText {
word-break: normal;
}

.ElementKeyText {
color: gray;
font-size: 0.8em;
}

.ElementValueText {
font-size: 0.9em;
}

.NewElementSection {
width: 100%;
padding: 0;
margin: 0;

.ElementSectionDivider {
padding: 0;
margin: 0;
}
}

.ElementSectionHeader {
font-weight: 600;
font-size: 0.9em;
}
Loading
Loading