-
Notifications
You must be signed in to change notification settings - Fork 709
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Many hybrid learning things #8548
Many hybrid learning things #8548
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you, @marcellamaki
I haven't managed to go through all files yet but am posting what I've noticed so far. I'll continue with the next review batch later. If @nucleogenesis gets to finishing the review sooner than me, feel free to proceed with merging after addressing important feedback.
Firstly, can you run IE11 on your machine, in VM for example? Maybe @jacob and @devon will have some general advice, I don't have any. I usually just try to at least briefly preview new components there and if I need to fix something, it usually requires lots of googling for known IE problems. I am glad to help with that, however would need to hear in more detail about particular issues that you have problems with. If it's nothing blocking, we can also open follow-up issues for this. |
Hi @marcellamaki, today I had some time to test mainly the Browse channel pages and here are the findings as compared to Figma:
Other issues: |
Related to IE11, cross-posting from Slack:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that most of my notes here shouldn't be blocking as long as their tracked in a follow-up issue and handled soon.
The only thing important before release I think is the places where you used this.windowWidth
from KResponsiveWindowMixin
- there is a stern warning in the mixin not to do that.
The rest are notes about code style/conventions and such for the most part and can be tackled later on in a follow-up issue.
kolibri/plugins/learn/assets/src/views/CategorySearchModal/CategorySearchModalGrid.vue
Outdated
Show resolved
Hide resolved
kolibri/plugins/learn/assets/src/views/CategorySearchModal/CategorySearchModalGrid.vue
Outdated
Show resolved
Hide resolved
kolibri/plugins/learn/assets/src/views/CategorySearchModal/CategorySearchModalGrid.vue
Outdated
Show resolved
Hide resolved
kolibri/plugins/learn/assets/src/views/CategorySearchModal/CategorySearchModalGrid.vue
Show resolved
Hide resolved
<HybridLearningContentCardListView | ||
v-for="content in contents" | ||
v-else | ||
:key="content.id" | ||
:contentNode="content" | ||
:channelThumbnail="content.channel_thumbnail" | ||
:channelTitle="content.channel_title" | ||
:description="content.description" | ||
:activityLength="content.activity_length" | ||
:currentPage="currentPage" | ||
class="grid-item" | ||
:isMobile="windowIsSmall" | ||
:title="content.title" | ||
:thumbnail="content.thumbnail" | ||
:kind="content.kind" | ||
:isLeaf="content.is_leaf" | ||
:progress="content.progress_fraction || 0" | ||
:numCoachContents="content.num_coach_contents" | ||
:link="genContentLink(content.id, content.is_leaf)" | ||
:contentId="content.content_id" | ||
:copiesCount="content.copies_count" | ||
:footerIcons="footerIcons" | ||
:createdDate="content.bookmark ? content.bookmark.created : null" | ||
@openCopiesModal="openCopiesModal" | ||
@removeFromBookmarks="removeFromBookmarks(content, contents)" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are a ton of props here and a lot of them are just extractions of values from content
. If you instead just pass one prop :content="content"
to the HybridLearningContentCardListView
component, then you'll save a lot of code in that component by removing all of the prop definitions and in every component using it as well. The goes for the HybridLearning(Lesson|Content)Card
components as well. In those components you can then just reference content
wherever you need it's properties.
I don't think that this is blocking as it's mostly stylistic for now - and I'd be happy to write a follow-up issue for this as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I actually was wondering about this as I was doing it -- if there were any downsides to just passing the content object and then using computed props (i.e. performance considerations - either good or bad) so thanks for answering that this is a better approach, without me even asking! :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should definitely do the object based approach - the main caveat, thinking more generally, of passing objects is the lack of specification of what attributes that object should have. Ideally, we should have a companion function to normalizeContentNode
- validateContentNode
that would assert the presence of all relevant attributes on the content node object, that can then be used for the validator on the prop.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Follow up here #8564
kolibri/plugins/learn/assets/src/views/HybridLearningCardGrid.vue
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looking great!
kolibri/plugins/learn/assets/src/views/CategorySearchModal/CategorySearchModalGrid.vue
Outdated
Show resolved
Hide resolved
kolibri/plugins/learn/assets/src/views/CategorySearchModal/CategorySearchModalGrid.vue
Outdated
Show resolved
Hide resolved
kolibri/plugins/learn/assets/src/views/HybridLearningContentCardListView.vue
Outdated
Show resolved
Hide resolved
// else { | ||
// ContentNodeResource.fetchCollection({ getParams }).then(data => { | ||
// this.labels = data.labels; | ||
// }); | ||
// } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
more dead code
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nothing that I see as blocking - but definitely some things we can follow up on.
kolibri/plugins/learn/assets/src/views/CategorySearchModal/CategorySearchModalOptions.vue
Show resolved
Hide resolved
kolibri/plugins/learn/assets/src/views/CategorySearchModal/CategorySearchModalOptions.vue
Show resolved
Hide resolved
kolibri/plugins/learn/assets/src/views/CategorySearchModal/index.vue
Outdated
Show resolved
Hide resolved
Hi @marcellamaki these are the additional issues I was able to identify after today's round of testing on all the major workflows and both me and Radina don't see as blockers: |
…cards, rather than modify existing components, to prevent regressions
…t content bookmark status in LearningActivityBar
…instead of ContentCardGroupGrid
794c023
to
c670e37
Compare
…longer being used" This reverts commit e01c6c2.
e01c6c2
to
6001c09
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All comments resolved - manual QA passed. Let's merge this and cross our fingers!
Summary
Due to having many open PRs that have been built on top of each other, I have created a new branch that has merged or rebased that work, and then done a polish. This PR covers quite a few front end issues for the hybrid learning work, but hopefully it is in a state where reviewing it together, while extensive, does make testing and QA a bit easier.
There are still a few bugs that are not fixed, but for the most part, the core functionality and mobile responsiveness should be in place. 🤞
References
Updated Lessons Cards on Class Page
Library Page
Channel Topic Browsing
Bookmarks Page
Reviewer guidance
There is quite a lot of code in this PR, and I think all of it deserves extra testing. Key points to test for (drawn from other PRs).
Across ALL pages
On Library, and Channel and topics browsing
Filtering and keyword search as implemented by @rtibbles still working 😄. On Library page, filter for all channels that exist on device. On channel page, search results should be limited to the current channel:
On Bookmarks page
General notes and comments
@pcenov has already pointed out that there need to be some improvements made on IE11, and I haven't forgotten this, but I haven't implemented it just yet. Would welcome any feedback (either in the PR, or on Slack or in a call) from @MisRob @nucleogenesis or @indirectlylit about how I can make that experience better.
Another particular area that needs some "look and feel" improvements is the Topics browsing generally... jankiness from the sticky sidebar which I am trying to calculate with computed props. Would love an idea about how to do that differently/correctly/better.
The pages themselves are a bit clunky - I had great aspirations to refactor into some smaller sub components, but for time reasons, I've just tried to add a few comments to layout what is happening overall, and which sections of the file are responsible for what on the Library and Topics pages, which are quite long. If there are any other areas that you think comments would be a helpful addition, please let me know and I will be happy to add before merging - it would be a low lift, and I think quite worth it.
Testing checklist
PR process
Reviewer checklist
yarn
andpip
)