1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-11-10 01:19:53 +01:00
Commit Graph

97 Commits

Author SHA1 Message Date
Thomas Heartman
7cc3c32eb2
fix: date localizations for chart (#10581)
Adds date localization to the charts on the analytics page. In doing so,
I have extracted the default locales that we allow the user to set into
constants, so that we can reference it from other places. I have also
sorted the list and added my personal favorite format (ja) to it.

Because we have multiple charts on the analytics page, it felt weird
that only one chart should follow your preferred format. It also aligns
the existing charts' tooltip date format with the new one (`P` instead
of `PPP`).

In short: previously, the charts would show you only your system locale
(I think), which for me defaults to en-US, regardless of what setting
you'd set in your profile. Now we respect your setting as long as it's
one of the default ones.

Before (date formatting is en-US):
<img width="1444" height="1658" alt="image"
src="https://github.com/user-attachments/assets/99a893c7-efb6-4e55-b47c-9df66bf97636"
/>


After (date formatting is sv-SE):
<img width="1383" height="1653" alt="image"
src="https://github.com/user-attachments/assets/d408afd9-a8a7-46f3-8c13-9f7fde608cc4"
/>
2025-09-01 09:29:45 +00:00
Thomas Heartman
c7cb5465ff
chore: chart bar adjustments (#10555)
Updates chart bars with explicit border radii.

Before:
<img width="995" height="425" alt="image"
src="https://github.com/user-attachments/assets/d52c56a7-e022-4d27-8651-8897a49012e6"
/>


After:
<img width="1120" height="490" alt="image"
src="https://github.com/user-attachments/assets/b8660eb2-580b-48b7-8800-c5711b8a45a5"
/>
2025-09-01 10:30:27 +02:00
Thomas Heartman
5c74c34cbf
chore: Add date to archive vs creation tooltip (#10578)
Makes it easier to understand what piece of data you're looking at. The
raw date isn't available directly, but we have the formatted version for
the tooltip, so we'll display that.

This PR changes the format to be more in line with the UX sketches (just
numbers and separators instead of words). In theory, it should also be
possible to [adjust the
locale](https://www.npmjs.com/package/chartjs-adapter-date-fns#locale-support-via-scale-options)
(in this case, it should be to the user's chosen locale), but I can't
seem to make that option work. I don't want to spend more time on that
right now, unless we get feedback on it. However, _yes_ the format is
american, and _yes_, that puts months ahead of days. However, you also
have the date in longer form on the x axis, so I think you'll be able to
work it out.


Before:
<img width="279" height="139" alt="image"
src="https://github.com/user-attachments/assets/5c71e708-9d9f-412a-acbb-7d28e5071d5a"
/>


After: 
<img width="246" height="154" alt="image"
src="https://github.com/user-attachments/assets/13a4f5b3-281b-4003-8aae-a248578fead8"
/>
2025-09-01 07:19:47 +00:00
Thomas Heartman
a7c8f527bd
chore: show N/A for ratio if we can't calculate it (#10580)
Also, change the widget title to reflect the order of the ratio.

Before:
<img width="214" height="105" alt="image"
src="https://github.com/user-attachments/assets/0e08e107-b142-4913-af06-a8ab7eed8cb7"
/>

<img width="280" height="153" alt="image"
src="https://github.com/user-attachments/assets/967ff1b4-ec44-4811-9a34-ad4979dbb761"
/>



After:
<img width="242" height="117" alt="image"
src="https://github.com/user-attachments/assets/ff43efee-81ad-4c6c-8513-960656b095b8"
/>

<img width="249" height="153" alt="image"
src="https://github.com/user-attachments/assets/47271484-1ba4-42c3-a85f-5db62e6560c3"
/>


Closes 1-4039
2025-09-01 09:14:02 +02:00
Thomas Heartman
718a731d2f
fix: Show 100% instead of Infinity% if you've not created any flags (#10575)
JS gives you positive infinity if you divide a positive number by 0,
which isn't very helpful here. Instead, let's show 100%. If you divide 0
by 0, then you get NaN, which we also need to handle explicitly because
it doesn't work with math.min.

Before:
<img width="472" height="273" alt="image"
src="https://github.com/user-attachments/assets/006ba5c1-4783-4794-b876-f64085937258"
/>

<img width="1365" height="484" alt="image"
src="https://github.com/user-attachments/assets/beec7e18-758c-49eb-97c8-febe6cb63119"
/>


After:
<img width="388" height="252" alt="image"
src="https://github.com/user-attachments/assets/bc326c25-ee63-4055-a765-a6016b51e35a"
/>
<img width="1365" height="488" alt="image"
src="https://github.com/user-attachments/assets/eaafc5c3-79d6-49a3-b1f2-cd42c5d16dae"
/>


Fixes 1-4033.
2025-08-29 09:31:13 +00:00
Thomas Heartman
709a890bd8
fix: incorrect current calculation of ratio (#10567)
Looks like the sinner was looking at the last entry of each data list,
when they are sorted by most recent first.
2025-08-28 15:53:25 +02:00
Thomas Heartman
016d269675
Chore: Use step size of 1 for created vs archived. (#10566)
You can't archive half a flag.

Closes 1-4034.
2025-08-28 15:53:04 +02:00
Thomas Heartman
b071b17dd6
Fix: created vs archived rendering errors; memoize options (#10562)
Fixes the rendering / max update depth exceeded errors we were seeing in
the console for this chart by memoizing the options.

<img width="1710" height="1420" alt="image"
src="https://github.com/user-attachments/assets/9a24d4e5-b563-4a3c-9a76-915e0a5fda24"
/>

Now the chart doesn't throw any errors anymore.
2025-08-28 14:48:53 +02:00
Thomas Heartman
9eb872de82
Show tooltip on group instead of single graph bar (#10546)
The tooltip should show you the ratio of the group and the numbers for
both archived and created.

The tooltip's position is averaged between all the bars in the group.

<img width="335" height="262" alt="image"
src="https://github.com/user-attachments/assets/d62a4bdc-ba07-4eea-8cbf-6e42793804b2"
/>


This still throws the same errors as before. Not sure exactly what's
going on with the custom tooltip, but I'll investigate it in a
follow-up.

Closes 1-4017.
2025-08-28 10:26:46 +02:00
Thomas Heartman
0cd64780fa
Simplify created numbers (don't show count by flag type) and update colors (#10531)
Simplifies the data we show for the archive vs creation chart by not
showing the created count by flag type. Instead, all we show is the
total.

Also, in doing this, updates the colors we use for the bars (to A1, and
A2). The contrast is a little low between A1 and A2, so we should look
at that before taking this into production.

The created tooltip colors are wrong, but we'll need to update the
tooltip in a later PR, so not tackling that now.

Before:
<img width="1115" height="456" alt="image"
src="https://github.com/user-attachments/assets/13626295-1aa5-42be-b8dd-cea9912effe0"
/>
<img width="564" height="311" alt="image"
src="https://github.com/user-attachments/assets/7a02eec0-e018-49fd-8b1f-92aa3376a6cc"
/>



After: 
<img width="1179" height="481" alt="image"
src="https://github.com/user-attachments/assets/1ba6584a-d7e2-4ae4-81ec-38260c1f0e07"
/>

<img width="420" height="159" alt="image"
src="https://github.com/user-attachments/assets/e4433c32-eaa4-41d2-a5ef-af84a9725c30"
/>

Closes 1-4018, 1-4013, 1-4014
2025-08-25 16:09:44 +02:00
Thomas Heartman
0223437f49
Remove ratio graph & column to the right (#10529)
This PR removes the flags archived / flags created trend line as well as
the right-hand column.

Before:
<img width="1107" height="459" alt="image"
src="https://github.com/user-attachments/assets/f6bcbef0-7b71-44c1-b8a0-db5ebaff01ed"
/>


After:
<img width="1128" height="450" alt="image"
src="https://github.com/user-attachments/assets/e55bd335-cc8c-4b88-8e3c-dafecf134742"
/>

I'm not deleting the tooltip yet, because I think we'll want to re-use
that for the group tooltip.
2025-08-25 14:27:07 +02:00
Thomas Heartman
2ee92d8c78
Use new chart colors for current lifecycle stage. (#10528)
Takes the green from the current lifecycle charts and replaces it with
charts.A2. Also stabilizes the colors between the dark and light.
2025-08-25 11:44:21 +02:00
Thomas Heartman
9d18b0022b
Delete legacy insights charts components and remove unused colors (#10522)
Deletes the legacy insights charts component (which should have been
removed with the flag earlier this week), and also removes the colors
associated with charts that we no longer have.
2025-08-22 12:46:56 +02:00
unleash-bot[bot]
170ed87fcb
chore(AI): lifecycleMetrics flag cleanup (#10511)
This PR cleans up the lifecycleMetrics flag. These changes were
automatically generated by AI and should be reviewed carefully.

Fixes #10505

---------

Co-authored-by: unleash-bot <194219037+unleash-bot[bot]@users.noreply.github.com>
Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2025-08-21 14:35:11 +02:00
Jaanus Sellin
05ea405bf6
chore: update ux styling for lifecycle charts (#10497)
<img width="1442" height="492" alt="image"
src="https://github.com/user-attachments/assets/4ec76d72-3bfb-4525-ac63-c3e995f7638b"
/>
2025-08-15 15:23:25 +03:00
Jaanus Sellin
e43cdcf034
chore: update ux styling for lifecycle charts (#10481)
Some small ux tweaks to lifecycle charts.


1. Removed vertical lines
2. Styled the legend to have round dots, not square.
<img width="1891" height="656" alt="image"
src="https://github.com/user-attachments/assets/b2c09085-7a2e-4e14-92e0-b3e83edf201d"
/>
2025-08-08 10:25:58 +03:00
Jaanus Sellin
1d3aea47dc
feat: create flags created vs archived chart (#10429) 2025-07-31 10:54:37 +03:00
Jaanus Sellin
8943cc0a3d
feat: basic flag creation chart (#10411)
This is partial implementation of flag creation chart. This only shows
the created flags line part, but I need to style it and also add bar
charts in next PRs.

<img width="1498" height="523" alt="image"
src="https://github.com/user-attachments/assets/6d7a3145-95ff-4d31-85dd-47d687527d47"
/>
2025-07-24 14:45:16 +03:00
Mateusz Kwasniewski
049e1ba271
feat: new flags in production explanation (#10407) 2025-07-24 11:53:25 +02:00
Mateusz Kwasniewski
299ed65ef7
feat: New production flags chart (#10400) 2025-07-23 15:29:47 +02:00
unleash-bot[bot]
96f59bccfa
chore(AI): healthToTechDebt flag cleanup (#10346)
Co-authored-by: unleash-bot <194219037+unleash-bot[bot]@users.noreply.github.com>
Co-authored-by: Tymoteusz Czech <2625371+Tymek@users.noreply.github.com>
2025-07-11 14:15:55 +02:00
Tymoteusz Czech
1eefede62e
Improve impact metrics layout (#10326)
- narrow screen no longer breaks
- fixed size of series indicators in tooltips
- simplified grid layout props
- updated X axis ticks
2025-07-08 12:28:04 +02:00
Tymoteusz Czech
082a6fdb16
Feat: impact metrics grid layout (#10253) 2025-07-03 09:09:03 +00:00
Tymoteusz Czech
3f073ad457
feat: impact metrics page with multiple charts (#10252) 2025-07-01 14:54:25 +02:00
Tymoteusz Czech
39cdc170f2
Feat: impact metrics fronted (#10182) 2025-06-30 09:48:00 +02:00
Tymoteusz Czech
34973967d0
docs: update technical debt info (#10132)
Co-authored-by: Melinda Fekete <melinda.fekete@getunleash.io>
2025-06-23 14:12:34 +02:00
Tymoteusz Czech
d34acb6999
fix: health to debt with ui-flag (#10131)
useFlag is only connected to unleash-frontend project - it's easier to
switch to `useUiFlag` then moving a flag to this project
2025-06-13 11:12:02 +02:00
Tymoteusz Czech
4e48d90ed8
fix: use technicalDebt property from backend (#10111)
Frontend should load `technicaDebt` from backend instead of
re-calculating it.
2025-06-12 16:50:29 +02:00
Thomas Heartman
e010f31a15
chore(1-3811): use real data for lifecycle trends (#10117)
Connects the lifecycle trends UI to the API and adds a functioning
projects filter. This PR also includes the generated orval models.

<img width="1534" alt="image"
src="https://github.com/user-attachments/assets/6da748d1-3625-4e36-86ee-295ab79e7ccb"
/>
2025-06-12 13:52:10 +02:00
Thomas Heartman
3034e94b20
Make headers smaller (#10128)
Makes headers a little smaller. the default h2 size is not the same as
in the theme, but Typography handles it for you.
2025-06-12 12:12:46 +02:00
Thomas Heartman
f299c2b652
chore: fix skeleton loading indicator colors for lifecycle trend tiles (#10109)
Updates the skeleton loading colors for the lifecycle trend tiles
because the previous color was invisible on the median stats section in
light mode. You also wouldn't see any movement in the total number of
flags.

I have not touched the original skeleton color assignment because that
might have unintended consequences throughout the app. Also, I'm not
aware of a way (at the moment) that would do this automatically when
necessary. As such, I have only touched the loading indicators in the
lifecycle tile.

## Before:

Light mode:

![image](https://github.com/user-attachments/assets/3731eb0b-4d63-4622-8b20-0518e6266611)

Dark mode:

![image](https://github.com/user-attachments/assets/6df0197f-7283-4709-b369-38025011c879)


## After:

Light mode:

![image](https://github.com/user-attachments/assets/09f33fa8-322c-4a55-a6e8-4ef384104d74)

Dark mode:

![image](https://github.com/user-attachments/assets/60499b46-c9c7-49cc-a210-50d330682075)
2025-06-11 10:15:59 +02:00
Thomas Heartman
7e61e0dd09
Chore(1-3807)/remove flag add edit strategy take2 (#10108)
Removes all usages of flag addEditStrategy and refactors code where
necessary.

This is only the first step of the cleanup. After this, there's still
lots of code to be removed. I've got a different PR that removes ~5k
lines of code (https://github.com/Unleash/unleash/pull/10105) that I
want to reach in pieces to make sure that everythnig works on the way
there.
2025-06-11 06:03:34 +00:00
Tymoteusz Czech
d5acbea711
chore: update frontend schema - technicalDebt (#10098)
generated with `api:gen`
2025-06-10 14:15:09 +02:00
Thomas Heartman
45d48d12a9
Chore: add skeleton loaders for lifecycle trend numbers (#10103)
Adds skeleton loading indicators for the lifecycle trend tile numbers:
- total flag count
- median stats

In doing so, I have added the `data-loading` attribute to the
PrettifyLargeNumber component (to avoid having to wrap it in a separate
element for that alone), and have added refs to the InsightsSection
component.

The loading indicators look better in dark mode than in light mode,
because they use the same background color as the text box in light
mode, so only the big number is visible. There is a task in Linear to
look into fixing this.


<img width="1548" alt="image"
src="https://github.com/user-attachments/assets/9e58d681-724e-45cb-baa1-b824dda48008"
/>

<img width="1554" alt="image"
src="https://github.com/user-attachments/assets/7738fac0-5660-464f-8d10-1bf2eacc9ca0"
/>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-10 09:35:32 +00:00
Thomas Heartman
6d7a344ca3
chore: replace flags per user with total number of flags (#10102)
Switches the "flags per user" box with a "total number of flags" label
for the number in the box and an additional description available via
the help icon.

To accurately label the help text and link it to the figure, I've added
a tooltipId prop to the HelpIcon component.

<img width="551" alt="image"
src="https://github.com/user-attachments/assets/f3227e74-5976-454e-9b7d-db0d05927261"
/>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-10 10:02:50 +02:00
Thomas Heartman
f0c19af5a9
chore: rename insights -> analytics (#10095)
Update the title of the insights / analytics page when the menu item
changes

While the side menu item has already changed, this change also updates
the page header and title.

Also fixes an error with a prop that shouldn't have been forwarded.
2025-06-10 08:11:35 +02:00
Thomas Heartman
d6f76a098e
Chore/lifecycle tile layout (#10094)
Fixes a few lifecycle-related points:

- The layout for insights graphs now wraps when necessary
- Change the wording to be `X flags in <Stage>`
- Update the wording in the project health lifecycle boxes to match this
- Update the tooltips for the project health lifecycle to use new names
for stages instead of the old ones.

<img width="1145" alt="image"
src="https://github.com/user-attachments/assets/d1cfbf58-f79b-4751-b8b7-2ee7e31849ab"
/>

<img width="1075" alt="image"
src="https://github.com/user-attachments/assets/4a07b3ce-cf78-4009-82aa-1c276a2e9e5d"
/>
2025-06-06 11:56:20 +02:00
Thomas Heartman
e1cfd8e050
Feat(1-3801)/add more data to lifecycle tiles (#10092)
This is the first pass at the full lifecycle tiles. It adds the tile
header and current and historical median data.

I have also added large number handling to all the number instances in
the tile: in the header, the graph, and the median data. In doing so, I
exposed the algorithm we use in the PrettifyLargeNumber component.
Returning a react component isn't always a valid option (such as in the
chart). This does mean that you don't get a tooltip when you use the
function directly, but in things like the chart and the median
measurement that makes sense to me.

I've decided to return "No data" if the median days value is 0 or lower.

There's no data for historical medians yet, so I'm using the same number
for now.

<img width="1538" alt="image"
src="https://github.com/user-attachments/assets/72e6a90a-6b84-47ce-af02-59596a7ff91f"
/>
2025-06-06 10:12:02 +02:00
Tymoteusz Czech
553ffc62b7
fix: orval for ESM (#10086)
updated Orval and configured it to be compatible with v7.

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2025-06-05 10:40:58 +00:00
Thomas Heartman
385f4ab1ad
Updates lifecycle trend chart colors for dark mode. (#10085) 2025-06-05 10:04:48 +02:00
Thomas Heartman
5da7d50291
Chore(1-3800)/add aria content to charts (#10084)
Adds aria label and description to the lifecycle trend charts

The label explains that it's a bar chart, which stage it's describing,
and
the number of flags in each category.

The description provides more information about the split between new
flags this week and older flags.
2025-06-05 09:40:58 +02:00
Thomas Heartman
16df33b078
feat: add lifecycle trend graphs (#10077)
Adds lifecycle trend graphs to the insights page.

The graphs are each placed within their own boxes. The boxes do not have
any more information in them yet.

Also, because the data returned from the API is still all zeroes, I've
used mock data that matches the sketches.

Finally, the chart configuration and how it's split into a
LifecycleChart that lazy loads a LifecycleChartComponent is based on the
LineChart and LineChartComponent that we use elsewhere on the insights
page.

Light mode:

<img width="1562" alt="image"
src="https://github.com/user-attachments/assets/6dd11168-be24-42d4-aa97-a7a55651fa0e"
/>

We might want to tweak some colors in dark mode, but maybe not? 🤷🏼 

![image](https://github.com/user-attachments/assets/9647e6b8-d8ea-4eb5-b9fd-6f4a24692476)
2025-06-05 08:35:14 +02:00
Tymoteusz Czech
37548c3436
feat: rename health to technical debt (#10063)
On insights and project status, we would like to show "technica debt"
instead of "health". New value is that of `1/health`, or simplified:
`healthy flags / total flags`
2025-06-04 11:01:17 +02:00
Thomas Heartman
f7c667e410
Feat(1-3760)/filters per analytics section (#10039)
Splits the insights page into separate sections with their own separate
filters. Each filter is sticky to the top of the page, similar to how
the previous filters worked.

In doing this, I have also moved around a lot of code. Refer to the
inline comments for more specific examples, but on a high level, this
PR:
- Moves the flag check from InsightsCharts into Insights itself. Because
the old Insights had filters and state, and the new one does not, it
made sense to fork off higher up in the tree. Because the new version
doesn't have state, I have also simplified it and removed an
intermediate component (InsightsCharts) that doesn't feel necessary
anymore.
- Because InsightsCharts isn't used anymore, I've moved the
LegacyInsightsCharts file back into InsightsCharts. However, I'm happy
to move it back if we think that's useful.
- Instead of all charts living in InsightsCharts, I've split each
section into its own file in the new sections directory. Because the
sections have separate filters, they don't share any state anymore, so
there's nothing they share.
- I'm reusing the existing hook and endpoint. As it stands, the
performance insights use **most** of the data from that payload (but not
all of it). The user insights use some of it. Flag lifecycle insights
doesn't use anything, but I've wired it up to make the filters work. I
expect that we'll iterate on the API endpoints etc later.


![image](https://github.com/user-attachments/assets/8fcf5800-18be-4399-b7e2-e2b4b8565ea8)
2025-06-03 10:47:30 +02:00
Thomas Heartman
3e57c4803c
Chore(1-3755)/split insights in three (#10035)
Creates sections for the insights dashboard and moves charts around into
the same order as the sketches and into the right sections. There's no
charts for the top section (lifecycle currently) yet, and the sections
also don't have their own filters.

To make this re-ordering easier, I've also moved the previous insights
chart into a legacy file and set up a proxy component that handles
switching based on the flag.


![image](https://github.com/user-attachments/assets/f0929998-def3-4643-babd-ab53f4ea8e98)


Next step is separating the filters.
2025-05-27 15:06:48 +02:00
Thomas Heartman
5df074bd14
Remove entire row for median time to production (#10034)
Removes the "median time to production" snapshot + graph when the
lifecycleMetrics flag is active.

In other words: this entire box is gone 💨 
<img width="1326" alt="image"
src="https://github.com/user-attachments/assets/929a9097-82a6-493d-b0dd-614000ffcfe7"
/>
2025-05-27 14:00:08 +02:00
Gastón Fournier
abe160eb7d
feat: Unleash v7 ESM migration (#9877)
We're migrating to ESM, which will allow us to import the latest
versions of our dependencies.

Co-Authored-By: Christopher Kolstad <chriswk@getunleash.io>
2025-05-14 09:47:12 +02:00
Mateusz Kwasniewski
1e027dcf4f
feat: adjust filter UI (#9720) 2025-04-08 14:32:30 +02:00
Melinda Fekete
7534b66c18
Fix broken anchors in docs (#9406) 2025-03-11 11:45:40 +01:00
Mateusz Kwasniewski
da16b316aa
feat: date range selector (#8991) 2024-12-18 10:40:50 +01:00