Commit Graph

462 Commits

Author SHA1 Message Date
Simon Backx
c36a5bbaeb Fixed paidMembersByCadence always having keys
refs https://github.com/TryGhost/Team/issues/1601

When there is no data in the backend, no keys are added.
2022-05-10 18:06:24 +02:00
Simon Backx
2b4e80b3dd Rounded MRR in dashboard
refs https://github.com/TryGhost/Team/issues/1602

- Added `cents` option to ghPriceAmount helper.
- Removed cents from MRR in dashboard.
2022-05-10 17:35:51 +02:00
Simon Backx
d11cf9e1c7 Added newsletter name in post scheduled tooltip
refs https://github.com/TryGhost/Team/issues/1576

This change was required to avoid showing 'all members' or 'all paid members', when it was in fact 'all paid subscribers of newsletter X'. The newsletter name is only shown when multiple newsletters are activated on a site.
2022-05-10 15:00:30 +02:00
Simon Backx
8a303fe411 Fixed paid visible on dashboard when stripe is not connected
refs https://ghost.slack.com/archives/C02G9E68C/p1652090614031099
2022-05-09 17:56:05 +02:00
Simon Backx
dd901c6790 Fixed paid subscribers chart reloading when toggling fake data
refs https://ghost.slack.com/archives/C02G9E68C/p1651773627838629?thread_ts=1651771893.729649&cid=C02G9E68C

The chart was not reloading when the fake data toggle was changed. This code is only used when using mocked data. So if you loaded the page without mocked data, everything was working fine and the chart did show the right data. If you then enabled fake data, the chart just won’t reload and would keep showing the initial data (so it wasn’t always showing mocked data, just the initial data).
2022-05-06 14:35:13 +02:00
Kevin Ansfield
7c4674507e Switched members-count-fetcher to use members-count-cache
no issue

In the new publish flow we use `{{members-count-fetcher}}` to show member counts as needed in the template without needing to worry about manually fetching counts in the backing classes. However, when switching between states in the flow the count would be re-requested resulting in some glitchy looking async count rendering. By changing `{{members-count-fetcher}}` to use our `members-count-cache` service internally we reduce the likelihood of an async count being triggered when switching between publish flow states.

- updated `members-count-cache` service methods to work with filter strings or full query objects
- switched `members-count-fetcher` resource to use `members-count-cache` in place of directly querying the store
2022-05-05 11:18:49 +01:00
James Morris
983d37253a Changed new Dashboard to default to 30 days rather than 7
refs: https://github.com/TryGhost/Team/issues/1531
2022-05-04 17:02:08 +01:00
Fabien 'egg' O'Carroll
94ae33858d Fixed mergeDates zero and one item in list (#2360)
The exit clause of the mergeDates function should return an array rather
than an object, to ensure that an array is always returned. Because we
are using the concat method when recursing, this continues to work for
longer lists.

We want to return an empty array if list is empty, this protects against
returning [undefined]
2022-05-03 12:01:23 +01:00
Fabien 'egg' O'Carroll
b0a875f733 Wired up subscription stats api (#2350)
refs https://github.com/TryGhost/Team/issues/1512

Adds the new endpoint `/stats/subscriptions/` which provides data for
the paid mix and paid breakdown charts.

Made the filledMissingDates function more generic by passing in a
`copyData` function which is used to populate a date from the previous
days data, if the data for that date is missing.
2022-04-27 15:11:01 +01:00
Simon Backx
384c461484 Updated countString formatting in members-count-cache
refs https://github.com/TryGhost/Team/issues/1538
2022-04-26 13:10:16 +01:00
Simon Backx
0b45de28be Updated subscriber count used in dashboard 5.0
refs https://github.com/TryGhost/Team/issues/1538
2022-04-26 13:10:16 +01:00
Rishabh
2c122c7fa4 Added multiple newsletters UI feature flag 2022-04-22 12:42:03 +05:30
Kevin Ansfield
14e2c59335 Fixed error from backdrop click handler for modals without options
refs 5d839a4725

- `top.options` is not guaranteed to exist, put optional chaining in place so we aren't attempting to read `ignoreBackdropClick` from `undefined`
2022-04-21 11:41:45 +01:00
Kevin Ansfield
5d839a4725 Added Ctrl/Cmd+Shift+P shortcut for starting publish flow
refs https://github.com/TryGhost/Team/issues/1542

With the old publish menu flow the `Ctrl/Cmd+Shift+P` would immediately publish without showing any of the publish options which isn't ideal. For the redesign we'd like to try showing the publish flow modal instead.

- added key handler for the shortcut to the publish-flow triggering button
- added `ignoreBackdropClick` option to the publish flow modal and support for it in our modal backdrop click handler
  - the shortcut simulates a click on the button which when the modal is open equates to a backdrop click meaning repeated presses of the Cmd+Shift+P shortcut resulted in glitchy modal open/close behaviour
2022-04-21 11:33:52 +01:00
Kevin Ansfield
f5fef46856 Added publishingFlow labs flag toggle
refs 05da593516

- used for switching between old publish menu and new publishing flow
2022-04-20 16:48:54 +01:00
Simon Backx
a1b9ec830a Moved comped members into paid members counts
no issue

In dashboard 5.0, comped members should be included in paid members and are not considered free members.
2022-04-20 14:45:34 +02:00
James Morris
a06003e7b5 Introduced new layout to bring new Dashboard closer to release (#2342)
refs: https://github.com/TryGhost/Team/issues/1531

- broke apart the combined chart
- added back in the paid mix chart
- separated out the mini charts into separate components
- made top chart work with total, paid and free
- added in an overview section back at the top for total, paid, free
- made metric labels and values larger and easier to parse

Co-authored-by: Simon Backx <simon@ghost.org>
2022-04-20 14:43:11 +02:00
Simon Backx
960536dcda Improved anchor chart and reloading of charts
refs https://github.com/TryGhost/Team/issues/1510

- Fixes site status not loading (https://github.com/TryGhost/Team/issues/1510) for mocked data because of tasks were already pending (reloadAll now cancels them first)
- Reload no longer required when switching anchor chart type
- Removed paidOptionSelected (fixes bug when swiching)
- Moved did-insert of anchor chart to topmost element
- Renamed chartDisplay values
2022-04-13 14:56:34 +02:00
Simon Backx
ed18d63450 Improved mocked state generator for dashboard 5.0
refs https://github.com/TryGhost/Team/issues/1489

- Apart from newer sites (state with days < 30) the MRR will start to deviate from the paid members graph. This will normally also be the case for real sites.
- All graphs will be zeroed out if state 'no data' is selected.
- The generator is a bit too complex to make this happen. It was some trial and error, but doesn't matter that much since we'll nuke this code once 5.0 is out.
2022-04-08 11:26:59 +02:00
Simon Backx
7b12785c30 Synced the start date of members and MRR 'all time' charts (dashboard 5.0)
no issue

- When using 'all time' in the past, the start date of the total members/paid members chart would differ from the MRR chart. They are now synced.
- The start date is always the earliest date we have data for (MRR or member counts)
- The all time chart is minimum 90 days long
2022-04-08 10:04:42 +02:00
Simon Backx
0d7ada66b3 Replaced usage of older MRR stats endpoint with new endpoint
refs https://github.com/TryGhost/Team/issues/1470

- Correctly uses the highest value currency in the MRR graph
2022-04-08 09:51:30 +02:00
Naz
114b359ab7 Reverted Accept-Version header usage in Admin API communication
closes https://github.com/TryGhost/Toolbox/issues/222
refs https://github.com/TryGhost/Toolbox/issues/227
refs 74735ab59c
refs e23ae31e8f

- The usecases for the Accept-Version header have shown we should not be exposing the users of the clients we control to unnecessary notification about client-API incompatibility. Ghost-Admin is one of those clients that is always expected to be up to date with the version of Ghost it ships with, so the Accept-Version header should not be used here
2022-04-06 10:12:09 +08:00
Kevin Ansfield
6e0be9e175 Wired up newsletter management with real newsletter model and API
refs https://github.com/TryGhost/Team/issues/1441

- switched "leave settings" confirmation modal on members email settings screen over to modern modal pattern
- removed unused `showEmailDesignSettings` property and `closeEmailDesignSettings()` action on `<Settings::MembersEmailLabs>` component
  - the used property and action live on the controller, looks like it was a copy/paste hangover when functionality was moved to a component
- added newsletter model
  - includes design-related attributes which are not yet supported by the API but are due to be added
  - includes `default` attribute but there is no setting for it, due to be removed from the API but it's needed for save not to error for now
  - set up basic mirage model and endpoints
  - added validation for main settings to match API validation
- added `EditNewsletter` modal
  - separate tabs for general newsletter settings and design-related settings
  - used for both creating and editing newsletters
- added `/settings/members-email/newsletters/new` and `/settings/members-email/newsletters/:id` routes
  - both display the `EditNewsletter` modal on top of the members-email settings screen with the appropriate newsletter model
- updated `<Settings::MembersEmailLabs::NewsletterManagement>` component to work with real newsletter model instances and the new add/edit routes
- removed now-unused `newsletter` service that was providing mocked data for earlier design iteration
2022-04-04 19:30:52 +01:00
Kevin Ansfield
86598fbd76 Extracted newsletter management section into separate component
refs https://github.com/TryGhost/Team/issues/1441

- pulls newsletter-related functionality into one place to keep higher-level components from knowing about too many concepts and becoming bloated
- updated temporary newsletters service to have fully tracked objects so the `active/archivedNewsletters` properties can be closer to how they will work with full models
2022-04-03 22:14:07 +01:00
James Morris
8fe18d7e30 Dashboard consolidated graph (#2323)
* Basic work to combine the three line graphs for the new dashboard

refs: https://github.com/TryGhost/Team/issues/1467

- combined three line graphs into one main one at the top
- still working on this, so some code is a little rough

* Tidying up a few bits of consolidated graph in new dashboard

refs: https://github.com/TryGhost/Team/issues/1467

* Updated chart anchor component for removed member counts

no issue

* Updated chart paid members to not reload on days change

no refs

* Moved did-insert to top element in chart-anchor

* Fixed chart anchor to use filled member data

* Replaced chart anchor divs with buttons

* Tweaking up the paid graphs below anchor to improve visuals

refs: https://github.com/TryGhost/Team/issues/1467

* Fixed missing type attributes on buttons in chart anchor

* Updated MMR to MRR for the new consolidated graph

refs: https://github.com/TryGhost/Team/issues/1467

* Added real MRR to chart anchor

* Added open rate percentage data to chart email

Co-authored-by: Simon Backx <simon@ghost.org>
2022-04-01 14:53:55 +01:00
Kevin Ansfield
da972bfe58 🐛 Fixed non-functioning "Leave" button on unsaved-changes confirmation modals
no issue

- bumped version of our `ember-promise-modals` fork containing a workaround for modal promises missing their return values
  - upstream issue: https://github.com/simplabs/ember-promise-modals/issues/565
- switched from a GitHub ref to a proper published package to avoid issues with yarn not bumping versions of the fork for developers who installed an earlier version
2022-04-01 12:47:08 +01:00
Simon Backx
0023695a29 Implemented loadSiteStatus in dashboard 5.0 stats service
refs https://github.com/TryGhost/Team/issues/1468

- Implemented loadSiteStatus with real data
- Replaced unused stripeEnabled with hasMultipleTiers
- hasMultipleTiers=false hides the tiers paid mix chart
- Improved loading and updating fake state
- Removed deprecated loadMembersCounts method in dashboard stats service
2022-04-01 10:51:15 +02:00
Simon Backx
37ee53bb4a Renamed stats endpoint member again
refs 759e362a30
2022-03-31 17:11:36 +02:00
Simon Backx
09f4d9b373 Changed member count stats endpoint URL
refs https://ghost.slack.com/archives/C02G9E68C/p1648737467414789?thread_ts=1648644801.253699&cid=C02G9E68C
2022-03-31 17:06:48 +02:00
Simon Backx
01b411de85 Added paid mix chart implementation for dashboard 5.0
refs https://github.com/TryGhost/Team/issues/1443

- Includes support for 'all' data in member count charts
- Fixed reloading of MRR data when switching between days
- Loading data now always returns a 'promise' instead of just dropping it
- Tiers and cadence paid mix chart added
- Defaults to mocked data = off (required to prevent loading paid mix tiers on page load)
- Note that there is still some discussion about the correctness of the tiers paid mix data, refs Slack https://ghost.slack.com/archives/C02G9E68C/p1648717224956659
2022-03-31 16:22:49 +02:00
Simon Backx
4cae27f5e2 Replaced custom member counting queries with MembersCountCacheService
no issue

- Replaced custom member counting queries with the MembersCountCacheService
- Results are reused if they were already fetched less then 60 seconds ago
- Fixed logic in MembersCountCacheService to only return old results (> 60) instead of new results (<= 60)
2022-03-31 16:09:41 +02:00
Simon Backx
5b120d5574 Updated member count charts to use the new Stats API
refs https://github.com/TryGhost/Team/issues/1443
refs https://github.com/TryGhost/Team/issues/1458
refs https://github.com/TryGhost/Team/issues/1459

- Includes the new paid members chart (deltas)
- Reused the counts from the stats endpoint, instead of doing separate calls to the members api browse endpoint.
2022-03-31 16:09:41 +02:00
Kevin Ansfield
4bfc7529d6 Cleaned up membersActivityFeed labs flag (#2309)
no issue

- `membersActivityFeed` is GA so we don't need any of the conditionals or now-unused code
2022-03-30 12:43:52 +01:00
Simon Backx
8d3c1dacc2 Added member count trends in dashboard 5.0
refs https://github.com/TryGhost/Team/issues/1443

- Fetch member counts from 30 days ago
- Added Percentage component to show +1%, -1% or = changes
- Fixed: emails sent number was not formatted
- Fixed: wrong dates were used for some stats
2022-03-28 16:28:09 +02:00
Simon Backx
7d104b2b44 Improved email open rate chart in dashboard 5.0
refs https://github.com/TryGhost/Team/issues/1443

- Now fetches email models instead of posts
- Fetches up to 8 emails
- Autofills missing emails, so we always have 8 emails
- Changed data structure of emailOpenRateStats variable in dashboard stats service
2022-03-28 14:20:07 +02:00
Simon Backx
6e8bf040a9 Added emails sent in past 30 days from real endpoints to dashboard 5
refs https://github.com/TryGhost/Team/issues/1443

- Also fixed the open rate that was used in the email open rate chart
- Calculate the total emails sent in the last 30 days
2022-03-28 13:49:44 +02:00
Simon Backx
801a910f7d Added newsletter subscribers count from real endpoints to dashboard 5
refs https://github.com/TryGhost/Team/issues/1443
2022-03-28 13:19:56 +02:00
Simon Backx
5505500fc0 Added MRR data to dashboard 5.0
refs https://github.com/TryGhost/Team/issues/1443

Will still require some optimizations in the future.
2022-03-28 11:12:01 +02:00
Simon Backx
cc478dcb53 Added basic member counts chart implementation for dashboard 5
refs https://github.com/TryGhost/Team/issues/1443

A real API endpoint is now used to power the member counts chart. But it sill requires some optimizations.
2022-03-28 10:47:09 +02:00
Simon Backx
16d0629de3 Added last seen and member count stats from real API in dashboard 5
refs https://github.com/TryGhost/Team/issues/1443
2022-03-28 09:55:37 +02:00
Simon Backx
9213e590ad Added recent posts and email open rate data to dashboard 5
refs https://github.com/TryGhost/Team/issues/1448
refs https://github.com/TryGhost/Team/issues/1443

- Toggle to switch between fake and real data
- Email open rate can now use real data (still problem with posts that don't have email data)
- Recent posts data
2022-03-24 18:17:02 +01:00
Simon Backx
6892bf06ef Fixed empty state not working in dashboard 5 2022-03-24 16:03:54 +01:00
Simon Backx
a41785ae95 Added async loading to dashboard 5 prototype charts
refs https://github.com/TryGhost/Team/issues/1443

- Also moved loading of charts outside of constructors to avoid infinite update loops in Ember
- Random loading delay when using fake states
2022-03-24 15:40:48 +01:00
Sanne de Vries
5785e156b5 Changed design for one vs multiple newsletters
Refs https://github.com/TryGhost/Team/issues/1441
2022-03-24 11:35:33 +00:00
Simon Backx
7fdf3c7433 Added mechansim to save prototype state for dashboard 5.0
refs https://github.com/TryGhost/Team/issues/1444

- Moved control panel to separate component
- Moved storage of amount of graph days to load to dashboard stats service
- Moved storage of engagement filtered status to dashboard stats service
- Dropdown state selector
- Save state in localstorage
- SiteStatus object and loadStatus methods in dashboard stats service and mock service
2022-03-24 12:09:09 +01:00
Thibaut Patel
e0476790ad Fixed linting errors from the previous commit
refs d4cd65dc40
2022-03-24 10:43:20 +01:00
Thibaut Patel
d4cd65dc40 Added mocked newsletter service
refs https://github.com/TryGhost/Team/issues/1447

- Added a few newsletter methods (browse, add, archive/un-archive)
- This temporary code helps the frontend implementation to be done quicker
- And helps getting a better understanding of the backend implementation (schema + api routes)
2022-03-24 10:32:03 +01:00
Simon Backx
59c22cc3dc Fixed wrong date labels in graphs
no issue

fillMissingDates in the dashboard service did reuse the same object instead of creating new ones for dates without data.
2022-03-24 09:46:16 +01:00
Simon Backx
d918be7acf Added initial mocked state to dashboard 5.0
refs https://github.com/TryGhost/Team/issues/1432

Earlier, no data was shown when opening the new dashboard. Now some data is being mocked when opening the dashboard.
2022-03-24 09:11:53 +01:00
Simon Backx
159f56b0d2 Wired all the dashboard 5.0 charts with the stats service
refs https://github.com/TryGhost/Team/issues/1442

All the data from the charts now come from the dashboard stats service
2022-03-23 16:38:57 +01:00