Commit Graph

614 Commits

Author SHA1 Message Date
c83d0a3e1e fix overlapping x axis ticks
Gnuplot does not handle long x-axis ticks very good.
It should know how wide the labels are and could adapt
the increment size accordingly, but it doesn't.
Fixed by explicitly defining the increment for x-axis
labels.
2019-11-01 19:13:11 +01:00
7c122b5753 cleanup 2019-11-01 17:45:19 +01:00
7e1349b25a make filter panel thinner
Making the filter panel thinner by 18%. To do this
we moved the date range next to the query box.
The thinner filter box gives us more width for the plot.
2019-11-01 10:21:25 +01:00
78f9f3fe16 fix IndexArrayOutOfBounds in parallel request aggregator
The range fromEpochMilli to toEpochMilli contains
(toEpochMilli - fromEpochMilli +1) milli seconds
2019-11-01 09:37:03 +01:00
462601797e update gradle to 6.0-rc2 2019-11-01 09:08:17 +01:00
b734894253 fix parallel aggregate on non english locales
We generate CSV files with comma as separator.
When we write times with milli seconds, then
we use floating point numbers. Depending
on the locale those floating point numbers
may be written with comma instead of point.
If that happens, then the plots are messed up.
Fixed by enforcing the locale when formatting floats.
2019-11-01 09:04:26 +01:00
d91481809e fix range selection when moving from right to left 2019-11-01 09:00:05 +01:00
3303afd115 render images without any data on it instead of throwing errors
This makes it easier to use the mouse wheel
to zoom in. Without it you could zoom into
a region that had not data and then had to
use the date picker to change the date.
2019-10-31 19:30:29 +01:00
57be6f64e2 prepare plot type for 'step fit' plots 2019-10-31 19:11:38 +01:00
775b420e85 zoom by mousewheel 2019-10-31 18:56:19 +01:00
bb8b183f91 rename yAxisScale to axisScale
For some reason PlotRequest.yAxisScale does
not work. PlotRequest.axisScale does work.
2019-10-29 18:08:31 +01:00
772e7b40ae make left panel narrower
Using Arial, because sans-serif has different
width in Chrome and FF.
2019-10-29 17:59:14 +01:00
eaddf97a0d zoom by range selection 2019-10-28 18:39:12 +01:00
920851b39e add range selection in plot view 2019-10-28 17:37:50 +01:00
5a7cde7815 show plotted images 2019-10-27 08:08:55 +01:00
3190074ce3 add examples to the query suggestions 2019-10-26 19:14:51 +02:00
f235890cc1 prepare sending of plot requests
- values for query and date range were not
  propagated to the model
2019-10-26 10:32:11 +02:00
7636781315 fix StringIndexOutOfBounds when caret is in position 0 2019-10-26 10:30:02 +02:00
f28a67a5c1 make it possible to render any combination of plots 2019-10-20 10:16:25 +02:00
b7c4fe4c1f move scatter plot creation into an AggregateHandler 2019-10-20 08:11:09 +02:00
7c61686808 merge ScatterPlot into Plotter 2019-10-19 19:03:33 +02:00
4749d54499 fix deprecations due to SpringBoot 2.2.0
replace deprecated MediaType.APPLICATION_JSON_UTF8_VALUE with
MediaType.APPLICATION_JSON_VALUE
2019-10-19 18:56:44 +02:00
4094351063 udpate npm and JS dependencies 2019-10-19 18:42:32 +02:00
10e5c058ec update gradle and java dependencies 2019-10-19 18:31:02 +02:00
12be86a1d6 fix component interaction with sub-components 2019-10-19 18:18:17 +02:00
24bf7c98e3 add limit by 2019-10-19 08:48:21 +02:00
a3099d4981 initial version of the query autocompletion
Missing features at this point:
1. No suggestions when the input gets the focus.
2. Suggestions are not shown after selecting a suggestion.
2019-10-13 10:35:38 +02:00
47d8387fec change theme from purple to blue 2019-10-12 09:56:14 +02:00
2825654b7a improve styling of filter panel
Adapt width so that the date range fits.
Width of form fields is now 100%.
y-range restrictions are now rendered in one line.
2019-10-12 09:06:19 +02:00
708a85c28c add daterangepicker
We are now adding the daterangepicker without Angular. This is a little
bit dirty, because we have to load jquery, moment and daterangepicker
manually via script tags, but it works without major hassle.
2019-10-11 17:47:34 +02:00
e61f415880 add date range field
It is (again) surprisingly hard to find a decent date+time-range
picker that works with Angular. Daterangepicker, which I used with
my VueJS application does not work with Angular. I can't get the
angularized version
https://github.com/fragaria/angular-daterangepicker) to work either.
And and a native Angular date picker
(https://github.com/GNURub/ngx-daterangepicker) doesn't work either.
2019-10-11 17:29:14 +02:00
020c3b6c39 make the drop down for "combine with" dynamic 2019-10-11 09:54:26 +02:00
ca8ee7d8f7 add component for y-axis range 2019-10-10 16:54:02 +02:00
9cf9bf4673 add more plot type icons and disable not (yet) implemented plot types 2019-10-10 15:36:52 +02:00
7ca7b80255 create icons for plot types 2019-10-10 12:00:41 +02:00
69968b7682 ignore hs_err_pid files 2019-10-09 19:03:13 +02:00
2787b42c31 adding a few filters (no doing anything yet) 2019-10-09 19:02:34 +02:00
1afcc7cf38 add left/right panel to visualization page 2019-10-09 16:47:19 +02:00
8b42476b72 add pages for uploading and help 2019-10-09 16:11:05 +02:00
e547b67105 add icons from https://uxwing.com/ (MIT License) 2019-10-09 16:10:40 +02:00
65b37e9c67 initial commit of the new UI based on Angular
At this point it is still the example Angular application.
2019-10-08 18:18:24 +02:00
c128bdd532 my ideas on how to proceed
I need to clean up the UI and make it easier extendible.
2019-10-08 17:10:13 +02:00
57ad6a1cee update SpringBoot to 2.1.9
Also remove direct dependencies to log4j-api and log4j-core where
possible. log4j-slf4j-impl is enough in many cases.
2019-10-04 20:15:09 +02:00
d895eba47c remove duplicate values when rendering
Rendering plots with millions of values is expensive. Before this fix
we wrote all values into CSV files. The CSV files were then read by
Gnuplot that did the rendering. But in an image with n×m pixes there
can only be nm different values. In most realistic scenarios we will
have many values that will be drawn to the same pixels. So we are
wasting time yb first generation the CSV for too many values and then
by parsing that CSV again.
Fixed by using a sparse 2D array to de-duplicate many values before
they get written to the CSV. The additional time we spend de-duplicating
is often smaller than the time saved when writing the CSV, so that the
total CSV writing is about as 'fast' as before (sometimes a little
faster, sometimes a little slower). But the time Gnuplot needs for
rendering drastically reduces. The factor depends on the data, of
course. We have seen factor 50 for realistic examples. Making a 15s
job run in 300ms.
2019-09-29 18:57:57 +02:00
d40a7a71c8 update 3rd-party libs 2019-09-29 11:10:05 +02:00
242c83e590 extract constants for gnuplot margins in px 2019-09-08 08:34:14 +02:00
162ef1626c reduce memory usage for computation of cumulative distribution
Before: To compute the cumulative distribution we added every duration
into a LongList. This requires O(n) memory, where n is the number of
values.

Now: We store the durations + the number of occurrences in a
LongLongHashMap. This has the potential to reduce the memory
requirements if durations occur multiple times. There are a lot of
durations with 0, 1, 2 milliseconds. In the worst case every duration
is different. In that case the memory usage doubled with this solution.

Future: We are currently storing durations with milli seconds precision.
We don't have to do that. We cannot draw 100 million different values
on the y-axis in an images with only 1000px.
2019-09-07 18:31:18 +02:00
0e9e2cd53a remove dependency to Guava 2019-09-01 15:44:36 +02:00
8579974051 performance improvement
Queries like "firstname=John and lastname=???" were slightly
inefficient.
They fetched all firstnames, filtered to those that matched the prefix
(e.g. John or Jonathan is this example) and then iterated over all those
values and return the lastnames.
Fixed by having two implementations. One for the case that only a few
of the values in fieldA match and one for the case that many match.
2019-08-31 19:30:54 +02:00
d8a114dbaf handle globlike patterns in in-expressions 2019-08-31 17:34:17 +02:00