From 89830af45a405bd4ce0b893b9841dd871e1ea71b Mon Sep 17 00:00:00 2001 From: David Joy Date: Tue, 14 Jan 2020 17:11:03 -0500 Subject: [PATCH] Refactoring to use containers and components --- .../0002-courseware-component-hierarchy.md | 16 ++ src/index.jsx | 6 +- src/learning-sequence/CourseContainer.jsx | 50 +++++ .../LearningSequencePage.jsx | 55 +++--- src/learning-sequence/course/Course.jsx | 77 ++++++++ .../{ => course}/CourseBreadcrumbs.jsx | 30 ++- .../course/SequenceContainer.jsx | 107 +++++++++++ .../{sub-section/data => course}/api.js | 12 +- .../{sub-section/data => course}/hooks.js | 36 ++-- src/learning-sequence/data/api.js | 7 + src/learning-sequence/data/hooks.js | 75 ++++---- src/learning-sequence/data/utils.js | 8 +- .../sequence/CompleteIcon.jsx | 7 + src/learning-sequence/sequence/Sequence.jsx | 173 ++++++++++++++++++ .../sequence/SequenceNavigation.jsx | 35 ++++ src/learning-sequence/sequence/Unit.jsx | 22 +++ src/learning-sequence/sequence/UnitButton.jsx | 30 +++ src/learning-sequence/sequence/UnitIcon.jsx | 35 ++++ src/learning-sequence/sequence/api.js | 50 +++++ .../content-lock/ContentLock.jsx | 21 +-- .../content-lock/index.js | 0 .../content-lock/messages.js | 0 .../{sub-section => sequence}/messages.js | 0 .../sub-section/SequenceMetadataContext.jsx | 5 + .../sub-section/SubSection.jsx | 26 +-- .../sub-section/SubSectionMetadataContext.jsx | 5 - .../sub-section/SubSectionNavigation.jsx | 18 +- 27 files changed, 754 insertions(+), 152 deletions(-) create mode 100644 docs/decisions/0002-courseware-component-hierarchy.md create mode 100644 src/learning-sequence/CourseContainer.jsx create mode 100644 src/learning-sequence/course/Course.jsx rename src/learning-sequence/{ => course}/CourseBreadcrumbs.jsx (62%) create mode 100644 src/learning-sequence/course/SequenceContainer.jsx rename src/learning-sequence/{sub-section/data => course}/api.js (60%) rename src/learning-sequence/{sub-section/data => course}/hooks.js (58%) create mode 100644 src/learning-sequence/sequence/CompleteIcon.jsx create mode 100644 src/learning-sequence/sequence/Sequence.jsx create mode 100644 src/learning-sequence/sequence/SequenceNavigation.jsx create mode 100644 src/learning-sequence/sequence/Unit.jsx create mode 100644 src/learning-sequence/sequence/UnitButton.jsx create mode 100644 src/learning-sequence/sequence/UnitIcon.jsx create mode 100644 src/learning-sequence/sequence/api.js rename src/learning-sequence/{sub-section => sequence}/content-lock/ContentLock.jsx (59%) rename src/learning-sequence/{sub-section => sequence}/content-lock/index.js (100%) rename src/learning-sequence/{sub-section => sequence}/content-lock/messages.js (100%) rename src/learning-sequence/{sub-section => sequence}/messages.js (100%) create mode 100644 src/learning-sequence/sub-section/SequenceMetadataContext.jsx delete mode 100644 src/learning-sequence/sub-section/SubSectionMetadataContext.jsx diff --git a/docs/decisions/0002-courseware-component-hierarchy.md b/docs/decisions/0002-courseware-component-hierarchy.md new file mode 100644 index 00000000..69cd2734 --- /dev/null +++ b/docs/decisions/0002-courseware-component-hierarchy.md @@ -0,0 +1,16 @@ +# Courseware app structure + +Currently we have hierarchical courses - they contain sections, subsections, units, and components. + +We need data to power each level. + +We've made decisions that we're going to re-fetch data at the subsection level under the assumption that + +At any given level, you have the following structure: + +Parent + Container + Child + Context + + The container belongs to the parent module, and is an opportunity for the parent to decide to load more data necessary to load the Child. If the parent has what it needs, it may not use a Container. The Child has an props-only interface. It does _not_ use contexts or redux from the Parent. The child may decide to use a Context internally if that's convenient, but that's a decision independent of anything above the Child in the hierarchy. diff --git a/src/index.jsx b/src/index.jsx index c6a11148..f9fdda3f 100755 --- a/src/index.jsx +++ b/src/index.jsx @@ -31,9 +31,9 @@ subscribe(APP_READY, () => { path="/" render={() => Visit Demo Course} /> - - - + + +