prometheus/web/ui
Julius Volz 95554074d8
React UI: Support custom path prefixes (#6264)
* React UI: Support custom path prefixes

The challenge was that the path prefix can be set dynamically as a flag
on Prometheus, but the React app bundle is statically compiled in to
expect a given path prefix. By adding a placeholder value to the React
app's index.html and replacing it in Prometheus with the right path
prefix during serving, this injects Prometheus's path prefix into the
React app via a global const.

Threading the path prefix into the different React components could have
been done with React's Contexts (https://reactjs.org/docs/context.html),
but I found the consumer side of context values to be a bit cumbersome
(wrapping entire components in context consumers), so I ended up
preferring direct threading of the path prefix values to components that
needed them. Also, using contexts in tests is more verbose than just
passing in path prefix values directly.

Fixes https://github.com/prometheus/prometheus/issues/6163

Signed-off-by: Julius Volz <julius.volz@gmail.com>

* Review feedback

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2019-11-04 09:17:50 +01:00
..
react-app React UI: Support custom path prefixes (#6264) 2019-11-04 09:17:50 +01:00
static filtering alerts by state and display count of alerts in each state (#5758) 2019-10-29 11:09:52 +01:00
templates filtering alerts by state and display count of alerts in each state (#5758) 2019-10-29 11:09:52 +01:00
assets_generate.go Integrate beginning of React UI (#5694) 2019-10-17 14:38:09 +02:00
doc.go Integrate beginning of React UI (#5694) 2019-10-17 14:38:09 +02:00
README.md Update more web/ui/README.md bits for new UI (#6197) 2019-10-25 10:19:21 +02:00
ui.go Integrate beginning of React UI (#5694) 2019-10-17 14:38:09 +02:00

The ui directory contains static files and templates used in the web UI. For easier distribution they are statically compiled into the Prometheus binary using the vfsgen library (c.f. Makefile).

During development it is more convenient to always use the files on disk to directly see changes without recompiling. To make this work, remove the builtinassets build tag in the flags entry in .promu.yml, and then make build (or build Prometheus using go build ./cmd/prometheus).

This will serve all files from your local filesystem. This is for development purposes only.