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

Implement RFC85 Dynamic Virtual Study #5016

Merged
merged 14 commits into from
Nov 21, 2024
Merged

Conversation

forus
Copy link
Contributor

@forus forus commented Oct 2, 2024

Fix cBioPortal/cbioportal# (see https://help.github.com/en/articles/closing-issues-using-keywords)

Describe changes proposed in this pull request:

  • Added option to select a dynamic type of virtual study while creating it
  • Static type (the legacy one) is the default one

Checks

  • Has tests or has a separate issue that describes the types of test that should be created. If no test is included it should explicitly be mentioned in the PR why there is no test.
  • The commit log is comprehensible. It follows 7 rules of great commit messages. For most PRs a single commit should suffice, in some cases multiple topical commits can be useful. During review it is ok to see tiny commits (e.g. Fix reviewer comments), but right before the code gets merged to master or rc branch, any such commits should be squashed since they are useless to the other developers. Definitely avoid merge commits, use rebase instead.
  • Is this PR adding logic based on one or more clinical attributes? If yes, please make sure validation for this attribute is also present in the data validation / data loading layers (in backend repo) and documented in File-Formats Clinical data section!

Any screenshots or GIFs?

If this is a new visual feature please add a before/after screenshot or gif
here with e.g. Giphy CAPTURE or Peek

Notify reviewers

Read our Pull request merging
policy
. It can help to figure out who worked on the
file before you. Please use git blame <filename> to determine that
and notify them either through slack or by assigning them as a reviewer on the PR

Added option to select a dynamic type of virtual study while creating it

Static type (the legacy one) is the default one
Copy link

netlify bot commented Oct 2, 2024

Deploy Preview for cbioportalfrontend ready!

Name Link
🔨 Latest commit 16102dc
🔍 Latest deploy log https://app.netlify.com/sites/cbioportalfrontend/deploys/673f75a295d7cc00089566a4
😎 Deploy Preview https://deploy-preview-5016.cancerrevue.org
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

To make it follow the conventions and escape confusion
with java bean property convenction during deserialisation on BE
Copy link
Member

@pieterlukasse pieterlukasse left a comment

Choose a reason for hiding this comment

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

Thanks @forus !
I added some proposals to improve the tooltip text.

src/pages/studyView/virtualStudy/VirtualStudy.tsx Outdated Show resolved Hide resolved
src/pages/studyView/virtualStudy/VirtualStudy.tsx Outdated Show resolved Hide resolved
src/pages/studyView/virtualStudy/VirtualStudy.tsx Outdated Show resolved Hide resolved
@forus
Copy link
Contributor Author

forus commented Oct 23, 2024

@alisman @haynescd @pieterlukasse I've changed code to provide different descriptions for static and dynamic Virtual Study by default. Check 4b49f4f

@forus forus removed the DO NOT MERGE label Nov 5, 2024
this.props.caseListNameSet,
this.props.user
);
this.setDynamicTypeTo(false);
Copy link
Member

Choose a reason for hiding this comment

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

maybe a more "react" correct way would be to have dynamic boolean variable be a state and let the description react to that.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@pieterlukasse do you have an example in the code of this approach?

Copy link
Collaborator

Choose a reason for hiding this comment

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

i think @pieterlukasse is right. it seems you want to keep dynamic as a observable state and then make the rest a computation which depends upon it. you will see the @computed decorator used thoughout our codebase and that is what it accomplishes. any getter that is tagged as computed will recompute whenever the observable state which it references changes.

Copy link
Contributor Author

@forus forus Nov 20, 2024

Choose a reason for hiding this comment

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

Copy link
Member

@pieterlukasse pieterlukasse left a comment

Choose a reason for hiding this comment

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

looks good to me 👍
Just one minor comment on style.

@forus forus force-pushed the rfc85-dynamic-virtual-study branch 2 times, most recently from 0f198c6 to 846b9d4 Compare November 19, 2024 21:33
@forus forus force-pushed the rfc85-dynamic-virtual-study branch from 7871b78 to 146911a Compare November 20, 2024 10:59
);
}

function getResourceDataOfPatients(studyClinicalData: {
[uniqueSampleKey: string]: ClinicalData[];
}) {
const resourcesPerPatient = _(studyClinicalData)
.flatMap(clinicaldataItems => clinicaldataItems)
.flatMap((clinicaldataItems) => clinicaldataItems)
Copy link
Collaborator

Choose a reason for hiding this comment

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

seems like you maybe have a code linter that is reformatting things? would rather not introduce all this change.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I get this file changed by yarn run prettierFixLocal command although I haven't change this one. I can revert prettifications for files I did not change. How does it sound?

return this.customDescription || '';
}

set description(description: string) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

you shouldn't have a setter. the description get above can check the prop if there is one. i actually don't see where this called

Copy link
Contributor Author

Choose a reason for hiding this comment

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

See onChange handler for the descriptions field:

onChange={event =>
                                                    (this.description =
                                                        event.currentTarget.value)
                                                }

yea, the setter is not necessary. We can use the customDescription like the following and get rid from the setter:

onChange={event =>
                                                    (this.customDescription =
                                                        event.currentTarget.value)
                                                }

Is that what you meant?

Copy link
Collaborator

Choose a reason for hiding this comment

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

yes. that would be cleaner. i just don't like there be a setter on a property which is computed because it can create confusion.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@forus forus requested a review from alisman November 20, 2024 16:26
@alisman alisman merged commit 1f7e44e into master Nov 21, 2024
13 of 15 checks passed
@alisman alisman deleted the rfc85-dynamic-virtual-study branch November 21, 2024 19:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants