Skip to content
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

Fix two parallel content nodes editing logic #4464

Conversation

AlexVelezLl
Copy link
Member

@AlexVelezLl AlexVelezLl commented Mar 1, 2024

Summary

Description of the change(s) you made

Consolidate Boolean Maps editing logic from Edit Modal and Quick Edit Modals.

This PR removes from the EditBooleanMapModal component the responsibility for rendering data inputs and object manipulation of selected values. And instead let EditBooleanMapModal receive an inputComponent via props that will take care of that logic. Leaving EditBooleanMapModal with the shared logic for boolean maps fields of parsing the input data that inputComponent will receive, and saving the data once the user clicks the save button.

With this we achieve that inputComponent is dynamic, and that the EditBooleanMapModal can receive the same input components that are used in the general EditModal component:

  • CategoryOptions
  • LearningActivityOptions
  • LevelsOptions
  • ResourcesNeededOptions

Components that were moved to the shared/views/contentNodeFields folder so that they can be used from both places, the general EditModal and the new quick edit modals. And these components were modified to support an expanded prop to render an expanded view using a list of checkboxes instead of a VSelect if this prop is true.

Manual verification steps performed

I have tested manually that everything continues working in the Quick Edit Modals, and in the general Edit Modal.


Reviewer guidance

How can a reviewer test these changes?

You can go to edit the following fields either in the edit all details modal, or in the specific quick edit modals:

  • categories
  • levels
  • resources needed
  • learning activities

References

Closes #4415


Contributor's Checklist

PR process:

  • If this is an important user-facing change, PR or related issue the CHANGELOG label been added to this PR. Note: items with this label will be added to the CHANGELOG at a later time
  • If this includes an internal dependency change, a link to the diff is provided
  • The docs label has been added if this introduces a change that needs to be updated in the user docs?
  • If any Python requirements have changed, the updated requirements.txt files also included in this PR
  • Opportunities for using Google Analytics here are noted
  • Migrations are safe for a large db

Studio-specifc:

  • All user-facing strings are translated properly
  • The notranslate class been added to elements that shouldn't be translated by Google Chrome's automatic translation feature (e.g. icons, user-generated text)
  • All UI components are LTR and RTL compliant
  • Views are organized into pages, components, and layouts directories as described in the docs
  • Users' storage used is recalculated properly on any changes to main tree files
  • If there new ways this uses user data that needs to be factored into our Privacy Policy, it has been noted.

Testing:

  • Code is clean and well-commented
  • Contributor has fully tested the PR manually
  • If there are any front-end changes, before/after screenshots are included
  • Critical user journeys are covered by Gherkin stories
  • Any new interactions have been added to the QA Sheet
  • Critical and brittle code paths are covered by unit tests

Reviewer's Checklist

This section is for reviewers to fill out.

  • Automated test coverage is satisfactory
  • PR is fully functional
  • PR has been tested for accessibility regressions
  • External dependency files were updated if necessary (yarn and pip)
  • Documentation is updated
  • Contributor is in AUTHORS.md

@AlexVelezLl AlexVelezLl changed the title Fix two parallel content nodes edit logic Fix two parallel content nodes editing logic Mar 1, 2024
@AlexVelezLl AlexVelezLl marked this pull request as draft March 1, 2024 22:31
@rtibbles rtibbles self-assigned this Mar 1, 2024
@AlexVelezLl AlexVelezLl marked this pull request as ready for review March 4, 2024 17:36
Copy link
Member

@rtibbles rtibbles left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't manually tested, but overall, this looks like good cleanup.

Using a slot instead of passing a component in via a prop is the main cleanup needed here - but would also be good to think about the input data, as it feels like it might add complexity to have the different input data structures.

* It can receive a value as an array of strings of the selected learning activities, or
* an object with the following structure:
* {
* [learningActivityId]: true | [nodeId1, nodeId2, ...]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it simplify things to always require an Array of nodeIds here? In the single node case, it would just be a single nodeId.

@AlexVelezLl AlexVelezLl force-pushed the fix-two-parallel-impl branch from c46ba2a to feded9c Compare March 14, 2024 15:19
@AlexVelezLl AlexVelezLl mentioned this pull request Mar 15, 2024
24 tasks
@bjester
Copy link
Member

bjester commented Mar 15, 2024

Going to merge so we can review all of @AlexVelezLl work in the main PR

@bjester bjester merged commit e2fe971 into learningequality:studio-usability-enhancements Mar 15, 2024
13 checks passed
@AlexVelezLl AlexVelezLl deleted the fix-two-parallel-impl branch March 15, 2024 18:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants