Skip to content

Commit

Permalink
[feenkcom/gtoolkit#3596] added pattern map with categories
Browse files Browse the repository at this point in the history
  • Loading branch information
Oscar Nierstrasz committed Oct 30, 2024
1 parent 278aa91 commit 581e79c
Show file tree
Hide file tree
Showing 2 changed files with 193 additions and 103 deletions.
5 changes: 5 additions & 0 deletions src/GToolkit-Mondrian/LePageMondrianMap.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,11 @@ LePageMondrianMap >> gtMapFor: aView [
view: #gtLiveFor:
]

{ #category : #testing }
LePageMondrianMap >> missingPages [
^ self pageTitles reject: [ :title | self database hasPageNamed: title ]
]

{ #category : #example }
LePageMondrianMap >> pageCategoriesAndTitles [
^ pageCategoriesAndTitles
Expand Down
291 changes: 188 additions & 103 deletions src/GToolkit-Mondrian/LePageMondrianMapExamples.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -9,29 +9,32 @@ LePageMondrianMapExamples >> oldPatternMap [
"The original map of patterns with default layout."

<gtExample>
^ LePageMondrianMap new
pageTitles: {'Moldable Object'.
'Moldable Data Wrapper'.
'Project Diary'.
'Contextual Playground'.
'Example Object'.
'Custom View'.
'Custom Action'.
'Simple View'.
'Moldable Collection Wrapper'};
database: LeDatabase gtBook;
connections: {'Moldable Object'
-> {'Moldable Data Wrapper'.
'Project Diary'.
'Contextual Playground'}.
'Project Diary' -> {'Example Object'}.
'Contextual Playground'
-> {'Custom View'.
'Custom Action'.
'Example Object'}.
'Custom View'
-> {'Simple View'.
'Moldable Collection Wrapper'}}
| map |
map := LePageMondrianMap new
pageTitles: {'Moldable Object'.
'Moldable Data Wrapper'.
'Project Diary'.
'Contextual Playground'.
'Example Object'.
'Custom View'.
'Custom Action'.
'Simple View'.
'Moldable Collection Wrapper'};
database: LeDatabase gtBook;
connections: {'Moldable Object'
-> {'Moldable Data Wrapper'.
'Project Diary'.
'Contextual Playground'}.
'Project Diary' -> {'Example Object'}.
'Contextual Playground'
-> {'Custom View'.
'Custom Action'.
'Example Object'}.
'Custom View'
-> {'Simple View'.
'Moldable Collection Wrapper'}}.
self assert: map missingPages isEmpty.
^ map
]

{ #category : #accessing }
Expand All @@ -41,115 +44,197 @@ LePageMondrianMapExamples >> oldPatternMapwithExplicitPositions [
(self root children collect: #position)"

<gtExample>
^ self oldPatternMap
explicitPositions: {184.9584903717041 @ 245.31882731119794.
372.0 @ 243.91666666666669.
399.2699890136719 @ 297.9166666666667.
163.60298538208008 @ 351.9166666666667.
392.554988861084 @ 354.51450602213544.
195.3509864807129 @ 420.51450602213544.
353.4189872741699 @ 420.51450602213544.
139.4889907836914 @ 483.1123453776042.
241.65098571777344 @ 483.1123453776042.
297.3524875640869 @ 259.2440187484011.
297.3524875640869 @ 274.55073920388384.
241.26675975939287 @ 274.9166666666667.
446.2144626644011 @ 327.51450602213544.
242.00638569915492 @ 381.5145060221354.
277.1290380863739 @ 381.51450602213544.
320.310977935791 @ 367.70853786158517.
197.80934387551858 @ 450.11234537760424.
257.7372079134252 @ 450.11234537760424}
| map |
map := self oldPatternMap
explicitPositions: {184.9584903717041 @ 245.31882731119794.
372.0 @ 243.91666666666669.
399.2699890136719 @ 297.9166666666667.
163.60298538208008 @ 351.9166666666667.
392.554988861084 @ 354.51450602213544.
195.3509864807129 @ 420.51450602213544.
353.4189872741699 @ 420.51450602213544.
139.4889907836914 @ 483.1123453776042.
241.65098571777344 @ 483.1123453776042.
297.3524875640869 @ 259.2440187484011.
297.3524875640869 @ 274.55073920388384.
241.26675975939287 @ 274.9166666666667.
446.2144626644011 @ 327.51450602213544.
242.00638569915492 @ 381.5145060221354.
277.1290380863739 @ 381.51450602213544.
320.310977935791 @ 367.70853786158517.
197.80934387551858 @ 450.11234537760424.
257.7372079134252 @ 450.11234537760424}.
self assert: map missingPages isEmpty.
^ map
]

{ #category : #accessing }
LePageMondrianMapExamples >> patternMap [
<gtExample>
^ self patternMapDefaultLayout
explicitPositions: self patternMapExplicitPositions;
yourself
| map |
map := self patternMapDefaultLayout
explicitPositions: self patternMapExplicitPositions;
yourself.
self assert: map missingPages isEmpty.
^ map
]

{ #category : #accessing }
LePageMondrianMapExamples >> patternMapDefaultLayout [
"Revised pattern map with patterns from the EuroPLoP submission.
This is the default layout."

<gtExample>
^ LePageMondrianMap new
pageTitles: {'Explainable System'.
'Moldable Tool'.
'Contextual Playground'.
'Custom View'.
'Custom Search'.
'Custom Action'.
'Moldable Object'.
'Example Object'.
'Moldable Data Wrapper'.
'Moldable Collection Wrapper'.
'Project Diary'.
'Tooling Buildup'.
'Blind Spot'.
'Simple View'.
'Throwaway Analysis Tool'};
database: LeDatabase gtBook;
connections: {'Explainable System'
-> {'Moldable Tool'.
'Tooling Buildup'.
'Blind Spot'.
'Project Diary'}.
'Moldable Tool' -> {'Moldable Object'}.
'Tooling Buildup' -> {'Moldable Object'}.
'Blind Spot' -> {'Moldable Object'}.
'Project Diary'
-> {'Moldable Object'.
'Example Object'}.
'Moldable Object'
-> {'Example Object'.
'Contextual Playground'.
'Moldable Data Wrapper'}.
'Example Object' -> {'Moldable Object'}.
'Moldable Data Wrapper' -> {'Moldable Object'}.
'Contextual Playground'
-> {'Custom View'.
'Custom Search'.
'Custom Action'}.
'Custom View' -> {'Simple View'}.
'Custom Search' -> {'Moldable Collection Wrapper'}.
'Throwaway Analysis Tool' -> {'Contextual Playground'}};
yourself
| map |
map := LePageMondrianMap new
pageTitles: {'Explainable System'.
'Moldable Tool'.
'Contextual Playground'.
'Custom View'.
'Custom Search'.
'Custom Action'.
'Moldable Object'.
'Example Object'.
'Moldable Data Wrapper'.
'Moldable Collection Wrapper'.
'Project Diary'.
'Tooling Buildup'.
'Blind Spot'.
'Simple View'.
'Throwaway Analysis Tool'};
database: LeDatabase gtBook;
connections: {'Explainable System'
-> {'Moldable Tool'.
'Tooling Buildup'.
'Blind Spot'.
'Project Diary'}.
'Moldable Tool' -> {'Moldable Object'}.
'Tooling Buildup' -> {'Moldable Object'}.
'Blind Spot' -> {'Moldable Object'}.
'Project Diary'
-> {'Moldable Object'.
'Example Object'}.
'Moldable Object'
-> {'Example Object'.
'Contextual Playground'.
'Moldable Data Wrapper'}.
'Example Object' -> {'Moldable Object'}.
'Moldable Data Wrapper' -> {'Moldable Object'}.
'Contextual Playground'
-> {'Custom View'.
'Custom Search'.
'Custom Action'}.
'Custom View' -> {'Simple View'}.
'Custom Search' -> {'Moldable Collection Wrapper'}.
'Throwaway Analysis Tool' -> {'Contextual Playground'}};
yourself.
self assert: map missingPages isEmpty.
^ map
]

{ #category : #accessing }
LePageMondrianMapExamples >> patternMapExplicitPositions [
^ {([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected])}
]

{ #category : #accessing }
LePageMondrianMapExamples >> patternMapWithCategories [
"Pattern map from EuroPLoP 24 paper, with categories and Composed Narrative"
<gtExample>
| map |
map := LePageMondrianMap new
pageCategoriesAndTitles: {{''. 'Explainable System'}.
{'(T) '. 'Moldable Tool'}.
{'(T) '. 'Contextual Playground'}.
{'(T) '. 'Custom View'}.
{'(T) '. 'Custom Search'}.
{'(T) '. 'Custom Action'}.
{'(T) '. 'Composed Narrative'}.
{'(M) '. 'Moldable Object'}.
{'(M) '. 'Example Object'}.
{'(M) '. 'Moldable Data Wrapper'}.
{'(M) '. 'Moldable Collection Wrapper'}.
{'(P) '. 'Project Diary'}.
{'(P) '. 'Tooling Buildup'}.
{'(P) '. 'Blind Spot'}.
{'(P) '. 'Simple View'}.
{'(P) '. 'Throwaway Analysis Tool'}};
database: LeDatabase gtBook;
connectionsWithCategories:
{{''. 'Explainable System'} -> {
{'(T) '. 'Moldable Tool'}.
{'(P) '. 'Tooling Buildup'}.
{'(P) '. 'Blind Spot'}.
{'(P) '. 'Project Diary'}}.
{'(T) '. 'Moldable Tool'} -> {{'(M) '. 'Moldable Object'}}.
{'(P) '. 'Tooling Buildup'} -> {{'(M) '. 'Moldable Object'}}.
{'(P) '. 'Blind Spot'} -> {
{'(T) '. 'Composed Narrative'}.
{'(M) '. 'Moldable Object'}}.
{'(T) '. 'Composed Narrative'} -> {
{'(T) '. 'Moldable Tool'}.
{'(M) '. 'Moldable Object'}}.
{'(P) '. 'Project Diary'} -> {
{'(T) '. 'Composed Narrative'}.
{'(M) '. 'Example Object'}}.
{'(M) '. 'Moldable Object'} -> {
{'(M) '. 'Example Object'}.
{'(T) '. 'Contextual Playground'}.
{'(M) '. 'Moldable Data Wrapper'}}.
{'(M) '. 'Example Object'} -> {{'(M) '. 'Moldable Object'}}.
{'(M) '. 'Moldable Data Wrapper'} -> {{'(M) '. 'Moldable Object'}}.
{'(T) '. 'Contextual Playground'} -> {
{'(T) '. 'Custom View'}.
{'(T) '. 'Custom Search'}.
{'(T) '. 'Custom Action'}}.
{'(T) '. 'Custom View'} -> {{'(P) '. 'Simple View'}}.
{'(T) '. 'Custom Search'} -> {{'(M) '. 'Moldable Collection Wrapper'}}.
{'(P) '. 'Throwaway Analysis Tool'} -> {{'(T) '. 'Contextual Playground'}}};
yourself.
self assert: map missingPages isEmpty.
^ map explicitPositions: self patternMapWithCategoriesExplicitPositions;
yourself
]

{ #category : #accessing }
LePageMondrianMapExamples >> patternMapWithCategoriesExplicitPositions [
^ {([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected]). ([email protected])}
]

{ #category : #accessing }
LePageMondrianMapExamples >> simpleMap [
"A simple map with default layout."

<gtExample>
^ LePageMondrianMap new
pageTitles: {'Glamorous Toolkit'.
'About this book'.
'Get started'};
database: LeDatabase gtBook;
connections: {'Glamorous Toolkit'
-> {'About this book'.
'Get started'}}
| map |
map := LePageMondrianMap new
pageTitles: {'Glamorous Toolkit'.
'About this book'.
'Get started'};
database: LeDatabase gtBook;
connections: {'Glamorous Toolkit'
-> {'About this book'.
'Get started'}}.
self assert: map missingPages isEmpty.
^ map
]

{ #category : #accessing }
LePageMondrianMapExamples >> simpleMapWithCategories [
<gtExample>
^ LePageMondrianMap new
pageCategoriesAndTitles: {{''. 'Explainable System'}.
{'(T) '. 'Moldable Tool'}.
{'(P) '. 'Tooling Buildup'}};
database: LeDatabase gtBook;
connectionsWithCategories: {{''.'Explainable System'}
-> {{'(T) '.'Moldable Tool'}.
{'(P) '.'Tooling Buildup'}}}
| map |
map := LePageMondrianMap new
pageCategoriesAndTitles:
{{''. 'Explainable System'}.
{'(T) '. 'Moldable Tool'}.
{'(P) '. 'Tooling Buildup'}};
database: LeDatabase gtBook;
connectionsWithCategories: {
{''. 'Explainable System'} -> {
{'(T) '. 'Moldable Tool'}.
{'(P) '. 'Tooling Buildup'}}}.
self assert: map missingPages isEmpty.
^ map
]

{ #category : #accessing }
Expand Down

0 comments on commit 581e79c

Please sign in to comment.