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

Convert Sparkline to typescript #2347

Merged
merged 5 commits into from
Oct 27, 2023

Conversation

rohitvinnakota-codecov
Copy link
Contributor

@rohitvinnakota-codecov rohitvinnakota-codecov commented Oct 25, 2023

Description

Converts Sparkline, spec, and stories to Typescript. Tested by checking relevant pages in app and storybook runs. This closes codecov/engineering-team#519.

Legal Boilerplate

Look, I get it. The entity doing business as "Sentry" was incorporated in the State of Delaware in 2015 as Functional Software, Inc. In 2022 this entity acquired Codecov and as result Sentry is going to need some rights from me in order to utilize my contributions in this PR. So here's the deal: I retain all rights, title and interest in and to my contributions, and by keeping this boilerplate intact I confirm that Sentry can use, modify, copy, and redistribute my contributions, under Sentry's choice of terms.

@rohitvinnakota-codecov rohitvinnakota-codecov changed the title Rvinnakota/convert sparkline to ts Convert Sparkline to typescript Oct 25, 2023
}

export interface SparklineProps {
datum: any[]
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Prefer to avoid any but we need to support custom inputs.

Copy link
Contributor

Choose a reason for hiding this comment

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

Hmm, could we pass Sparkline a generic? That way internally it could use that instead of any's

Example:
select?: (data: any) => NumberOrNullOrUndefined
could be
select?: (data: T) => NumberOrNullOrUndefined

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 did a little bit of digging to see if it was possible. If we pass a generic type to SparklineProps, we would have to define either a default type definition or specify a type in the component function. For example, something like export interface SparklineProps<T = any> or const Sparkline: React.FC<SparklineProps<any>>. One other thing to note is datum is an array of potentially different types, and what's being passed into select can be any type(different type from datum).

We could specify a default type that does not require the use of any doing something like T extends {value:...} but that would restrict the custom types we are able to support by forcing them to adhere to that type. My feeling is that this is a decent solution, but will require a few changes to other files.

Another path forward is refactoring the file to keep the same behaviour but make it work better with typescript, which I also think is valid but that could be considered as a separate issue.

I'm keen to hear your thoughts on these suggestions.

Copy link
Contributor

Choose a reason for hiding this comment

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

Ok I took a look myself, you're correct I dont think we can properly use Typescript generics yet...

For now any is ok, long term I think the option to refactor the code is the best option. Properly use generics is important for this sort of data selection pattern. But we can spin that out into another tech debt ticket. Thanks for the investigation 👍

@rohitvinnakota-codecov rohitvinnakota-codecov force-pushed the rvinnakota/convert-sparkline-to-ts branch from 3108b58 to a74de4c Compare October 25, 2023 19:31
@netlify
Copy link

netlify bot commented Oct 25, 2023

Deploy Preview for gazebo-staging ready!

Name Link
🔨 Latest commit 3108b58
🔍 Latest deploy log https://app.netlify.com/sites/gazebo-staging/deploys/65396c52a58d000008e5da18
😎 Deploy Preview https://deploy-preview-2347--gazebo-staging.netlify.app/
📱 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.

@netlify
Copy link

netlify bot commented Oct 25, 2023

Deploy Preview for gazebo-staging ready!

Name Link
🔨 Latest commit a74de4c
🔍 Latest deploy log https://app.netlify.com/sites/gazebo-staging/deploys/65396cfe2bb4a40008b50e10
😎 Deploy Preview https://deploy-preview-2347--gazebo-staging.netlify.app/
📱 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.

@netlify
Copy link

netlify bot commented Oct 25, 2023

Deploy Preview for gazebo-staging ready!

Name Link
🔨 Latest commit a282f1c
🔍 Latest deploy log https://app.netlify.com/sites/gazebo-staging/deploys/653bd2be79300a0008013ff2
😎 Deploy Preview https://deploy-preview-2347--gazebo-staging.netlify.app/
📱 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.

@codecov-staging
Copy link

codecov-staging bot commented Oct 25, 2023

Codecov Report

Merging #2347 (a282f1c) into main (8e7d4f6) will increase coverage by 0.00%.
The diff coverage is 100.00%.

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #2347   +/-   ##
=======================================
  Coverage   97.14%   97.15%           
=======================================
  Files         725      725           
  Lines        8666     8675    +9     
  Branches     2142     2142           
=======================================
+ Hits         8419     8428    +9     
- Misses        244      245    +1     
+ Partials        3        2    -1     
Files Coverage Δ
src/ui/Sparkline/Sparkline.tsx 96.96% <100.00%> (ø)

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8e7d4f6...a282f1c. Read the comment docs.

@codecov-qa
Copy link

codecov-qa bot commented Oct 25, 2023

Codecov Report

Merging #2347 (a282f1c) into main (8e7d4f6) will increase coverage by 0.00%.
The diff coverage is 100.00%.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #2347   +/-   ##
=======================================
  Coverage   97.14%   97.15%           
=======================================
  Files         725      725           
  Lines        8666     8675    +9     
  Branches     2136     2142    +6     
=======================================
+ Hits         8419     8428    +9     
- Misses        244      245    +1     
+ Partials        3        2    -1     
Files Coverage Δ
src/ui/Sparkline/Sparkline.tsx 96.96% <100.00%> (ø)

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8e7d4f6...a282f1c. Read the comment docs.

@codecov-public-qa
Copy link

codecov-public-qa bot commented Oct 25, 2023

Codecov Report

Merging #2347 (a282f1c) into main (8e7d4f6) will increase coverage by 0.00%.
Report is 1 commits behind head on main.
The diff coverage is 100.00%.

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #2347   +/-   ##
=======================================
  Coverage   97.14%   97.15%           
=======================================
  Files         725      725           
  Lines        8666     8675    +9     
  Branches     2093     2130   +37     
=======================================
+ Hits         8419     8428    +9     
+ Misses        245      244    -1     
- Partials        2        3    +1     
Files Coverage Δ
src/ui/Sparkline/Sparkline.tsx 96.96% <100.00%> (ø)

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8e7d4f6...a282f1c. Read the comment docs.

@codecov
Copy link

codecov bot commented Oct 25, 2023

Codecov Report

Merging #2347 (a282f1c) into main (8e7d4f6) will not change coverage.
The diff coverage is 100.00%.

Impacted file tree graph

@@          Coverage Diff          @@
##            main   #2347   +/-   ##
=====================================
  Coverage   97.15   97.15           
=====================================
  Files        725     725           
  Lines       8666    8675    +9     
  Branches    2093    2099    +6     
=====================================
+ Hits        8419    8428    +9     
  Misses       245     245           
  Partials       2       2           
Files Coverage Δ
src/ui/Sparkline/Sparkline.tsx 96.96% <100.00%> (ø)

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8e7d4f6...a282f1c. Read the comment docs.

@rohitvinnakota-codecov rohitvinnakota-codecov marked this pull request as ready for review October 25, 2023 20:18
}

export interface SparklineProps {
datum: any[]
Copy link
Contributor

Choose a reason for hiding this comment

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

Ok I took a look myself, you're correct I dont think we can properly use Typescript generics yet...

For now any is ok, long term I think the option to refactor the code is the best option. Properly use generics is important for this sort of data selection pattern. But we can spin that out into another tech debt ticket. Thanks for the investigation 👍

@rohitvinnakota-codecov rohitvinnakota-codecov merged commit 3d09422 into main Oct 27, 2023
@rohitvinnakota-codecov rohitvinnakota-codecov deleted the rvinnakota/convert-sparkline-to-ts branch October 27, 2023 15:22
RulaKhaled pushed a commit that referenced this pull request Oct 31, 2023
* Convert sparkline to typescript

* Consistent type defs

* better variable names
RulaKhaled added a commit that referenced this pull request Nov 3, 2023
* first pass, wheeeeeo

* Sorting functionality

* Update with tests

* wrap up repos list:

* Spelling correction (#2336)

* 616 add patch setction pr page team tier (#2337)

* feat: add header component for team tier customers

* feat: converted Header.jsx to Header.tsx + tests

* fix: add comparison schema types

* fix: Filter out certain browser from sending events to Sentry (#2338)

Filter out events for a given browser because they don't have all JS functions fully implemented causing issues that we cannot address.

* feat: Hide Flag MultiSelect when on Team Plan on Commit Detail Page (#2327)

We will need to hide the flag multi select on the commit detail page when the user is on the team plan as they are not an available feature to those users.

GH codecov/engineering-team#687

* feat, ref: Disable Flag MultiSelect on Coverage Tab when on a Team Plan (#2329)

Disable the flag multi-select on the coverage tab when users/orgs are on a team plan.

GH codecov/engineering-team#685

* feat: Grab flags in IndirectChangesTable and pass along with request (#2335)

Update indirect changes tab on the commit detail page to grab flags from the url params and pass along as query args.

GH codecov/engineering-team#348

* feat: Update CommitDetailPage FilesChangedTable to pass along flags (#2334)

Update the files changed tab on the commit detail page to grab flags url param and pass along as query args.

GH codecov/engineering-team#347

* ref: Update TOS to work for service less users. (#2321)

* Update with service less requests

* Make sure hook supports service less

* feat: Add Flag MultiSelect to CommitPageTabs (#2303)

Add a feature flagged multi select to the CommitPageTabs component.

GH codecov/engineering-team#344

* Add patch column to pulls table (#2308)

* feat: add patch column to the pulls list page

* uncomment development settings

* feat: Create Team Plan Table for the Files Changed Table on the Commit Detail Page (#2309)

Create new commit fetching hooks for the team plan, as well as creating a new table for files changed tab on the
commit detail page for the new team plan.

GH codecov/engineering-team#633

* Setup pull request page to pass around selected flags (#2282)

* feat: setup pull request page to pass around selected flags in links

* Feedback, fix passing links to files+folders, additional testing

* fix file explorer test failing on href match due to new query param pass through

* airplane commit, cant check local dev server: Resolve merge issues / tests + unify codebases missed of commitSHA and commitSha to just commitSha

* Prevent multislect from collapsing + wire up PR details page to pass through flags links

* Fix accidental removal of ref on usePrefetchPullFileEntry

* Add patch column to pulls table (#2308)

* feat: add patch column to the pulls list page

* uncomment development settings

* feat: Create Team Plan Table for the Files Changed Table on the Commit Detail Page (#2309)

Create new commit fetching hooks for the team plan, as well as creating a new table for files changed tab on the
commit detail page for the new team plan.

GH codecov/engineering-team#633

---------

Co-authored-by: Adrian <[email protected]>
Co-authored-by: nicholas-codecov <[email protected]>

* chore: Remove segment from frontend (#2314)

* Update with tests

* test with support service less

* adjust logic to handle original route

* it's fine it works with no providers

---------

Co-authored-by: nicholas-codecov <[email protected]>
Co-authored-by: Adrian <[email protected]>
Co-authored-by: Terry <[email protected]>

* restructure folders anticipating second header component for team tier (#2340)

* feat: add hook for commit detail page team tier (#2341)

* build: Update PostCSS (#2346)

Update PostCSS dependency.

* Migrate TextInput to TypeScript (#2342)

* Migrate textinput to TS

* Add story

* formatting

* organize imports

* Connect flag selector to flags filter on PR details page (#2343)

* feat: Update impacted files resolver for use pull, connect the flag selector to the api.

* update missing logic as requested + unknown flags message to be aligned with repo overview design

* Noticed the changing the pull query broke impacted files while smoke testing, dupicated the same compatibility work for the new resolver.

* Refactor to use a impacted files enum as requested.

* fix: Attempting to fix CommitDetailPage and RepoPage Tests (#2350)

Addressing flaky tests in CommitDetailPage and RepoPage.

* Add patch section commit detail page team tier (#2344)

* restructure folders anticipating second header component for team tier

* feat: add patch coverage section to commit detail page for team tier customer

* fix: rename HeaderDefault to HeaderTeam for team file

* Convert Sparkline to typescript (#2347)

* Convert sparkline to typescript

* Consistent type defs

* better variable names

* use enum

* quick fixes

* Update use memo

* Update tests with getSortingOption

* pull out the function of the test block

---------

Co-authored-by: Joe Becher <[email protected]>
Co-authored-by: Adrian <[email protected]>
Co-authored-by: nicholas-codecov <[email protected]>
Co-authored-by: Terry <[email protected]>
Co-authored-by: Rohit Vinnakota <[email protected]>
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.

Sparkline
2 participants