* separate math aggregates
* add data attr back
* adjust cypress
* make sure tooltip is viewable
* Show total by default
Co-authored-by: Tim Glaser <tim@glsr.nl>
* Make funnel steps sortable
* sortableElement eats the `index` prop, must pass separately
* properly sort all types of filters
* Lock dragging to Y axis
* Sorting UI improvements (#2888)
* use icon for drag handle
* allow sorting only when there's at least two steps
* add instrumentation
Co-authored-by: Michael Matloka <dev@twixes.com>
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* elements instrumentation, stats & heatmaps
* add events for action & inspect mode
* more events
* fix capture on setExtensionPercentage
* update posthog imports
* add heatmap and action counts
* update heatmap and action counts
* fix few type errors
* track down all data-* attributes when selecting an HTML element in the toolbar
* exchange extensionPercentage for toolbar loaded
* rename event (lost in some rebase)
Co-authored-by: Marius Andra <marius.andra@gmail.com>
* Solve render warning on insights
* Fix a type error in SelectBox
* Solve some other typescript errors with SelectBox
* Make ActionFilterDropdown not depend on passed logics, add typing
* Fix retention, move open conditional into component
* Simplify onClose logics, solve tpescript errors
* Rename value to id for actions
This way we can avoid some remapping
* Fix fragment warning:wq
* Make it possible to filter by actions in the UI
* add close button
* Allow setting property filters for events
* Readd logic as prop
* Only show action filters on cloud
* extract code to format entity filter
* make it possible to filter by action
* Hack to make filtering by actions subfilters possible
Example url:
http://localhost:8000/api/event/sessions?date_from=2020-12-10&date_to=2020-12-10&action_filter={%22type%22:%22events%22,%22id%22:%22test-event%22,%22properties%22:[{%22key%22:%22email%22,%22value%22:%22example.com%22,%22operator%22:%22icontains%22,%22type%22:%22person%22}]}
Not sure if the team filtering is legit here
* Use discriminated union in types
* Add kludge support for action_filter on sessions via url
* Reduce code in buildURL
* Add link to sessions page from persons modal
* Add muted overview of the invisible filter
* Add link to cohort sessions from persons page
* drop irrelevant test code
* Test clickhouse filtering by action filter
* put filter behind a cloud-only conditional
* remove dead import
* Add icons/data-attr to sessions links
* Appease linter gods
* Remove a dead TODO
This was solved in PR #1849
* Make sessions query more readable
* Remove dead code from sessions
* Make it possible to test with imports in jest
* Fix a bug and add tests to createActionFromEvent
I added tests when initially solving #2848, but the original solution
had to be scrapped. The tests are still valid though
* feature flag papercups
* Use @papercups-io/chat-widget instead of weird useEffect hacks
* Rename basicComponents to essentialElements
* Add posthog_domain to Papercups metadata
* Actually rename basicComponents to essentialElements
Co-authored-by: Michael Matloka <dev@twixes.com>
* Fix unix-dgram build
* Add per-organization whitelisting of plugins API on Cloud
* Add migration
* Update can_install_plugins_via_api calls in serializer
* Remove unused type: ignore
* Update PluginSerializer for organization_id
* Make Plugin.organization nullable
* Fix can_install_plugins_via_api
* Update pluginsLogic.ts
* Adjust can_configure_plugins_via_api for organization
* Don't include organization_id in serializer
* Set default Plugin.organization to first Organization in instance
* Fix PluginConfigSerializer.create
* Test that other orgs' plugins can't be accessed (as if they didn't exist, 404)
* fix typo
Co-authored-by: Marius Andra <marius.andra@gmail.com>
* fix tsc error
* add plugin source, create plugin source version model, add plugin_type
* can create and save source plugins via the api
* make empty source plugins
* message if no config options available
* different image or tag for source plugins
* fix some types
* second drawer
* add fields into drawer
* add monaco editor
* refactor drawer
* save plugin and must be json
* close tab on save
* fix default code
* upgrade to plugin server 0.5.0 - with scheduled plugins
* less height
* upgrade to plugin server 0.5.1 - with posthog.capture
* remove minimap from editor
* upgrade to 0.5.1
* use enum
* reduce quirk
* must enter a name/url
* use the source
* simpler text
* sync image
* add link to docs
* add a link to the documentation inside the source code drawer
* text / ux simplifications
* nicer first plugin experience
* nicer django model choices
* person v2 stage I
* delete person
* merge persons
* person properties
* address feedback & cleanup
* updates isURL utility with tests
* edit text-based person properties inline
* allow changing bool & null props as well
* sort properties by type & alphabetically
* editing only on first-level of nesting
* remove properties
* Proposal: When clicking 'add action/event', populate the generated event with last event data
In my usecase I was analyzing $capture_failed_request with different
percentiles/math operators on the same properties. Doing this was
slightly painful, since I needed to enter the same data over and over
again.
After this change we'll populate the action/event with last row.
My hypothesis is this will speed things up generally.
* when adding rows to entity filters, keep visibility as well
* Deprecate dashboard item type and move to display
* Mypy rerors
* fix test
* fix
* Fix test
* Fix another test
* Remove determineInsightType
* Get rid of RetentionTable display types
* Fix update dashboard
* Duplicate existing endpoints under /api/event/sessions
* Use different endpoint for sessions table logic in sessions page
* drop irrelevant code for insights endpoint
* update documentation
* extract method
* move code under only relevant path
* Extract clickhouse sessions logic
* Refactor: Separate session list logic from rest of sessions
* move sessions list to separate file
* Move sessions list tests to separate file
* add clickhouse session list tests
* add support for duration filtering on postgres
* move api tests to right place
* kill dead code
* Handle empty duration input properly
* rename no option
* Add close button to the filter
* Allow choosing time unit in dropdown
* solve mypy errors
* minor changes
* show arrow
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* add clickhouse query for people breakdown
* remove log
* add pg implementation
* remove caching and fix timestamp formatting
* modify how people are returned
* reimplement frontend logic for handling new people payload
* remove period check
* change params
* add returndict
* DRY retention param formatting
* remove feature flag for retention
* remove feature flag for retention
* Use return value of add_session_recording_ids
The mutation here is incidental, this is symmetrical with how postgres
behaves.
* Implement sessions_filter
This will hold session-recording specific filters
* WIP: make filtering by session recording length possible on ch
* Kill dead method
* Allow filtering by session length
* Make logic a bit smoother around filtering by recording duration
* More common code for clickhouse_session_recording
* Add filtering tests for ch
* Resolve mypy issues
* Only run duration tests for ch
* Put new filters logic behind a feature flag
* Kill dead const
* Solve operators-related comment
* Review feedback: rename variable
* Fix test failures