Update WA components.

Commit
4841bbe61465a6e4dadff8f34d22b0b1a885ad68
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
Changed files
src/MyFitnessTracker-Components/MFTHomepage.class.st
index a50b7630..766433de 100644..100644
@@ -1,8 +1,8 @@
1 1 Class {
2 2 #name : 'MFTHomepage',
3 Removed: #superclass : 'WAComponent',
3 Added: #superclass : 'MFTPage',
4 4 #instVars : [
5 Removed: 'workoutPlan'
5 Added: 'workoutRoutine'
6 6 ],
7 7 #category : 'MyFitnessTracker-Components',
8 8 #package : 'MyFitnessTracker-Components'
@@ -12,7 +12,7 @@
12 12 MFTHomepage >> initialize [
13 13
14 14 super initialize.
15 Removed: workoutPlan := MFTRoutine heavyDutyOneIdealRoutine
15 Added: workoutRoutine := MFTRoutine placeholder
16 16 ]
17 17
18 18 { #category : 'rendering' }
@@ -20,33 +20,27 @@
20 20
21 21 html heading
22 22 level: 1;
23 Removed: with: 'Workouts'.
24 Removed: html render: MFTMonthCalendarComponent new.
25 Removed: html heading
26 Removed: level: 2;
27 Removed: with: 'Next workout'.
23 Added: with: 'Routine'.
24 Added: self renderRoutineActivityForTodayOn: html.
25 Added:
28 26 html render:
29 Removed: (MFTWorkoutComponent workout: workoutPlan nextPlannedWorkout).
27 Added: (MFTWorkoutComponent workout: workoutRoutine nextPlannedWorkout).
30 28 html heading
31 29 level: 2;
32 30 with: 'Completed workouts'.
33 Removed: workoutPlan completedWorkouts do: [ :workout |
31 Added: workoutRoutine completedWorkouts do: [ :workout |
34 32 html render: (MFTWorkoutComponent workout: workout) ]
35 33 ]
36 34
37 35 { #category : 'rendering' }
38 Removed: MFTHomepage >> style [
39 Removed: ^ 'color: red;'
40 Removed: ]
36 Added: MFTHomepage >> renderRoutineActivityForTodayOn: html [
41 37
42 Removed: { #category : 'accessing' }
43 Removed: MFTHomepage >> workoutPlan [
44 Removed:
45 Removed: ^ workoutPlan
38 Added: | activity |
39 Added: activity := self session user routine activityToday
46 40 ]
47 41
48 42 { #category : 'accessing' }
49 Removed: MFTHomepage >> workoutPlan: anObject [
43 Added: MFTHomepage >> title [
50 44
51 Removed: workoutPlan := anObject
45 Added: ^ 'Home'
52 46 ]
src/MyFitnessTracker-Components/MFTMonthCalendarComponent.class.st
index ff66e47a..00000000 100644..000000
@@ -1,14 +0,0 @@
1 Removed: Class {
2 Removed: #name : 'MFTMonthCalendarComponent',
3 Removed: #superclass : 'WAMiniCalendar',
4 Removed: #category : 'MyFitnessTracker-Components',
5 Removed: #package : 'MyFitnessTracker-Components'
6 Removed: }
7 Removed:
8 Removed: { #category : 'instance creation' }
9 Removed: MFTMonthCalendarComponent class >> month: aMonth [
10 Removed:
11 Removed: ^ self new
12 Removed: month: aMonth;
13 Removed: yourself
14 Removed: ]
src/MyFitnessTracker-Components/MFTNavbarComponent.class.st
index 00000000..0e70372a 000000..100644
@@ -0,0 +1,38 @@
1 Added: Class {
2 Added: #name : 'MFTNavbarComponent',
3 Added: #superclass : 'WAComponent',
4 Added: #category : 'MyFitnessTracker-Components',
5 Added: #package : 'MyFitnessTracker-Components'
6 Added: }
7 Added:
8 Added: { #category : 'rendering' }
9 Added: MFTNavbarComponent >> renderContentOn: html [
10 Added:
11 Added: | pm |
12 Added: pm := self session pageManager.
13 Added:
14 Added: html navigation
15 Added: style: 'position: fixed;
16 Added: bottom: 2em;
17 Added: left: 0;
18 Added: right: 0';
19 Added: with: [
20 Added: html unorderedList
21 Added: style: 'position: relative;
22 Added: padding: 0.5em;
23 Added: margin: 0 auto;
24 Added: max-width: 61.8vw;
25 Added: display: flex;
26 Added: flex-direction: row;
27 Added: justify-content: space-evenly;
28 Added: border-radius: 1em 1em 0 0;
29 Added: background-color: dimGray;
30 Added: list-style-type: none';
31 Added: with: [
32 Added: pm mainPages collect: [ :page |
33 Added: html listItem: [
34 Added: html anchor
35 Added: style: 'padding: 0.5em; color: white';
36 Added: callback: [ pm setActivePage: page class ];
37 Added: with: page title ] ] ] ]
38 Added: ]
src/MyFitnessTracker-Components/MFTPage.class.st
index 00000000..41f408ed 000000..100644
@@ -0,0 +1,12 @@
1 Added: Class {
2 Added: #name : 'MFTPage',
3 Added: #superclass : 'WAComponent',
4 Added: #category : 'MyFitnessTracker-Components',
5 Added: #package : 'MyFitnessTracker-Components'
6 Added: }
7 Added:
8 Added: { #category : 'accessing' }
9 Added: MFTPage >> title [
10 Added:
11 Added: ^ self subclassResponsibility
12 Added: ]
src/MyFitnessTracker-Components/MFTPageManager.class.st
index 1d778289..05ec4702 100644..100644
@@ -3,8 +3,9 @@
3 3 #superclass : 'Object',
4 4 #instVars : [
5 5 'mainPages',
6 Removed: 'footer',
7 Removed: 'activePage'
6 Added: 'activePage',
7 Added: 'navbar',
8 Added: 'footer'
8 9 ],
9 10 #category : 'MyFitnessTracker-Components',
10 11 #package : 'MyFitnessTracker-Components'
@@ -25,7 +26,9 @@
25 26 { #category : 'as yet unclassified' }
26 27 MFTPageManager >> defaultPublicPages [
27 28
28 Removed: ^ OrderedDictionary newFrom: { (#home -> MFTHomepage new) }
29 Added: ^ {
30 Added: MFTHomepage new.
31 Added: MFTWorkoutsPage new }
29 32 ]
30 33
31 34 { #category : 'accessing' }
@@ -44,7 +47,8 @@
44 47 MFTPageManager >> initialize [
45 48
46 49 mainPages := self defaultPublicPages.
47 Removed: activePage := mainPages at: #home.
50 Added: activePage := mainPages first.
51 Added: navbar := MFTNavbarComponent new.
48 52 footer := MFTFooter new
49 53 ]
50 54
@@ -68,7 +72,21 @@
68 72 ]
69 73
70 74 { #category : 'accessing' }
71 Removed: MFTPageManager >> setActivePageAt: aKey [
75 Added: MFTPageManager >> navbar [
72 76
73 Removed: activePage := mainPages at: aKey
77 Added: ^ navbar
78 Added: ]
79 Added:
80 Added: { #category : 'accessing' }
81 Added: MFTPageManager >> navbar: aNavbar [
82 Added:
83 Added: navbar := aNavbar
84 Added: ]
85 Added:
86 Added: { #category : 'accessing' }
87 Added: MFTPageManager >> setActivePage: aMFTPageClass [
88 Added:
89 Added: activePage := mainPages
90 Added: detect: [ :page | page class = aMFTPageClass ]
91 Added: ifNone: [ MFTHomepage ]
74 92 ]
src/MyFitnessTracker-Components/MFTRootComponent.class.st
index e7880e0f..e7760317 100644..100644
@@ -27,6 +27,7 @@
27 27 MFTRootComponent >> children [
28 28
29 29 ^ {
30 Added: pageManager navbar.
30 31 pageManager activePage.
31 32 pageManager footer }
32 33 ]
@@ -42,6 +43,7 @@
42 43 MFTRootComponent >> renderContentOn: html [
43 44
44 45 html
46 Added: render: pageManager navbar;
45 47 render: pageManager activePage;
46 48 render: pageManager footer
47 49 ]
@@ -54,7 +56,7 @@
54 56 aRoot meta
55 57 name: 'viewport';
56 58 content: 'width=device-width, initial-scale=1'.
57 Removed: aRoot title: 'My Fitness Tracker'.
59 Added: aRoot title: 'MFT ' , self session pageManager activePage title.
58 60 aRoot link
59 61 beShortcutIcon;
60 62 url: MFTFileLibrary / #faviconPng.
src/MyFitnessTracker-Components/MFTWorkoutComponent.class.st
index ea49baad..4e65be84 100644..100644
@@ -20,31 +20,41 @@
20 20 MFTWorkoutComponent >> renderContentOn: html [
21 21
22 22 html div
23 Removed: class: 'workout';
23 Added: style: 'border: 1px solid dimGray;
24 Added: border-radius: 1em;
25 Added: padding: 1em;
26 Added: max-width: 30em';
24 27 with: [
28 Added: self renderWorkoutActionsOn: html.
25 29 html heading
26 30 level: 3;
27 31 with: workout status capitalized.
28 Removed: self setGroupsAsTableOn: html ]
32 Added: self renderWorkoutSetsAsTableOn: html ]
29 33 ]
30 34
31 35 { #category : 'rendering' }
32 Removed: MFTWorkoutComponent >> setGroupsAsTableOn: html [
36 Added: MFTWorkoutComponent >> renderWorkoutActionsOn: html [
33 37
38 Added: html anchor
39 Added: callback: [ self call: (MFTWorkoutEditComponent workout: workout) ];
40 Added: with: 'Edit'
41 Added: ]
42 Added:
43 Added: { #category : 'rendering' }
44 Added: MFTWorkoutComponent >> renderWorkoutSetsAsTableOn: html [
45 Added:
34 46 html table: [
35 47 html tableHead: [
36 48 html
37 Removed: tableHeading: 'Group';
38 49 tableHeading: 'Set';
39 50 tableHeading: 'Exercise';
40 51 tableHeading: 'Reps';
41 52 tableHeading: 'Load' ].
42 Removed: workout setGroups collect: [ :setGroup |
43 Removed: setGroup sets collect: [ :set |
53 Added: workout setGroups collectWithIndex: [ :setGroup :i |
54 Added: setGroup sets collectWithIndex: [ :set :j |
44 55 html tableRow: [
45 Removed: html tableData: (workout setGroups indexOf: setGroup).
46 56 html
47 Removed: tableData: (Character value: 96 + (setGroup sets indexOf: set));
57 Added: tableData: i asString , (Character alphabet at: j) asString;
48 58 tableData: set exercise;
49 59 tableData: set reps;
50 60 tableData: set load ] ] ] ]
src/MyFitnessTracker-Components/MFTWorkoutEditComponent.class.st
index 00000000..968f4e1f 000000..100644
@@ -0,0 +1,35 @@
1 Added: Class {
2 Added: #name : 'MFTWorkoutEditComponent',
3 Added: #superclass : 'WAComponent',
4 Added: #instVars : [
5 Added: 'workout'
6 Added: ],
7 Added: #category : 'MyFitnessTracker-Components',
8 Added: #package : 'MyFitnessTracker-Components'
9 Added: }
10 Added:
11 Added: { #category : 'accessing' }
12 Added: MFTWorkoutEditComponent class >> workout: aMFTWorkout [
13 Added:
14 Added: ^ self new
15 Added: workout: aMFTWorkout;
16 Added: yourself
17 Added: ]
18 Added:
19 Added: { #category : 'rendering' }
20 Added: MFTWorkoutEditComponent >> renderContentOn: html [
21 Added:
22 Added: html render: workout setGroups
23 Added: ]
24 Added:
25 Added: { #category : 'accessing' }
26 Added: MFTWorkoutEditComponent >> workout [
27 Added:
28 Added: ^ workout
29 Added: ]
30 Added:
31 Added: { #category : 'accessing' }
32 Added: MFTWorkoutEditComponent >> workout: aMFTWorkout [
33 Added:
34 Added: workout := aMFTWorkout
35 Added: ]
src/MyFitnessTracker-Components/MFTWorkoutsPage.class.st
index 00000000..6153cd18 000000..100644
@@ -0,0 +1,12 @@
1 Added: Class {
2 Added: #name : 'MFTWorkoutsPage',
3 Added: #superclass : 'MFTPage',
4 Added: #category : 'MyFitnessTracker-Components',
5 Added: #package : 'MyFitnessTracker-Components'
6 Added: }
7 Added:
8 Added: { #category : 'accessing' }
9 Added: MFTWorkoutsPage >> title [
10 Added:
11 Added: ^ 'Workouts'
12 Added: ]