Commit Graph

545 Commits

Author SHA1 Message Date
Uku Taht
8f20bf0ab2
Add metric ID to HTML (#2518) 2022-12-19 12:21:15 +01:00
Vini Brasil
90786cb3bc
Remove intervals feature flag (#2474)
This commit removes the intervals feature flag, as this feature has
already been released to 100% of the users.
2022-11-29 10:12:36 -03:00
Vini Brasil
e2563acf36
Standardise dropdown icon margins (#2473) 2022-11-25 09:12:52 -03:00
Vini Brasil
ffbfb14714
Pass interval param to CSV export (#2469)
This commit adds the interval param to the CSV export client-side
request.
2022-11-25 10:53:22 +02:00
Vini Brasil
32a38fac7a
Add keyboard navigation to intervals (#2470)
* Create function to handle keybindings

* Add <i> keybinding to intervals
2022-11-25 10:51:43 +02:00
Vignesh Joglekar
497a52c10a
Add support for intervals (#1574)
Co-authored-by: Vini Brasil <vini@hey.com>
Co-authored-by: Vignesh Joglekar <hey@vigneshjoglekar.com>
2022-11-22 09:50:58 -03:00
Vini Brasil
bea227d71b
Clean graph JavaScript code (#2441)
This commit lints JavaScript files, removes commented-out code, and
moves 3 constants to `graph-util.js`. This is part of the Intervals
work, in order to make the original pull request smaller and release
this feature incrementally.

Related: #1574

Co-authored-by: Vignesh Joglekar <hey@vigneshjoglekar.com>
2022-11-15 11:38:39 -03:00
Vinicius Brasil
b2047d8975
Show 0% difference instead of N/A (#2401)
Closes #2397
2022-10-28 11:21:07 -03:00
Adam Rutkowski
0fa6b688af
Google APIs integration improvements (#2358)
* Make TestUtils module available in all tests

* Add macros patching the application env in tests

Unfortunately a lot of existing functionality relies on
certain application env setup. This isn't ideal because
the app config is a shared state that prevents us from
running the tests in parallel.

Those macros encapsulate setting up new env for test purposes
and make sure the changes are reverted when the test finishes.

* Allow passing request opts to HTTPClient.post/4

We need this to swap custom request building in
Google Analytics import.

* Unify errors when listing sites

* React: propagate backend error messages if available

* React: catch API errors in Search Terms component

* Propagate google API errors on referrer drilldown

* Handle verified properties errors in SC settings

* Add missing tests for SC settings controller

* Unify errors for fetching search analytics queries (list stats)

* Unify errors refreshing Google Auth Token

* Test fetch_stats/3 errors and replace Double with Mox

* Fixup makrup

* s/class/className

* Simplify Search Terms display in case of errors

* Fix warnings
2022-10-24 09:34:02 +02:00
Uku Taht
0bc762bfdc
Fix svg favicons (#2295)
* Overrides content-type for SVG favicons

* Organize favicon rendering

Make sure the placeholder icon is always requested from
/favicon/sources/placeholder

* Run prettier on site-switcher.js

* Yak Shave: upgrade Heroicons to 2.0

* Use HeroIcons instead of custom svg

* Update lib/plausible_web/plugs/favicon.ex

Co-authored-by: Adam Rutkowski <hq@mtod.org>

Co-authored-by: Adam Rutkowski <hq@mtod.org>
2022-10-04 13:20:51 +03:00
Uku Taht
be1b72895d Use React.ref.current() 2022-09-15 12:57:20 +03:00
Uku Taht
ad39640475 Fix tooltip boundary ref 2022-09-15 12:54:43 +03:00
Uku Taht
8d8b66d266
Add boundary to tooltip (#2211) 2022-09-13 12:46:01 +03:00
Uku Taht
aa7d7a35bd Revert "Add link to UTM builder (#2195)"
This reverts commit 6e7873f834.
2022-09-09 10:25:21 +03:00
Uku Taht
6e7873f834
Add link to UTM builder (#2195)
* Add link to UTM builder

* Changelog entry
2022-09-08 21:02:40 +03:00
Uku Taht
7683638b84
Embed improvements (#2148)
* Replace current tooltip with Popper.js

* Merge tooltip and title for top stats

* Format bounce rate and visit duration numbers in tooltip

* Add 'width=manual' mode for embed

* Add changelog entry

* Use helper function canMetricBeGraphed
2022-09-01 11:22:04 +03:00
Baoshuo
eac4660354
Update links to documents 2022-08-15 09:20:40 +08:00
Vinicius Brasil
2d7dee7067
Fix 24-hour clock format for some locales (#2074)
This commit fixes a commit when the 24-hour clock was displayed like
`09 Uhr:00` or `06 h:00` for some locales. It keeps appending the `:00`
string but removes any non-numeric characters first.
2022-08-01 11:35:49 +03:00
Uku Taht
446b6e64b8 Change 12h time format from '12h' to '12:00' 2022-07-28 17:19:30 +03:00
Uku Taht
fc63d036e2 Use empty string in favour of regex in String.replace 2022-07-28 17:10:57 +03:00
Uku Taht
a84da82b97 Formats the graph-util file 2022-07-28 17:10:30 +03:00
Sasha Fonseca
bbe3caba6a
Show time format of graphs based on browser's language (#2048)
* Show time format of graphs based on browser's language

* Use Intl.DateTimeFormat for graph time axis
2022-07-28 17:07:07 +03:00
Vinicius Brasil
ba36b08fd6
Make realtime goal conversions clickable (#2035)
Closes #1739
2022-07-21 14:00:42 +03:00
Daniel Bonfim
fbadad73fd
Closes #1994 (#2012) 2022-07-18 10:13:50 +03:00
Uku Taht
93b84661d1 Add tooltip to source numbers 2022-07-14 12:27:40 +03:00
Sasha Fonseca
37dddb62d9
Add tooltip to show exact number in lists (#2009)
* Add tooltip to show exact number in lists

* Update CHANGELOG
2022-07-12 23:47:14 +03:00
Vignesh Joglekar
9279cd7554
Fixes inane Safari Date.parse compatibility issue (#1887)
* Safari is modern IE

* Adds proper support for realtime "dateString"
2022-06-06 10:41:27 +03:00
Vignesh Joglekar
e82131b2f3
Fixes edge case on conversion metric automatic change (#1939) 2022-06-01 10:32:00 +03:00
Uku Taht
eeaefc1ad0 Only show db-ip notice when relevant 2022-05-03 10:38:59 +03:00
Uku Taht
f6f78cf418 Stop content shifting on page 2022-04-26 10:12:10 +03:00
Vignesh Joglekar
b686d8bff9
Re-adds underline to selected top stat (#1849) 2022-04-25 10:57:56 +03:00
Vignesh Joglekar
52348f7a7c
Reworks tooltip hierarchy (#1846) 2022-04-22 12:01:04 +03:00
Uku Taht
428ee747c3 Hook up flags to the custom prop filter 2022-04-21 16:43:16 +03:00
Uku Taht
c7742ec179 Display negated prop filter correctly 2022-04-21 11:51:51 +03:00
RobertJoonas
40275b64d4
Pageview custom dimensions (#1816)
* added custom dimension filtering tests for pages

* first filter UI in place

* pages, entry pages and exit pages can be filtered by pageview props

* added tests for expected filtering behaviour

* fix dimension filter for sources + tests

* added is_not filtering functionality

* fixed formatting

* fixed admin_test

* added (none) as filter value + is_not filter type in UI

* added prefilling applied filter values and some UI tweaks

* added fetch options

* Make prop suggestions work with `props` filter

* Fix test

* Track login state internally

* Add CHANGELOG entry

Co-authored-by: Uku Taht <uku.taht@gmail.com>
2022-04-21 11:47:15 +03:00
Andrea Mazzarella
1128ff4bfa
Update the internal /sites api to paginate results (#1824)
* Update the internal /sites api to paginate results and adapts site-switcher to it

* Update the Changelog

* Format internal controller

* Remove the `+ Add Site` link from the site-switcher in the dashboard

* Change camel to snake case and replace imports with fully qualified calls

* Remove trailing comma from site-switcher
2022-04-18 12:32:01 +03:00
Vignesh Joglekar
3b97ecdc62
Adds Main Graph Metric Selection (#1364)
* First pass bringing in previous graph improvements, and comparsion context

* Swaps issue template to new issue form syntax

* Indentation update

* Indentation update?

* More indentation

* Intendation is hard

* Finalized indentation?

* Github indentation

* Missing fields

* Formatting changes

* Checkbox changes

* Uses new timeseries API, various UI improvements, descopes conversions, ToP from graphing

* Fixes Mobile UI Issues

* Improves point detection and display on hover

* Fixes & adds tests for updated main-graph API route

* Changelog

* Changes to better metric option declaration & minor UI/default fixes

* Fixes top stat tooltips showing unformatted numbers for special (non-rounded) top stats

* Formatting

* Fixes regression with dashed portion not stopping at present_index

* Removes comparison + lint

* Improves top stat active style

* Removes comparison tests

* Splits out tooltip and top stats

Still needs:
- Tests
- Potentially more cleanup

* Adds/moves tests for top stats

* Formatting

* Updates metric LS key, removes console log

* Various fixes + cleanup

* Makes tooltip position & style more consistent

* Fixes test (returns import status on both main graph & top stats)

* Fixes interaction with month dateFormatter

* Fixes edge case tooltip behavior

It was simpler than I thought :/

* Make the entire top stat clickable

* Minor UI improvements

* Fixes another tooltip visibility edge case + cleans up boolean algebra

Co-authored-by: Uku Taht <Uku.taht@gmail.com>
2022-04-13 10:38:47 +03:00
Uku Taht
fb60032a75 Fix date display 2022-04-05 10:27:27 +03:00
Uku Taht
cd32f0f124 Add keyboard shortcut for last 12 months 2022-04-04 11:48:54 +03:00
Uku Taht
d40faf6ec7 More datepicker improvements 2022-03-31 16:47:19 +03:00
Uku Taht
f9ab9ef980 Fix arrows on year period 2022-03-31 13:56:56 +03:00
Uku Taht
7f58e6be4e Add Year to Date option in datepicker 2022-03-31 13:52:48 +03:00
Uku Taht
8467979051 Add All Time option to datepicker 2022-03-31 11:00:20 +03:00
Uku Taht
0e908c84f6 Show weekday and year in datepicker when relevant 2022-03-31 10:20:13 +03:00
Andrea Mazzarella
3c93a2d91b
1421 contains filter (#1799)
* small refactors and adds 'contains' to modal

* supports contains filter in the backend

* moves entry and exit page under the page filter

* prettier

* updates the CHANGELOG

* undo package-lock changes

* fixes formatting for elixir

* renames unused parameter to _

* Update changelog

* Use uppercase for constants and update type/prefix lookup
2022-03-29 08:39:16 +03:00
Jordy van den Aardweg
2c25e0b468
Prevent canvas (main graph) from being selected on long press on mobile browsers (#1801)
* Prevent canvas from being selected on long press on mobile browsers

* Update CHANGELOG.md
2022-03-28 11:49:34 +03:00
Uku Taht
203f87520b
Ga import improvements (#1784)
* Do not link Google account for import

* Record start date

* Fix tests
2022-03-22 16:09:45 +02:00
Marko Saric
2ff1cdda7c
Note about double asterisks in front and back for contains (#1783) 2022-03-22 12:16:30 +02:00
Uku Taht
e27734ed79
[Continued] Google Analytics import (#1753)
* Add has_imported_stats boolean to Site

* Add Google Analytics import panel to general settings

* Get GA profiles to display in import settings panel

* Add import_from_google method as entrypoint to import data

* Add imported_visitors table

* Remove conflicting code from migration

* Import visitors data into clickhouse database

* Pass another dataset to main graph for rendering in red

This adds another entry to the JSON data returned via the main graph API
called `imported_plot`, which is similar to `plot` in form but will be
completed with previously imported data.  Currently it simply returns
the values from `plot` / 2. The data is rendered in the main graph in
red without fill, and without an indicator for the present. Rationale:
imported data will not continue to grow so there is no projection
forward, only backwards.

* Hook imported GA data to dashboard timeseries plot

* Add settings option to forget imported data

* Import sources from google analytics

* Merge imported sources when queried

* Merge imported source data native data when querying sources

* Start converting metrics to atoms so they can be subqueried

This changes "visitors" and in some places "sources" to atoms. This does
not change the behaviour of the functions - the tests all pass unchanged
following this commit. This is necessary as joining subqueries requires
that the keys in `select` statements be atoms and not strings.

* Convery GA (direct) source to empty string

* Import utm campaign and utm medium from GA

* format

* Import all data types from GA into new tables

* Handle large amounts of more data more safely

* Fix some mistakes in tables

* Make GA requests in chunks of 5 queries

* Only display imported timeseries when there is no filter

* Correctly show last 30 minutes timeseries when 'realtime'

* Add with_imported key to Query struct

* Account for injected :is_not filter on sources from dashboard

* Also add tentative imported_utm_sources table

This needs a bit more work on the google import side, as GA do not
report sources and utm sources as distinct things.

* Return imported data to dashboard for rest of Sources panel

This extends the merge_imported function definition for sources to
utm_sources, utm_mediums and utm_campaigns too. This appears to be
working on the DB side but something is incomplete on the client side.

* Clear imported stats from all tables when requested

* Merge entry pages and exit pages from imported data into unfiltered dashboard view

This requires converting the `"visits"` and `"visit_duration"` metrics
to atoms so that they can be used in ecto subqueries.

* Display imported devices, browsers and OSs on dashboard

* Display imported country data on dashboard

* Add more metrics to entries/exits for modals

* make sure data is returned via API with correct keys

* Import regions and cities from GA

* Capitalize device upon import to match native data

* Leave query limits/offsets until after possibly joining with imported data

* Also import timeOnPage and pageviews for pages from GA

* imported_countries -> imported_locations

* Get timeOnPage and pageviews for pages from GA

These are needed for the pages modal, and for calculating exit rates for
exit pages.

* Add indicator to dashboard when imported data is being used

* Don't show imported data as separately line on main graph

* "bounce_rate" -> :bounce_rate, so it works in subqueries

* Drop imported browser and OS versions

These are not needed.

* Toggle displaying imported data by clicking indicator

* Parse referrers with RefInspector

- Use 'ga:fullReferrer' instead of 'ga:source'. This provides the actual
  referrer host + path, whereas 'ga:source' includes utm_mediums and
  other values when relevant.
- 'ga:fullReferror' does however include search engine names directly,
  so they are manually checked for as RefInspector won't pick up on
  these.

* Keep imported data indicator on dashboard and strikethrough when hidden

* Add unlink google button to import panel

* Rename some GA browsers and OSes to plausible versions

* Get main top pages and exit pages panels working correctly with imported data

* mix format

* Fetch time_on_pages for imported data when needed

* entry pages need to fetch bounces from GA

* "sample_percent" -> :sample_percent as only atoms can be used in subqueries

* Calculate bounce_rate for joined native and imported data for top pages modal

* Flip some query bindings around to be less misleading

* Fixup entry page modal visit durations

* mix format

* Fetch bounces and visit_duration for sources from GA

* add more source metrics used for data in modals

* Make sources modals display correct values

* imported_visitors: bounce_rate -> bounces, avg_visit_duration -> visit_duration

* Merge imported data into aggregate stats

* Reformat top graph side icons

* Ensure sample_percent is yielded from aggregate data

* filter event_props should be strings

* Hide imported data from frontend when using filter

* Fix existing tests

* fix tests

* Fix imported indicator appearing when filtering

* comma needed, lost when rebasing

* Import utm_terms and utm_content from GA

* Merge imported utm_term and utm_content

* Rename imported Countries data as Locations

* Set imported city schema field to int

* Remove utm_terms and utm_content when clearing imported

* Clean locations import from Google Analytics

- Country and region should be set to "" when GA provides "(not set)"
- City should be set to 0 for "unknown", as we cannot reliably import
  city data from GA.

* Display imported region and city in dashboard

* os -> operating_system in some parts of code

The inconsistency of using os in some places and operating_system in
others causes trouble with subqueries and joins for the native and
imported data, which would require additional logic to account for. The
simplest solution is the just use a consistent word for all uses. This
doesn't make any user-facing or database changes.

* to_atom -> to_existing_atom

* format

* "events" metric -> :events

* ignore imported data when "events" in metrics

* update "bounce_rate"

* atomise some more metrics from new city and region api

* atomise some more metrics for email handlers

* "conversion_rate" -> :conversion_rate during csv export

* Move imported data stats code to own module

* Move imported timeseries function to Stats.Imported

* Use Timex.parse to import dates from GA

* has_imported_stats -> imported_source

* "time_on_page" -> :time_on_page

* Convert imported GA data to UTC

* Clean up GA request code a bit

There was some weird logic here with two separate lists that really
ought to be together, so this merges those.

* Fail sooner if GA timezone can't be identified

* Link imported tables to site by id

* imported_utm_content -> imported_utm_contents

* Imported GA from all of time

* Reorganise GA data fetch logic

- Fetch data from the start of time (2005)
- Check whether no data was fetched, and if so, inform user and don't
  consider data to be imported.

* Clarify removal of "visits" data when it isn't in metrics

* Apply location filters from API

This makes it consistent with the sources etc which filter out 'Direct /
None' on the API side. These filters are used by both the native and
imported data handling code, which would otherwise both duplicate the
filters in their `where` clauses.

* Do not use changeset for setting site.imported_source

* Add all metrics to all dimensions

* Run GA import in the background

* Send email when GA import completes

* Add handler to insert imported data into tests and imported_browsers_factory

* Add remaining import data test factories

* Add imported location data to test

* Test main graph with imported data

* Add imported data to operating systems tests

* Add imported data to pages tests

* Add imported data to entry pages tests

* Add imported data to exit pages tests

* Add imported data to devices tests

* Add imported data to sources tests

* Add imported data to UTM tests

* Add new test module for the data import step

* Test import of sources GA data

* Test import of utm_mediums GA data

* Test import of utm_campaigns GA data

* Add tests for UTM terms

* Add tests for UTM contents

* Add test for importing pages and entry pages data from GA

* Add test for importing exit page data

* Fix module file name typo

* Add test for importing location data from GA

* Add test for importing devices data from GA

* Add test for importing browsers data from GA

* Add test for importing OS data from GA

* Paginate GA requests to download all data

* Bump clickhouse_ecto version

* Move RefInspector wrapper function into module

* Drop timezone transform on import

* Order imported by side_id then date

* More strings -> atoms

Also changes a conditional to be a bit nicer

* Remove parallelisation of data import

* Split sources and UTM sources from fetched GA data

GA has only a "source" dimension and no "UTM source" dimension. Instead
it returns these combined. The logic herein to tease these apart is:

1. "(direct)" -> it's a direct source
2. if the source is a domain -> it's a source
3. "google" -> it's from adwords; let's make this a UTM source "adwords"
4. else -> just a UTM source

* Keep prop names in queries as strings

* fix typo

* Fix import

* Insert data to clickhouse in batches

* Fix link when removing imported data

* Merge source tables

* Import hostname as well as pathname

* Record start and end time of imported data

* Track import progress

* Fix month interval with imported data

* Do not JOIN when imported date range has no overlap

* Fix time on page using exits

Co-authored-by: mcol <mcol@posteo.net>
2022-03-10 15:04:59 -06:00
RobertJoonas
6b22806e1f
Allow admin access to locked dashboards (#1710)
* added super-admin access to locked dashboards

* fixed formatting
2022-02-23 13:48:33 -06:00
Uku Taht
97ce263c84 Add fallback if InteractionObserver is unavailable 2022-02-08 15:07:40 -06:00
Uku Taht
9d792f5b8c Do not unobserve if there is no observer
Fixes #639
2022-02-08 13:58:03 -06:00
Uku Taht
ac5c8c7688
Replace plus icon with search icon for filter (#1635)
* Change `Country` to `Location` in the Add filter dropdown

This filter allows to select region and city too

* Rename country filter group to Location

* Use search icon for filters

Co-authored-by: RobertJoonas <56999674+RobertJoonas@users.noreply.github.com>
2022-01-28 17:29:05 -06:00
Uku Taht
e70fa293f2
Pr/1609 extended (#1634)
* Change `Country` to `Location` in the Add filter dropdown

This filter allows to select region and city too

* Rename country filter group to Location

Co-authored-by: RobertJoonas <56999674+RobertJoonas@users.noreply.github.com>
2022-01-25 14:34:14 -06:00
Uku Taht
880ea45cd9 Remove cities feature flag 2021-12-31 12:16:25 +02:00
Uku Taht
8fccb4c353 Fix listReport making too many requests 2021-12-30 10:59:45 +02:00
Uku Taht
d1177dfab3 Add filters for utm_term and utm_content 2021-12-22 09:57:23 +02:00
Ru Singh
d5377987d9
Allow site toggle to work with minimal info for guests (#1510)
* chore(docker): improve repeat contributions workflow

* This change adds two new commands to gracefully stop and remove the Postgres and Clickhouse docker containers. To do so, it also gives them a recognizable name.

* Additionally, the Postgres container is updated to use a named volume for its data. This lower friction for repeat contributions where one would otherwise sign up and activate their accounts again and again each time.

* fix(ui): site switcher should toggle, instead of just opening

* feat/wip: public site toggle dropdown

* fix(ux): toggling the site switcher & closing from anywhere

* Do not react to key presses for guest users

* Cleanup duplicate code

* Fix logic left in for local testing

* Add a changelog entry for guest dropdown toggle
2021-12-22 09:54:09 +02:00
Uku Taht
994d9a19b7 Fix UTM modals 2021-12-20 16:10:39 +02:00
Uku Taht
2d32227621 Add dark style for UTM dropdown 2021-12-20 11:26:26 +02:00
Uku Taht
f34c90e26c Show UTM term and content 2021-12-17 16:00:06 +02:00
Uku Taht
0c8de55c44 Add UTM to button text 2021-12-17 14:12:59 +02:00
Uku Taht
91f670c85a Remove UTM for button text 2021-12-17 10:57:30 +02:00
Uku Taht
7ab3de9708 Rename 'UTM params' to 'Campaigns' 2021-12-16 15:22:08 +02:00
Uku Taht
48ad7485c8
PR 1393 continued (#1542)
* Add `utm_content` and `utm_term`.
Support `utm_content` and `utm_term` as requested in #515.

* Add dropdown for UTM options

* Remove utm_content and term from filter modal for now

Co-authored-by: Blender Defender <defenderblender@gmail.com>
2021-12-16 11:02:09 +02:00
Uku Taht
383bba947e Restore map tab when removing region filter 2021-12-14 11:55:00 +02:00
Uku Taht
6365c6956b Use react Hooks for ListReport 2021-12-14 11:28:43 +02:00
Uku Taht
32f5a8d296 Walk back up the hierarchy in locations 2021-12-14 10:27:02 +02:00
Uku Taht
dcf31502c2 Show regions when filtering by country etc 2021-12-13 14:45:19 +02:00
Uku Taht
1dba113e2f
[Draft] Improve location translations (#1526)
* WIP

* Use location library for search suggestions

* Remove unused code

* Remove Countries completely

* Fix tests
2021-12-13 12:03:27 +02:00
Uku Taht
178c8076d5 Fix country filter when clicking on map 2021-12-09 16:14:03 +02:00
Uku Taht
442e401ede Use new location library 2021-12-09 16:02:11 +02:00
Uku Taht
7d37208d52
Allow custom styles to be passed to embedded iframe (#1522)
* Allow custom styles to be passed to embedded iframe

* Changelog
2021-12-08 11:53:37 +02:00
Uku Taht
05a89ab130 Fix links in pages reports
Closes #1515
2021-12-07 11:17:15 +02:00
Ru Singh
88a4e13f9a
Site switcher toggle functionality (#1500)
* chore(docker): improve repeat contributions workflow

* This change adds two new commands to gracefully stop and remove the Postgres and Clickhouse docker containers. To do so, it also gives them a recognizable name.

* Additionally, the Postgres container is updated to use a named volume for its data. This lower friction for repeat contributions where one would otherwise sign up and activate their accounts again and again each time.

* fix(ui): site switcher should toggle, instead of just opening

* fix(ux): toggling the site switcher & closing from anywhere
2021-12-06 15:20:26 +02:00
Uku Taht
4c4895edb3 Add spacing around percentages
Fixes #1513
2021-12-06 15:18:17 +02:00
Uku Taht
47fac2350f
Use generic ListReport for pages (#1505) 2021-12-03 13:59:32 +02:00
Uku Taht
4d0bc61ffd Remove Twitter stuff 2021-12-02 11:53:29 +02:00
Uku Taht
effe56b3e4 Use new iso_codes package 2021-12-01 15:31:50 +02:00
Uku Taht
fce370401f Fix locations map 2021-11-30 12:51:58 +02:00
Ru Singh
7da138e99e
UI fix for multi-line pill text underline issues (#1499)
* chore(docker): improve repeat contributions workflow

* This change adds two new commands to gracefully stop and remove the Postgres and Clickhouse docker containers. To do so, it also gives them a recognizable name.

* Additionally, the Postgres container is updated to use a named volume for its data. This lower friction for repeat contributions where one would otherwise sign up and activate their accounts again and again each time.

* fix(ui): pill text to use text decoration instead of border

Support is pretty good including Safari 12+ without a prefix.

* docs(changelog): entry for pill text fix
2021-11-29 16:21:09 +02:00
Uku Taht
d55055f91b Fix sitePath 2021-11-29 12:30:19 +02:00
Uku Taht
6633d72418 Remove theme context from the react codebase 2021-11-26 16:27:34 +02:00
Uku Taht
b695732521 Improve scroll behaviour on the dashboard 2021-11-26 16:00:34 +02:00
Uku Taht
5f6553c8d8 Remove DDG 2021-11-26 11:59:04 +02:00
Uku Taht
73a2dc00ea Fix issue with filters 2021-11-26 11:41:41 +02:00
Uku Taht
2bdfec1cc0
JS refactor: use generic ListReport for country report (#1487)
* Use ListReport for countries

* Fix countries tests

* Replace Browsers with ListReport

* Use Listreport for OS and screen size
2021-11-25 12:00:17 +02:00
Uku Taht
05bf43c1be
City level location data (#1449)
* Merge branch 'plausible_master'

* Add City level details

* Add City level details

* Use ISO codes instead of geoname_id for subdivisions

* Add easier way to configure geolocation database

* Add workflow for dev branch

* Correct clickhouse migration

* Translate subdivision names

* Translate city names

* WIP

* Region and country filters

* Fix region filter

* Remove region_name when removing region filter

* Add modals for regions and cities

* Remove dead code

* WIP

* Revert "WIP"

This reverts commit 3202bf2fe9.

* Feature flag to hide cities when deployed

* Add changelog entry

* Remove unused code

* Remove unused variables

* Fix test

Co-authored-by: AymanTerra <aymanterra@yahoo.com>
2021-11-23 11:39:09 +02:00
Matt Colligan
3380685d40
Fix custom property total conversions value not displayed & Export custom properties (#1456)
* Fix custom property total conversions value not displayed

The custom property conversion metrics are not consistent with the other
metrics resulting in the total conversions not being displayed in the
dashboard. This fixes that.

* Export custom props of current goal when filtering dashboard for goal

This makes the CSV export also output a `prop_breakdown.csv` file which,
for the currently filtered goal, contains the conversion data for each
of its configured properties.

* Add test for goal-filtered CSV export
2021-11-10 16:53:38 +02:00
Matt Colligan
29e37c8342 More improvements for CSV export (#1446)
* Round time_on_page metric returned by 'pages' API

This rounds the `time_on_page` metric returned as part of the `pages`
API to the nearest second. While this shows no apparent change in the
web UI, it removes the decimal from the exported data in `pages.csv`.

* Tidy up export tests

* Round time_on_page in db query

* Add goal to CSV export tests

* Display CSV export spinner until download is ready

The mechanism used to make the page aware that the download is ready is:

- Client code sets a cookie and requests download.
- Server code handles download and removes cookie when complete.
- Client code polls every 1s to check the cookies, removing spinner when
  the export cookie is removed.
2021-11-09 09:51:38 +02:00
Matt Colligan
945bf82c72
Fix conversions metrics (#1447)
f576fa2 should have updated the conversion metric names so that
`unique_conversions` and `total_conversions` are the two metrics
returned by the conversions API. This updates those so that the CSV
export outputs the correct data.
2021-11-05 15:18:59 +02:00
Matt Colligan
f576fa2a2c
Improvements to CSV export (#1427)
* Add details=True to export API parameters

This makes the ZIP export add `%{"details" => "True"}` to the query's
`params` when fetching data internally for packaging in the ZIP.

This adds bounce_rate and time_on_page to the data in pages.csv, and
bounce_rate and visit_duration to sources.csv.

* Make API return data with consistent names

Some of the data types returned via the JSON or CSV API use inconsistent
naming, and some have redundant name changes (i.e. count -> visitors ->
count). This makes these all consistent and removes the redundancy.

This addresses #1426, fixes some of the CSV headers, and unifies the
JSON and CSV return data labels.

* Update changelog

* Test should use Timex.shift, not relative time

* Return full country names in CSV export

This also replaces the " character with ' in two country names, as those
are the characters used in the names, yielding a more predictable and
'correct' output.

* Fetch CSV exported data concurrently

* Use spinner to indicate when export has started

* Use 300 as default number of brekadown entries for export

Higher numbers (e.g. 1000) seem to cause clickhouse errors when there
many pages to request. It is unclear what is causing the error, as
clickhouse returns an "unknown" error code and an empty error message.
2021-11-04 14:20:39 +02:00
Janosh Riebesell
e7593ce94f
Additional pre-commit hooks (#1428)
* add 1st-party langauge agnnostic pre-commit hooks

* white space fixes from pre-commit run -av

* fix CI test/plausible_web/controllers/stats_controller_test.exs#L153

* Revert "fix CI test/plausible_web/controllers/stats_controller_test.exs#L153"

This reverts commit 85c9450efe.

* git checkout 94f476eb~1 -- priv/ref_inspector priv/ua_inspector
2021-11-03 15:46:12 +01:00
Matt Colligan
8138a6e3a5
Start putting together means to export all aggregate data (#1387)
* Export all dashboard data in zip

This packages all data currently visible in the dashboard into
individual CSVs and downloads them together in a zip.

* Also export conversions in zip of CSVs

* Update export test with zip file response

* Add zip file download to changelog
2021-10-26 15:54:50 +02:00
Vignesh Joglekar
0c982a8670
Adds list-based country report option (#1381)
* Adds list option for countries report

* Changelog

* Renames Geo to Locations

* Lint

Co-authored-by: Uku Taht <Uku.taht@gmail.com>
2021-10-14 10:55:43 +02:00
Vignesh Joglekar
7e9d83d62e
Adds pagination for custom props & fixes an issue with errant (none) return values (#1382)
* Adds pagination for custom props, fixes errant (none) being returned in the middle of a dataset

* Formatting

* Fixes errant (none) value correctly

* Changelog

* Adds tests
2021-10-14 09:45:47 +02:00
Vignesh Joglekar
688e195e27
Fixes custom prop tab wrapping & spacing on smaller viewports (#1383)
* Fixes custom prop tab wrapping & spacing on smaller viewports

* Changelog

Co-authored-by: Uku Taht <Uku.taht@gmail.com>
2021-10-13 10:39:44 +02:00
Vignesh Joglekar
b4445b1f7c
Adds various dark mode missing styles (#1367)
* Swaps issue template to new issue form syntax

* Indentation update

* Indentation update?

* More indentation

* Intendation is hard

* Finalized indentation?

* Github indentation

* Missing fields

* Formatting changes

* Checkbox changes

* Fixes various dark mode issues

* Couple more dark mode issues
2021-10-12 11:50:24 +02:00
Mackenzie
9c2fd9aca5
1. Remove the "airbnb" eslint plugin since it conflicts with prettier (#1374)
and so was just annoying
2. Get rid of all existing ESLint errors.
2a. Turned off `react/display-name` because I couldn't figure out how to
make that wrapped component have a display name. If anyone can figure it
out, that'd be great, because that makes things nicer when using the
React debugger.
2b. The part where it says `plausible()` is undefined in `app.js` is
bothering me. I disabled the check because I can't figure out where that
actually comes from to put in the proper import.
2c. Told ESLint we're using Babel.
3. Added `npm run format` and `npm run lint` commands.
2021-10-11 14:48:19 +02:00
Uku Taht
bd7de59a9c Show total visitors when filtered for goal 2021-09-29 13:28:29 +02:00
Uku Taht
4c77df477f Eslint improvements 2021-09-27 16:16:25 +02:00
Uku Taht
3315b8cce5 Fix external URLs for entry and exit pages 2021-09-27 16:07:29 +02:00
Uku Taht
c7035271ef Fix z-index bug with long site list
Fixes #1346
2021-09-21 11:08:00 +02:00
Uku Taht
f5a7fd2819
Fix links in new tab (#1348)
* Fix links in new tab

* CHANGELOG
2021-09-21 10:44:51 +02:00
Ro Savage
b3bc796d50
Add conversion_rate to sources api and source table (#1299)
* Add conversion_rate to sources api and source table

* Remove percentageFormatter

* Update source tests to include conversionat rate

* Add CR to detals modal

* Correct formatting with linter

* Add change log

* Add CR to Pages, Device and Countries panels
2021-09-20 16:17:11 +02:00
Муравьёв Семён
7d36c980c8
fix(dashboard): Page names truncate in pages modal (#1270) 2021-08-26 09:33:13 +03:00
Uku Taht
021cffaf11 Fix custom prop url detection 2021-08-24 15:23:34 +03:00
Ru Singh
6e997e7e5d
Condense and show all site nav/options on mobile (#1256)
* chore(docker): improve repeat contributions workflow

* This change adds two new commands to gracefully stop and remove the Postgres and Clickhouse docker containers. To do so, it also gives them a recognizable name.

* Additionally, the Postgres container is updated to use a named volume for its data. This lower friction for repeat contributions where one would otherwise sign up and activate their accounts again and again each time.

* Format countries modal

* Remove unused imports
* Run ESLint and make related fixes

* ESlint formatting for entry pages modal

* WIP: proof of concept for scrollable modals on mobile

* Revert "Merge branch 'feature/details-modal-mobile' of github.com:hirusi/analytics"

This reverts commit 87e9fb92d0, reversing
changes made to beea6a07c7.

* Condense and show all site nav/options on mobile
2021-08-23 12:39:43 +03:00
Ru Singh
5ee7445375
All sources component's details button to stick to the bottom when too few items and on mobile (#1255)
* chore(docker): improve repeat contributions workflow

* This change adds two new commands to gracefully stop and remove the Postgres and Clickhouse docker containers. To do so, it also gives them a recognizable name.

* Additionally, the Postgres container is updated to use a named volume for its data. This lower friction for repeat contributions where one would otherwise sign up and activate their accounts again and again each time.

* Format countries modal

* Remove unused imports
* Run ESLint and make related fixes

* ESlint formatting for entry pages modal

* WIP: proof of concept for scrollable modals on mobile

* Revert "Merge branch 'feature/details-modal-mobile' of github.com:hirusi/analytics"

This reverts commit 87e9fb92d0, reversing
changes made to beea6a07c7.

* Fix issue with details button not sticking to the bottom

On "All Sources", the details button wouldn't stick to the bottom when there are too few sources for the date period selected. This was due to a missing class.
2021-08-23 12:27:54 +03:00
Uku Taht
f9ea3cda6b Fix custom props in conversions 2021-08-19 11:03:41 +03:00
Uku Taht
128f8dbf2e Fix favicons and spelling in top sources 2021-08-18 15:21:47 +03:00
Uku Taht
96df035285 Fix dotted line 2021-08-18 12:24:23 +03:00
Uku Taht
219bdc1573 Fix sampling icon on mobile 2021-08-18 12:17:45 +03:00
Uku Taht
4fef567623 Fix goal filter 2021-08-17 11:01:00 +03:00
Uku Taht
ecbc68f05b Fix entry pages 2021-08-16 11:58:36 +03:00
Uku Taht
79f6756ba2 Make is not filter work 2021-08-16 10:39:13 +03:00
Ru Singh
dd20fc8a17
Feature/details modal mobile (#1211)
* chore(docker): improve repeat contributions workflow

* This change adds two new commands to gracefully stop and remove the Postgres and Clickhouse docker containers. To do so, it also gives them a recognizable name.

* Additionally, the Postgres container is updated to use a named volume for its data. This lower friction for repeat contributions where one would otherwise sign up and activate their accounts again and again each time.

* Format countries modal

* Remove unused imports
* Run ESLint and make related fixes

* ESlint formatting for entry pages modal

* WIP: proof of concept for scrollable modals on mobile

* Fix modals being too wide on desktop

* Make modals truly responsive

This fixes the desktop behaviour completely now.

* Update changelog with modals responsiveness

* Update desktop modal width to 860px

It was an oversight to set it at 800px in the first place.

Co-authored-by: Uku Taht <Uku.taht@gmail.com>
2021-08-13 11:00:42 +03:00
Uku Taht
7e78157c4b
Merge branch 'master' into stats-module 2021-08-04 16:11:40 +03:00
Uku Taht
6758931431 Add plug for source favicons 2021-08-04 12:01:50 +03:00
Uku Taht
7d1b1214e2 Implement dashboard with new stats module 2021-08-02 15:46:30 +03:00
Ru Singh
f179b253b4
Hotfix/bar overflow (#1202)
* chore(docker): improve repeat contributions workflow

* This change adds two new commands to gracefully stop and remove the Postgres and Clickhouse docker containers. To do so, it also gives them a recognizable name.

* Additionally, the Postgres container is updated to use a named volume for its data. This lower friction for repeat contributions where one would otherwise sign up and activate their accounts again and again each time.

* Break words early to maintain spacing; truncate on larger screens

* Update changelog entry on UI bars

* Truncate bar text from md breakpoint
2021-07-29 09:54:52 +03:00
Uku Taht
5d8d21f685 Fix search select font size and eslint 2021-07-23 11:22:33 +03:00
Uku Taht
7dfbd9308c Add a way to clear filters in the modal 2021-07-23 10:29:46 +03:00
Uku Taht
d6662f1f69 Remove datepicker arrows on mobile 2021-07-22 11:27:10 +03:00
Uku Taht
66ee8c84fe Correct pluralization 2021-07-22 10:37:37 +03:00
Uku Taht
10bc09ca8d Fix realtime view 2021-07-22 10:33:16 +03:00
Uku Taht
fc518af8c5 More consistent text size 2021-07-22 09:20:23 +03:00
Uku Taht
1bdc27d9cb Fix dropdown filter spacing 2021-07-22 09:20:16 +03:00
Uku Taht
b3bb663aa9 Default to empty path in url helper 2021-07-22 09:20:10 +03:00
Uku Taht
43ba2a8b98 Show current visitors 2021-07-22 09:20:02 +03:00
Uku Taht
0de89bad82
Add filter groups (#1167)
* Add filter groups

* New flow for filters

* Visual consistency

* Mobile improvements to dropdown

* Do not let filters wrap on a new line

* Fix country filter

* Add mix format to pre-commit configuration

* Make eslint happy

* Fix formatting

* Use transition from headlessUI
2021-07-21 16:50:26 +03:00
Ru Singh
9ce9264144
Feature/goals bar text (#1165)
* chore(docker): improve repeat contributions workflow

* This change adds two new commands to gracefully stop and remove the Postgres and Clickhouse docker containers. To do so, it also gives them a recognizable name.

* Additionally, the Postgres container is updated to use a named volume for its data. This lower friction for repeat contributions where one would otherwise sign up and activate their accounts again and again each time.

* Improve bar component to work in a variety of situations

This fixes two issues from #972

- Goals area has display issues depending on the name of your custom events
- It is not possible to view labels for outbound links, 404 and custom props

* Update changelog entry

* Move content to children for Bar component

* Remove redundant fallback width

* Fix text color on root conversion texts

Hyperlinks (<a>) inherit their color. In the case of the root conversion text, we needed to specify the color somewhere.

The same color as the breakdown texts has been chosen.

The Bar component no longer needs to take in text classes.
2021-07-08 09:42:30 +03:00
Uku Taht
a02adcb920 Add the concept of secondary filters 2021-06-30 15:38:14 +03:00
Uku Taht
99554c36cf Dark mode for filters 2021-06-30 10:13:29 +03:00
Uku Taht
5f8c50d08b Add hint about searching for different time range 2021-06-30 10:08:25 +03:00
Uku Taht
574ec78653 Remove dead code 2021-06-29 15:13:30 +03:00
Uku Taht
06aaae6314 Add hint for page filters 2021-06-29 12:13:09 +03:00
Uku Taht
8b93ac59d4 Make country search case insensitive 2021-06-29 11:51:15 +03:00
Uku Taht
cf66581a86 Fix default value behaviour 2021-06-29 11:51:15 +03:00
Uku Taht
d92ac265c3 Add keyboard shortcut for filters 2021-06-29 11:51:15 +03:00
Uku Taht
edfe9ddc26 Small visual tweaks 2021-06-29 11:51:15 +03:00
Uku Taht
3a1e72ac23 Simplify filter modal 2021-06-29 11:51:14 +03:00
Uku Taht
8e2601d76f Use Downshift instead of react-select 2021-06-29 11:51:14 +03:00
Ru Singh
e5a4b82db4
Feature/mobile graph (#1160)
* chore(docker): improve repeat contributions workflow

* This change adds two new commands to gracefully stop and remove the Postgres and Clickhouse docker containers. To do so, it also gives them a recognizable name.

* Additionally, the Postgres container is updated to use a named volume for its data. This lower friction for repeat contributions where one would otherwise sign up and activate their accounts again and again each time.

* Update the ticks on the X and Y axis of the main chart to be responsive

* Update the changelog for the graph responsiveness fix
2021-06-28 16:05:22 +03:00
Vignesh Joglekar
30ac901141
Adds manual, editable, auto-suggested filters, and negated&globbed path-based filters (#1121)
* Adds manual-filters + friends

commit 308192044d726e9a6f7406e333048ab3407aa260
Merge: 39287ab a299fab
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Fri Jun 11 03:40:55 2021 -0500

    Merge branch 'manual-filters' into manual-filters-2

commit a299fab1fb
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Fri Jun 11 02:20:26 2021 -0500

    Changes to split and pattern matched function for time_on_page

commit 10f10c933a
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Fri Jun 11 01:53:18 2021 -0500

    Fixes a couple of minor UX issues

commit f2e5ce8eb3
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Fri Jun 11 01:49:10 2021 -0500

    Fixes time on page for globbed and negated page paths

commit bb18af6526
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Thu Jun 10 05:24:05 2021 -0500

    Close to finalized version of updated version

    Just needs some additional testing + potentially code cleanup

commit d0b7bfe3da
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Fri May 28 04:21:21 2021 -0500

    Real Dialyzer Fix

commit 296a76af34
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Fri May 28 03:44:29 2021 -0500

    Dialyzer fix

commit 91f3b44017
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Thu May 27 17:11:24 2021 -0500

    Changelog

commit e041f75745
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Thu May 27 17:09:52 2021 -0500

    Formatting

commit f689642204
Merge: e00929b 4ff25f6
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Thu May 27 17:08:47 2021 -0500

    Merge branch 'master' into manual-filters

commit e00929b1c5
Merge: 83887c4 806975e
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Thu May 27 17:01:48 2021 -0500

    Merge branch 'manual-filters' of github.com:Vigasaurus/plausible-analytics into manual-filters

commit 83887c49cc
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Thu May 27 16:59:32 2021 -0500

    Adds tests for suggestions, formats goals suggestion query

commit 1cb7732a08
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Thu May 27 16:36:31 2021 -0500

    Adds goals as auto-complete capable filter

commit 4ca39cc406
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Thu May 27 16:08:22 2021 -0500

    95% completed auto-complete setup

    Still needs:
    - tests
    - goals added as filter

commit 22d38c4cd8
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Thu May 27 03:47:19 2021 -0500

    80% of auto-complete filters progress

    Still needs
    - countries and screen into new format
    - re-style dropdown and background
    - drop debounce time
    - tests

commit 806975ede9
Merge: 81c5e05 1a93542
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Tue May 25 15:28:21 2021 -0500

    Merge branch 'master' into manual-filters

commit 81c5e05760
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Tue May 25 15:21:03 2021 -0500

    Makes colorings on top bar elements consistent

commit fa7f6c2268
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Tue May 25 14:58:25 2021 -0500

    Makes requested changes, adds different version of filter button

commit 7dc65b9b7a
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Sat May 22 04:29:01 2021 -0500

    Changelog

commit c684f1c76a
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Sat May 22 04:26:14 2021 -0500

    Various UI Improvements

    - Makes edit buttons full-length & properly sized
    - Adds remove filter button in edit menu

commit a632e7a8ee
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Sat May 22 03:11:50 2021 -0500

    Adds tests for exclusions and wildcards

commit eb91a7942b
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Sat May 22 03:02:23 2021 -0500

    Fixes editing UX on list view

commit 6209d72aee
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Fri May 21 04:01:17 2021 -0500

    Bugfix in realtime view, formatting

commit 007d44df38
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Fri May 21 03:23:16 2021 -0500

    Second pass - mostly everything user-facing is done

    Still needs:
    - Tests
    - Potentially negating other filters
    - Potentially some code cleanup

commit cb7b5b9fbd
Author: Vignesh Joglekar <rexvigasaurus@gmail.com>
Date:   Fri May 21 01:49:52 2021 -0500

    First pass on manual filter & path regex/negated filters

    Still needs:
    - Form structure on filter modal
    - Edit filter button
    - Filter dropdown UI improvement
    - Filter modal mount data collection
    - Tests
    - Potentially negating other filters

* Fixes an issue between the updated React version and Flatpickr not showing up

Reverting to v16 was the simplest fix without diving into the issue upstream with Flatpickr

* Resolves comments on UI and code style

Co-authored-by: Uku Taht <Uku.taht@gmail.com>
2021-06-21 14:42:16 +03:00
Uku Taht
7bee3827dd Remove download link from realtime dashboard 2021-06-17 10:42:08 +03:00
Uku Taht
e71de6dc1f
Invitations (#1122)
* Invite existing user to a site

* Add invitation flow for non-existing users

* Accept and reject invitations

* Use invitation flow for existing users

* Locking mechanism for sites

* Authorization for site settings

* Show usage based on site ownership

* Add ability to remove members from a site

* Do not show settings link to viewer roles

* Ability to remove invitations

* Remove `Plausible.Sites.count_for/1`

* Fix tests

* Do not show the trial banner after the trial

* Correct trial emails

* Transfer ownership

* Send invitation email to existing user

* Add invitation email flows

* Add plug for role-based authorization

* Rename AuthorizeStatsPlug -> AuthorizeSiteAccess

* Add email flow for ownership transfer

* Fix URLs in emails

* Fix small copy issues

* Make 'People' its own section in site settings

* Notify user via email if their access has been removed

* Check site lock status when invitation is accepted

* Check lock status when user subscribes

* Make sure only admins and owners can create shared links

* Changelog

* Add LockSites to daily cron

* Clean invitations after 48 hours

* Add notices about expiry

* Add invitation expired page

* Add doc link
2021-06-16 15:00:07 +03:00
Ru Singh
c95d375839
Fix for details button misbehaving on mobile (#1114)
* chore(make): convenience commands for installation & dev server

* docs: easier development env instructions

* docs: add note about docker volumes

* docs: detail pre-commit configuration

* style: eslint and prettier changes

* Allow for passing custom classes to fade-in

* style: eslint & prettier for the details button component

* style: react lifecycle methods to come first

* docs: add instructions to disable pre-commit

* style: devices components

* Move render methods to the last (together) in the order list
* Remove unused component import
* React lifecycle to come first before our own methods
* General styling and eslint changes
* Cleaner renderContent method using switch/case (fixes an eslint error as well!)
* Cleaner renderPill method with proper spacing + removing uncessary else

* style: more eslint/prettier for pages components

* Use newer Fragment syntax
* Remove unnecessary else statement
* Use backtick strings for concatenating strings
* Remove unnecessary space
* Remove unused imports and variable declarations
* Bunch render methods together as last in the order list

* fix: details button to drop to the bottom naturally on smaller screens

This _mostly_ fixes one of the issues being tracked on #972, titled "Details button issue on Firefox specifically"

* refactor: reduce usage of our CSS class in favor of tailwind's util classes

* refactor: remove our css classes in favor of Tailwind's util classes
2021-06-15 10:34:43 +03:00
Vignesh Joglekar
645069271a
Fixes React errors+crash when system theme changes on loaded dashboard (#1123)
* Fixes crash on theme change

* Changelog
2021-06-14 16:44:46 +03:00
Uku Taht
c0678cd2f7
Chartjs v3 (#1111)
* WIP

* Implement graph with Chart.js v3
2021-06-07 11:29:42 +03:00
Uku Taht
c37a2de627 Revert "Adds manual filters on FE, capability for exclusion filters (and the globbing we're used to) for path-based filters (#1067)"
This reverts commit b6eeb40472.
2021-06-02 14:35:17 +03:00
Uku Taht
55030b837d Fix external referrer link
Fixes #1009
2021-05-26 10:52:25 +03:00
Vignesh Joglekar
b6eeb40472
Adds manual filters on FE, capability for exclusion filters (and the globbing we're used to) for path-based filters (#1067)
* First pass on manual filter & path regex/negated filters

Still needs:
- Form structure on filter modal
- Edit filter button
- Filter dropdown UI improvement
- Filter modal mount data collection
- Tests
- Potentially negating other filters

* Second pass - mostly everything user-facing is done

Still needs:
- Tests
- Potentially negating other filters
- Potentially some code cleanup

* Bugfix in realtime view, formatting

* Fixes editing UX on list view

* Adds tests for exclusions and wildcards

* Various UI Improvements

- Makes edit buttons full-length & properly sized
- Adds remove filter button in edit menu

* Changelog

* Makes requested changes, adds different version of filter button

* Makes colorings on top bar elements consistent
2021-05-26 10:34:04 +03:00
Vignesh Joglekar
41e4690116
Adds Time on Page metric to Top Pages report (#1007)
* First pass

Needs more testing & potentially cleanup

* Fixes tests, error handling

* Formatting

* Removes broken test

* Fixes inconsistent test

This was due to Clickhouse setup not inserting the sessions with the exact same timestamp consistently and making the test inconsistent

* Combines `include` param, asyncs time_on_page and bounce_rate

* Fixes CH error when no pageviews exist in period

* Format

* Changelog

* Increases await timeout to accomodate larger data sets

* Improves handling of timeout behavior

* Fixes session-based filtering on time on page queries

* Formatting

* Removes old forced entry page modal from top pages report
2021-05-18 15:14:33 +03:00
Uku Taht
255b4b2325
Don't use localStorage when the browser doesn't support it (#971)
* Wrap localStorage with support checks

* Add changelog
2021-04-28 11:31:10 +03:00
Uku Taht
83a759c60a
Use db-ip lite database for countries (#906)
* Use DBIP database for countries

* Add fake data for geolocation tests
2021-04-12 12:21:07 +03:00
Uku Taht
28d293e2d2 Fix console errors when using shared links 2021-04-07 11:06:33 +03:00
Uku Taht
1120ede0b4 Add missing return 2021-04-01 10:25:24 +03:00
Uku Taht
ced4f75395 Fix entering number in custom range picker
Fixes #831
2021-04-01 10:12:01 +03:00
Uku Taht
ec9134e14f Fall back to placeholder image when favicon request fails
Fixes #798
2021-03-31 17:14:09 +03:00
Uku Taht
8ccccc782c Fix long page url links
Fixes #545
2021-03-31 16:38:02 +03:00
Uku Taht
ef0efa2d63 Clean up pinned-header-hoc
Fixes  #639
2021-03-31 16:08:30 +03:00
Uku Taht
2e70a8f8b5 Prevent text wrapping on small screens
Fixes #845
2021-03-31 15:18:49 +03:00
Uku Taht
3e33385afd Fix 'last month' link option
Fixes #898
2021-03-31 15:14:10 +03:00
Uku Taht
629be8cc20 Fix loading of referrer report 2021-03-29 11:50:23 +03:00
Uku Taht
e315d0cf38
Fix shared link download link (#884)
* Fix shared link download link

* Add test and changelog entry

* Format
2021-03-26 13:48:06 +02:00
Uku Taht
01538c9907
WIP: add lazy loading for dashboard (#859)
* WIP: add lazy loading for dashboard

* Improve error handling

* WIP

* Implement lazy loading for most reports

* Add lazy loading to conversions
2021-03-25 11:55:15 +02:00
Uku Taht
6b277baed9 Fix pluralization for exact numbers 2021-03-24 15:14:17 +02:00
Uku Taht
c4c0bb2095 Various formatting improvements
* Format numbers over 1B
* Show full number when hovering
2021-03-24 12:08:05 +02:00
Uku Taht
fb64345e92 Format numbers larger than 100m 2021-03-24 11:52:07 +02:00
Uku Taht
3eb2f6d7a8
Add support for sampling (#875)
* Add support for sampling

* Use correct mix package

* Add notice about data sampling
2021-03-24 11:19:10 +02:00
Uku Taht
e8cb4ddefb Fix syntax error in JS 2021-03-16 15:06:58 +02:00
Uku Taht
3ff97d27ad Revert to native background colour control 2021-03-16 10:40:25 +02:00
Uku Taht
fef3eba0a4
Embed improvements (#839)
* Smoother resizing of the iframe

* Use bodyBackground with iframe-resizer
2021-03-15 15:56:12 +02:00
Uku Taht
57b3b32444 Add frameborder="0" and loading="lazy" to iframe 2021-03-10 15:56:21 +02:00
Uku Taht
844af698ce
Embeddable dashboard (#812)
* Add embedded mode for shared links

* Add test for X-Frame-Options

* Improve embed code generator

* Add changelog entry

Co-authored-by: aymanterra <aymanterra@users.noreply.github.com>
Co-authored-by: Brad Kane <bradkane@users.noreply.github.com>
2021-03-10 14:41:17 +02:00
Vignesh Joglekar
a271ce5477
Fixes zero-shortcut leading to undefined page (#788) 2021-03-04 09:50:15 +02:00
Vignesh Joglekar
7753f72d82
Fixes MoreLink for UTM tags (#782) 2021-03-03 10:14:12 +02:00
Uku Taht
fc70e7ef2b Fix spelling 2021-03-02 16:26:29 +02:00
Uku Taht
cda031d453
Bookmarkable shared links (#752)
* Implement shared links with a static URL

* Separate sessio cookie from shared link cookie
2021-03-02 11:15:43 +02:00
Vignesh Joglekar
ff32218bd0
Adds entry and exit pages to Top Pages module (#712)
* Initial Pass

* Adds support for page visits counting by referrer

* Includes goal selection in entry and exit computation

* Adds goal-based entry and exit page stats, formatting, code cleanup

* Changelog

* Format

* Exit rate, visit duration, updated tests

* I keep forgetting to format :/

* Tests, last time

* Fixes double counting, exit rate >100%, relevant tests

* Fixes exit pages on filter and goal states

* Adds entry and exit filters, fixes various bugs

* Fixes discussed issues

* Format

* Fixes impossible case in tests

Originally, there were only 2 pageviews for `test-site.com`,`/` on `2019-01-01`, but that doesn't make sense when there were 3 sessions that exited on the same site/date.

* Format

* Removes boolean function parameter in favor of separate function

* Adds support for queries that use `page` filter as `entry-page`

* Format

* Makes  loader/title interaction in sources report consistent
2021-02-26 11:02:37 +02:00
Vignesh Joglekar
09658810b8
Fixes overflow on long site urls (#749) 2021-02-24 09:50:06 +02:00
Vignesh Joglekar
524b4c52f6
Adds site switching keybindings (#735)
* Changes 30d and 6mo keybinds, adds site switch keybinds

* Fixes datepicker helpers

* Changelog
2021-02-23 15:49:56 +02:00
Uku Taht
e58ab08b7b Improve external link generation for domains with subfolder 2021-02-23 15:19:38 +02:00
Vignesh Joglekar
e55c2213a9
Fixes case-sensitivity and residual keys in date-keybinds (#709)
* Fixes case-sensitivity and residual keys

* Adds 30d and 6mo shortcuts

* Changelog, rename function appropriately
2021-02-18 11:18:54 +02:00
Uku Taht
015eeefe68 Made changelog notification dark-mode ready 2021-01-26 11:11:36 +02:00
Uku Taht
a5ac5ddd16 Show changelog notification 2021-01-26 10:32:03 +02:00
Vignesh Joglekar
e47518d5fc
Adds date selection keybindings (#630)
* Main Pass

* Changelog

* Resolves comments
2021-01-22 13:29:16 +02:00
Vignesh Joglekar
da7ccc45e4
Allow for Esc to clear all filters (#625)
* Allow for `Esc` to clear all filters

* Changelog

* Change duplicated ctrlKey (in DatePicker too)
2021-01-21 15:11:48 +02:00
Uku Taht
cb3e401dce Revert "Add Comparison Line and Improved Tooltip to Visitors Graph (#624)"
This reverts commit 979d2526d5.
2021-01-21 14:42:55 +02:00
Vignesh Joglekar
f6aefa9643
Add "Add Site" button to site switcher (#626) 2021-01-20 15:54:08 +02:00
Vignesh Joglekar
979d2526d5
Add Comparison Line and Improved Tooltip to Visitors Graph (#624)
* First pass

* Title Section of Tooltip+Formatting

* Cleanup, Formatting, Rest of Tooltip

* Fixes bug in "month" calculate_plot

Bug: where calculate_plot on "month" didn't correctly use the end date in the date range, and instead always used the current time - making requesting past chunks of 6 or 12 month data impossible

* Cleanup + Comments

* Cleanup+Percentage Formatting Changes

* Fixes Realtime Tooltip

* Prevent FE Crash

* Minor format, code cleanup

* Removes erroneous changes

* Github UI is bad at indenting
2021-01-20 15:49:39 +02:00
Sean Hill
6ab2126ab8
Change datepicker caret from pink to indigo (#618)
* Change datepicker caret from pink to indigo

* Update CHANGELOG.md

* Update CHANGELOG.md

* Updated filters dropdown caret/chevron to indigo
2021-01-19 15:41:22 +02:00
Vignesh Joglekar
d339fea686
Update References (#619) 2021-01-19 15:40:01 +02:00
Mackenzie
27b60894bb
disable date navigation arrows when date is invalid for site (#483)
* Prevent choosing a date before site was added in datepicker

Fixes #446

* change date navigation arrows to real buttons and disable them when date is invalid for site

* simplify. ditch LinkButton and just use button. make lint a little happier

* put back dark mode for date nav buttons

* enforce line length limit

* fix a11y lint errors

* correct event/e
2021-01-07 15:24:59 +02:00
Uku Taht
229c51def4
In app release notes (#554)
* Remove warning

* Add in-app release notes

* Update changelog url
2021-01-07 15:22:51 +02:00
Vignesh Joglekar
bbb6bae4a2
Adds fallback for countries missing in DataMap (#533) 2020-12-30 10:38:18 +02:00
Vignesh Joglekar
8174f1d135
Mobile/Filter Overflow UX Improvements (#503)
* Initial Implementation

Still needs clear all functionality, various styles and spacing, and overall cleanup

* Second pass

Most of the styling issues are still present, but collapsing/expanding logic should be complete

* Third pass

* Refactors, comments, cleans up filters code

* Flatpickr color+placement changes

* Last(?) pass on UI

* Actually fixes sticky dates without breaking navigation

* Changelog

* Puts this back where it goes

* Updates based on @ukutaht's comments

- Removes Screenclass hook in favor of simple viewport size storage
- Uses class-based component
- Removes recheck variable in favor of tri-state wrapped
- General formatting & code cleanup
2020-12-29 11:00:41 +02:00
Vignesh Joglekar
e2599ffcc1
Changes "This Month" view to Month-to-date for current month (#491)
* Initial MTD

* Adds FE support

* Removes broken Day to Time, debug statements

* Changelog

* Cleans up conditional
2020-12-23 10:42:22 +02:00
Vignesh Joglekar
b64f9de51a
Adds sticky header row (site selection, date, filters) (#472)
* Adds New Dark Mode Assets

* Moves triangle for dropdown to a reasonable position

* Majority .eex dark implementation

* Fixes Logo Positioning

* Adds theme flag to user schema, uses it

* Uses correct variables for theme applicator script

* Minor missed theme changes/fallbacks

* Individual Component Support + Theme Context

* Sources Tab Support

This was a pain to test D:

* Partial Stats Sections Support

* More of stats modules supported

* Modal +table support

* Improves some Flatpickr in light theme, supports dark theme

* Fixes missed settings tab colors

* Finishes Devices module support

* Fixes bar graph colors

* Better colorizes maps module

* Undoes colorized bars

(they looked bad, on second thought)

* Fixes loading indicator

* Finishes conversions module

* Adds changelog entry

The PR number could be wrong, will double check

* Fixes missed header color

* Fixes naming of migration and removes static alter

* Does migration correctly

As I said, my Elixir is pretty weak heh

* Adds support for spike notifications setting

* Improves contrast and visibility for email settings

* Add initial implementation for sticky header

* Minor mobile formatting improvements

* Finishes (probably) pinned header feature

* Adds changelog entry for pinned header

* Updates PR number in sticky header changelog entry

* Wraps up code cleanup + feature

* Merge conflicts are hard, apparently

* Removes extraneous tailwind variants

* Fixes mentioned issues

* Removes option to unsticky
* py-3
* Tailwind in CSS
2020-12-22 15:39:14 +02:00
Vignesh Joglekar
1174801255
Fixes couple of Flatpickr related issues (#495)
* Navigates to day when same day is chosen in flatpickr

* Ensures that erroneous from and to params are removed when re-navigating

* Changelog
2020-12-21 15:26:37 +02:00
Vincent Dörig
df9767dbdc
fix: low contrast text in dark mode (#490) 2020-12-21 15:00:04 +02:00
Vignesh Joglekar
d3f7c94ebe
Adds "Load More" functionality to pages modal (#480)
* Initial Feature Commit

* Changelog
2020-12-17 11:35:27 +02:00
Vignesh Joglekar
425975efec
Adds dark mode to entire dashboard (#467)
* Adds New Dark Mode Assets

* Moves triangle for dropdown to a reasonable position

* Majority .eex dark implementation

* Fixes Logo Positioning

* Adds theme flag to user schema, uses it

* Uses correct variables for theme applicator script

* Minor missed theme changes/fallbacks

* Individual Component Support + Theme Context

* Sources Tab Support

This was a pain to test D:

* Partial Stats Sections Support

* More of stats modules supported

* Modal +table support

* Improves some Flatpickr in light theme, supports dark theme

* Fixes missed settings tab colors

* Finishes Devices module support

* Fixes bar graph colors

* Better colorizes maps module

* Undoes colorized bars

(they looked bad, on second thought)

* Fixes loading indicator

* Finishes conversions module

* Adds changelog entry

The PR number could be wrong, will double check

* Fixes missed header color

* Fixes naming of migration and removes static alter

* Does migration correctly

As I said, my Elixir is pretty weak heh

* Adds support for spike notifications setting

* Improves contrast and visibility for email settings

* Resolves @ukutaht's comments on #467

* Fixes missing dark style

* Found one more missed dark element (shared links)

* Formatting fixes
2020-12-16 11:57:28 +02:00
Mackenzie
a50fd555cf
Prevent choosing a date before site was added in datepicker (#477)
Fixes #446
2020-12-16 11:52:47 +02:00
Mackenzie
3524d13c70
Fix overly-sticky date in query parameters (#470)
The date param was sticking around even when not specified
resulting in Last Month -> This Month still having last month's
date.

Fixes #439
2020-12-15 12:29:12 +02:00
Uku Taht
54aaeb2ae0 Use uppercase M for million 2020-11-23 11:08:16 +02:00
Uku Taht
1ec4dca33f
Merge pull request #412 from plausible/settings-design
Settings design
2020-11-20 12:56:35 +02:00
Uku Taht
eca27283c1 Update TailwindCSS to 2.0 2020-11-19 14:34:37 +02:00
Uku Taht
b0bd564b56 Create unified template for settings 2020-11-19 14:34:37 +02:00
birjolaxew
b9ac695d97 Fix usages of Link that failed to specify pathname
This would break things like opening the link in a new tab, or previewing the href in the browser
2020-11-13 01:53:03 +01:00
birjolaxew
f95f310eb7 Fix QueryLink not linking to the correct URL format
This caused the href view in browsers to show the incorrect URL, and also broke stuff like opening the link in a new tab
2020-11-13 01:49:27 +01:00
birjolaxew
7f1f3a00ec Remove queryWithPeriod from DatePicker
It has been made redundant after the implementation of QueryLink
2020-11-13 01:44:38 +01:00
birjolaxew
9719c83364 Prioritize order of props when using QueryLink for readability 2020-11-13 01:37:59 +01:00
birjolaxew
2f6d58a8e5 Rename QueryLink's 'data' prop to 'to'
This fits the existing naming convention from Link better
2020-11-13 01:35:09 +01:00
birjolaxew
b4f530f492 Connect QueryLink to React Router using withRouter
This means history no longer has to be passed as property
2020-11-13 01:33:01 +01:00
birjolaxew
ccc89ab4b1 Implement QueryLink to make it easier to transition from Link 2020-11-13 01:26:53 +01:00
birjolaxew
a05f3eb6d6 Remove stray semicolons to conform with existing code style 2020-11-11 11:58:05 +01:00
birjolaxew
21b88b996d Update Countries to use new navigation function 2020-11-11 11:38:49 +01:00
birjolaxew
53ac7d3bc7 Update Filters to use new navigation function 2020-11-11 11:38:36 +01:00
birjolaxew
3524a89fb3 Update VisitorGraph to use new navigation function 2020-11-11 11:31:42 +01:00
birjolaxew
8e9349e1d8 Update DatePicker to use new navigation function 2020-11-11 11:30:29 +01:00
birjolaxew
0a565025d2 Implement function for updating current page query
This centralizes updating the search parameters
It's needed in order to implement proper history handling
Previously navigating to a new period filter would not revert if going back in history
The new function will update history entry to include the period if a new period is navigated to
This way going back in history will correctly revert the period filter
2020-11-11 11:23:42 +01:00
Uku Taht
d0d7b823f8
Browser and OS version (#397)
* Collect browser and OS version

* Display browser version

* Show operating system versions

* Device categorization

* Treat headless chrome like a bot

* Ignore events from automated browsers

* Only take major and minor of the version

* Add tests

* Add CHANGELOG entry

* Add changelog entry for bots

* Store empty value as browser when unknown
2020-11-10 15:18:59 +02:00
Uku Taht
8020e93052 Linkify custom props 2020-11-04 13:35:05 +02:00
Uku Taht
b816d92020 Show conversion rates in conversions report 2020-10-30 11:26:16 +02:00
Uku Taht
0b6e645b44
Rename metadata -> properties (#390) 2020-10-30 10:49:41 +02:00
Chad Whitacre
73375b8289
Add weekday to the visitor graph (#386)
* Add weekdays to the visitor graph

Abbreviate both weekday and month in order to keep horizontal spacing
roughly the same as it's been.

Closes #175.

* Add note to CHANGELOG
2020-10-29 15:43:58 +02:00
Uku Taht
ff515c641d
Improve event metadata (#385)
* Change from dropdown to tabs for metadata breakdown

* Add meta filter to base_query

* Refactor: use base_query_w_sessions in top_referrers_for_goal

* Do not allow individual metadata filter

* Fix conversions report when combining 3 filters: goal, metadata, country

* Remember selected metadata key

* Compress conversions component
2020-10-29 15:33:37 +02:00
Uku Taht
40900c7653
Ability to add event metadata (#381)
* Ability to add event metadata

* Close Dropdown on outside click

* Show (none) value in metadata breakdown

* Allow filtering for metadata key/val pairs

* Use correct clickhouse_ecto

* Better naming for meta filter

* Add tests

* Add changelog entry

* Remove change made for testing
2020-10-28 11:09:04 +02:00
Uku Taht
c533562eaa
Show correct stats when filtered for goal (#374)
* Show proper stats when filtered for goal

* Add changelog entry
2020-10-20 11:24:20 +03:00
Uku Taht
63a236508d Improve colour range of countries map 2020-10-19 13:46:08 +03:00
Uku Taht
8e9459ba99
Ignore arrow keys when modifier keys are pressed (#371) 2020-10-19 10:56:03 +03:00
Uku Taht
e228fd1f85
Additional filters (#358)
* Filter by screen size

* Filter by browsers

* Add filter for Operating system

* Add changelog entry

* Add filter for countries

* Add tests for filters
2020-10-13 12:03:42 +03:00
Uku Taht
aa915215f0 Format counts in country report 2020-10-13 10:41:49 +03:00
Uku Taht
13de259cd4 Format device numbers 2020-10-13 10:40:19 +03:00
Uku Taht
ff0cb5d2cf Add referrerpolicy=no-referrer to DDG favicons
Fixes #343
2020-10-13 10:31:32 +03:00
Uku Taht
27fd18bea0
Linkify top pages (#350)
* Linkify top pages

* Add changelog entry

* Make automated build push :dev tag to Dockerhub
2020-10-09 15:23:08 +03:00
Uku Taht
8d9667a949
Show utm_medium, utm_source, and utm_campaign in sources modal (#321)
* Show utm_medium, utm_source, and utm_campaign in sources modal

* Allow filtering by UTM tags

* Integrate filters with URL bar

* Add CHANGELOG entry

* Refresh modal when filter changes

* Remove Direct / None from campaign results

* Add UTM tabs to top sources report

* Add pagination

* Remove dropdown from top sources popup

* Fix bug in clickhouse_ecto

* Remove referrers_for_goal

* Make sure UTM tags work OK with goals

* Make source tab selection sticky

* Consistent styling for devices and source tabs

* Add noref in realtime to utm tabs

* Fix tests
2020-09-28 11:29:24 +03:00
Uku Taht
26da5f2218 Include flatpickr CSS in our own bundle 2020-09-10 10:51:14 +03:00
Uku Taht
49f153c380
Paginate referrers (#313)
* Add pagination for referrers

* Fix top referrers for goal
2020-09-10 10:42:43 +03:00
Uku Taht
33bf8e8b4d
Add 'This month' and 'Last month' options (#312)
* Add 'This month' and 'Last month'

* Remove 60d option

* Make datpicker transition similar to site switcher
2020-09-09 11:13:55 +03:00
Uku Taht
76896f7cee
Show total conversions in addition to uniques (#294) 2020-08-20 14:57:49 +03:00
Uku Taht
a7f3aa430e
Show real counts along percentages (#293) 2020-08-20 11:16:26 +03:00
Uku Taht
843f3e166e Do not cut off long page urls 2020-08-18 15:04:00 +03:00
Uku Taht
b749889279 Rename Active visitors -> Current visitors
For consistency
2020-08-18 14:27:54 +03:00
Uku Taht
8ca08d8177
Improvements for Source: Google (#287)
* Extract referrers report

* Use new sourcs report in realtime

* Show appropriate messages for error conditions
2020-08-17 15:13:30 +03:00
Uku Taht
ff64fccb18
Add site switcher (#281)
* WIP

* Add site switcher

* Run ci

* Highlight active site

* Do not show sites dropdown for logged out users

* Add site switcher to realtime view

* Remove blue border when logged out
2020-08-13 13:45:18 +03:00
Uku Taht
0a2a2656aa
Page drilldown (#276)
* WIP

* Add filter option for page

* Use JOIN to get correct top numbers

* Filter google search terms by page

* Allow filtering by page from modal

* More robust base url for google search console integration

* Fix tests
2020-08-10 16:16:12 +03:00
Uku Taht
f781c5647c
Direct traffic improvements (#268)
* Direct traffic improvements

* Make sure an empty icon shows always

* Enable direct traffic drilldown
2020-08-05 14:45:20 +03:00