From 884b075131262bfda56af3918b23ee9bbb254316 Mon Sep 17 00:00:00 2001 From: Tudor Girba Date: Wed, 17 Jul 2024 12:17:53 +0200 Subject: [PATCH] add wardley map model group with support for node profiles feenkcom/gtoolkit#3904 --- .../GtWardleyMapModelGroup.class.st | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/GToolkit-WardleyMap/GtWardleyMapModelGroup.class.st diff --git a/src/GToolkit-WardleyMap/GtWardleyMapModelGroup.class.st b/src/GToolkit-WardleyMap/GtWardleyMapModelGroup.class.st new file mode 100644 index 00000000..a97942f1 --- /dev/null +++ b/src/GToolkit-WardleyMap/GtWardleyMapModelGroup.class.st @@ -0,0 +1,49 @@ +Class { + #name : #GtWardleyMapModelGroup, + #superclass : #Object, + #traits : 'TGtGroupWithItems', + #classTraits : 'TGtGroupWithItems classTrait', + #category : #'GToolkit-WardleyMap' +} + +{ #category : #accessing } +GtWardleyMapModelGroup >> gtItemsFor: aView [ + + ^ aView columnedList + title: 'Items'; + items: [ self items ]; + column: 'Title' text: [:each | each title]; + column: 'Nodes' text: [:each | each nodes size ]; + column: 'Edges' text: [:each | each edges size ] +] + +{ #category : #accessing } +GtWardleyMapModelGroup >> gtNodeProfilesFor: aView [ + + | elements | + ^ aView columnedList + title: 'Node profiles'; + items: [ ((self items flatCollect: [ :each | each nodes ]) + groupedBy: [ :each | each label ]) associations + sorted: [ :a :b | a key < b key ] ]; + column: 'Label' text: [ :each | each key ]; + column: 'Positions' + text: [ :each | + ', ' + join: (each value collect: [ :node | node evolution printShowingDecimalPlaces: 2 ]) ]; + column: 'Profile' + stencil: [ :association | + elements := association value + collect: [ :aNode | + BlElement new + size: 10 @ 10; + geometry: BlCircleGeometry new; + background: (Color black alpha: 0.2); + relocate: (aNode evolution * 100 + 5) @ 5 ]. + BlElement new + size: 110 @ 20; + geometry: (BlRoundedRectangleGeometry cornerRadius: 10); + border: Color veryVeryLightGray; + addChildren: elements ] + width: 120 +]