0
0
mirror of https://github.com/PostHog/posthog.git synced 2024-12-01 12:21:02 +01:00
Commit Graph

38 Commits

Author SHA1 Message Date
Marius Andra
b5a02e2ca7
Bundle our frontend via esbuild (#6758)
* esbuild package

* almost get esbuild working

* fix react-virtualized imports

* add splitting

* fix funny import reorder bug

* fix squeakAudio referring to itself

* write index.html file

* fix some bad imports

* update antd paths

* remove raw-loader usage, it didn't work anyway

* refactor and copy public

* build app and toolbar

* get toolbar working, but without styles

* make toolbar and its styles work

* shared dashboards

* clean frontend build before rebuilding

* add watch mode

* reorder tasks

* revert js url

* incremental builds of app with debounced chokidar watching

* common build/watch script

* improve logs

* watch during firrst build

* fix toolbar url

* fix wrongly exported scene

* create sceneProxyLogic to untangle sceneLogic from all bundles

* disconnect sceneLogic and refactor setPageTitle

* live reloading server

* rename utils file

* only wait for /static

* fix encoding

* simplify

* add missing dayjs plugins

* fix pathless logics

* simplify options

* add jsx for webapck

* slight delay to catch changes

* a type is a type

* fix build

* esbuild in start

* funnelLogic path

* include all files with a "." (so .mjs, etc) in /frontend/ to docker

* rename to "utils.mjs", make "build.mjs" executable

* improve erroring

* revert some needless changes

* more reverts

* change some scripts

* remove setuff

* clarify function

* make "--host 0.0.0.0" work

* fix import order issue in webpack

* remove webpack css inlining for toolbar to simplify config

* make toolbar with external styles work in storybook

* move live server injection into django

* fix undefined bug

* simplify setup to work with injection directly in http://localhost:8000 (no proxying needed on :8234)

* add comments

* Fix `fse` usage

I was getting this otherwise:

$ node frontend/build.mjs
file:///Users/twixes/Developer/posthog/frontend/utils.mjs:46
    fse.copySync(srcDir, destDir, { overwrite: true }, function (err) {
        ^

TypeError: fse.copySync is not a function
    at copyPublicFolder (file:///Users/twixes/Developer/posthog/frontend/utils.mjs:46:9)
    at file:///Users/twixes/Developer/posthog/frontend/build.mjs:5:1
    at ModuleJob.run (internal/modules/esm/module_job.js:146:23)
    at async Loader.import (internal/modules/esm/loader.js:165:24)
    at async Object.loadESM (internal/process/esm_loader.js:68:5)

* Mock `process` for VFile used by ReactMarkdown

I was getting this otherwise:

core.js:55 Uncaught ReferenceError: process is not defined
    at new VFile (core.js:55)
    at VFile (core.js:49)
    at Function.parse (index.js:273)
    at ReactMarkdown2 (react-markdown.js:42)
    at renderWithHooks (react-dom.development.js:14803)
    at mountIndeterminateComponent (react-dom.development.js:17482)
    at beginWork (react-dom.development.js:18596)
    at HTMLUnknownElement.callCallback2 (react-dom.development.js:188)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:237)
    at invokeGuardedCallback (react-dom.development.js:292)

* Mock `process.env` for VFile used by ReactMarkdown

I was getting this otherwise:

platform.ts:73 Uncaught TypeError: Cannot read properties of undefined (reading 'ENABLE_VSCODE_BROWSER_CODE_LOADING')
    at platform.ts:73
    at platform.ts:79
    at Function.r._invokeFactory (loader.js:1118)
    at r.complete (loader.js:1128)
    at r._onModuleComplete (loader.js:1754)
    at r._resolve (loader.js:1714)
    at r.defineModule (loader.js:1357)
    at _ (loader.js:1804)
    at numbers.ts:10
    at fake:1

* pass the heavy appScenes to sceneLogic through props via App.tsx

* remove sceneProxyLogic

* remove exported variables

* fix sceneLogic test

Co-authored-by: Michael Matloka <dev@twixes.com>
2021-11-03 09:50:24 +01:00
Tim Glaser
bb572272ca
Improve e2e flakeyness, skip Insights spec test (#4869)
* attempt to fix toolbar flakyness

* fix dashboard flakyness

* fix flake

* add retries to components

* Try speeding up build by skipping sourcemaps

* debug components

* show errors

* better error

* don't generate source map

* fix errors

* speed up component tests

* Try empty insights page

* Revert "Try empty insights page"

This reverts commit 68701b3804.

* Skip trends tests for now
2021-06-29 22:20:02 +02:00
Marius Andra
f7a42020b3
Plugin editor types (#4468)
* add @posthog/plugin-scaffold type to plugin editor, simplify plugin

* make functions async

* have same config type as config json

* ignore raw-loader ts errors

* remove monaco webpack plugin

* Add example `console.log` to `onEvent`

* Escape backticks inside backticks

Co-authored-by: Michael Matloka <dev@twixes.com>
2021-06-01 13:19:38 +02:00
Marius Andra
cc04325a80
remove MiniCssExtractPlugin (#4552) 2021-05-31 23:58:28 +02:00
Marius Andra
bab88da39d
Revert "Merge all CSS into one file (#4549)" (#4551)
This reverts commit 604194b03e.
2021-05-31 21:29:09 +00:00
Marius Andra
604194b03e
Merge all CSS into one file (#4549)
EXPECT TO BE REVERSED

* merge all css

* fix toolbar modal

* remove unused css

* fix for toolbar
2021-05-31 23:09:14 +02:00
Marius Andra
5017bf1c08
Fix deduplicated SCSS issue (#4545)
* Revert "Hotfix SCSS for trend graphs (#4539)"

This reverts commit 545dc62ec6.

* Revert "Move history import to globals (#4531)"

This reverts commit 542be62053.

* Revert "@ import all scss in lib/components (#4530)"

This reverts commit 5e2a3290da.

* fix deduplicated css problem

* update lockfile
2021-05-31 19:13:50 +02:00
Lleo Harress
efc1caaa5f
Honour JS_URL in production, heals #4009 (#4362)
Co-authored-by: Michael Matloka <dev@twixes.com>
2021-05-20 13:10:27 +03:00
Tim Glaser
f7dfc7f7e2
Introduce Dayjs (#3490)
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
2021-03-18 10:49:45 -07:00
Marius Andra
8c98e4f61d
Toolbar Date Filter, remove react-hot-loader, fix dashboard date filter URL (#3586)
* dropdown and datepicker z-index

* remove dead code

* pass getPopupContainer to range picker

* make DateFilter's custom time range work in a shadow root

* close after selecting

* show date filter instead of date range

* skip updating url on date filter change in toolbar

* actually filter the dates

* fix flickering (always show map)

* refactor date filter component

* upgrade to webpack 5 and @posthog/react-rrweb-player module

* disconnect dashboardLogic from dateFilterLogic (remove broken url changes, etc)

* add bundle tracker

* remove react-hot-loader

* Revert "add bundle tracker"

This reverts commit e59bcfa8

* remove bundle tracker

* remove updatePath

* fix code quality complaints

* revert @cypress/webpack-preprocessor version

* try different cypress webpack plugin

* add crypto-browserify

* add crypto-browserify

* revert to webpack 4

* revert to webpack 4

* revert to webpack 4

* implement feedback and remove debug stuff

* move insights date filter logic out of lib/

* rename DateFilterComponent to DateFilter

* rename DateFilterCustom to DateFilterRange

* Remove hot from new code
2021-03-12 14:54:29 +01:00
Karl-Aksel Puulmann
f4039003e1
Dashboards: allow changing date filters & refresh (#3363)
* DashboardHeader to ts

* Convert files to typescript

* Use BindLogic instead of passing logics as arguments

* Improve typing for dashboards

* Fix DashboardHeader types

* Improve typing: DashboardItem

* Fix InsightHistoryPanel, SharedDashboard types

* Add WIP code for date ranges on dashboards

* DateFilter/dateFilterLogic to typescript

* Show 'Custom' daterange by default on a dashboard

* Border for dates in Dashboard

* Add dashboard.filters field

* Populate dashboard.filters, use it in code

* Fix some type errors in dashboardItemsModel

* Fetch dashboard items again on date change

* Make dashboard items refresh as dashboard gets updated

* Add refresh button to DashboardHeader

* Make saving dashboard items work again

* Update dashboard type

* Don't update URL in DateFilter

* Update selected time range on load

* Avoid flickering in DateFilter

* Only show 'Custom' in dashboards

* Show calendar icon next to date filter in dashboard

* Avoid double-loading results due to date change

* Kill some duplicated code

* Avoid cache when filters change

(datefilters on dashboard)

* Test individual update_cache method

* Add test for import_from and attributes being updated

* Fix typing errors

* Update api/dashboard tests

* Avoid redirects when changing date range for funnels or retention

Previously funnelLogic might be mounted in the background, causing a
reload

* Add a missing breakpoint

* Reformat with black
2021-02-23 12:19:36 +02:00
Karl-Aksel Puulmann
30b6692920
React component tests with cypress (#3233)
* WIP: get cypress something doing

* Get a test running

* Get css loading, stub posthog

* Move helpers to separate file

* Givens > given2

It plays nicer with beforeEach

* Test for session filters

* Test date navigation

* Test filtering

* Try keep old tests running

* Try get tests running under CI

* Prettify fixtures

* Cleanup, use cypress 6

* Add yarn build

* Fix e2e cypress tests

* given2 => givens

* Rename `frontend-test-runner` to `e2e-test-runner`

* Fix cypress test

* Add webpack-preprocessor as a devDependency

* Improve freezing time

* Make css inclusions automatic for component tests
2021-02-09 17:28:01 +02:00
Marius Andra
f3e4cad700
Plugin editor (#2743)
* 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
2020-12-14 17:11:29 +01:00
Michael Matloka
f3dc59d104
Purge Porter (#2698) 2020-12-08 10:32:04 +01:00
Marius Andra
ccf1f2a38c
Toolbar .less styles fix (#2392)
* Add toolbar css shadow root loader for .less files (antd)

* Include antd and global styles with toolbar
2020-11-16 11:40:08 +01:00
Adam Boaler
be3a3bf25e
Fix local static file host on Windows (#2321) 2020-11-11 19:14:07 +01:00
Paolo D'Amico
cd251df713
[WIP] New UI (#2114)
Co-authored-by: Michael Matloka <dev@twixes.com>
2020-11-05 12:55:33 +00:00
Marius Andra
034ba7eee0
Fix click outside spam & public paths (#2022)
* improve "public" import paths

* fix `useOutsideClickHandler` firing an event on any click anywhere in the page

Co-authored-by: Michael Matloka <dev@twixes.com>
2020-10-26 12:49:50 +01:00
Marius Andra
32592b36bb
Remove Toolbar Beta Toggle (#1853) 2020-10-15 11:42:42 +02:00
Michael Matloka
f71e011a86
Command palette (#1819)
* add hotkey base

* add platform check

* Rename CommandBox to CommandPalette

* Add styled-components

* Restructure CommandPalette and add Esc handling

* Update utils.js

* add search box

* Add logic types

* Implement base logic

* Fix scroll prevention

* Update logic and add goto command base with Fuse fuzzy serach

* ux hotkey

* Implement command (de)registration

* minor fix

* base UI

* error message & hints

* command groups UI

* Add commands search

* Make commands work

* Prepare palette for fuzzy search and add basic labeling

* ui adjustments

* ui

* Improve colors

* switch to global command

* Optimize resolution

* global go to commands

* abstract item selection logic to command palette

* Update casing and types

* Add conditional useCommands

* Improve results

* keyboard nav

* keyboard nav fix

* removed double fuse (synonyms broken)

* Update style

* Fix highlighting

* Remove extra style

* conditional go to commands

* add mouse hover handling and rename functions

* remove mac check

* add more commands

* added insights stub pages

* Add command components

* refactor logic

* Update styling

* Remove extraneous `input`

* load custom dashboards to command palette

* Add input styling

* Add write icon

* Refactor results

* minor adjustments

* add person search

* remove papercups fully

* fix input indexing

* fix result executing empty

* Add command grouping and improve navigation

* add urls

* make logic explicit

* fix error with hadnler

* Remove redundant border-top

* add trend functions

* personal api key stub

* Add command palette toggle button

* Fix things

* fix personal api keys

* copy api key to clipboard

* Add toggle text

* Improve palette UX and perform refactoring

* Improve UX and add palette usage reporting

* tests refactor

* filter person list

* refactor api person tests

* add squeak

* deprecate by_distinct_id & by_email person endpoints

* Optimize squeak

* fix typegen error

* use new filters in frontend

* Optimize squeak

* key identifier refactor

* fix mypy

* removed unused code

* Make custom command UI more coherent

* Add calculator to palette

* Use equal sign

* Make palette button nicer

* Add lodash back officially and show palette suggestions

lodash is still used in a few places, but it was not in package.json. The reason this was working was that lodash is a dependency of some other depedencies, but this was fragile. It's still not ideal to use this, but at least this is now not a hack the way it was.

* Remove isHint

* Optimize graph time range command

* Move command results grouping to Kea logic

* Fix result focus autoshift

* Improve palette result focusing

* Adjust for window.posthog being optional

* add test for third-party person filters

* Remove styled-components in favor of .scss files

* Remove redundant container class

* Use insect (sic!) squeak instead of pig squeak

* Show only unique palette results

* Fix palette overlay

* Add powerful command building protocol CommandFlow

* Fix minor issues

* Always show scope when flow active

* Use custom label icon

* Add feedback sharing command

* block command input from being captured in screen recording

at least until we can figure out how to capture this info in a privacy-preserving way

* Hide palette button on narrow screens

* Improve responsiveness

* Fix palette feedback sending

* Fix Esc handling

* Add Message Sent info

* Fix Message Sent info

* Fix dashboard creation and null name handling

* Rename Cy tests to JS convention

* Add basic Cypress test

* Address feedback

Co-authored-by: Eric <eeoneric@gmail.com>
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
2020-10-13 15:44:56 +02:00
Marius Andra
45f10a8eaf
Kea TypeGen 0.2 (#1427)
* kea-typegen 0.2

* remove old Type.ts files

* more setup for typegen-0.2, update yarn scripts, remove webpackbar

* import types from the right paths

* update ENV in build script
2020-08-14 17:02:57 +02:00
Marius Andra
cf98e8ba35
Toolbar Typings (#1306)
* update to kea-typegen that runs through prettier

* remove posthog-js yalc package regression

* add types to toolbar

* add react-dom and react-redux types

* add types to toolbar react components

* convert a lot of components to typescript

* convert more components to typescript

* fix error

* actions return void

* clean up other Type.ts files as well

* fix last untyped files

* upgrade kea, fix webpack config entrypoint

* add stricter typechecking

* add types for a few more files

* fix bug with nth_child selectors (introduced in this PR, now fixed)

* fix one more type
2020-07-30 19:16:59 +02:00
Marius Andra
9265ba21d1
LOCAL_HTTPS support (with HMR) through ngrok and JS_URL (#1290) 2020-07-28 22:23:44 +02:00
Tim Glaser
31f3185776
Closes #1020 WIP shared dashboards (#1071)
* add test for caching funnels and refreshing

* Closes #1020 WIP shared dashboards

* Make webpack work

* Progress?

* Hash the entire filter and add share tokens

* Make webpack work properly

* Fix sentry error

* Tighten up the caching logic

* Correctly refresh items and show in frontend'

* Add some padding

* fix caching, update layout

* Add cypress tests

* Fix merge conflict mistake

* Convert share_token to boolean

* Hide text when small

* Redo tooltip for lock

* Remove move cursor when in shared mode

* Improve spacing

* Fix state being incorrect

* Use selectors instead of value

* Use const instead of let

* Fix type errors et al

* Increase cache size

* Fix dashboard tests

* Fix team tests

* Add wait time

* Fix tests

* Fix refreshing

* Fix dashboard tests

* Fix test

* Excluded deleted dashboard items and don't show refreshing

* Fix renaming issue

* Fix migrations and fix display of status change

* Use grid for responsive header

* Don't load annotations

* Eslint

* Fix variable naming

Co-authored-by: Eric <eeoneric@gmail.com>
2020-07-23 10:41:59 +02:00
Marius Andra
ff08e5df58
add webpackbar and tune the setup (#1185) 2020-07-10 13:31:35 +02:00
Marius Andra
a256373526
Add Typescript Support (#1157)
* explicitly ignore some linting errors

* add typescript support and fix postcss dev warnings

* convert a few files to ".ts"

* fix return values
2020-07-08 09:45:23 +02:00
Michał Matłoka
93aebb9e7b
Update prettier to 2.0.x (#1143)
* Update prettier devDependency to 2.0.x

* Format with prettier 2.0.5

* Update yarn.lock
2020-07-03 14:37:07 +02:00
Eric Duong
5f47e97df2
1041 paginate people modal (#1042)
* initial working

* add test

* fix test

* update paginating format

* merge master

* fix errors

* lint error

* use results instead of result

* more lint errors
2020-06-19 11:03:21 +02:00
porter-dev
914f0d69d8
Porter Development on Posthog (#1012)
* porter compatibility changes

* fix devServer typo

* quick fix porter

* make backwards compatible

* Update README.md

* button size

* Update README.md

* remove spaces

* remove migration file

* Update README.md

Co-authored-by: Alexander Belanger <abelanger@Alexanders-MacBook-Pro-4.local>
Co-authored-by: Trevor Shim <sungrok.shim@yale.edu>
2020-06-18 13:42:34 +02:00
Tim Glaser
9b8736d576
Fix cypress linting errors and speed up tests (#865)
* Speed up e2e builds

* Don't go to demo when logging in/cypress errors

* Execute cypress in docker container

* Pull from correct image

* add -T

* Try something else

* Add dockerfile

* Don't push tags

* Tag

* Try another tag

* image tag

* Try pulling

* Try

* Try caching

* no docker ifle

* Install node

* name

* name
2020-06-08 19:34:39 +01:00
Marius Andra
11ff3787e3
PostHog Toolbar (#896)
* can zoom out toolbar

* refactor the look

* add kea localstorage plugin

* add test to see if user is logged in or not

* keep width when resizing window

* increase padding on larger screens

* floating box style

* toolbar close button

* show what's on the current page

* fix close and remove tags

* inspect element

* inspect element improvements

* show stats

* inspect element

* give jsURL to the editor in debug mode

* toolbar HMR

* move styles to CSS

* tabs on toolbar

* css for current page block

* links to dashboards and actions

* adjust the location of the X so that we don't always have a horizontal scrollbar

* clean up some css, incl renaming toolbar divs

* refactor webpack config to use a separate config for the editor chunk, in it include all CSS inside the JS

* load styles behind the shadow, render only once all CSS is loaded

* tolerable design for the floating view

* header block for float + css zindex fix

* fix height

* move toolbar to toolbar folder

* add back old toolbar folder

* load by default editor.js, move new toolbar to toolbar.js

* only open toolbar.js by default, not editor.js

* add comment for toolbar setting

* Updated Yarn lockfile

* fix test and rename is_authenticated -> isAuthenticated in json

* get mypy to play along

* refactor tab content into folders

* refactor code structure for toolbar

* simplify floating/docked/float/dock -> float/dock

* small refactor

* upgrade to posthog-js 1.1.0

* fix array copy code
2020-06-04 13:45:24 +02:00
Tim Glaser
be7a345a61
Https locally (#910)
* Fix temporary token issue

* only pass params once

* HTTPS locally
2020-06-04 10:14:54 +01:00
Tim Glaser
bcf427cb55
Webpack HMR, Add hashes to chunk filenames. (#878)
* Closes #877 chunk loading errors

* Closes #877 chunk loading errors

* add chunks to all webpack files, use webpack-html-plugin to make an index.html with the right names

* change to contenthash for better caching

* add dev server on a different port

* store loaded scenes in reducer

* add react-hot-loader

* add react-hot-loader to all code split points

* fix action pages HMR

* ignore cypress screenshots

* generate django login/signup page layout with webpack html plugin

* move to devDependencies

* expose webpack-dev-server ports

* run tests on the production docker image

* start webpack dev server on a custom host if requested

* revert e2e to dev dockerfile

* add test travis config

* add stages

* add travis conf

* cache node and pip

* node 11

* travis ci bump

* node via nvm

* install v12, disable cypress for a moment

* remove 2 commands, test cached build time

* try different yarn cache, add cypress

* add postgres 12

* migrate before cypress

* remove latest postgres for now

* createdb before cypress

* Try different port

* cull packages

* remove hash from main bundle filenames to not break anything

* cypress port 8000

* cypress tests with production docker

* don't use the /code path in e2e test, use docker image

* remove hash from css to work better with editor

* only one export from actions

* remove travis test

Co-authored-by: Marius Andra <marius.andra@gmail.com>
2020-06-02 10:39:53 +01:00
Marius Andra
78c42bedf4
enable webpack source maps (#726) 2020-05-06 10:15:32 +01:00
Tim Glaser
4931407da2
Closes #505 filter funnels by events as well as actions (#561)
* Closes #505 filter funnels by events as well as actions

* Simplify kea modules and store date_from directly against filter

* Use key on kea so the list doesn't get carried between funnels and trends

* Move filters to selector

* Remove useEffect

* Remove unused type: ignore

* Fix creating new funnel
2020-04-14 20:41:26 +01:00
Marius Andra
1e50f4f420 create aliases for ~, lib and scenes 2020-03-21 00:54:19 +01:00
Marius Andra
e4715a4d9d set public path to /static 2020-03-18 19:48:02 +01:00
Marius Andra
de6ebca84d move package.json to the root folder 2020-03-18 13:41:46 +01:00