diff --git a/src/app/services/shared/flow-node-mapping.spec.ts b/src/app/services/shared/flow-node-mapping.spec.ts index e263650..462c7ce 100644 --- a/src/app/services/shared/flow-node-mapping.spec.ts +++ b/src/app/services/shared/flow-node-mapping.spec.ts @@ -148,6 +148,7 @@ describe('toNodeCapabilities', () => { it('reads that a type routes exclusively, which is what lets it guard a loop', () => { expect(toNodeCapabilities({ visualRole: 'DECISION', routesExclusively: true }).routesExclusively).toBe(true); expect(toNodeCapabilities({ visualRole: 'RESOURCE' }).visualRole).toBe('RESOURCE'); + expect(toNodeCapabilities({ visualRole: 'BRANCH_REJOIN' }).visualRole).toBe('MERGE'); }); it('falls back per-field for missing booleans and an unknown visualRole', () => { diff --git a/src/app/services/shared/flow-node-mapping.ts b/src/app/services/shared/flow-node-mapping.ts index 940cd53..062ca4e 100644 --- a/src/app/services/shared/flow-node-mapping.ts +++ b/src/app/services/shared/flow-node-mapping.ts @@ -96,7 +96,9 @@ export function toPorts( const NODE_VISUAL_ROLES: NodeVisualRole[] = ['ACTIVITY', 'DECISION', 'MERGE', 'END', 'CONTAINER', 'RESOURCE']; function toVisualRole(value: unknown): NodeVisualRole { - const candidate = typeof value === 'string' ? value.toUpperCase() : ''; + const raw = typeof value === 'string' ? value.toUpperCase() : ''; + // The server calls a rejoin of branches BRANCH_REJOIN; the web has always called it MERGE. + const candidate = raw === 'BRANCH_REJOIN' ? 'MERGE' : raw; return (NODE_VISUAL_ROLES as string[]).includes(candidate) ? candidate as NodeVisualRole : DEFAULT_NODE_CAPABILITIES.visualRole; diff --git a/src/app/shared/blocks-list/blocks-list.css b/src/app/shared/blocks-list/blocks-list.css index f1cf0e5..1fed6ac 100644 --- a/src/app/shared/blocks-list/blocks-list.css +++ b/src/app/shared/blocks-list/blocks-list.css @@ -107,6 +107,19 @@ color: #0ea5e9; } +.blocks-list-card-kind--resource { + color: #0f766e; +} + +.blocks-list-card-kind--end { + color: #475569; +} + +.blocks-list-card-kind--decision, +.blocks-list-card-kind--merge { + color: #6366f1; +} + .blocks-list-card-kind--container { color: #7c3aed; } diff --git a/src/app/shared/blocks-list/blocks-list.html b/src/app/shared/blocks-list/blocks-list.html index 6eabb00..ffd0baa 100644 --- a/src/app/shared/blocks-list/blocks-list.html +++ b/src/app/shared/blocks-list/blocks-list.html @@ -33,16 +33,14 @@ (dragstart)="onDragStart($event, block)">
+ @let kind = kindOf(block); + [class]="'blocks-list-card-kind blocks-list-card-kind--' + kind.modifier" + [fontIcon]="kind.icon">
{{ block.type }}
-
- {{ block.userInteractive ? 'Human step' : 'Automated step' }} -
+
{{ kind.label }}